diff --git a/vpd-manager/manager.cpp b/vpd-manager/manager.cpp
index d05dd69..036f843 100644
--- a/vpd-manager/manager.cpp
+++ b/vpd-manager/manager.cpp
@@ -40,6 +40,7 @@
     try
     {
         processJSON();
+        listenHostState();
 
         auto event = sdeventplus::Event::get_default();
         GpioMonitor gpioMon1(jsonFile, event);
@@ -54,6 +55,48 @@
     }
 }
 
+void Manager::listenHostState()
+{
+    static std::shared_ptr<sdbusplus::bus::match::match> hostState =
+        std::make_shared<sdbusplus::bus::match::match>(
+            _bus,
+            sdbusplus::bus::match::rules::propertiesChanged(
+                "/xyz/openbmc_project/state/host0",
+                "xyz.openbmc_project.State.Host"),
+            [this](sdbusplus::message::message& msg) {
+                hostStateCallBack(msg);
+            });
+}
+
+void Manager::hostStateCallBack(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("CurrentHostState");
+    if (itr != propMap.end())
+    {
+        if (auto hostState = std::get_if<std::string>(&(itr->second)))
+        {
+            // implies system is moving from standby to power on state
+            if (*hostState == "xyz.openbmc_project.State.Host.HostState."
+                              "TransitioningToRunning")
+            {
+                // check and perfrom recollection for FRUs replaceable at
+                // standby.
+                performVPDRecollection();
+                return;
+            }
+        }
+        std::cerr << "Failed to read Host state" << std::endl;
+    }
+}
+
 void Manager::processJSON()
 {
     std::ifstream json(INVENTORY_JSON_SYM_LINK, std::ios::binary);
@@ -99,7 +142,7 @@
                         .get_ref<const nlohmann::json::string_t&>());
             }
 
-            if (itemEEPROM.value("isReplaceable", false))
+            if (itemEEPROM.value("replaceableAtStandby", false))
             {
                 replaceableFrus.emplace_back(itemFRUS.key());
             }
diff --git a/vpd-manager/manager.hpp b/vpd-manager/manager.hpp
index 41d3ad7..fd1a306 100644
--- a/vpd-manager/manager.hpp
+++ b/vpd-manager/manager.hpp
@@ -129,6 +129,16 @@
      */
     void processJSON();
 
+    /** @brief Api to register host state callback.
+     * This api will register callback to listen for host state property change.
+     */
+    void listenHostState();
+
+    /** @brief Callback to listen for Host state change
+     *  @param[in] msg - callback message.
+     */
+    void hostStateCallBack(sdbusplus::message::message& msg);
+
     /** @brief Persistent sdbusplus DBus bus connection. */
     sdbusplus::bus::bus _bus;
 
