diff --git a/bmc_state_manager.cpp b/bmc_state_manager.cpp
index 4575a76..9c047c7 100644
--- a/bmc_state_manager.cpp
+++ b/bmc_state_manager.cpp
@@ -30,6 +30,7 @@
 using namespace phosphor::logging;
 using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
 
+constexpr auto obmcQuiesceTarget = "obmc-bmc-service-quiesce@0.target";
 constexpr auto obmcStandbyTarget = "multi-user.target";
 constexpr auto signalDone = "done";
 constexpr auto activeState = "active";
@@ -88,25 +89,22 @@
 
 void BMC::discoverInitialState()
 {
-    auto currentStateStr = getUnitState(obmcStandbyTarget);
+
+    // First look to see if the BMC quiesce target is active
+    auto currentStateStr = getUnitState(obmcQuiesceTarget);
+    if (currentStateStr == activeState)
+    {
+        info("Setting the BMCState field to BMC_QUIESCED");
+        this->currentBMCState(BMCState::Quiesced);
+        return;
+    }
+
+    // If not quiesced, then check standby target
+    currentStateStr = getUnitState(obmcStandbyTarget);
     if (currentStateStr == activeState)
     {
         info("Setting the BMCState field to BMC_READY");
         this->currentBMCState(BMCState::Ready);
-
-        // Unsubscribe so we stop processing all other signals
-        auto method =
-            this->bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_OBJ_PATH,
-                                      SYSTEMD_INTERFACE, "Unsubscribe");
-        try
-        {
-            this->bus.call(method);
-            this->stateSignal.release();
-        }
-        catch (const sdbusplus::exception::exception& e)
-        {
-            info("Error in Unsubscribe: {ERROR}", "ERROR", e);
-        }
     }
     else
     {
@@ -191,13 +189,13 @@
     // Read the msg and populate each variable
     msg.read(newStateID, newStateObjPath, newStateUnit, newStateResult);
 
-    // Caught the signal that indicates the BMC is now BMC_READY
-    if ((newStateUnit == obmcStandbyTarget) && (newStateResult == signalDone))
+    if ((newStateUnit == obmcQuiesceTarget) && (newStateResult == signalDone))
     {
-        info("BMC_READY");
-        this->currentBMCState(BMCState::Ready);
+        error("BMC has entered BMC_QUIESCED state");
+        this->currentBMCState(BMCState::Quiesced);
 
-        // Unsubscribe so we stop processing all other signals
+        // There is no getting out of Quiesced once entered (other then BMC
+        // reboot) so stop watching for signals
         auto method =
             this->bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_OBJ_PATH,
                                       SYSTEMD_INTERFACE, "Unsubscribe");
@@ -211,6 +209,15 @@
         {
             info("Error in Unsubscribe: {ERROR}", "ERROR", e);
         }
+
+        return 0;
+    }
+
+    // Caught the signal that indicates the BMC is now BMC_READY
+    if ((newStateUnit == obmcStandbyTarget) && (newStateResult == signalDone))
+    {
+        info("BMC_READY");
+        this->currentBMCState(BMCState::Ready);
     }
 
     return 0;
