diff --git a/vpd-manager/manager.cpp b/vpd-manager/manager.cpp
index 1602473..3a26cff 100644
--- a/vpd-manager/manager.cpp
+++ b/vpd-manager/manager.cpp
@@ -42,6 +42,7 @@
     {
         processJSON();
         listenHostState();
+        listenAssetTag();
 
         auto event = sdeventplus::Event::get_default();
         GpioMonitor gpioMon1(jsonFile, event);
@@ -98,6 +99,49 @@
     }
 }
 
+void Manager::listenAssetTag()
+{
+    static std::shared_ptr<sdbusplus::bus::match::match> assetMatcher =
+        std::make_shared<sdbusplus::bus::match::match>(
+            _bus,
+            sdbusplus::bus::match::rules::propertiesChanged(
+                "/xyz/openbmc_project/inventory/system",
+                "xyz.openbmc_project.Inventory.Decorator.AssetTag"),
+            [this](sdbusplus::message::message& msg) {
+                assetTagCallback(msg);
+            });
+}
+
+void Manager::assetTagCallback(sdbusplus::message::message& msg)
+{
+    if (msg.is_method_error())
+    {
+        std::cerr << "Error in reading signal " << std::endl;
+    }
+
+    Path object;
+    PropertyMap propMap;
+    msg.read(object, propMap);
+    const auto itr = propMap.find("AssetTag");
+    if (itr != propMap.end())
+    {
+        if (auto assetTag = std::get_if<std::string>(&(itr->second)))
+        {
+            // Call Notify to persist the AssetTag
+            inventory::ObjectMap objectMap = {
+                {std::string{"/system"},
+                 {{"xyz.openbmc_project.Inventory.Decorator.AssetTag",
+                   {{"AssetTag", *assetTag}}}}}};
+
+            common::utility::callPIM(std::move(objectMap));
+        }
+        else
+        {
+            std::cerr << "Failed to read asset tag" << std::endl;
+        }
+    }
+}
+
 void Manager::processJSON()
 {
     std::ifstream json(INVENTORY_JSON_SYM_LINK, std::ios::binary);
diff --git a/vpd-manager/manager.hpp b/vpd-manager/manager.hpp
index fd1a306..3beb412 100644
--- a/vpd-manager/manager.hpp
+++ b/vpd-manager/manager.hpp
@@ -139,6 +139,16 @@
      */
     void hostStateCallBack(sdbusplus::message::message& msg);
 
+    /** @brief Api to register AssetTag property change.
+     * This api will register callback to listen for asset tag property change.
+     */
+    void listenAssetTag();
+
+    /** @brief Callback to listen for Asset tag change
+     *  @param[in] msg - callback message.
+     */
+    void assetTagCallback(sdbusplus::message::message& msg);
+
     /** @brief Persistent sdbusplus DBus bus connection. */
     sdbusplus::bus::bus _bus;
 
