diff --git a/src/item_updater.cpp b/src/item_updater.cpp
index cfbadb0..b670735 100644
--- a/src/item_updater.cpp
+++ b/src/item_updater.cpp
@@ -92,7 +92,7 @@
 
         associations.emplace_back(std::make_tuple(ACTIVATION_FWD_ASSOCIATION,
                                                   ACTIVATION_REV_ASSOCIATION,
-                                                  PSU_INVENTORY_PATH));
+                                                  PSU_INVENTORY_PATH_BASE));
 
         fs::path manifestPath(filePath);
         manifestPath /= MANIFEST_FILE;
diff --git a/src/item_updater.hpp b/src/item_updater.hpp
index 96006f4..aacd77f 100644
--- a/src/item_updater.hpp
+++ b/src/item_updater.hpp
@@ -4,8 +4,10 @@
 
 #include "activation.hpp"
 #include "types.hpp"
+#include "utils.hpp"
 #include "version.hpp"
 
+#include <phosphor-logging/log.hpp>
 #include <sdbusplus/server.hpp>
 #include <xyz/openbmc_project/Association/Definitions/server.hpp>
 #include <xyz/openbmc_project/Collection/DeleteAll/server.hpp>
@@ -43,6 +45,13 @@
                      std::bind(std::mem_fn(&ItemUpdater::createActivation),
                                this, std::placeholders::_1))
     {
+        // TODO: create psu inventory objects based on the paths
+        using namespace phosphor::logging;
+        auto paths = utils::getPSUInventoryPath(bus);
+        for (const auto& p : paths)
+        {
+            log<level::INFO>("PSU path", entry("PATH=%s", p.c_str()));
+        }
     }
 
     /** @brief Deletes version
diff --git a/src/meson.build b/src/meson.build
index 95b1a5a..4e2e126 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,28 +1,7 @@
-phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
-phosphor_logging = dependency('phosphor-logging')
-sdbusplus = dependency('sdbusplus')
-
-add_project_link_arguments(['-lstdc++fs'], language: 'cpp')
-
-cdata = configuration_data()
-cdata.set_quoted('VERSION_IFACE', 'xyz.openbmc_project.Software.Version')
-cdata.set_quoted('FILEPATH_IFACE', 'xyz.openbmc_project.Common.FilePath')
-cdata.set_quoted('BUSNAME_UPDATER', 'xyz.openbmc_project.Software.Psu.Updater')
-cdata.set_quoted('ACTIVATION_FWD_ASSOCIATION', 'inventory')
-cdata.set_quoted('ACTIVATION_REV_ASSOCIATION', 'activation')
-cdata.set_quoted('ACTIVE_FWD_ASSOCIATION', 'active')
-cdata.set_quoted('ACTIVE_REV_ASSOCIATION', 'software_version')
-cdata.set_quoted('FUNCTIONAL_FWD_ASSOCIATION', 'functional')
-cdata.set_quoted('FUNCTIONAL_REV_ASSOCIATION', 'software_version')
-
-cdata.set_quoted('SOFTWARE_OBJPATH', get_option('SOFTWARE_OBJPATH'))
-cdata.set_quoted('MANIFEST_FILE', get_option('MANIFEST_FILE'))
-cdata.set_quoted('PSU_INVENTORY_PATH', get_option('PSU_INVENTORY_PATH'))
-
 configure_file(output: 'config.h',
   configuration: cdata,
 )
-configuration_inc = include_directories('.')
+psu_inc = include_directories('.')
 
 executable(
   'phosphor-psu-code-manager',
@@ -30,7 +9,8 @@
   'item_updater.cpp',
   'main.cpp',
   'version.cpp',
-  include_directories: configuration_inc,
+  'utils.cpp',
+  include_directories: psu_inc,
   dependencies: [
     phosphor_logging,
     phosphor_dbus_interfaces,
diff --git a/src/utils.cpp b/src/utils.cpp
new file mode 100644
index 0000000..deb5eee
--- /dev/null
+++ b/src/utils.cpp
@@ -0,0 +1,31 @@
+#include "config.h"
+
+#include "utils.hpp"
+
+#include <fstream>
+
+namespace utils
+{
+
+namespace // anonymous
+{
+constexpr auto MAPPER_BUSNAME = "xyz.openbmc_project.ObjectMapper";
+constexpr auto MAPPER_PATH = "/xyz/openbmc_project/object_mapper";
+constexpr auto MAPPER_INTERFACE = "xyz.openbmc_project.ObjectMapper";
+} // namespace
+
+std::vector<std::string> getPSUInventoryPath(sdbusplus::bus::bus& bus)
+{
+    std::vector<std::string> paths;
+    auto method = bus.new_method_call(MAPPER_BUSNAME, MAPPER_PATH,
+                                      MAPPER_INTERFACE, "GetSubTreePaths");
+    method.append(PSU_INVENTORY_PATH_BASE);
+    method.append(0); // Depth 0 to search all
+    method.append(std::vector<std::string>({PSU_INVENTORY_IFACE}));
+    auto reply = bus.call(method);
+
+    reply.read(paths);
+    return paths;
+}
+
+} // namespace utils
diff --git a/src/utils.hpp b/src/utils.hpp
new file mode 100644
index 0000000..5203509
--- /dev/null
+++ b/src/utils.hpp
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <sdbusplus/bus.hpp>
+#include <string>
+#include <vector>
+
+namespace utils
+{
+
+/**
+ * @brief Get PSU inventory object path from DBus
+ */
+std::vector<std::string> getPSUInventoryPath(sdbusplus::bus::bus& bus);
+
+} // namespace utils
