diff --git a/phosphor-ldap-config/ldap_config.cpp b/phosphor-ldap-config/ldap_config.cpp
index e37faab..8f2e303 100644
--- a/phosphor-ldap-config/ldap_config.cpp
+++ b/phosphor-ldap-config/ldap_config.cpp
@@ -49,7 +49,7 @@
 using Val = std::string;
 using ConfigInfo = std::map<Key, Val>;
 
-Config::Config(sdbusplus::bus::bus& bus, const char* path, const char* filePath,
+Config::Config(sdbusplus::bus_t& bus, const char* path, const char* filePath,
                const char* caCertFile, const char* certFile, bool secureLDAP,
                std::string ldapServerURI, std::string ldapBindDN,
                std::string ldapBaseDN, std::string&& ldapBindDNPassword,
@@ -106,7 +106,7 @@
     parent.startOrStopService(nslcdService, enabled());
 }
 
-Config::Config(sdbusplus::bus::bus& bus, const char* path, const char* filePath,
+Config::Config(sdbusplus::bus_t& bus, const char* path, const char* filePath,
                const char* caCertFile, const char* certFile,
                ConfigIface::Type ldapType, ConfigMgr& parent) :
     Ifaces(bus, path, Ifaces::action::defer_emit),
@@ -137,7 +137,7 @@
     configPersistPath += "/config";
 }
 
-void Config::certificateInstalled(sdbusplus::message::message& /*msg*/)
+void Config::certificateInstalled(sdbusplus::message_t& /*msg*/)
 {
     try
     {
@@ -158,7 +158,7 @@
     }
 }
 
-void Config::certificateChanged(sdbusplus::message::message& msg)
+void Config::certificateChanged(sdbusplus::message_t& msg)
 {
     std::string objectName;
     std::map<std::string, std::variant<std::string>> msgData;
diff --git a/phosphor-ldap-config/ldap_config.hpp b/phosphor-ldap-config/ldap_config.hpp
index d0eb32e..94c0dd2 100644
--- a/phosphor-ldap-config/ldap_config.hpp
+++ b/phosphor-ldap-config/ldap_config.hpp
@@ -28,14 +28,14 @@
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
 using ConfigIface = sdbusplus::xyz::openbmc_project::User::Ldap::server::Config;
 using EnableIface = sdbusplus::xyz::openbmc_project::Object::server::Enable;
-using CreateIface = sdbusplus::server::object::object<
+using CreateIface = sdbusplus::server::object_t<
     sdbusplus::xyz::openbmc_project::User::Ldap::server::Create>;
 namespace fs = std::filesystem;
 using MapperIface =
     sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapper;
 
 using Ifaces =
-    sdbusplus::server::object::object<ConfigIface, EnableIface, MapperIface>;
+    sdbusplus::server::object_t<ConfigIface, EnableIface, MapperIface>;
 using ObjectPath = sdbusplus::message::object_path;
 
 namespace sdbusRule = sdbusplus::bus::match::rules;
@@ -82,7 +82,7 @@
      *  @param[in] parent - parent of config object.
      */
 
-    Config(sdbusplus::bus::bus& bus, const char* path, const char* filePath,
+    Config(sdbusplus::bus_t& bus, const char* path, const char* filePath,
            const char* caCertFile, const char* certFile, bool secureLDAP,
            std::string ldapServerURI, std::string ldapBindDN,
            std::string ldapBaseDN, std::string&& ldapBindDNPassword,
@@ -98,7 +98,7 @@
      *              or openLDAP.
      *  @param[in] parent - parent of config object.
      */
-    Config(sdbusplus::bus::bus& bus, const char* path, const char* filePath,
+    Config(sdbusplus::bus_t& bus, const char* path, const char* filePath,
            const char* caCertFile, const char* certFile,
            ConfigIface::Type ldapType, ConfigMgr& parent);
 
@@ -257,7 +257,7 @@
     std::filesystem::path configPersistPath{};
 
     /** @brief Persistent sdbusplus D-Bus bus connection. */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /** @brief Create a new LDAP config file.
      */
@@ -283,7 +283,7 @@
     /** @brief React to InterfaceAdded signal
      *  @param[in] msg - sdbusplus message
      */
-    void certificateInstalled(sdbusplus::message::message& msg);
+    void certificateInstalled(sdbusplus::message_t& msg);
     sdbusplus::bus::match_t certificateInstalledSignal;
 
     sdbusplus::bus::match_t cacertificateInstalledSignal;
@@ -291,7 +291,7 @@
     /** @brief React to certificate changed signal
      *  @param[in] msg - sdbusplus message
      */
-    void certificateChanged(sdbusplus::message::message& msg);
+    void certificateChanged(sdbusplus::message_t& 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 1218d18..87791b8 100644
--- a/phosphor-ldap-config/ldap_config_mgr.cpp
+++ b/phosphor-ldap-config/ldap_config_mgr.cpp
@@ -50,7 +50,7 @@
         method.append(service.c_str(), "replace");
         bus.call_noreply(method);
     }
-    catch (const sdbusplus::exception::exception& ex)
+    catch (const sdbusplus::exception_t& ex)
     {
         log<level::ERR>("Failed to restart service",
                         entry("SERVICE=%s", service.c_str()),
@@ -67,7 +67,7 @@
         method.append(service.c_str(), "replace");
         bus.call_noreply(method);
     }
-    catch (const sdbusplus::exception::exception& ex)
+    catch (const sdbusplus::exception_t& ex)
     {
         log<level::ERR>("Failed to stop service",
                         entry("SERVICE=%s", service.c_str()),
diff --git a/phosphor-ldap-config/ldap_config_mgr.hpp b/phosphor-ldap-config/ldap_config_mgr.hpp
index 470e7f9..af3051c 100644
--- a/phosphor-ldap-config/ldap_config_mgr.hpp
+++ b/phosphor-ldap-config/ldap_config_mgr.hpp
@@ -27,7 +27,7 @@
 
 using namespace phosphor::logging;
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
-using CreateIface = sdbusplus::server::object::object<
+using CreateIface = sdbusplus::server::object_t<
     sdbusplus::xyz::openbmc_project::User::Ldap::server::Create>;
 
 // class Config;
@@ -53,7 +53,7 @@
      *  @param[in] dbusPersistentPath - Persistent path for LDAP D-Bus property.
      *  @param[in] caCertFile - LDAP's CA certificate file.
      */
-    ConfigMgr(sdbusplus::bus::bus& bus, const char* path, const char* filePath,
+    ConfigMgr(sdbusplus::bus_t& bus, const char* path, const char* filePath,
               const char* dbusPersistentPath, const char* caCertFile,
               const char* certFile) :
         CreateIface(bus, path, CreateIface::action::defer_emit),
@@ -121,7 +121,7 @@
     std::string tlsCertFile{};
 
     /** @brief Persistent sdbusplus D-Bus bus connection. */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /* Below two config objects are default, which will always be there */
 
diff --git a/phosphor-ldap-config/ldap_mapper_entry.cpp b/phosphor-ldap-config/ldap_mapper_entry.cpp
index b9442e3..af57e2d 100644
--- a/phosphor-ldap-config/ldap_mapper_entry.cpp
+++ b/phosphor-ldap-config/ldap_mapper_entry.cpp
@@ -23,7 +23,7 @@
     sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
 using Argument = xyz::openbmc_project::Common::InvalidArgument;
 
-LDAPMapperEntry::LDAPMapperEntry(sdbusplus::bus::bus& bus, const char* path,
+LDAPMapperEntry::LDAPMapperEntry(sdbusplus::bus_t& bus, const char* path,
                                  const char* filePath,
                                  const std::string& groupName,
                                  const std::string& privilege, Config& parent) :
@@ -36,7 +36,7 @@
     Interfaces::emit_object_added();
 }
 
-LDAPMapperEntry::LDAPMapperEntry(sdbusplus::bus::bus& bus, const char* path,
+LDAPMapperEntry::LDAPMapperEntry(sdbusplus::bus_t& bus, const char* path,
                                  const char* filePath, Config& parent) :
     Interfaces(bus, path, Interfaces::action::defer_emit),
     id(std::stol(std::filesystem::path(path).filename())), manager(parent),
diff --git a/phosphor-ldap-config/ldap_mapper_entry.hpp b/phosphor-ldap-config/ldap_mapper_entry.hpp
index efafeae..1c0c87f 100644
--- a/phosphor-ldap-config/ldap_mapper_entry.hpp
+++ b/phosphor-ldap-config/ldap_mapper_entry.hpp
@@ -14,7 +14,7 @@
 using Entry =
     sdbusplus::xyz::openbmc_project::User::server::PrivilegeMapperEntry;
 using Delete = sdbusplus::xyz::openbmc_project::Object::server::Delete;
-using Interfaces = sdbusplus::server::object::object<Entry, Delete>;
+using Interfaces = sdbusplus::server::object_t<Entry, Delete>;
 
 // Forward declaration for Config
 class Config;
@@ -44,7 +44,7 @@
      *  @param[in] privilege - the privilege for the group
      *  @param[in] parent - LDAP privilege mapper manager
      */
-    LDAPMapperEntry(sdbusplus::bus::bus& bus, const char* path,
+    LDAPMapperEntry(sdbusplus::bus_t& bus, const char* path,
                     const char* filePath, const std::string& groupName,
                     const std::string& privilege, Config& parent);
 
@@ -55,7 +55,7 @@
      *  @param[in] filePath - serialization directory path
      *  @param[in] parent - LDAP privilege mapper manager
      */
-    LDAPMapperEntry(sdbusplus::bus::bus& bus, const char* path,
+    LDAPMapperEntry(sdbusplus::bus_t& bus, const char* path,
                     const char* filePath, Config& parent);
 
     /** @brief Delete privilege mapper entry object
diff --git a/phosphor-ldap-config/main.cpp b/phosphor-ldap-config/main.cpp
index bd65da4..e2bedaf 100644
--- a/phosphor-ldap-config/main.cpp
+++ b/phosphor-ldap-config/main.cpp
@@ -28,7 +28,7 @@
     auto bus = sdbusplus::bus::new_default();
 
     // Add sdbusplus ObjectManager for the 'root' path of the LDAP config.
-    sdbusplus::server::manager::manager objManager(bus, LDAP_CONFIG_ROOT);
+    sdbusplus::server::manager_t objManager(bus, LDAP_CONFIG_ROOT);
 
     phosphor::ldap::ConfigMgr mgr(bus, LDAP_CONFIG_ROOT, LDAP_CONFIG_FILE,
                                   LDAP_CONF_PERSIST_PATH, TLS_CACERT_PATH,
