diff --git a/redfish-core/lib/chassis.hpp b/redfish-core/lib/chassis.hpp
index c41b7e1..5a83793 100644
--- a/redfish-core/lib/chassis.hpp
+++ b/redfish-core/lib/chassis.hpp
@@ -281,6 +281,43 @@
                             "xyz.openbmc_project.Inventory.Item.Board."
                             "Motherboard"};
 
+                        const std::string assetTagInterface =
+                            "xyz.openbmc_project.Inventory.Decorator."
+                            "AssetTag";
+                        if (std::find(interfaces2.begin(), interfaces2.end(),
+                                      assetTagInterface) != interfaces2.end())
+                        {
+                            crow::connections::systemBus->async_method_call(
+                                [asyncResp, chassisId(std::string(chassisId))](
+                                    const boost::system::error_code ec,
+                                    const std::variant<std::string>& property) {
+                                    if (ec)
+                                    {
+                                        BMCWEB_LOG_DEBUG
+                                            << "DBus response error for "
+                                               "AssetTag";
+                                        messages::internalError(asyncResp->res);
+                                        return;
+                                    }
+
+                                    const std::string* assetTag =
+                                        std::get_if<std::string>(&property);
+                                    if (assetTag == nullptr)
+                                    {
+                                        BMCWEB_LOG_DEBUG
+                                            << "Null value returned "
+                                               "for Chassis AssetTag";
+                                        messages::internalError(asyncResp->res);
+                                        return;
+                                    }
+                                    asyncResp->res.jsonValue["AssetTag"] =
+                                        *assetTag;
+                                },
+                                connectionName, path,
+                                "org.freedesktop.DBus.Properties", "Get",
+                                assetTagInterface, "AssetTag");
+                        }
+
                         for (const char* interface : hasIndicatorLed)
                         {
                             if (std::find(interfaces2.begin(),
