diff --git a/CMakeLists.txt b/CMakeLists.txt
index ac4388a..8c8edb8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,8 @@
     link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/.libs)
     include_directories (${CMAKE_BINARY_DIR}/phosphor-logging-src)
     link_directories (${CMAKE_BINARY_DIR}/phosphor-logging-src/.libs)
+    include_directories (${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src)
+    link_directories (${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src/.libs)
     include_directories (${CMAKE_BINARY_DIR}/phosphor-ipmi-host/include)
     include_directories (${CMAKE_BINARY_DIR}/ipmid/user_channel)
     include_directories (${CMAKE_BINARY_DIR}) # link_directories
@@ -86,6 +88,7 @@
 target_link_libraries (zinteloemcmds ipmid)
 target_link_libraries (zinteloemcmds sdbusplus)
 target_link_libraries (zinteloemcmds phosphor_logging)
+target_link_libraries (zinteloemcmds intel_dbus)
 target_link_libraries (zinteloemcmds -luserlayer)
 target_link_libraries (zinteloemcmds -lchannellayer)
 
diff --git a/CMakeLists.txt.in b/CMakeLists.txt.in
index 7b82143..b805efc 100644
--- a/CMakeLists.txt.in
+++ b/CMakeLists.txt.in
@@ -70,6 +70,28 @@
     LOG_DOWNLOAD ON
 )
 
+externalproject_add (
+    intel-dbus-interfaces PREFIX ${CMAKE_BINARY_DIR}/intel-dbus-interfaces DEPENDS
+    sdbusplus-project GIT_REPOSITORY
+    https://github.com/openbmc/intel-dbus-interfaces GIT_TAG
+    2b8f89f5876c5a97a34cdf922729d4283d5f2627 SOURCE_DIR
+    ${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src BINARY_DIR
+    ${CMAKE_BINARY_DIR}/intel-dbus-interfaces-build CONFIGURE_COMMAND cd
+    ${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src && export
+    PYTHONPATH=${CMAKE_BINARY_DIR}/prefix/lib/python2.7/site-packages:$ENV{PYTHONPATH}
+    && export PATH=${CMAKE_BINARY_DIR}/prefix/bin:$ENV{PATH} && export
+    PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/prefix/lib/pkgconfig && ./bootstrap.sh
+    && ./configure --prefix=${CMAKE_BINARY_DIR}/prefix
+    CPPFLAGS=-I${CMAKE_BINARY_DIR}/prefix/include/ BUILD_COMMAND cd
+    ${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src && export
+    PYTHONPATH=${CMAKE_BINARY_DIR}/prefix/lib/python2.7/site-packages:$ENV{PYTHONPATH}
+    && export PATH=${CMAKE_BINARY_DIR}/prefix/bin:$ENV{PATH} && export
+    PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/prefix/lib/pkgconfig && make -j
+    verbose=1 INSTALL_COMMAND cd
+    ${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src && make install
+    LOG_DOWNLOAD ON
+)
+
 externalproject_add (cereal GIT_REPOSITORY https://github.com/USCiLab/cereal
                      GIT_TAG 51cbda5f30e56c801c07fe3d3aba5d7fb9e6cca4
                      SOURCE_DIR "${CMAKE_BINARY_DIR}/cereal-src" BINARY_DIR
diff --git a/include/oemcommands.hpp b/include/oemcommands.hpp
index cf91f58..2d2042d 100644
--- a/include/oemcommands.hpp
+++ b/include/oemcommands.hpp
@@ -130,10 +130,10 @@
 static constexpr const uint8_t noShutdownPolicySupported = 0;
 static constexpr const uint8_t shutdownPolicySupported = 1;
 static constexpr const char* oemShutdownPolicyIntf =
-    "xyz.openbmc_project.Control.ShutdownPolicy";
+    "com.intel.Control.OCOTShutdownPolicy";
 static constexpr const char* oemShutdownPolicyObjPath =
-    "/xyz/openbmc_project/control/shutdown_policy_config";
-static constexpr const char* oemShutdownPolicyObjPathProp = "Policy";
+    "/com/intel/control/ocotshutdown_policy_config";
+static constexpr const char* oemShutdownPolicyObjPathProp = "OCOTPolicy";
 
 static constexpr const char* fwGetEnvCmd = "/sbin/fw_printenv";
 static constexpr const char* fwSetEnvCmd = "/sbin/fw_setenv";
diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index 1cb8791..0711183 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -23,6 +23,7 @@
 #include <boost/container/flat_map.hpp>
 #include <boost/process/child.hpp>
 #include <boost/process/io.hpp>
+#include <com/intel/Control/OCOTShutdownPolicy/server.hpp>
 #include <commandutils.hpp>
 #include <iostream>
 #include <ipmid/api.hpp>
@@ -557,7 +558,29 @@
         Value variant = getDbusProperty(dbus, service, oemShutdownPolicyObjPath,
                                         oemShutdownPolicyIntf,
                                         oemShutdownPolicyObjPathProp);
-        resp->policy = sdbusplus::message::variant_ns::get<uint8_t>(variant);
+
+        if (sdbusplus::com::intel::Control::server::OCOTShutdownPolicy::
+                convertPolicyFromString(std::get<std::string>(variant)) ==
+            sdbusplus::com::intel::Control::server::OCOTShutdownPolicy::Policy::
+                NoShutdownOnOCOT)
+        {
+            resp->policy = 0;
+        }
+        else if (sdbusplus::com::intel::Control::server::OCOTShutdownPolicy::
+                     convertPolicyFromString(std::get<std::string>(variant)) ==
+                 sdbusplus::com::intel::Control::server::OCOTShutdownPolicy::
+                     Policy::ShutdownOnOCOT)
+        {
+            resp->policy = 1;
+        }
+        else
+        {
+            phosphor::logging::log<phosphor::logging::level::ERR>(
+                "oem_set_shutdown_policy: invalid property!",
+                phosphor::logging::entry(
+                    "PROP=%s", std::get<std::string>(variant).c_str()));
+            return IPMI_CC_UNSPECIFIED_ERROR;
+        }
         // TODO needs to check if it is multi-node products,
         // policy is only supported on node 3/4
         resp->policySupport = shutdownPolicySupported;
@@ -579,6 +602,9 @@
                                     ipmi_context_t context)
 {
     uint8_t* req = reinterpret_cast<uint8_t*>(request);
+    sdbusplus::com::intel::Control::server::OCOTShutdownPolicy::Policy policy =
+        sdbusplus::com::intel::Control::server::OCOTShutdownPolicy::Policy::
+            NoShutdownOnOCOT;
 
     // TODO needs to check if it is multi-node products,
     // policy is only supported on node 3/4
@@ -598,13 +624,25 @@
         return IPMI_CC_INVALID_FIELD_REQUEST;
     }
 
+    if (*req == noShutdownOnOCOT)
+    {
+        policy = sdbusplus::com::intel::Control::server::OCOTShutdownPolicy::
+            Policy::NoShutdownOnOCOT;
+    }
+    else
+    {
+        policy = sdbusplus::com::intel::Control::server::OCOTShutdownPolicy::
+            Policy::ShutdownOnOCOT;
+    }
+
     try
     {
         std::string service =
             getService(dbus, oemShutdownPolicyIntf, oemShutdownPolicyObjPath);
-        setDbusProperty(dbus, service, oemShutdownPolicyObjPath,
-                        oemShutdownPolicyIntf, oemShutdownPolicyObjPathProp,
-                        *req);
+        setDbusProperty(
+            dbus, service, oemShutdownPolicyObjPath, oemShutdownPolicyIntf,
+            oemShutdownPolicyObjPathProp,
+            sdbusplus::com::intel::Control::server::convertForMessage(policy));
     }
     catch (sdbusplus::exception_t& e)
     {
