diff --git a/dump-extensions/openpower-dumps/dump-extensions.cpp b/dump-extensions/openpower-dumps/dump-extensions.cpp
index b47ba55..45864ca 100644
--- a/dump-extensions/openpower-dumps/dump-extensions.cpp
+++ b/dump-extensions/openpower-dumps/dump-extensions.cpp
@@ -12,7 +12,7 @@
 namespace dump
 {
 
-void loadExtensions(sdbusplus::bus::bus& bus, DumpManagerList& dumpList)
+void loadExtensions(sdbusplus::bus_t& bus, DumpManagerList& dumpList)
 {
 
     dumpList.push_back(std::make_unique<openpower::dump::system::Manager>(
diff --git a/dump-extensions/openpower-dumps/dump_manager_resource.hpp b/dump-extensions/openpower-dumps/dump_manager_resource.hpp
index e30dfec..4935ed0 100644
--- a/dump-extensions/openpower-dumps/dump_manager_resource.hpp
+++ b/dump-extensions/openpower-dumps/dump_manager_resource.hpp
@@ -16,7 +16,7 @@
 {
 
 constexpr uint32_t INVALID_SOURCE_ID = 0xFFFFFFFF;
-using NotifyIface = sdbusplus::server::object::object<
+using NotifyIface = sdbusplus::server::object_t<
     sdbusplus::xyz::openbmc_project::Dump::server::Create,
     sdbusplus::com::ibm::Dump::server::Create,
     sdbusplus::xyz::openbmc_project::Dump::server::NewDump>;
@@ -44,7 +44,7 @@
      *  @param[in] path - Path to attach at.
      *  @param[in] baseEntryPath - Base path of the dump entry.
      */
-    Manager(sdbusplus::bus::bus& bus, const char* path,
+    Manager(sdbusplus::bus_t& bus, const char* path,
             const std::string& baseEntryPath) :
         NotifyIface(bus, path),
         phosphor::dump::Manager(bus, path, baseEntryPath)
diff --git a/dump-extensions/openpower-dumps/dump_manager_system.hpp b/dump-extensions/openpower-dumps/dump_manager_system.hpp
index 7170b3f..5ea4deb 100644
--- a/dump-extensions/openpower-dumps/dump_manager_system.hpp
+++ b/dump-extensions/openpower-dumps/dump_manager_system.hpp
@@ -16,7 +16,7 @@
 {
 
 constexpr uint32_t INVALID_SOURCE_ID = 0xFFFFFFFF;
-using NotifyIface = sdbusplus::server::object::object<
+using NotifyIface = sdbusplus::server::object_t<
     sdbusplus::xyz::openbmc_project::Dump::server::Create,
     sdbusplus::xyz::openbmc_project::Dump::server::NewDump>;
 
@@ -43,7 +43,7 @@
      *  @param[in] path - Path to attach at.
      *  @param[in] baseEntryPath - Base path of the dump entry.
      */
-    Manager(sdbusplus::bus::bus& bus, const char* path,
+    Manager(sdbusplus::bus_t& bus, const char* path,
             const std::string& baseEntryPath) :
         NotifyIface(bus, path),
         phosphor::dump::Manager(bus, path, baseEntryPath)
diff --git a/dump-extensions/openpower-dumps/resource_dump_entry.hpp b/dump-extensions/openpower-dumps/resource_dump_entry.hpp
index 7fedfba..065438c 100644
--- a/dump-extensions/openpower-dumps/resource_dump_entry.hpp
+++ b/dump-extensions/openpower-dumps/resource_dump_entry.hpp
@@ -15,9 +15,9 @@
 namespace resource
 {
 template <typename T>
-using ServerObject = typename sdbusplus::server::object::object<T>;
+using ServerObject = typename sdbusplus::server::object_t<T>;
 
-using EntryIfaces = sdbusplus::server::object::object<
+using EntryIfaces = sdbusplus::server::object_t<
     sdbusplus::com::ibm::Dump::Entry::server::Resource>;
 
 class Manager;
@@ -51,7 +51,7 @@
      *  @param[in] status - status  of the dump.
      *  @param[in] parent - The dump entry's parent.
      */
-    Entry(sdbusplus::bus::bus& bus, const std::string& objPath, uint32_t dumpId,
+    Entry(sdbusplus::bus_t& bus, const std::string& objPath, uint32_t dumpId,
           uint64_t timeStamp, uint64_t dumpSize, const uint32_t sourceId,
           std::string vspStr, std::string pwd,
           phosphor::dump::OperationStatus status,
diff --git a/dump-extensions/openpower-dumps/system_dump_entry.hpp b/dump-extensions/openpower-dumps/system_dump_entry.hpp
index f09fafc..bc247c9 100644
--- a/dump-extensions/openpower-dumps/system_dump_entry.hpp
+++ b/dump-extensions/openpower-dumps/system_dump_entry.hpp
@@ -13,9 +13,9 @@
 namespace system
 {
 template <typename T>
-using ServerObject = typename sdbusplus::server::object::object<T>;
+using ServerObject = typename sdbusplus::server::object_t<T>;
 
-using EntryIfaces = sdbusplus::server::object::object<
+using EntryIfaces = sdbusplus::server::object_t<
     sdbusplus::xyz::openbmc_project::Dump::Entry::server::System>;
 
 class Manager;
@@ -46,7 +46,7 @@
      *  @param[in] status - status  of the dump.
      *  @param[in] parent - The dump entry's parent.
      */
-    Entry(sdbusplus::bus::bus& bus, const std::string& objPath, uint32_t dumpId,
+    Entry(sdbusplus::bus_t& bus, const std::string& objPath, uint32_t dumpId,
           uint64_t timeStamp, uint64_t dumpSize, const uint32_t sourceId,
           phosphor::dump::OperationStatus status,
           phosphor::dump::Manager& parent) :
