diff --git a/softoff/mainapp.cpp b/softoff/mainapp.cpp
index a974ed7..38b6984 100644
--- a/softoff/mainapp.cpp
+++ b/softoff/mainapp.cpp
@@ -13,9 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#include <phosphor-logging/log.hpp>
 #include "softoff.hpp"
 #include "config.h"
 
+using namespace phosphor::logging;
+
 int main(int argc, char** argv)
 {
     // Get a handle to system dbus.
@@ -25,7 +28,7 @@
     sdbusplus::server::manager::manager(bus, SOFTOFF_OBJPATH);
 
     // Create the SoftPowerOff object.
-    phosphor::ipmi::SoftPowerOff obj(bus, SOFTOFF_OBJPATH);
+    phosphor::ipmi::SoftPowerOff object(bus, SOFTOFF_OBJPATH);
 
     /** @brief Claim the bus */
     bus.request_name(SOFTOFF_BUSNAME);
diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
index 3505e5a..bd6a72d 100644
--- a/softoff/softoff.cpp
+++ b/softoff/softoff.cpp
@@ -13,10 +13,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#include "softoff.hpp"
 namespace phosphor
 {
 namespace ipmi
 {
-    // Will be populated in the next patchset.
+
+// Need this to send SMS_ATTN
+constexpr auto HOST_IPMI_BUS  = "org.openbmc.HostIpmi";
+constexpr auto HOST_IPMI_OBJ  = "/org/openbmc/HostIpmi/1";
+constexpr auto HOST_IPMI_INTF = "org.openbmc.HostIpmi";
+
+/** @brief Send the SMS_ATN to host if value is set */
+void SoftPowerOff::sendSMSAttn()
+{
+    auto method = bus.new_method_call(HOST_IPMI_BUS,
+                                      HOST_IPMI_OBJ,
+                                      HOST_IPMI_INTF,
+                                      "setAttention");
+
+    // If there is any exception, would be thrown here.
+    // BT returns '0' on success and bus_error on failure.
+    bus.call_noreply(method);
+
+    return;
+}
 } // namespace ipmi
 } // namespace phosphor
diff --git a/softoff/softoff.hpp b/softoff/softoff.hpp
index 93dfb26..dcb4b18 100644
--- a/softoff/softoff.hpp
+++ b/softoff/softoff.hpp
@@ -19,15 +19,41 @@
     public:
         /** @brief Constructs SoftPowerOff object.
          *
-         *  @param[in] bus       - system dbus handler
-         *  @param[in] objPath   - The Dbus path that hosts SoftPowerOff function
+         *  @param[in] bus      - system dbus handler
+         *  @param[in] objPath  - The Dbus path that hosts SoftPowerOff function
          */
         SoftPowerOff(sdbusplus::bus::bus& bus,
                      const char* objPath) :
-            sdbusplus::server::object::object<Base::SoftPowerOff>(bus, objPath)
+            sdbusplus::server::object::object<
+                Base::SoftPowerOff>(bus, objPath),
+                bus(bus)
         {
-            // Nothing to do here
+            // The whole purpose of this application is to send SMS_ATTN
+            // and watch for the soft power off to go through. We need the
+            // interface added signal emitted before we send SMS_ATN just to
+            // attend to lightning fast response from host
+            sendSMSAttn();
         }
+
+    private:
+        /** @brief Sends SMS_ATN to host to initiate soft power off process.
+         *
+         *  After sending the SMS_ATN, starts a watchdog timer for 30
+         *  seconds and expects a initial response from the host.
+         *  After receiving the initial response, starts another watchdog
+         *  timer for 30 minutes to let host do a clean shutdown of
+         *  partitions. When the second response is received from the
+         *  host, it indicates that BMC can do a power off.
+         *  If BMC fails to get any response, then a hard power off would
+         *  be forced.
+         *
+         *  @return - Does not return anything. Error will result in exception
+         *            being thrown
+         */
+        void sendSMSAttn();
+
+        /* @brief sdbusplus handle */
+        sdbusplus::bus::bus& bus;
 };
 } // namespace ipmi
 } // namespace phosphor
