diff --git a/ibm_vpd_app.cpp b/ibm_vpd_app.cpp
index 65666f0..6bfafdf 100644
--- a/ibm_vpd_app.cpp
+++ b/ibm_vpd_app.cpp
@@ -50,34 +50,6 @@
                {"UTIL", {"D0"}}};
 
 /**
- * @brief Returns the power state for chassis0
- */
-static auto getPowerState()
-{
-    // TODO: How do we handle multiple chassis?
-    string powerState{};
-    auto bus = sdbusplus::bus::new_default();
-    auto properties =
-        bus.new_method_call("xyz.openbmc_project.State.Chassis",
-                            "/xyz/openbmc_project/state/chassis0",
-                            "org.freedesktop.DBus.Properties", "Get");
-    properties.append("xyz.openbmc_project.State.Chassis");
-    properties.append("CurrentPowerState");
-    auto result = bus.call(properties);
-    if (!result.is_method_error())
-    {
-        variant<string> val;
-        result.read(val);
-        if (auto pVal = get_if<string>(&val))
-        {
-            powerState = *pVal;
-        }
-    }
-    cout << "Power state is: " << powerState << endl;
-    return powerState;
-}
-
-/**
  * @brief Returns the BMC state
  */
 static auto getBMCState()
diff --git a/ibm_vpd_utils.cpp b/ibm_vpd_utils.cpp
index c7babf6..554092e 100644
--- a/ibm_vpd_utils.cpp
+++ b/ibm_vpd_utils.cpp
@@ -909,5 +909,30 @@
     }
     return std::get<1>(attrVal);
 }
+
+std::string getPowerState()
+{
+    // TODO: How do we handle multiple chassis?
+    string powerState{};
+    auto bus = sdbusplus::bus::new_default();
+    auto properties =
+        bus.new_method_call("xyz.openbmc_project.State.Chassis",
+                            "/xyz/openbmc_project/state/chassis0",
+                            "org.freedesktop.DBus.Properties", "Get");
+    properties.append("xyz.openbmc_project.State.Chassis");
+    properties.append("CurrentPowerState");
+    auto result = bus.call(properties);
+    if (!result.is_method_error())
+    {
+        variant<string> val;
+        result.read(val);
+        if (auto pVal = get_if<string>(&val))
+        {
+            powerState = *pVal;
+        }
+    }
+    cout << "Power state is: " << powerState << endl;
+    return powerState;
+}
 } // namespace vpd
 } // namespace openpower
diff --git a/ibm_vpd_utils.hpp b/ibm_vpd_utils.hpp
index 3a7d13d..7941e0b 100644
--- a/ibm_vpd_utils.hpp
+++ b/ibm_vpd_utils.hpp
@@ -360,5 +360,11 @@
  */
 std::variant<int64_t, std::string>
     readBIOSAttribute(const std::string& attrName);
+
+/**
+ * @brief Returns the power state for chassis0
+ * @return The chassis power state.
+ */
+std::string getPowerState();
 } // namespace vpd
 } // namespace openpower
\ No newline at end of file
diff --git a/vpd_tool.cpp b/vpd_tool.cpp
index 893b652..92ab4e0 100644
--- a/vpd_tool.cpp
+++ b/vpd_tool.cpp
@@ -120,8 +120,19 @@
 
         else if (*forceResetFlag)
         {
-            VpdTool vpdToolObj;
-            vpdToolObj.forceReset(jsObject);
+            // Force reset the BMC only if the CEC is powered OFF.
+            if (getPowerState() ==
+                "xyz.openbmc_project.State.Chassis.PowerState.Off")
+            {
+                VpdTool vpdToolObj;
+                vpdToolObj.forceReset(jsObject);
+            }
+            else
+            {
+                std::cerr << "The chassis power state is not Off. Force reset "
+                             "operation is not allowed.";
+                return -1;
+            }
         }
 
         else if (*writeFlag && *Hardware)
