diff --git a/include/cpu.hpp b/include/cpu.hpp
index d4871fb..96cb367 100644
--- a/include/cpu.hpp
+++ b/include/cpu.hpp
@@ -18,6 +18,7 @@
 #include "smbios_mdrv2.hpp"
 
 #include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
+#include <xyz/openbmc_project/Inventory/Decorator/LocationCode/server.hpp>
 #include <xyz/openbmc_project/Inventory/Decorator/Revision/server.hpp>
 #include <xyz/openbmc_project/Inventory/Item/Cpu/server.hpp>
 #include <xyz/openbmc_project/Inventory/Item/server.hpp>
@@ -32,6 +33,8 @@
     sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Revision;
 using asset =
     sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset;
+using location =
+    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::LocationCode;
 using processor = sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu;
 using Item = sdbusplus::xyz::openbmc_project::Inventory::server::Item;
 
@@ -90,7 +93,7 @@
                          std::nullopt,
                          std::nullopt};
 
-class Cpu : sdbusplus::server::object_t<processor, asset, rev, Item>
+class Cpu : sdbusplus::server::object_t<processor, asset, location, rev, Item>
 {
   public:
     Cpu() = delete;
@@ -102,7 +105,7 @@
 
     Cpu(sdbusplus::bus::bus& bus, const std::string& objPath,
         const uint8_t& cpuId, uint8_t* smbiosTableStorage) :
-        sdbusplus::server::object_t<processor, asset, rev, Item>(
+        sdbusplus::server::object_t<processor, asset, location, rev, Item>(
             bus, objPath.c_str()),
         cpuNum(cpuId), storage(smbiosTableStorage)
     {
diff --git a/include/dimm.hpp b/include/dimm.hpp
index 43b5456..ec1e32c 100644
--- a/include/dimm.hpp
+++ b/include/dimm.hpp
@@ -18,6 +18,7 @@
 #include "smbios_mdrv2.hpp"
 
 #include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
+#include <xyz/openbmc_project/Inventory/Decorator/LocationCode/server.hpp>
 #include <xyz/openbmc_project/Inventory/Item/Dimm/server.hpp>
 #include <xyz/openbmc_project/Inventory/Item/server.hpp>
 
@@ -36,6 +37,9 @@
     sdbusplus::server::object::object<
         sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset>,
     sdbusplus::server::object::object<
+        sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+            LocationCode>,
+    sdbusplus::server::object::object<
         sdbusplus::xyz::openbmc_project::Inventory::server::Item>
 {
   public:
@@ -56,6 +60,9 @@
             sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
                 Asset>(bus, objPath.c_str()),
         sdbusplus::server::object::object<
+            sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+                LocationCode>(bus, objPath.c_str()),
+        sdbusplus::server::object::object<
             sdbusplus::xyz::openbmc_project::Inventory::server::Item>(
             bus, objPath.c_str()),
         dimmNum(dimmId), storage(smbiosTableStorage)
@@ -75,6 +82,7 @@
     bool present(bool value) override;
     std::string serialNumber(std::string value) override;
     std::string partNumber(std::string value) override;
+    std::string locationCode(std::string value) override;
     uint8_t memoryAttributes(uint8_t value) override;
     uint16_t memoryConfiguredSpeedInMhz(uint16_t value) override;
 
diff --git a/src/cpu.cpp b/src/cpu.cpp
index 1010b58..5e96254 100644
--- a/src/cpu.cpp
+++ b/src/cpu.cpp
@@ -30,6 +30,8 @@
     std::string result = positionToString(positionNum, structLen, dataIn);
 
     processor::socket(result);
+
+    location::locationCode(result);
 }
 
 void Cpu::family(const uint8_t value)
diff --git a/src/dimm.cpp b/src/dimm.cpp
index e2cfbc6..03b35f9 100644
--- a/src/dimm.cpp
+++ b/src/dimm.cpp
@@ -113,6 +113,8 @@
     std::string result = positionToString(positionNum, structLen, dataIn);
 
     memoryDeviceLocator(result);
+
+    locationCode(result);
 }
 
 std::string Dimm::memoryDeviceLocator(std::string value)
@@ -225,6 +227,12 @@
         Asset::partNumber(value);
 }
 
+std::string Dimm::locationCode(std::string value)
+{
+    return sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+        LocationCode::locationCode(value);
+}
+
 uint8_t Dimm::memoryAttributes(uint8_t value)
 {
     return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
