diff --git a/src/PSUSensor.cpp b/src/PSUSensor.cpp
index 58dee54..015a367 100644
--- a/src/PSUSensor.cpp
+++ b/src/PSUSensor.cpp
@@ -57,10 +57,12 @@
         thresholdInterfaceCritical = objectServer.add_interface(
             dbusPath, "xyz.openbmc_project.Sensor.Threshold.Critical");
     }
+    setInitialProperties(conn);
+
     association =
         objectServer.add_interface(dbusPath, "org.openbmc.Associations");
 
-    setInitialProperties(conn);
+    createInventoryAssoc(conn, association, configurationPath);
     setupRead();
 }
 
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"});
+}
