diff --git a/phosphor-ldap-config/ldap_config.cpp b/phosphor-ldap-config/ldap_config.cpp
index 80b8c9c..ed40d17 100644
--- a/phosphor-ldap-config/ldap_config.cpp
+++ b/phosphor-ldap-config/ldap_config.cpp
@@ -27,7 +27,10 @@
 constexpr auto nscdService = "nscd.service";
 constexpr auto LDAPscheme = "ldap";
 constexpr auto LDAPSscheme = "ldaps";
-constexpr auto certObjPath = "/xyz/openbmc_project/certs/client/ldap";
+constexpr auto certObjPath = "/xyz/openbmc_project/certs/client/ldap/1";
+constexpr auto certRootPath = "/xyz/openbmc_project/certs/client/ldap";
+constexpr auto certIface = "xyz.openbmc_project.Certs.Certificate";
+constexpr auto certProperty = "CertificateString";
 
 using namespace phosphor::logging;
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
@@ -57,8 +60,13 @@
     tlsCacertFile(caCertFile), tlsCertFile(certFile), configFilePath(filePath),
     objectPath(path), bus(bus), parent(parent),
     certificateInstalledSignal(
-        bus, sdbusplus::bus::match::rules::interfacesAdded(certObjPath),
+        bus, sdbusplus::bus::match::rules::interfacesAdded(certRootPath),
         std::bind(std::mem_fn(&Config::certificateInstalled), this,
+                  std::placeholders::_1)),
+    certificateChangedSignal(
+        bus,
+        sdbusplus::bus::match::rules::propertiesChanged(certObjPath, certIface),
+        std::bind(std::mem_fn(&Config::certificateChanged), this,
                   std::placeholders::_1))
 {
     ConfigIface::lDAPServerURI(lDAPServerURI);
@@ -97,14 +105,19 @@
 }
 
 Config::Config(sdbusplus::bus::bus& bus, const char* path, const char* filePath,
-               const char* caCertFile, ConfigIface::Type lDAPType,
-               ConfigMgr& parent) :
+               const char* caCertFile, const char* certFile,
+               ConfigIface::Type lDAPType, ConfigMgr& parent) :
     Ifaces(bus, path, true),
-    tlsCacertFile(caCertFile), configFilePath(filePath), objectPath(path),
-    bus(bus), parent(parent),
+    tlsCacertFile(caCertFile), tlsCertFile(certFile), configFilePath(filePath),
+    objectPath(path), bus(bus), parent(parent),
     certificateInstalledSignal(
-        bus, sdbusplus::bus::match::rules::interfacesAdded(certObjPath),
+        bus, sdbusplus::bus::match::rules::interfacesAdded(certRootPath),
         std::bind(std::mem_fn(&Config::certificateInstalled), this,
+                  std::placeholders::_1)),
+    certificateChangedSignal(
+        bus,
+        sdbusplus::bus::match::rules::propertiesChanged(certObjPath, certIface),
+        std::bind(std::mem_fn(&Config::certificateChanged), this,
                   std::placeholders::_1))
 {
     ConfigIface::lDAPType(lDAPType);
@@ -145,6 +158,29 @@
     }
 }
 
+void Config::certificateChanged(sdbusplus::message::message& msg)
+{
+    // TODO: Property filtering needs to be done, we need to write
+    // the config only when the property is "Certificate String".
+    try
+    {
+        if (enabled())
+        {
+            writeConfig();
+        }
+        parent.startOrStopService(nslcdService, enabled());
+    }
+    catch (const InternalFailure& e)
+    {
+        throw;
+    }
+    catch (const std::exception& e)
+    {
+        log<level::ERR>(e.what());
+        elog<InternalFailure>();
+    }
+}
+
 void Config::writeConfig()
 {
     std::stringstream confData;
diff --git a/phosphor-ldap-config/ldap_config.hpp b/phosphor-ldap-config/ldap_config.hpp
index d2cc8de..9cf59f7 100644
--- a/phosphor-ldap-config/ldap_config.hpp
+++ b/phosphor-ldap-config/ldap_config.hpp
@@ -97,8 +97,8 @@
      *  @param[in] parent - parent of config object.
      */
     Config(sdbusplus::bus::bus& bus, const char* path, const char* filePath,
-           const char* caCertFile, ConfigIface::Type lDAPType,
-           ConfigMgr& parent);
+           const char* caCertFile, const char* certFile,
+           ConfigIface::Type lDAPType, ConfigMgr& parent);
 
     using ConfigIface::groupNameAttribute;
     using ConfigIface::lDAPBaseDN;
@@ -280,6 +280,12 @@
     void certificateInstalled(sdbusplus::message::message& msg);
     sdbusplus::bus::match_t certificateInstalledSignal;
 
+    /** @brief React to certificate changed signal
+     *  @param[in] msg - sdbusplus message
+     */
+    void certificateChanged(sdbusplus::message::message& msg);
+    sdbusplus::bus::match_t certificateChangedSignal;
+
     friend class MockConfigMgr;
 };
 
diff --git a/phosphor-ldap-config/ldap_config_mgr.cpp b/phosphor-ldap-config/ldap_config_mgr.cpp
index 1eb3798..bf42107 100644
--- a/phosphor-ldap-config/ldap_config_mgr.cpp
+++ b/phosphor-ldap-config/ldap_config_mgr.cpp
@@ -162,14 +162,16 @@
     {
         openLDAPConfigPtr = std::make_unique<Config>(
             bus, openLDAPDbusObjectPath.c_str(), configFilePath.c_str(),
-            tlsCacertFile.c_str(), ConfigIface::Type::OpenLdap, *this);
+            tlsCacertFile.c_str(), tlsCertFile.c_str(),
+            ConfigIface::Type::OpenLdap, *this);
         openLDAPConfigPtr->emit_object_added();
     }
     if (!ADConfigPtr)
     {
         ADConfigPtr = std::make_unique<Config>(
             bus, ADDbusObjectPath.c_str(), configFilePath.c_str(),
-            tlsCacertFile.c_str(), ConfigIface::Type::ActiveDirectory, *this);
+            tlsCacertFile.c_str(), tlsCertFile.c_str(),
+            ConfigIface::Type::ActiveDirectory, *this);
         ADConfigPtr->emit_object_added();
     }
 }
