diff --git a/include/cpu.hpp b/include/cpu.hpp
index 395d528..1f8fd9c 100644
--- a/include/cpu.hpp
+++ b/include/cpu.hpp
@@ -17,6 +17,7 @@
 #pragma once
 #include "smbios_mdrv2.hpp"
 
+#include <xyz/openbmc_project/Association/Definitions/server.hpp>
 #include <xyz/openbmc_project/Inventory/Connector/Slot/server.hpp>
 #include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
 #include <xyz/openbmc_project/Inventory/Decorator/LocationCode/server.hpp>
@@ -40,6 +41,8 @@
     sdbusplus::xyz::openbmc_project::Inventory::Connector::server::Slot;
 using processor = sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu;
 using Item = sdbusplus::xyz::openbmc_project::Inventory::server::Item;
+using association =
+    sdbusplus::xyz::openbmc_project::Association::server::Definitions;
 
 // Definition follow smbios spec DSP0134 3.0.0
 static const std::map<uint8_t, const char*> familyTable = {
@@ -98,7 +101,7 @@
 
 class Cpu :
     sdbusplus::server::object_t<processor, asset, location, connector, rev,
-                                Item>
+                                Item, association>
 {
   public:
     Cpu() = delete;
@@ -109,10 +112,11 @@
     ~Cpu() = default;
 
     Cpu(sdbusplus::bus::bus& bus, const std::string& objPath,
-        const uint8_t& cpuId, uint8_t* smbiosTableStorage) :
+        const uint8_t& cpuId, uint8_t* smbiosTableStorage,
+        const std::string& motherboard) :
         sdbusplus::server::object_t<processor, asset, location, connector, rev,
-                                    Item>(bus, objPath.c_str()),
-        cpuNum(cpuId), storage(smbiosTableStorage)
+                                    Item, association>(bus, objPath.c_str()),
+        cpuNum(cpuId), storage(smbiosTableStorage), motherboardPath(motherboard)
     {
         infoUpdate();
     }
@@ -124,6 +128,8 @@
 
     uint8_t* storage;
 
+    std::string motherboardPath;
+
     struct ProcessorInfo
     {
         uint8_t type;
diff --git a/include/dimm.hpp b/include/dimm.hpp
index 9f1eb48..6f88ae2 100644
--- a/include/dimm.hpp
+++ b/include/dimm.hpp
@@ -17,6 +17,7 @@
 #pragma once
 #include "smbios_mdrv2.hpp"
 
+#include <xyz/openbmc_project/Association/Definitions/server.hpp>
 #include <xyz/openbmc_project/Inventory/Connector/Slot/server.hpp>
 #include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
 #include <xyz/openbmc_project/Inventory/Decorator/LocationCode/server.hpp>
@@ -43,7 +44,10 @@
     sdbusplus::server::object::object<
         sdbusplus::xyz::openbmc_project::Inventory::Connector::server::Slot>,
     sdbusplus::server::object::object<
-        sdbusplus::xyz::openbmc_project::Inventory::server::Item>
+        sdbusplus::xyz::openbmc_project::Inventory::server::Item>,
+    sdbusplus::server::object::object<
+        sdbusplus::xyz::openbmc_project::Association::server::Definitions>
+
 {
   public:
     Dimm() = delete;
@@ -54,7 +58,8 @@
     Dimm& operator=(Dimm&&) = default;
 
     Dimm(sdbusplus::bus::bus& bus, const std::string& objPath,
-         const uint8_t& dimmId, uint8_t* smbiosTableStorage) :
+         const uint8_t& dimmId, uint8_t* smbiosTableStorage,
+         const std::string& motherboard) :
 
         sdbusplus::server::object::object<
             sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm>(
@@ -71,7 +76,11 @@
         sdbusplus::server::object::object<
             sdbusplus::xyz::openbmc_project::Inventory::server::Item>(
             bus, objPath.c_str()),
-        dimmNum(dimmId), storage(smbiosTableStorage)
+        sdbusplus::server::object::object<
+            sdbusplus::xyz::openbmc_project::Association::server::Definitions>(
+            bus, objPath.c_str()),
+        dimmNum(dimmId), storage(smbiosTableStorage),
+        motherboardPath(motherboard)
     {
         memoryInfoUpdate();
     }
@@ -97,6 +106,8 @@
 
     uint8_t* storage;
 
+    std::string motherboardPath;
+
     void dimmSize(const uint16_t size);
     void dimmSizeExt(const size_t size);
     void dimmDeviceLocator(const uint8_t positionNum, const uint8_t structLen,
diff --git a/include/pcieslot.hpp b/include/pcieslot.hpp
index d16d75e..7ed083f 100644
--- a/include/pcieslot.hpp
+++ b/include/pcieslot.hpp
@@ -1,6 +1,7 @@
 #pragma once
 #include "smbios_mdrv2.hpp"
 
+#include <xyz/openbmc_project/Association/Definitions/server.hpp>
 #include <xyz/openbmc_project/Inventory/Connector/Embedded/server.hpp>
 #include <xyz/openbmc_project/Inventory/Decorator/LocationCode/server.hpp>
 #include <xyz/openbmc_project/Inventory/Item/PCIeSlot/server.hpp>
@@ -27,8 +28,11 @@
 using location =
     sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::LocationCode;
 using item = sdbusplus::xyz::openbmc_project::Inventory::server::Item;
+using association =
+    sdbusplus::xyz::openbmc_project::Association::server::Definitions;
 
-class Pcie : sdbusplus::server::object_t<PCIeSlot, location, embedded, item>
+class Pcie :
+    sdbusplus::server::object_t<PCIeSlot, location, embedded, item, association>
 {
   public:
     Pcie() = delete;
@@ -39,10 +43,12 @@
     ~Pcie() = default;
 
     Pcie(sdbusplus::bus::bus& bus, const std::string& objPath,
-         const uint8_t& pcieId, uint8_t* smbiosTableStorage) :
-        sdbusplus::server::object_t<PCIeSlot, location, embedded, item>(
-            bus, objPath.c_str()),
-        pcieNum(pcieId), storage(smbiosTableStorage)
+         const uint8_t& pcieId, uint8_t* smbiosTableStorage,
+         const std::string& motherboard) :
+        sdbusplus::server::object_t<PCIeSlot, location, embedded, item,
+                                    association>(bus, objPath.c_str()),
+        pcieNum(pcieId), storage(smbiosTableStorage),
+        motherboardPath(motherboard)
     {
         pcieInfoUpdate();
     }
@@ -52,6 +58,7 @@
   private:
     uint8_t pcieNum;
     uint8_t* storage;
+    std::string motherboardPath;
 
     struct SystemSlotInfo
     {
