diff --git a/occ_manager.cpp b/occ_manager.cpp
index 72d7ada..75d7b1f 100644
--- a/occ_manager.cpp
+++ b/occ_manager.cpp
@@ -165,8 +165,7 @@
     allActiveSensorAvailable = true;
     for (auto& obj : statusObjects)
     {
-        // If active sensor is already true, then no need to query sensor
-        if (!obj->occActive())
+        if (!obj->getPldmSensorReceived())
         {
             auto instance = obj->getOccInstanceID();
             // Check if sensor was queued while waiting for discovery
@@ -462,6 +461,7 @@
 
     if (obj != statusObjects.end())
     {
+        (*obj)->setPldmSensorReceived(true);
         return (*obj)->occActive(status);
     }
     else
diff --git a/occ_status.hpp b/occ_status.hpp
index 9ae8fe7..fa9d2d9 100644
--- a/occ_status.hpp
+++ b/occ_status.hpp
@@ -201,6 +201,25 @@
      */
     CmdStatus sendAmbient(const uint8_t ambient = 0xFF,
                           const uint16_t altitude = 0xFFFF);
+
+    /** @brief Set flag indicating if PLDM sensor has been received
+     *
+     *  @param[in] wasReceived - true if PLDM sensor was read
+     */
+    void setPldmSensorReceived(const bool wasReceived)
+    {
+        pldmSensorStateReceived = wasReceived;
+    }
+
+    /** @brief Read flag indicating if PLDM sensor has been read
+     *
+     *  @return true if sensor has been read
+     */
+    bool getPldmSensorReceived()
+    {
+        return pldmSensorStateReceived;
+    }
+
 #endif // POWER10
 
     /** @brief Return the HWMON path for this OCC
@@ -266,6 +285,9 @@
     /** @brief hwmon path for this OCC */
     fs::path hwmonPath;
 
+    /** @brief flag indicating if the OCC sensor has been received */
+    bool pldmSensorStateReceived = false;
+
     /** @brief Callback function on host control signals
      *
      *  @param[in]  msg - Data associated with subscribed signal
diff --git a/pldm.cpp b/pldm.cpp
index 6c2a291..41552ef 100644
--- a/pldm.cpp
+++ b/pldm.cpp
@@ -710,6 +710,16 @@
             fmt::format("pldmRspCallback: OCC{} is RUNNING", instance).c_str());
         pldmIface->callBack(instance, true);
     }
+    else if (occSensorState ==
+             PLDM_STATE_SET_OPERATIONAL_RUNNING_STATUS_DORMANT)
+    {
+        log<level::INFO>(
+            fmt::format(
+                "pldmRspCallback: OCC{} has now STOPPED and system is in SAFE MODE",
+                instance)
+                .c_str());
+        pldmIface->callBack(instance, false);
+    }
     else
     {
         log<level::INFO>(
