diff --git a/include/cpu.hpp b/include/cpu.hpp
index 2cdc161..773caca 100644
--- a/include/cpu.hpp
+++ b/include/cpu.hpp
@@ -20,6 +20,7 @@
 #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/AssetTag/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>
@@ -46,6 +47,8 @@
     sdbusplus::server::xyz::openbmc_project::association::Definitions;
 using operationalStatus = sdbusplus::xyz::openbmc_project::State::Decorator::
     server::OperationalStatus;
+using assetTagType =
+    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::AssetTag;
 
 // This table is up to date as of SMBIOS spec DSP0134 3.7.0
 static const std::map<uint8_t, const char*> familyTable = {
@@ -309,7 +312,8 @@
 
 class Cpu :
     sdbusplus::server::object_t<processor, asset, location, connector, rev,
-                                Item, association, operationalStatus>
+                                Item, association, operationalStatus,
+                                assetTagType>
 {
   public:
     Cpu() = delete;
@@ -322,8 +326,8 @@
     Cpu(sdbusplus::bus_t& bus, const std::string& objPath, const uint8_t& cpuId,
         uint8_t* smbiosTableStorage, const std::string& motherboard) :
         sdbusplus::server::object_t<processor, asset, location, connector, rev,
-                                    Item, association, operationalStatus>(
-            bus, objPath.c_str()),
+                                    Item, association, operationalStatus,
+                                    assetTagType>(bus, objPath.c_str()),
         cpuNum(cpuId), storage(smbiosTableStorage), motherboardPath(motherboard)
     {
         infoUpdate(smbiosTableStorage, motherboard);
@@ -384,6 +388,8 @@
     void version(const uint8_t positionNum, const uint8_t structLen,
                  uint8_t* dataIn);
     void characteristics(const uint16_t value);
+    void assetTagString(const uint8_t positionNum, const uint8_t structLen,
+                        uint8_t* dataIn);
 };
 
 } // namespace smbios
diff --git a/src/cpu.cpp b/src/cpu.cpp
index 93566e9..648a808 100644
--- a/src/cpu.cpp
+++ b/src/cpu.cpp
@@ -118,6 +118,13 @@
     processor::characteristics(result);
 }
 
+void Cpu::assetTagString(const uint8_t positionNum, const uint8_t structLen,
+                         uint8_t* dataIn)
+{
+    std::string result = positionToString(positionNum, structLen, dataIn);
+    assetTagType::assetTag(result);
+}
+
 static constexpr uint8_t maxOldVersionCount = 0xff;
 void Cpu::infoUpdate(uint8_t* smbiosTableStorage,
                      const std::string& motherboard)
@@ -224,6 +231,8 @@
     maxSpeedInMhz(cpuInfo->maxSpeed);                   // offset 14h
     serialNumber(cpuInfo->serialNum, cpuInfo->length,
                  dataIn);                               // offset 20h
+    assetTagString(cpuInfo->assetTag, cpuInfo->length,
+                   dataIn);                             // offset 21h
     partNumber(cpuInfo->partNum, cpuInfo->length,
                dataIn);                                 // offset 22h
     if (cpuInfo->coreCount < maxOldVersionCount)        // offset 23h or 2Ah
