diff --git a/Makefile.am b/Makefile.am
index 6c934ef..ef4cdc5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -31,8 +31,8 @@
 	transporthandler.cpp \
 	globalhandler.cpp \
 	groupext.cpp
-libapphandler_la_LDFLAGS = $(SYSTEMD_LIBS) $(libmapper_LIBS) $(PHOSPHOR_LOGGING_LIBS) -version-info 0:0:0 -shared
-libapphandler_la_CXXFLAGS = $(SYSTEMD_CFLAGS) $(libmapper_CFLAGS) $(PHOSPHOR_LOGGING_CFLAGS)
+libapphandler_la_LDFLAGS = $(SYSTEMD_LIBS) $(libmapper_LIBS) $(PHOSPHOR_LOGGING_LIBS) $(PHOSPHOR_DBUS_INTERFACES_LIBS) -version-info 0:0:0 -shared
+libapphandler_la_CXXFLAGS = $(SYSTEMD_CFLAGS) $(libmapper_CFLAGS) $(PHOSPHOR_LOGGING_CFLAGS) $(PHOSPHOR_DBUS_INTERFACES_CFLAGS)
 
 libsysintfcmdsdir = ${libdir}/ipmid-providers
 libsysintfcmds_LTLIBRARIES = libsysintfcmds.la
diff --git a/chassishandler.cpp b/chassishandler.cpp
index b2d4d2b..b2a1e7c 100644
--- a/chassishandler.cpp
+++ b/chassishandler.cpp
@@ -11,6 +11,8 @@
 #include <endian.h>
 #include <sstream>
 #include <array>
+#include <phosphor-logging/log.hpp>
+#include <xyz/openbmc_project/State/Host/server.hpp>
 
 //Defines
 #define SET_PARM_VERSION                     0x01
@@ -42,9 +44,6 @@
 static constexpr size_t GATEWAY_OFFSET = 22;
 
 
-// OpenBMC Chassis Manager dbus framework
-const char  *chassis_object_name   =  "/org/openbmc/control/chassis0";
-const char  *chassis_intf_name     =  "org.openbmc.control.Chassis";
 
 
 void register_netfn_chassis_functions() __attribute__((constructor));
@@ -73,6 +72,9 @@
    uint8_t front_panel_button_cap_status;
 }__attribute__((packed)) ipmi_get_chassis_status_t;
 
+// Phosphor Host State manager
+namespace State = sdbusplus::xyz::openbmc_project::State::server;
+
 int dbus_get_property(const char *name, char **buf)
 {
     sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -562,11 +564,19 @@
     return rc;
 }
 
-//------------------------------------------------------------
-// Calls into Chassis Control Dbus object to do the power off
-//------------------------------------------------------------
-int ipmi_chassis_power_control(const char *method)
+//------------------------------------------
+// Calls into Host State Manager Dbus object
+//------------------------------------------
+int initiate_state_transition(State::Host::Transition transition)
 {
+	using namespace phosphor::logging;
+
+	// OpenBMC Host State Manager dbus framework
+	constexpr auto HOST_STATE_MANAGER_ROOT  = "/xyz/openbmc_project/state/host0";
+	constexpr auto HOST_STATE_MANAGER_IFACE = "xyz.openbmc_project.State.Host";
+	constexpr auto DBUS_PROPERTY_IFACE      = "org.freedesktop.DBus.Properties";
+	constexpr auto PROPERTY                 = "RequestedHostTransition";
+
 	// sd_bus error
 	int rc = 0;
 	char  *busname = NULL;
@@ -574,38 +584,42 @@
 	// SD Bus error report mechanism.
 	sd_bus_error bus_error = SD_BUS_ERROR_NULL;
 
-	// Response from the call. Although there is no response for this call,
-	// obligated to mention this to make compiler happy.
-	sd_bus_message *response = NULL;
-
 	// Gets a hook onto either a SYSTEM or SESSION bus
 	sd_bus *bus_type = ipmid_get_sd_bus_connection();
-	rc = mapper_get_service(bus_type, chassis_object_name, &busname);
+	rc = mapper_get_service(bus_type, HOST_STATE_MANAGER_ROOT, &busname);
 	if (rc < 0) {
-		fprintf(stderr, "Failed to get %s bus name: %s\n",
-				chassis_object_name, strerror(-rc));
-	goto finish;
+		log<level::ERR>("Failed to get bus name",
+				entry("ERROR=%s, OBJPATH=%s",
+					strerror(-rc), HOST_STATE_MANAGER_ROOT));
+		return rc;
 	}
-	rc = sd_bus_call_method(bus_type,        		 // On the System Bus
-							busname,        // Service to contact
-							chassis_object_name,     // Object path 
-							chassis_intf_name,       // Interface name
-							method,      		 // Method to be called
-							&bus_error,      		 // object to return error
-							&response,		 		 // Response buffer if any
-							NULL);			 		 // No input arguments
+
+	// Convert to string equivalent of the passed in transition enum.
+	auto request = State::convertForMessage(transition);
+
+	rc = sd_bus_call_method(bus_type,                // On the system bus
+							busname,                 // Service to contact
+							HOST_STATE_MANAGER_ROOT, // Object path
+							DBUS_PROPERTY_IFACE,     // Interface name
+							"Set",                   // Method to be called
+							&bus_error,              // object to return error
+							nullptr,                 // Response buffer if any
+							"ssv",                   // Takes 3 arguments
+							HOST_STATE_MANAGER_IFACE,
+							PROPERTY,
+							"s", request.c_str());
 	if(rc < 0)
 	{
-		fprintf(stderr,"ERROR initiating Power Off:[%s]\n",bus_error.message);
+		log<level::ERR>("Failed to initiate transition",
+				entry("ERROR=%s, REQUEST=%s",
+					bus_error.message, request.c_str()));
 	}
 	else
 	{
-		printf("Chassis Power Off initiated successfully\n");
+		log<level::INFO>("Transition request initiated successfully");
 	}
 
-finish:
     sd_bus_error_free(&bus_error);
-    sd_bus_message_unref(response);
     free(busname);
 
     return rc;
@@ -804,17 +818,17 @@
 	switch(chassis_ctrl_cmd)
 	{
 		case CMD_POWER_ON:
-			rc = ipmi_chassis_power_control("powerOn");
+			rc = initiate_state_transition(State::Host::Transition::On);
 			break;
 		case CMD_POWER_OFF:
-			rc = ipmi_chassis_power_control("powerOff");
+			rc = initiate_state_transition(State::Host::Transition::Off);
 			break;
 		case CMD_HARD_RESET:
 		case CMD_POWER_CYCLE:
 			// SPEC has a section that says certain implementations can trigger
 			// PowerOn if power is Off when a command to power cycle is
 			// requested
-			rc = ipmi_chassis_power_control("reboot");
+			rc = initiate_state_transition(State::Host::Transition::Reboot);
 			break;
 		default:
 		{
diff --git a/configure.ac b/configure.ac
index f9acc0f..4ffc554 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,6 +16,7 @@
 AC_CHECK_LIB([mapper], [mapper_get_service], ,[AC_MSG_ERROR([Could not find libmapper...openbmc/phosphor-objmgr package required])])
 PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 221])
 PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging],, [AC_MSG_ERROR([Could not find phosphor-logging...openbmc/phosphor-logging package required])])
+PKG_CHECK_MODULES([PHOSPHOR_DBUS_INTERFACES], [phosphor-dbus-interfaces],, [AC_MSG_ERROR([Could not find phosphor-dbus-interfaces...openbmc/phosphor-dbus-interfaces package required])])
 
 # Checks for header files.
 AC_CHECK_HEADER(systemd/sd-bus.h, ,[AC_MSG_ERROR([Could not find systemd/sd-bus.h...systemd developement package required])])
