diff --git a/meson.build b/meson.build
index b61f44a..2f0ec24 100644
--- a/meson.build
+++ b/meson.build
@@ -30,7 +30,8 @@
                        'IFACE' : '"' + get_option('IFACE') + '"',
 		       'OBJECT_MAPPER_SERVICE' : '"'+get_option('OBJECT_MAPPER_SERVICE')+'"',
 		       'OBJECT_MAPPER_OBJECT' : '"'+get_option('OBJECT_MAPPER_OBJECT')+'"',
-		       'POWER_SUPPLY_TYPE_INTERFACE' : '"'+get_option('POWER_SUPPLY_TYPE_INTERFACE')+'"'
+		       'POWER_SUPPLY_TYPE_INTERFACE' : '"'+get_option('POWER_SUPPLY_TYPE_INTERFACE')+'"',
+		       'INVENTORY_MANAGER_CACHE' : '"'+get_option('INVENTORY_MANAGER_CACHE')+'"'
                        }
   )
         ibm_read_vpd_SOURCES = ['ibm_vpd_app.cpp',
diff --git a/meson_options.txt b/meson_options.txt
index df9b3ac..50ce922 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -14,3 +14,4 @@
 option('OBJECT_MAPPER_SERVICE', type : 'string', value : 'xyz.openbmc_project.ObjectMapper', description : 'Object Mapper service')
 option('OBJECT_MAPPER_OBJECT', type : 'string', value : '/xyz/openbmc_project/object_mapper', description : 'One of the objects in Object Mapper service')
 option('POWER_SUPPLY_TYPE_INTERFACE', type : 'string', value : 'xyz.openbmc_project.Inventory.Item.PowerSupply', description : 'Power Supply Type Interface')
+option('INVENTORY_MANAGER_CACHE', type : 'string', value : '/var/lib/phosphor-inventory-manager', description : 'Path to inventory manager cache')
diff --git a/vpd_tool.cpp b/vpd_tool.cpp
index 0514cc5..9129eca 100644
--- a/vpd_tool.cpp
+++ b/vpd_tool.cpp
@@ -60,6 +60,10 @@
             ->needs(kw)
             ->needs(valOption);
 
+    auto forceResetFlag = app.add_flag(
+        "--forceReset, -f, -F", "Force Collect for Hardware. { vpd-tool-exe "
+                                "--forceReset/-f/-F }");
+
     CLI11_PARSE(app, argc, argv);
 
     ifstream inventoryJson(INVENTORY_JSON);
@@ -93,6 +97,12 @@
             rc = vpdToolObj.updateKeyword();
         }
 
+        else if (*forceResetFlag)
+        {
+            VpdTool vpdToolObj;
+            vpdToolObj.forceReset(jsObject);
+        }
+
         else
         {
             throw runtime_error("One of the valid options is required. Refer "
diff --git a/vpd_tool_impl.cpp b/vpd_tool_impl.cpp
index a424312..37fede1 100644
--- a/vpd_tool_impl.cpp
+++ b/vpd_tool_impl.cpp
@@ -30,7 +30,7 @@
         "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths");
     properties.append(INVENTORY_PATH);
     properties.append(0);
-    properties.append(std::array<const char*, 1>{POWER_SUPPLY_TYPE_INTERFACE});
+    properties.append(array<const char*, 1>{POWER_SUPPLY_TYPE_INTERFACE});
 
     auto result = bus.call(properties);
 
@@ -415,3 +415,45 @@
     }
     return 0;
 }
+
+void VpdTool::forceReset(const nlohmann::basic_json<>& jsObject)
+{
+    for (const auto& itemFRUS : jsObject["frus"].items())
+    {
+        for (const auto& itemEEPROM : itemFRUS.value().items())
+        {
+            string fru = itemEEPROM.value().at("inventoryPath");
+
+            fs::path fruCachePath = INVENTORY_MANAGER_CACHE;
+            fruCachePath += INVENTORY_PATH;
+            fruCachePath += fru;
+
+            try
+            {
+                for (const auto& it : fs::directory_iterator(fruCachePath))
+                {
+                    if (fs::is_regular_file(it.status()))
+                    {
+                        fs::remove(it);
+                    }
+                }
+            }
+            catch (const fs::filesystem_error& e)
+            {
+            }
+        }
+    }
+
+    string udevRemove = "udevadm trigger -c remove -s \"*nvmem*\" -v";
+    system(udevRemove.c_str());
+
+    string invManagerRestart =
+        "systemctl restart xyz.openbmc_project.Inventory.Manager.service";
+    system(invManagerRestart.c_str());
+
+    string sysVpdStop = "systemctl stop system-vpd.service";
+    system(sysVpdStop.c_str());
+
+    string udevAdd = "udevadm trigger -c add -s \"*nvmem*\" -v";
+    system(udevAdd.c_str());
+}
diff --git a/vpd_tool_impl.hpp b/vpd_tool_impl.hpp
index 1ac96bd..6aec28c 100644
--- a/vpd_tool_impl.hpp
+++ b/vpd_tool_impl.hpp
@@ -109,7 +109,7 @@
      * Get the power supply fru paths from Object mapper service.
      *
      * @param[out] powSuppFrus - Reference to a vector which has the power
-     * supply fru paths.
+     * supply fruPaths.
      */
     void getPowerSupplyFruPath(std::vector<std::string>& powSuppFrus);
 
@@ -155,9 +155,20 @@
     int updateKeyword();
 
     /**
+     * @brief Force Reset
+     * Clearing the inventory cache data and restarting the
+     * phosphor inventory manager and also retriggering all the
+     * udev events.
+     *
+     * @param[in] jsObject - Inventory JSON specified in configure file.
+     */
+    void forceReset(const nlohmann::basic_json<>& jsObject);
+
+    /**
      * @brief Constructor
      * Constructor is called during the
-     * object instantiation for dumpInventory option.
+     * object instantiation for dumpInventory option and
+     * forceReset option.
      */
     VpdTool()
     {
