diff --git a/vpd-manager/src/worker.cpp b/vpd-manager/src/worker.cpp
index 82afb3a..262e3dc 100644
--- a/vpd-manager/src/worker.cpp
+++ b/vpd-manager/src/worker.cpp
@@ -870,6 +870,14 @@
         processFunctionalProperty(l_Fru["inventoryPath"], l_interfaces);
         processEnabledProperty(l_Fru["inventoryPath"], l_interfaces);
 
+        // Emplace the default state of FRU VPD collection
+        types::PropertyMap l_fruCollectionProperty = {
+            {"CollectionStatus", constants::vpdCollectionNotStarted}};
+
+        vpdSpecificUtility::insertOrMerge(l_interfaces,
+                                          constants::vpdCollectionInterface,
+                                          std::move(l_fruCollectionProperty));
+
         l_objectInterfaceMap.emplace(std::move(l_fruObjectPath),
                                      std::move(l_interfaces));
     }
@@ -1156,6 +1164,14 @@
             processFunctionalProperty(inventoryPath, interfaces);
             processEnabledProperty(inventoryPath, interfaces);
 
+            // Update collection status as successful
+            types::PropertyMap l_collectionProperty = {
+                {"CollectionStatus", constants::vpdCollectionSuccess}};
+
+            vpdSpecificUtility::insertOrMerge(interfaces,
+                                              constants::vpdCollectionInterface,
+                                              std::move(l_collectionProperty));
+
             objectInterfaceMap.emplace(std::move(fruObjectPath),
                                        std::move(interfaces));
         }
@@ -1430,6 +1446,8 @@
 std::tuple<bool, std::string> Worker::parseAndPublishVPD(
     const std::string& i_vpdFilePath)
 {
+    std::string l_inventoryPath{};
+
     try
     {
         m_semaphore.acquire();
@@ -1439,6 +1457,26 @@
         m_activeCollectionThreadCount++;
         m_mutex.unlock();
 
+        // Set CollectionStatus as InProgress. Since it's an intermediate state
+        // D-bus set-property call is good enough to update the status.
+        try
+        {
+            l_inventoryPath = jsonUtility::getInventoryObjPathFromJson(
+                m_parsedJson, i_vpdFilePath);
+
+            dbusUtility::writeDbusProperty(
+                jsonUtility::getServiceName(m_parsedJson, l_inventoryPath),
+                l_inventoryPath, constants::vpdCollectionInterface,
+                "CollectionStatus",
+                types::DbusVariantType{constants::vpdCollectionInProgress});
+        }
+        catch (const std::exception& l_exception)
+        {
+            logging::logMessage(
+                "Unable to set CollectionStatus as InProgress for " +
+                i_vpdFilePath + ". Error : " + l_exception.what());
+        }
+
         const types::VPDMapVariant& parsedVpdMap = parseVpdFile(i_vpdFilePath);
 
         types::ObjectMap objectInterfaceMap;
@@ -1456,6 +1494,15 @@
     }
     catch (const std::exception& ex)
     {
+        // Notify FRU's VPD CollectionStatus as Failure
+        if (!dbusUtility::notifyFRUCollectionStatus(
+                l_inventoryPath, constants::vpdCollectionFailure))
+        {
+            logging::logMessage(
+                "Call to PIM Notify method failed to update Collection status as Failure for " +
+                i_vpdFilePath);
+        }
+
         // handle all the exceptions internally. Return only true/false
         // based on status of execution.
         if (typeid(ex) == std::type_index(typeid(DataException)))
