diff --git a/health_monitor.cpp b/health_monitor.cpp
index 0c732b0..36d027e 100644
--- a/health_monitor.cpp
+++ b/health_monitor.cpp
@@ -2,6 +2,8 @@
 
 #include <phosphor-logging/lg2.hpp>
 #include <sdbusplus/async.hpp>
+#include <xyz/openbmc_project/Inventory/Item/Bmc/common.hpp>
+#include <xyz/openbmc_project/Inventory/Item/common.hpp>
 
 PHOSPHOR_LOG2_USING;
 
@@ -14,8 +16,12 @@
 {
     info("Creating Health Monitor with config size {SIZE}", "SIZE",
          configs.size());
-    constexpr auto BMCInventoryItem = "xyz.openbmc_project.Inventory.Item.Bmc";
-    auto bmcPaths = findPaths(ctx.get_bus(), BMCInventoryItem);
+
+    static constexpr auto bmcIntf = sdbusplus::common::xyz::openbmc_project::
+        inventory::item::Bmc::interface;
+    static constexpr auto invPath = sdbusplus::common::xyz::openbmc_project::
+        inventory::Item::namespace_path;
+    auto bmcPaths = co_await findPaths(ctx, bmcIntf, invPath);
 
     for (auto& [type, collectionConfig] : configs)
     {
diff --git a/health_utils.cpp b/health_utils.cpp
index a60db8b..474a04d 100644
--- a/health_utils.cpp
+++ b/health_utils.cpp
@@ -1,6 +1,7 @@
 #include "health_utils.hpp"
 
 #include <phosphor-logging/lg2.hpp>
+#include <xyz/openbmc_project/ObjectMapper/client.hpp>
 
 PHOSPHOR_LOG2_USING;
 
@@ -20,29 +21,27 @@
     bus.call_noreply(msg);
 }
 
-auto findPaths(sdbusplus::bus_t& bus, const std::string& iface) -> paths_t
+auto findPaths(sdbusplus::async::context& ctx, const std::string& iface,
+               const std::string& subpath) -> sdbusplus::async::task<paths_t>
 {
-    sdbusplus::message_t msg = bus.new_method_call(
-        "xyz.openbmc_project.ObjectMapper",
-        "/xyz/openbmc_project/object_mapper",
-        "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths");
-    const char* inventoryPath = "/xyz/openbmc_project/inventory";
-
-    msg.append("/", 0, std::vector<std::string>{iface});
-
     try
     {
-        auto paths = bus.call(msg, int32_t(0)).unpack<paths_t>();
-        debug("Found {COUNT} paths for {IFACE}", "COUNT", paths.size(), "IFACE",
-              iface);
-        return paths;
+        using ObjectMapper =
+            sdbusplus::client::xyz::openbmc_project::ObjectMapper<>;
+
+        auto mapper = ObjectMapper(ctx)
+                          .service(ObjectMapper::default_service)
+                          .path(ObjectMapper::instance_path);
+
+        std::vector<std::string> ifaces = {iface};
+        co_return co_await mapper.get_sub_tree_paths(subpath, 0, ifaces);
     }
     catch (std::exception& e)
     {
         error("Exception occurred for GetSubTreePaths for {PATH}: {ERROR}",
-              "PATH", inventoryPath, "ERROR", e);
+              "PATH", subpath, "ERROR", e);
     }
-    return {};
+    co_return {};
 }
 
 } // namespace phosphor::health::utils
diff --git a/health_utils.hpp b/health_utils.hpp
index ded0159..7a924e5 100644
--- a/health_utils.hpp
+++ b/health_utils.hpp
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <sdbusplus/async.hpp>
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/sdbus.hpp>
 
@@ -13,6 +14,7 @@
 /** @brief Start a systemd unit */
 void startUnit(sdbusplus::bus_t& bus, const std::string& sysdUnit);
 /** @brief Find D-Bus paths for given interface */
-auto findPaths(sdbusplus::bus_t& bus, const std::string& iface) -> paths_t;
+auto findPaths(sdbusplus::async::context& ctx, const std::string& iface,
+               const std::string& subpath) -> sdbusplus::async::task<paths_t>;
 
 } // namespace phosphor::health::utils
