diff --git a/inc/srvcfg_manager.hpp b/inc/srvcfg_manager.hpp
index 8979f78..8974b29 100644
--- a/inc/srvcfg_manager.hpp
+++ b/inc/srvcfg_manager.hpp
@@ -26,43 +26,80 @@
     "xyz.openbmc_project.Control.Service.Manager";
 static constexpr const char *serviceConfigIntfName =
     "xyz.openbmc_project.Control.Service.Attributes";
+static constexpr const char *srcCfgMgrBasePath =
+    "/xyz/openbmc_project/control/service";
+static constexpr const char *srvCfgPropPort = "Port";
+static constexpr const char *srvCfgPropMasked = "Masked";
+static constexpr const char *srvCfgPropEnabled = "Enabled";
+static constexpr const char *srvCfgPropRunning = "Running";
 
 enum class UpdatedProp
 {
     port = 1,
-    channel,
-    state
+    maskedState,
+    enabledState,
+    runningState
 };
 
+using VariantType =
+    std::variant<std::string, int64_t, uint64_t, double, int32_t, uint32_t,
+                 int16_t, uint16_t, uint8_t, bool,
+                 std::vector<std::tuple<std::string, std::string>>>;
+
 class ServiceConfig
 {
   public:
     ServiceConfig(sdbusplus::asio::object_server &srv_,
                   std::shared_ptr<sdbusplus::asio::connection> &conn_,
-                  std::string objPath_, std::string unitName);
+                  const std::string &objPath_, const std::string &baseUnitName,
+                  const std::string &instanceName,
+                  const std::string &serviceObjPath,
+                  const std::string &socketObjPath);
     ~ServiceConfig() = default;
 
-    void applySystemDServiceConfig();
-    void startServiceRestartTimer();
-
     std::shared_ptr<sdbusplus::asio::connection> conn;
     uint8_t updatedFlag;
 
+    void stopAndApplyUnitConfig(boost::asio::yield_context yield);
+    void restartUnitConfig(boost::asio::yield_context yield);
+    void startServiceRestartTimer();
+
   private:
     sdbusplus::asio::object_server &server;
+    std::shared_ptr<sdbusplus::asio::dbus_interface> iface;
+    bool internalSet = false;
     std::string objPath;
+    std::string instanceName;
+    std::string baseUnitName;
+    std::string instantiatedUnitName;
+    std::string socketObjectPath;
+    std::string serviceObjectPath;
+    std::string overrideConfDir;
 
+    // Properties
+    std::string activeState;
+    std::string subState;
     uint16_t portNum;
+    std::vector<std::string> channelList;
     std::string protocol;
     std::string stateValue;
-    std::vector<std::string> channelList;
+    bool unitMaskedState = false;
+    bool unitEnabledState = false;
+    bool unitRunningState = false;
+    std::string subStateValue;
 
+    bool isMaskedOut();
     void registerProperties();
-    std::string sysDUnitName;
-    std::string unitSocketFilePath;
-    std::string sysDSockObjPath;
-
-    void syncWithSystemD1Properties();
+    void queryAndUpdateProperties();
+    void createSocketOverrideConf();
+    void updateServiceProperties(
+        const boost::container::flat_map<std::string, VariantType>
+            &propertyMap);
+    void updateSocketProperties(
+        const boost::container::flat_map<std::string, VariantType>
+            &propertyMap);
+    std::string getSocketUnitName();
+    std::string getServiceUnitName();
 };
 
 } // namespace service
diff --git a/inc/utils.hpp b/inc/utils.hpp
index 27e66f3..5f01d44 100644
--- a/inc/utils.hpp
+++ b/inc/utils.hpp
@@ -23,18 +23,41 @@
 #include <experimental/filesystem>
 #include <boost/asio.hpp>
 
-static constexpr const char *sysdActionStartUnit = "StartUnit";
-static constexpr const char *sysdActionStopUnit = "StopUnit";
+static constexpr const char *sysdStartUnit = "StartUnit";
+static constexpr const char *sysdStopUnit = "StopUnit";
+static constexpr const char *sysdRestartUnit = "RestartUnit";
+static constexpr const char *sysdReloadMethod = "Reload";
+static constexpr const char *sysdGetJobMethod = "GetJob";
+static constexpr const char *sysdReplaceMode = "replace";
+static constexpr const char *dBusGetAllMethod = "GetAll";
+static constexpr const char *dBusGetMethod = "Get";
+static constexpr const char *sysdService = "org.freedesktop.systemd1";
+static constexpr const char *sysdObjPath = "/org/freedesktop/systemd1";
+static constexpr const char *sysdMgrIntf = "org.freedesktop.systemd1.Manager";
+static constexpr const char *sysdUnitIntf = "org.freedesktop.systemd1.Unit";
+static constexpr const char *sysdSocketIntf = "org.freedesktop.systemd1.Socket";
+static constexpr const char *dBusPropIntf = "org.freedesktop.DBus.Properties";
+static constexpr const char *stateMasked = "masked";
+static constexpr const char *stateEnabled = "enabled";
+static constexpr const char *stateDisabled = "disabled";
+static constexpr const char *subStateRunning = "running";
+
+static inline std::string addInstanceName(const std::string &instanceName,
+                                          const std::string &suffix)
+{
+    return (instanceName.empty() ? "" : suffix + instanceName);
+}
 
 void systemdDaemonReload(
-    const std::shared_ptr<sdbusplus::asio::connection> &conn);
+    const std::shared_ptr<sdbusplus::asio::connection> &conn,
+    boost::asio::yield_context yield);
 
 void systemdUnitAction(const std::shared_ptr<sdbusplus::asio::connection> &conn,
+                       boost::asio::yield_context yield,
                        const std::string &unitName,
                        const std::string &actionMethod);
 
 void systemdUnitFilesStateChange(
     const std::shared_ptr<sdbusplus::asio::connection> &conn,
-    const std::vector<std::string> &unitFiles, const std::string &unitState);
-
-bool checkSystemdUnitExist(const std::string &unitName);
+    boost::asio::yield_context yield, const std::vector<std::string> &unitFiles,
+    const std::string &unitState, bool maskedState, bool enabledState);
