diff --git a/src/FanMain.cpp b/src/FanMain.cpp
index 244c104..701edba 100644
--- a/src/FanMain.cpp
+++ b/src/FanMain.cpp
@@ -92,7 +92,7 @@
         return;
     }
 
-    std::vector<uint8_t> pwmNumbers;
+    std::vector<std::pair<uint8_t, std::string>> pwmNumbers;
 
     // iterate through all found fan sensors, and try to match them with
     // configuration
@@ -284,7 +284,7 @@
 
             size_t pwm =
                 std::visit(VariantToUnsignedIntVisitor(), findPwm->second);
-            pwmNumbers.emplace_back(pwm);
+            pwmNumbers.emplace_back(pwm, *interfacePath);
         }
     }
     std::vector<fs::path> pwms;
@@ -299,17 +299,17 @@
         {
             continue;
         }
-        bool inConfig = false;
-        for (uint8_t index : pwmNumbers)
+        const std::string* path = nullptr;
+        for (const auto& [index, configPath] : pwmNumbers)
         {
             if (boost::ends_with(pwm.string(), std::to_string(index + 1)))
             {
-                inConfig = true;
+                path = &configPath;
                 break;
             }
         }
 
-        if (!inConfig)
+        if (path == nullptr)
         {
             continue;
         }
@@ -317,7 +317,7 @@
         // only add new elements
         pwmSensors.insert(std::pair<std::string, std::unique_ptr<PwmSensor>>(
             pwm.string(),
-            std::make_unique<PwmSensor>(pwm.string(), objectServer)));
+            std::make_unique<PwmSensor>(pwm.string(), objectServer, *path)));
     }
 }
 
diff --git a/src/PwmSensor.cpp b/src/PwmSensor.cpp
index 047d5ea..b157d52 100644
--- a/src/PwmSensor.cpp
+++ b/src/PwmSensor.cpp
@@ -13,7 +13,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 */
-#include <PwmSensor.hpp>
+#include "PwmSensor.hpp"
+
+#include "Utils.hpp"
+
 #include <fstream>
 #include <iostream>
 #include <sdbusplus/asio/object_server.hpp>
@@ -22,7 +25,8 @@
 static constexpr size_t pwmMin = 0;
 
 PwmSensor::PwmSensor(const std::string& sysPath,
-                     sdbusplus::asio::object_server& objectServer) :
+                     sdbusplus::asio::object_server& objectServer,
+                     const std::string& sensorConfiguration) :
     sysPath(sysPath),
     objectServer(objectServer)
 {
@@ -106,6 +110,11 @@
         });
     sensorInterface->initialize();
     controlInterface->initialize();
+
+    association = objectServer.add_interface(
+        "/xyz/openbmc_project/sensors/fan_pwm/" + name,
+        "org.openbmc.Associations");
+    createAssociation(association, sensorConfiguration);
 }
 PwmSensor::~PwmSensor()
 {
diff --git a/src/Utils.cpp b/src/Utils.cpp
index ff06428..86afb09 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -21,6 +21,7 @@
 #include <fstream>
 #include <regex>
 #include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/asio/object_server.hpp>
 #include <sdbusplus/bus/match.hpp>
 
 namespace fs = std::filesystem;
@@ -203,3 +204,17 @@
         limits.second = std::visit(VariantToDoubleVisitor(), maxFind->second);
     }
 }
+
+void createAssociation(
+    std::shared_ptr<sdbusplus::asio::dbus_interface>& association,
+    const std::string& path)
+{
+    if (association)
+    {
+        using Association = std::tuple<std::string, std::string, std::string>;
+        std::vector<Association> associations;
+        associations.push_back(Association("inventory", "sensors", path));
+        association->register_property("associations", associations);
+        association->initialize();
+    }
+}
\ No newline at end of file
