diff --git a/callback-manager/src/callback_manager.cpp b/callback-manager/src/callback_manager.cpp
index 34506d9..ba59306 100644
--- a/callback-manager/src/callback_manager.cpp
+++ b/callback-manager/src/callback_manager.cpp
@@ -14,8 +14,9 @@
 // limitations under the License.
 */
 
+#include "callback_manager.hpp"
+
 #include <boost/container/flat_map.hpp>
-#include <iostream>
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/asio/object_server.hpp>
 #include <variant>
@@ -33,6 +34,8 @@
 constexpr const char* ledManagerBusname =
     "xyz.openbmc_project.LED.GroupManager";
 
+std::unique_ptr<AssociationManager> associationManager;
+
 enum class StatusSetting
 {
     none,
@@ -42,8 +45,6 @@
     fatal
 };
 
-std::shared_ptr<sdbusplus::asio::dbus_interface> assertedIface = nullptr;
-
 constexpr const bool debug = false;
 
 // final led state tracking
@@ -82,18 +83,17 @@
 void updateLedStatus(std::shared_ptr<sdbusplus::asio::connection>& conn,
                      bool forceRefresh = false)
 {
-    std::vector<std::string> assertedVector = assertedInMap(fatalAssertMap);
-    assertedIface->set_property("Fatal", assertedVector);
-    bool fatal = assertedVector.size();
+    std::vector<std::string> fatalVector = assertedInMap(fatalAssertMap);
+    bool fatal = fatalVector.size();
 
-    assertedVector = assertedInMap(criticalAssertMap);
-    assertedIface->set_property("Critical", assertedVector);
-    bool critical = assertedVector.size();
+    std::vector<std::string> criticalVector = assertedInMap(criticalAssertMap);
+    bool critical = criticalVector.size();
 
-    assertedVector = assertedInMap(warningAssertMap);
-    assertedIface->set_property("Warning", assertedVector);
+    std::vector<std::string> warningVector = assertedInMap(warningAssertMap);
+    bool warn = warningVector.size();
 
-    bool warn = assertedVector.size();
+    associationManager->setLocalAssociations(fatalVector, criticalVector,
+                                             warningVector);
 
     StatusSetting last = currentPriority;
 
@@ -237,15 +237,18 @@
     auto conn = std::make_shared<sdbusplus::asio::connection>(io);
     conn->request_name("xyz.openbmc_project.CallbackManager");
     sdbusplus::asio::object_server objServer(conn);
-    assertedIface =
-        objServer.add_interface("/xyz/openbmc_project/CallbackManager",
+    std::shared_ptr<sdbusplus::asio::dbus_interface> rootIface =
+        objServer.add_interface(rootPath,
                                 "xyz.openbmc_project.CallbackManager");
-    assertedIface->register_property("Warning", std::vector<std::string>());
-    assertedIface->register_property("Critical", std::vector<std::string>());
-    assertedIface->register_property("Fatal", std::vector<std::string>());
-    assertedIface->register_method("RetriggerLEDUpdate",
-                                   [&conn]() { updateLedStatus(conn, true); });
-    assertedIface->initialize();
+    rootIface->register_method("RetriggerLEDUpdate",
+                               [&conn]() { updateLedStatus(conn, true); });
+    rootIface->initialize();
+
+    std::shared_ptr<sdbusplus::asio::dbus_interface> inventoryIface =
+        objServer.add_interface(rootPath, globalInventoryIface);
+    inventoryIface->initialize();
+
+    associationManager = std::make_unique<AssociationManager>(objServer, conn);
 
     createThresholdMatch(conn);
     updateLedStatus(conn);
