diff --git a/utility.cpp b/utility.cpp
index 0cee1bf..53fe965 100644
--- a/utility.cpp
+++ b/utility.cpp
@@ -30,6 +30,10 @@
 constexpr auto MAPPER_PATH = "/xyz/openbmc_project/object_mapper";
 constexpr auto MAPPER_INTERFACE = "xyz.openbmc_project.ObjectMapper";
 
+constexpr auto DECORATOR_CHASSIS_ID =
+    "xyz.openbmc_project.Inventory.Decorator.Slot";
+constexpr auto CHASSIS_ID_PROPERTY = "SlotNumber";
+
 using json = nlohmann::json;
 
 std::string getService(const std::string& path, const std::string& interface,
@@ -207,6 +211,39 @@
     return paths;
 }
 
+std::vector<std::string> getChassisInventoryPaths(sdbusplus::bus_t& bus)
+{
+    std::vector<std::string> paths;
+    auto method = bus.new_method_call(MAPPER_BUSNAME, MAPPER_PATH,
+                                      MAPPER_INTERFACE, "GetSubTreePaths");
+    method.append(INVENTORY_OBJ_PATH);
+    method.append(0); // Depth 0 to search all
+    method.append(std::vector<std::string>({CHASSIS_IFACE}));
+    auto reply = bus.call(method);
+
+    reply.read(paths);
+    return paths;
+}
+
+uint64_t getChassisInventoryUniqueId(sdbusplus::bus_t& bus,
+                                     const std::string& path)
+{
+    uint32_t chassisId;
+    getProperty(DECORATOR_CHASSIS_ID, CHASSIS_ID_PROPERTY, path,
+                INVENTORY_MGR_IFACE, bus, chassisId);
+    return static_cast<uint64_t>(chassisId);
+}
+
+uint64_t getParentEMUniqueId(sdbusplus::bus_t& bus, const std::string& path)
+{
+    namespace fs = std::filesystem;
+    uint64_t chassisId;
+    fs::path fspath(path);
+    getProperty(DECORATOR_CHASSIS_ID, CHASSIS_ID_PROPERTY, fspath.parent_path(),
+                ENTITY_MGR_SERVICE, bus, chassisId);
+    return chassisId;
+}
+
 } // namespace util
 } // namespace power
 } // namespace phosphor
diff --git a/utility.hpp b/utility.hpp
index d2d9365..f4a7d73 100644
--- a/utility.hpp
+++ b/utility.hpp
@@ -22,6 +22,7 @@
 constexpr auto SYSTEMD_INTERFACE = "org.freedesktop.systemd1.Manager";
 constexpr auto POWEROFF_TARGET = "obmc-chassis-hard-poweroff@0.target";
 constexpr auto PROPERTY_INTF = "org.freedesktop.DBus.Properties";
+constexpr auto ENTITY_MGR_SERVICE = "xyz.openbmc_project.EntityManager";
 
 using DbusPath = std::string;
 using DbusProperty = std::string;
@@ -230,6 +231,43 @@
  */
 std::vector<std::string> getPSUInventoryPaths(sdbusplus::bus_t& bus);
 
+/**
+ * @detail Get all chassis inventory paths from D-Bus
+ *
+ * @param[in] bus - D-Bus object
+ *
+ * @return The list of chassis inventory paths
+ */
+std::vector<std::string> getChassisInventoryPaths(sdbusplus::bus_t& bus);
+
+/**
+ * @brief Retrieve the chassis ID for the given D-Bus inventory path.
+ * Query the D-Bus interface for inventory object path and retrieve its unique
+ * ID (ID specified by SlotNumber)
+ *
+ * @param[in] bus - D-Bus object
+ * @param[in] path - The inventory manager D-Bus path for a chassis.
+ *
+ * @return uint64_t - Chassis unique ID
+ */
+uint64_t getChassisInventoryUniqueId(sdbusplus::bus_t& bus,
+                                     const std::string& path);
+/**
+ * @brief Retrieve the parent chassis unique ID from the Entity Manager.
+ * Given a D-Bus object path, this function extracts the parent path (board or
+ * chassis) and retrieve the chassis unique ID from Entity Manager.
+ *
+ * @param[in] bus - D-Bus object
+ * @param[in] path - The EntityManager D-Bus path for hardware within a chassis
+ * or board.
+ *
+ * @return uint64_t - Chassis unique ID
+ *
+ * @note This function assumes the parent object path contains property in
+ * Entity Manager.
+ */
+uint64_t getParentEMUniqueId(sdbusplus::bus_t& bus, const std::string& path);
+
 } // namespace util
 } // namespace power
 } // namespace phosphor
