diff --git a/host-cmd-manager.cpp b/host-cmd-manager.cpp
index 799f9bf..4316451 100644
--- a/host-cmd-manager.cpp
+++ b/host-cmd-manager.cpp
@@ -2,6 +2,7 @@
 #include <phosphor-logging/log.hpp>
 #include <phosphor-logging/elog-errors.hpp>
 #include <xyz/openbmc_project/Common/error.hpp>
+#include <xyz/openbmc_project/State/Host/server.hpp>
 #include <systemintfcmds.h>
 #include <utils.hpp>
 #include <config.h>
@@ -18,15 +19,26 @@
 constexpr auto MAPPER_BUSNAME = "xyz.openbmc_project.ObjectMapper";
 constexpr auto MAPPER_PATH = "/xyz/openbmc_project/object_mapper";
 constexpr auto MAPPER_INTERFACE = "xyz.openbmc_project.ObjectMapper";
+constexpr auto HOST_STATE_PATH = "/xyz/openbmc_project/state/host0";
+constexpr auto HOST_STATE_INTERFACE = "xyz.openbmc_project.State.Host";
+constexpr auto HOST_TRANS_PROP = "RequestedHostTransition";
 
 // For throwing exceptions
 using namespace phosphor::logging;
 using InternalFailure = sdbusplus::xyz::openbmc_project::Common::
                             Error::InternalFailure;
 
+namespace sdbusRule = sdbusplus::bus::match::rules;
+
 Manager::Manager(sdbusplus::bus::bus& bus, sd_event* event) :
             bus(bus),
-            timer(event, std::bind(&Manager::hostTimeout, this))
+            timer(event, std::bind(&Manager::hostTimeout, this)),
+            hostTransitionMatch(bus,
+                    sdbusRule::propertiesChanged(
+                        HOST_STATE_PATH,
+                        HOST_STATE_INTERFACE),
+                    std::bind(&Manager::clearQueueOnPowerOn, this,
+                        std::placeholders::_1))
 {
     // Nothing to do here.
 }
@@ -75,6 +87,11 @@
 {
     log<level::ERR>("Host control timeout hit!");
 
+    clearQueue();
+}
+
+void Manager::clearQueue()
+{
     // Dequeue all entries and send fail signal
     while(!this->workQueue.empty())
     {
@@ -150,6 +167,29 @@
     return;
 }
 
+void Manager::clearQueueOnPowerOn(sdbusplus::message::message& msg)
+{
+    namespace server = sdbusplus::xyz::openbmc_project::State::server;
+
+    ::ipmi::DbusInterface interface;
+    ::ipmi::PropertyMap properties;
+
+    msg.read(interface, properties);
+
+    if (properties.find(HOST_TRANS_PROP) == properties.end())
+    {
+        return;
+    }
+
+    auto& requestedState = properties.at(HOST_TRANS_PROP).get<std::string>();
+
+    if (server::Host::convertTransitionFromString(requestedState) ==
+            server::Host::Transition::On)
+    {
+        clearQueue();
+    }
+}
+
 } // namespace command
 } // namespace host
 } // namepsace phosphor
