diff --git a/bmc_state_manager.cpp b/bmc_state_manager.cpp
index a0308cd..35a62e8 100644
--- a/bmc_state_manager.cpp
+++ b/bmc_state_manager.cpp
@@ -17,6 +17,7 @@
 
 constexpr auto obmcStandbyTarget = "obmc-standby.target";
 constexpr auto signalDone = "done";
+constexpr auto activeState = "active";
 
 /* Map a transition to it's systemd target */
 const std::map<server::BMC::Transition, const char*> SYSTEMD_TABLE =
@@ -28,6 +29,52 @@
 constexpr auto SYSTEMD_OBJ_PATH  = "/org/freedesktop/systemd1";
 constexpr auto SYSTEMD_INTERFACE = "org.freedesktop.systemd1.Manager";
 
+constexpr auto SYSTEMD_PRP_INTERFACE = "org.freedesktop.DBus.Properties";
+constexpr auto SYSTEMD_TGT_PATH      = "/org/freedesktop/systemd1/unit/"
+                                       "obmc_2dstandby_2etarget";
+
+void BMC::discoverInitialState()
+{
+    sdbusplus::message::variant<std::string> currentState;
+
+    auto method = this->bus.new_method_call(SYSTEMD_SERVICE,
+                                            SYSTEMD_TGT_PATH,
+                                            SYSTEMD_PRP_INTERFACE,
+                                            "Get");
+
+    method.append("org.freedesktop.systemd1.Unit", "ActiveState");
+
+    auto result = this->bus.call(method);
+
+    //Is obmc-standby.target active or inactive?
+    result.read(currentState);
+
+    if(currentState == activeState)
+    {
+        log<level::INFO>("Setting the BMCState field",
+                         entry("CURRENT_BMC_STATE=%s",
+                               "BMC_READY"));
+        this->currentBMCState(BMCState::Ready);
+
+        //Unsubscribe so we stop processing all other signals
+        method = this->bus.new_method_call(SYSTEMD_SERVICE,
+                                           SYSTEMD_OBJ_PATH,
+                                           SYSTEMD_INTERFACE,
+                                           "Unsubscribe");
+        this->bus.call(method);
+        this->stateSignal.release();
+    }
+    else
+    {
+        log<level::INFO>("Setting the BMCState field",
+                         entry("CURRENT_BMC_STATE=%s",
+                               "BMC_NOTREADY"));
+        this->currentBMCState(BMCState::NotReady);
+    }
+
+    return;
+}
+
 void BMC::subscribeToSystemdSignals()
 {
     auto method = this->bus.new_method_call(SYSTEMD_SERVICE,
diff --git a/bmc_state_manager.hpp b/bmc_state_manager.hpp
index bbace38..0e52a25 100644
--- a/bmc_state_manager.hpp
+++ b/bmc_state_manager.hpp
@@ -29,7 +29,7 @@
             const char* objPath) :
                 sdbusplus::server::object::object<
                     sdbusplus::xyz::openbmc_project::State::server::BMC>(
-                        bus, objPath),
+                        bus, objPath, true),
                             bus(bus),
                             stateSignal(
                                 std::make_unique<
@@ -43,6 +43,8 @@
                                 this))
         {
             subscribeToSystemdSignals();
+            discoverInitialState();
+            this->emit_object_added();
         };
 
         /** @brief Set value of BMCTransition **/
@@ -53,6 +55,11 @@
 
     private:
         /**
+         * @brief discover the state of the bmc
+         **/
+        void discoverInitialState();
+
+        /**
          * @brief subscribe to the systemd signals
          **/
         void subscribeToSystemdSignals();
