diff --git a/host_state_manager.cpp b/host_state_manager.cpp
index 1b3c556..640ea94 100644
--- a/host_state_manager.cpp
+++ b/host_state_manager.cpp
@@ -1,4 +1,6 @@
 #include <iostream>
+#include <map>
+#include <string>
 #include <systemd/sd-bus.h>
 #include "host_state_manager.hpp"
 
@@ -12,15 +14,30 @@
 // When you see server:: you know we're referencing our base class
 namespace server = sdbusplus::xyz::openbmc_project::State::server;
 
+/* Map a transition to it's systemd target */
+const std::map<server::Host::Transition,std::string> SYSTEMD_TARGET_TABLE =
+{
+        {server::Host::Transition::Off,"obmc-chassis-stop@0.target"},
+        {server::Host::Transition::On,"obmc-chassis-start@0.target"}
+};
+
+constexpr auto SYSTEMD_SERVICE   = "org.freedesktop.systemd1";
+constexpr auto SYSTEMD_OBJ_PATH  = "/org/freedesktop/systemd1";
+constexpr auto SYSTEMD_INTERFACE = "org.freedesktop.systemd1.Manager";
+
+constexpr auto SYSTEM_SERVICE   = "org.openbmc.managers.System";
+constexpr auto SYSTEM_OBJ_PATH  = "/org/openbmc/managers/System";
+constexpr auto SYSTEM_INTERFACE = SYSTEM_SERVICE;
+
 // TODO - Will be rewritten once sdbusplus client bindings are in place
 //        and persistent storage design is in place
 void Host::determineInitialState()
 {
     std::string sysState;
 
-    auto method = this->bus.new_method_call("org.openbmc.managers.System",
-                                            "/org/openbmc/managers/System",
-                                            "org.openbmc.managers.System",
+    auto method = this->bus.new_method_call(SYSTEM_SERVICE,
+                                            SYSTEM_OBJ_PATH,
+                                            SYSTEM_INTERFACE,
                                             "getSystemState");
 
     auto reply = this->bus.call(method);
@@ -45,17 +62,37 @@
     return;
 }
 
+void Host::executeTransition(Transition tranReq)
+{
+    auto sysdUnit = SYSTEMD_TARGET_TABLE.find(tranReq)->second;
+
+    auto method = this->bus.new_method_call(SYSTEMD_SERVICE,
+                                            SYSTEMD_OBJ_PATH,
+                                            SYSTEMD_INTERFACE,
+                                            "StartUnit");
+
+    method.append(sysdUnit);
+    method.append("replace");
+
+    this->bus.call(method);
+
+    return;
+}
+
 Host::Transition Host::requestedHostTransition(Transition value)
 {
-    std::cout << "Someone is setting the RequestedHostTransition field" <<
-        std::endl;
+    std::cout << "Someone is setting the RequestedHostTransition field"
+              << std::endl;
+    executeTransition(value);
+    std::cout << "Transition executed with success" << std::endl;
+
     return server::Host::requestedHostTransition(value);
 }
 
 Host::HostState Host::currentHostState(HostState value)
 {
-    std::cout << "Someone is being bad and trying to set the HostState field" <<
-            std::endl;
+    std::cout << "Someone is being bad and trying to set the HostState field"
+              << std::endl;
 
     return server::Host::currentHostState();
 }
diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index d1f17d4..8f0733b 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -58,6 +58,15 @@
         HostState currentHostState(HostState value) override;
 
     private:
+        /** @brief Execute the transition request
+         *
+         * This function assumes the state has been validated and the host
+         * is in an appropriate state for the transition to be started.
+         *
+         * @param[in] tranReq    - Transition requested
+         */
+        void executeTransition(Transition tranReq);
+
         /** @brief Persistent sdbusplus DBus bus connection. */
         sdbusplus::bus::bus& bus;
 };
