diff --git a/inc/srvcfg_manager.hpp b/inc/srvcfg_manager.hpp
new file mode 100644
index 0000000..8979f78
--- /dev/null
+++ b/inc/srvcfg_manager.hpp
@@ -0,0 +1,69 @@
+/*
+// Copyright (c) 2018 Intel 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.
+*/
+#pragma once
+#include <sdbusplus/timer.hpp>
+#include "utils.hpp"
+
+namespace phosphor
+{
+namespace service
+{
+
+static constexpr const char *serviceConfigSrvName =
+    "xyz.openbmc_project.Control.Service.Manager";
+static constexpr const char *serviceConfigIntfName =
+    "xyz.openbmc_project.Control.Service.Attributes";
+
+enum class UpdatedProp
+{
+    port = 1,
+    channel,
+    state
+};
+
+class ServiceConfig
+{
+  public:
+    ServiceConfig(sdbusplus::asio::object_server &srv_,
+                  std::shared_ptr<sdbusplus::asio::connection> &conn_,
+                  std::string objPath_, std::string unitName);
+    ~ServiceConfig() = default;
+
+    void applySystemDServiceConfig();
+    void startServiceRestartTimer();
+
+    std::shared_ptr<sdbusplus::asio::connection> conn;
+    uint8_t updatedFlag;
+
+  private:
+    sdbusplus::asio::object_server &server;
+    std::string objPath;
+
+    uint16_t portNum;
+    std::string protocol;
+    std::string stateValue;
+    std::vector<std::string> channelList;
+
+    void registerProperties();
+    std::string sysDUnitName;
+    std::string unitSocketFilePath;
+    std::string sysDSockObjPath;
+
+    void syncWithSystemD1Properties();
+};
+
+} // namespace service
+} // namespace phosphor
diff --git a/inc/utils.hpp b/inc/utils.hpp
new file mode 100644
index 0000000..67ced4c
--- /dev/null
+++ b/inc/utils.hpp
@@ -0,0 +1,40 @@
+/*
+// Copyright (c) 2018 Intel 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.
+*/
+#pragma once
+#include <ctime>
+#include <chrono>
+#include <string>
+#include <sdbusplus/asio/object_server.hpp>
+#include <phosphor-logging/elog-errors.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+#include <experimental/filesystem>
+#include <boost/asio.hpp>
+
+static constexpr const char *sysdActionStartUnit = "StartUnit";
+static constexpr const char *sysdActionStopUnit = "StopUnit";
+
+void systemdDaemonReload(
+    const std::shared_ptr<sdbusplus::asio::connection> &conn);
+
+void systemdUnitAction(const std::shared_ptr<sdbusplus::asio::connection> &conn,
+                       const std::string &unitName,
+                       const std::string &actionMethod);
+
+void systemdUnitFileStateChange(
+    const std::shared_ptr<sdbusplus::asio::connection> &conn,
+    const std::string &unitName, const std::string &unitState);
+
+bool checkSystemdUnitExist(const std::string &unitName);
