diff --git a/common/utils.hpp b/common/utils.hpp
index 05dc4bd..bfae329 100644
--- a/common/utils.hpp
+++ b/common/utils.hpp
@@ -194,6 +194,8 @@
 using MapperServiceMap = std::vector<std::pair<ServiceName, Interfaces>>;
 using GetSubTreeResponse = std::vector<std::pair<ObjectPath, MapperServiceMap>>;
 using GetSubTreePathsResponse = std::vector<std::string>;
+using GetAncestorsResponse =
+    std::vector<std::pair<ObjectPath, MapperServiceMap>>;
 using PropertyMap = std::map<std::string, PropertyValue>;
 using InterfaceMap = std::map<std::string, PropertyMap>;
 using ObjectValueTree = std::map<sdbusplus::message::object_path, InterfaceMap>;
@@ -216,6 +218,10 @@
         getSubTreePaths(const std::string& objectPath, int depth,
                         const std::vector<std::string>& ifaceList) const = 0;
 
+    virtual GetAncestorsResponse
+        getAncestors(const std::string& path,
+                     const std::vector<std::string>& ifaceList) const = 0;
+
     virtual void setDbusProperty(const DBusMapping& dBusMap,
                                  const PropertyValue& value) const = 0;
 
@@ -289,6 +295,21 @@
         const std::string& objectPath, int depth,
         const std::vector<std::string>& ifaceList) const override;
 
+    /**
+     *  @brief Get the Ancestors response from the mapper
+     *
+     *  @param[in] path - DBUS object path
+     *  @param[in] ifaceList - list of the interface that are being
+     *                         queried from the mapper
+     *
+     *  @return GetAncestorsResponse - the mapper GetAncestors response
+     *
+     *  @throw sdbusplus::exception_t when it fails
+     */
+    GetAncestorsResponse
+        getAncestors(const std::string& path,
+                     const std::vector<std::string>& ifaceList) const override;
+
     /** @brief Get property(type: variant) from the requested dbus
      *
      *  @param[in] objPath - The Dbus object path
