diff --git a/occ_manager.cpp b/occ_manager.cpp
index 1efb1e5..2ea0b5b 100644
--- a/occ_manager.cpp
+++ b/occ_manager.cpp
@@ -502,6 +502,14 @@
     }
 }
 
+// Called upon pldm event To set powermode Safe Mode State for system.
+void Manager::updateOccSafeMode(bool safeMode)
+{
+#ifdef POWER10
+    pmode->updateDbusSafeMode(safeMode);
+#endif
+}
+
 void Manager::sbeHRESETResult(instanceID instance, bool success)
 {
     if (success)
@@ -1309,6 +1317,9 @@
             fmt::format("validateOccMaster: OCC{} is master of {} OCCs",
                         masterInstance, activeCount)
                 .c_str());
+#ifdef POWER10
+        pmode->updateDbusSafeMode(false);
+#endif
     }
 }
 
diff --git a/occ_manager.hpp b/occ_manager.hpp
index 65d7545..d0b01b3 100644
--- a/occ_manager.hpp
+++ b/occ_manager.hpp
@@ -95,6 +95,8 @@
                       std::placeholders::_1, std::placeholders::_2),
             std::bind(std::mem_fn(&Manager::sbeHRESETResult), this,
                       std::placeholders::_1, std::placeholders::_2),
+            std::bind(std::mem_fn(&Manager::updateOccSafeMode), this,
+                      std::placeholders::_1),
             event))
 #endif
 #ifdef POWER10
@@ -268,6 +270,11 @@
      */
     bool updateOCCActive(instanceID instance, bool status);
 
+    /** @brief Callback handler invoked by the PLDM event handler when mode of
+     *         the OCC SAFE MODE is inacted or cleared.
+     */
+    void updateOccSafeMode(bool safeState);
+
     /** @brief Callback handler invoked by PLDM sensor change when
      *         the HRESET succeeds or fails.
      *
diff --git a/pldm.cpp b/pldm.cpp
index 41552ef..6e3dfe6 100644
--- a/pldm.cpp
+++ b/pldm.cpp
@@ -165,6 +165,7 @@
                 log<level::INFO>(
                     fmt::format("PLDM: OCC{} is RUNNING", sensorEntry->second)
                         .c_str());
+
                 callBack(sensorEntry->second, true);
             }
             else if (eventState ==
@@ -185,6 +186,10 @@
                         "PLDM: OCC{} has now STOPPED and system is in SAFE MODE",
                         sensorEntry->second)
                         .c_str());
+
+                // Setting safe mode true
+                safeModeCallBack(true);
+
                 callBack(sensorEntry->second, false);
             }
             else
@@ -718,6 +723,10 @@
                 "pldmRspCallback: OCC{} has now STOPPED and system is in SAFE MODE",
                 instance)
                 .c_str());
+
+        // Setting safe mode true
+        pldmIface->safeModeCallBack(true);
+
         pldmIface->callBack(instance, false);
     }
     else
diff --git a/pldm.hpp b/pldm.hpp
index 945d7a1..40bc78b 100644
--- a/pldm.hpp
+++ b/pldm.hpp
@@ -58,9 +58,10 @@
     explicit Interface(
         std::function<bool(open_power::occ::instanceID, bool)> callBack,
         std::function<void(open_power::occ::instanceID, bool)> sbeCallBack,
-        EventPtr& event) :
+        std::function<void(bool)> safeModeCallBack, EventPtr& event) :
         callBack(callBack),
-        sbeCallBack(sbeCallBack), event(event),
+        sbeCallBack(sbeCallBack), safeModeCallBack(safeModeCallBack),
+        event(event),
         pldmEventSignal(
             open_power::occ::utils::getBus(),
             MatchRules::type::signal() +
@@ -154,6 +155,11 @@
     std::function<void(open_power::occ::instanceID, bool)> sbeCallBack =
         nullptr;
 
+    /** @brief Callback handler to be invoked when the OCC is in SAFE Mode =
+     *         true or when OCCs are in_service = false.
+     */
+    std::function<void(bool)> safeModeCallBack = nullptr;
+
     /** @brief reference to sd_event wrapped in unique_ptr */
     EventPtr& event;
 
diff --git a/powermode.cpp b/powermode.cpp
index f091088..5d2e258 100644
--- a/powermode.cpp
+++ b/powermode.cpp
@@ -1062,6 +1062,18 @@
 }
 #endif
 
+/*  Set dbus property to SAFE mode(true) or clear(false) only if different */
+void PowerMode::updateDbusSafeMode(const bool safeModeReq)
+{
+    log<level::DEBUG>(
+        fmt::format("PowerMode:updateDbusSafeMode: Update dbus state ({})",
+                    safeModeReq)
+            .c_str());
+
+    // Note; this function checks and only updates if different.
+    Mode::safeMode(safeModeReq);
+}
+
 } // namespace powermode
 
 } // namespace occ
diff --git a/powermode.hpp b/powermode.hpp
index dbd68eb..f0aca51 100644
--- a/powermode.hpp
+++ b/powermode.hpp
@@ -35,6 +35,7 @@
 constexpr auto PMODE_PATH = "/xyz/openbmc_project/control/host0/power_mode";
 constexpr auto PMODE_INTERFACE = "xyz.openbmc_project.Control.Power.Mode";
 constexpr auto POWER_MODE_PROP = "PowerMode";
+constexpr auto POWER_SAFE_MODE_PROP = "SafeMode";
 
 constexpr auto PIPS_PATH = "/xyz/openbmc_project/control/host0/power_ips";
 constexpr auto PIPS_INTERFACE =
@@ -331,6 +332,9 @@
     void removeIpsWatch();
 #endif
 
+    /** @brief Set dbus property to SAFE Mode(true) or clear SAFE Mode(false)*/
+    void updateDbusSafeMode(const bool safeMode);
+
   private:
     /** @brief OCC manager object */
     const Manager& manager;
