diff --git a/src/Utils.cpp b/src/Utils.cpp
index f1a70b5..a9c2398 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -258,3 +258,49 @@
         association->initialize();
     }
 }
+
+void setInventoryAssociation(
+    std::shared_ptr<sdbusplus::asio::dbus_interface> association,
+    const std::string& path, const std::string& chassisPath)
+{
+    if (association)
+    {
+        std::filesystem::path p(path);
+
+        std::vector<Association> associations;
+        associations.push_back(
+            Association("inventory", "sensors", p.parent_path().string()));
+        associations.push_back(
+            Association("chassis", "all_sensors", chassisPath));
+        association->register_property("associations", associations);
+        association->initialize();
+    }
+}
+
+void createInventoryAssoc(
+    std::shared_ptr<sdbusplus::asio::connection> conn,
+    std::shared_ptr<sdbusplus::asio::dbus_interface> association,
+    const std::string& path)
+{
+    if (!association)
+    {
+        return;
+    }
+    conn->async_method_call(
+        [association, path](const boost::system::error_code ec,
+                            const std::vector<std::string>& ret) {
+            if (ec)
+            {
+                std::cerr << "Error calling mapper\n";
+                return;
+            }
+            for (const auto& object : ret)
+            {
+                setInventoryAssociation(association, path, object);
+            }
+        },
+        mapper::busName, mapper::path, mapper::interface, "GetSubTreePaths",
+        "/xyz/openbmc_project/inventory/system", 2,
+        std::array<std::string, 1>{
+            "xyz.openbmc_project.Inventory.Item.System"});
+}
