diff --git a/phosphor-ldap-config/ldap_config_mgr.cpp b/phosphor-ldap-config/ldap_config_mgr.cpp
index e8490e4..1218d18 100644
--- a/phosphor-ldap-config/ldap_config_mgr.cpp
+++ b/phosphor-ldap-config/ldap_config_mgr.cpp
@@ -12,6 +12,7 @@
 namespace ldap
 {
 
+constexpr auto nslcdService = "nslcd.service";
 constexpr auto nscdService = "nscd.service";
 constexpr auto LDAPscheme = "ldap";
 constexpr auto LDAPSscheme = "ldaps";
@@ -211,6 +212,9 @@
         openLDAPConfigPtr->restoreRoleMapping();
         openLDAPConfigPtr->emit_object_added();
     }
+
+    startOrStopService(phosphor::ldap::nslcdService,
+                       ADConfigPtr->enabled() || openLDAPConfigPtr->enabled());
 }
 
 } // namespace ldap
diff --git a/test/ldap_config_test.cpp b/test/ldap_config_test.cpp
index 3cba8cd..35fdaea 100644
--- a/test/ldap_config_test.cpp
+++ b/test/ldap_config_test.cpp
@@ -204,6 +204,39 @@
               ldap_base::Config::Type::OpenLdap);
 }
 
+TEST_F(TestLDAPConfig, testRestoresDefault)
+{
+    auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
+    auto tlsCacertfile = std::string(dir.c_str()) + "/" + tlsCacertFile;
+    auto tlsCertfile = std::string(dir.c_str()) + "/" + tlsCertFile;
+    auto dbusPersistentFilePath = std::string(dir.c_str());
+
+    if (fs::exists(configFilePath))
+    {
+        fs::remove(configFilePath);
+    }
+    EXPECT_FALSE(fs::exists(configFilePath));
+
+    MockConfigMgr manager(bus, LDAP_CONFIG_ROOT, configFilePath.c_str(),
+                          dbusPersistentFilePath.c_str(), tlsCacertfile.c_str(),
+                          tlsCertfile.c_str());
+
+    EXPECT_CALL(manager, stopService("nslcd.service")).Times(1);
+    EXPECT_CALL(manager, restartService("nslcd.service")).Times(0);
+    EXPECT_CALL(manager, restartService("nscd.service")).Times(0);
+
+    manager.restore();
+
+    EXPECT_NE(nullptr, manager.getADConfigPtr());
+    EXPECT_NE(nullptr, manager.getOpenLdapConfigPtr());
+    EXPECT_EQ(manager.getADConfigPtr()->ldapType(),
+              ldap_base::Config::Type::ActiveDirectory);
+    EXPECT_EQ(manager.getOpenLdapConfigPtr()->ldapType(),
+              ldap_base::Config::Type::OpenLdap);
+    EXPECT_FALSE(manager.getADConfigPtr()->enabled());
+    EXPECT_FALSE(manager.getOpenLdapConfigPtr()->enabled());
+}
+
 TEST_F(TestLDAPConfig, testRestores)
 {
     auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
@@ -221,7 +254,7 @@
                           dbusPersistentFilePath.c_str(), tlsCacertfile.c_str(),
                           tlsCertfile.c_str());
     EXPECT_CALL(*managerPtr, stopService("nslcd.service")).Times(1);
-    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(1);
+    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(2);
     EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(1);
     managerPtr->createConfig(
         "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
@@ -270,7 +303,7 @@
                           tlsCertfile.c_str());
 
     EXPECT_CALL(*managerPtr, stopService("nslcd.service")).Times(1);
-    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(2);
+    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
     EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(1);
 
     managerPtr->createConfig(
@@ -319,7 +352,7 @@
                           tlsCertfile.c_str());
 
     EXPECT_CALL(*managerPtr, stopService("nslcd.service")).Times(1);
-    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(2);
+    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
     EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(1);
 
     managerPtr->createConfig(
@@ -371,7 +404,7 @@
                           dbusPersistentFilePath.c_str(), tlsCacertfile.c_str(),
                           tlsCertfile.c_str());
     EXPECT_CALL(*managerPtr, stopService("nslcd.service")).Times(1);
-    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(2);
+    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
     EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(1);
     managerPtr->createConfig(
         "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
@@ -421,7 +454,7 @@
                           dbusPersistentFilePath.c_str(), tlsCacertfile.c_str(),
                           tlsCertfile.c_str());
     EXPECT_CALL(*managerPtr, stopService("nslcd.service")).Times(1);
-    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(2);
+    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
     EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(1);
     managerPtr->createConfig(
         "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
@@ -459,7 +492,7 @@
                           dbusPersistentFilePath.c_str(), tlsCacertfile.c_str(),
                           tlsCertfile.c_str());
     EXPECT_CALL(*managerPtr, stopService("nslcd.service")).Times(1);
-    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(1);
+    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(2);
     EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(1);
     managerPtr->createConfig(
         "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
@@ -499,7 +532,7 @@
                           dbusPersistentFilePath.c_str(), tlsCacertfile.c_str(),
                           tlsCertfile.c_str());
     EXPECT_CALL(*managerPtr, stopService("nslcd.service")).Times(1);
-    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(1);
+    EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(2);
     EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(1);
     managerPtr->createConfig(
         "ldaps://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
