diff --git a/softoff/Makefile.am b/softoff/Makefile.am
new file mode 100644
index 0000000..66501a5
--- /dev/null
+++ b/softoff/Makefile.am
@@ -0,0 +1,26 @@
+AM_DEFAULT_SOURCE_EXT = .cpp
+AM_CPPFLAGS = -I$(top_srcdir)
+sbin_PROGRAMS = phosphor-softpoweroff
+
+phosphor_softpoweroff_SOURCES = \
+                    softoff.cpp \
+                    mainapp.cpp \
+                    xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp
+
+BUILT_SOURCES = xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp \
+                xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp
+
+nodist_include_HEADERS = xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp
+CLEANFILES = xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp \
+             xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp
+
+phosphor_softpoweroff_LDFLAGS = $(SYSTEMD_LIBS) $(SDBUSPLUS_LIBS)
+phosphor_softpoweroff_CXXFLAGS = $(SYSTEMD_CFLAGS) $(SDBUSPLUS_CFLAGS)
+
+xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp: ${top_srcdir}/xyz/openbmc_project/Ipmi/Internal/SoftPowerOff.interface.yaml
+	@mkdir -p `dirname $@`
+	$(SDBUSPLUSPLUS) -r $(top_srcdir) interface server-cpp xyz.openbmc_project.Ipmi.Internal.SoftPowerOff > $@
+
+xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp: ${top_srcdir}/xyz/openbmc_project/Ipmi/Internal/SoftPowerOff.interface.yaml
+	@mkdir -p `dirname $@`
+	$(SDBUSPLUSPLUS) -r $(top_srcdir) interface server-header xyz.openbmc_project.Ipmi.Internal.SoftPowerOff > $@
diff --git a/softoff/mainapp.cpp b/softoff/mainapp.cpp
new file mode 100644
index 0000000..a974ed7
--- /dev/null
+++ b/softoff/mainapp.cpp
@@ -0,0 +1,41 @@
+/**
+ * Copyright © 2016 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "softoff.hpp"
+#include "config.h"
+
+int main(int argc, char** argv)
+{
+    // Get a handle to system dbus.
+    auto bus = sdbusplus::bus::new_default();
+
+    // Add systemd object manager.
+    sdbusplus::server::manager::manager(bus, SOFTOFF_OBJPATH);
+
+    // Create the SoftPowerOff object.
+    phosphor::ipmi::SoftPowerOff obj(bus, SOFTOFF_OBJPATH);
+
+    /** @brief Claim the bus */
+    bus.request_name(SOFTOFF_BUSNAME);
+
+    /** @brief Wait for client requests */
+    while(true)
+    {
+        // Handle dbus message / signals discarding unhandled
+        bus.process_discard();
+        bus.wait();
+    }
+    return 0;
+}
diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
new file mode 100644
index 0000000..3505e5a
--- /dev/null
+++ b/softoff/softoff.cpp
@@ -0,0 +1,22 @@
+/**
+ * Copyright © 2016 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+namespace phosphor
+{
+namespace ipmi
+{
+    // Will be populated in the next patchset.
+} // namespace ipmi
+} // namespace phosphor
diff --git a/softoff/softoff.hpp b/softoff/softoff.hpp
new file mode 100644
index 0000000..93dfb26
--- /dev/null
+++ b/softoff/softoff.hpp
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/server/object.hpp>
+#include <xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp>
+namespace phosphor
+{
+namespace ipmi
+{
+
+namespace Base = sdbusplus::xyz::openbmc_project::Ipmi::Internal::server;
+
+/** @class SoftPowerOff
+ *  @brief Responsible for coordinating Host SoftPowerOff operation
+ */
+class SoftPowerOff : public sdbusplus::server::object::object<
+                     Base::SoftPowerOff>
+{
+    public:
+        /** @brief Constructs SoftPowerOff object.
+         *
+         *  @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)
+        {
+            // Nothing to do here
+        }
+};
+} // namespace ipmi
+} // namespace phosphor
