diff --git a/utility.cpp b/utility.cpp
index 7fdd6b2..cec9d8b 100644
--- a/utility.cpp
+++ b/utility.cpp
@@ -63,6 +63,22 @@
     return response.begin()->first;
 }
 
+DbusSubtree getSubTree(sdbusplus::bus::bus& bus, const std::string& path,
+                       const std::string& interface, int32_t depth)
+{
+    auto mapperCall = bus.new_method_call(MAPPER_BUSNAME, MAPPER_PATH,
+                                          MAPPER_INTERFACE, "GetSubTree");
+    mapperCall.append(path);
+    mapperCall.append(depth);
+    mapperCall.append(std::vector<std::string>({interface}));
+
+    auto reply = bus.call(mapperCall);
+
+    DbusSubtree response;
+    reply.read(response);
+    return response;
+}
+
 json loadJSONFromFile(const char* path)
 {
     std::ifstream ifs(path);
diff --git a/utility.hpp b/utility.hpp
index df59b92..019173b 100644
--- a/utility.hpp
+++ b/utility.hpp
@@ -22,6 +22,12 @@
 constexpr auto POWEROFF_TARGET = "obmc-chassis-hard-poweroff@0.target";
 constexpr auto PROPERTY_INTF = "org.freedesktop.DBus.Properties";
 
+using DbusPath = std::string;
+using DbusService = std::string;
+using DbusInterface = std::string;
+using DbusInterfaceList = std::vector<DbusInterface>;
+using DbusSubtree =
+    std::map<DbusPath, std::map<DbusService, DbusInterfaceList>>;
 /**
  * @brief Get the service name from the mapper for the
  *        interface and path passed in.
@@ -89,6 +95,23 @@
     auto reply = bus.call(method);
 }
 
+/** @brief Get subtree from the object mapper.
+ *
+ * Helper function to find objects, services, and interfaces.
+ * See:
+ * https://github.com/openbmc/docs/blob/master/architecture/object-mapper.md
+ *
+ * @param[in] bus - The D-Bus object.
+ * @param[in] path - The root of the tree to search.
+ * @param[in] interface - Interface in the subtree to search for
+ * @param[in] depth - The number of path elements to descend.
+ *
+ * @return DbusSubtree - Map of object paths to a map of service names to their
+ *                       interfaces.
+ */
+DbusSubtree getSubTree(sdbusplus::bus::bus& bus, const std::string& path,
+                       const std::string& interface, int32_t depth);
+
 /**
  * Logs an error and powers off the system.
  *
