diff --git a/phosphor-regulators/src/dbus_sensor.cpp b/phosphor-regulators/src/dbus_sensor.cpp
index 1dfd172..31932b2 100644
--- a/phosphor-regulators/src/dbus_sensor.cpp
+++ b/phosphor-regulators/src/dbus_sensor.cpp
@@ -66,7 +66,7 @@
 constexpr double voltageHysteresis = 0.001;
 constexpr const char* voltageNamespace = "voltage";
 
-DBusSensor::DBusSensor(sdbusplus::bus::bus& bus, const std::string& name,
+DBusSensor::DBusSensor(sdbusplus::bus_t& bus, const std::string& name,
                        SensorType type, double value, const std::string& rail,
                        const std::string& deviceInventoryPath,
                        const std::string& chassisInventoryPath) :
diff --git a/phosphor-regulators/src/dbus_sensor.hpp b/phosphor-regulators/src/dbus_sensor.hpp
index 1ac9b61..1a4bfe0 100644
--- a/phosphor-regulators/src/dbus_sensor.hpp
+++ b/phosphor-regulators/src/dbus_sensor.hpp
@@ -120,7 +120,7 @@
      * @param chassisInventoryPath D-Bus inventory path of the chassis that
      *                             contains the voltage regulator device
      */
-    explicit DBusSensor(sdbusplus::bus::bus& bus, const std::string& name,
+    explicit DBusSensor(sdbusplus::bus_t& bus, const std::string& name,
                         SensorType type, double value, const std::string& rail,
                         const std::string& deviceInventoryPath,
                         const std::string& chassisInventoryPath);
@@ -314,7 +314,7 @@
     /**
      * D-Bus bus object.
      */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /**
      * Sensor name.
diff --git a/phosphor-regulators/src/dbus_sensors.hpp b/phosphor-regulators/src/dbus_sensors.hpp
index 590c960..7a4d6ca 100644
--- a/phosphor-regulators/src/dbus_sensors.hpp
+++ b/phosphor-regulators/src/dbus_sensors.hpp
@@ -50,7 +50,7 @@
      *
      * @param bus D-Bus bus object
      */
-    explicit DBusSensors(sdbusplus::bus::bus& bus) :
+    explicit DBusSensors(sdbusplus::bus_t& bus) :
         bus{bus}, manager{bus, sensorsObjectPath}
     {}
 
@@ -81,7 +81,7 @@
     /**
      * D-Bus bus object.
      */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /**
      * D-Bus object manager.
diff --git a/phosphor-regulators/src/error_logging.hpp b/phosphor-regulators/src/error_logging.hpp
index 1468604..ae26dab 100644
--- a/phosphor-regulators/src/error_logging.hpp
+++ b/phosphor-regulators/src/error_logging.hpp
@@ -166,7 +166,7 @@
      *
      * @param bus D-Bus bus object
      */
-    explicit DBusErrorLogging(sdbusplus::bus::bus& bus) : bus{bus}
+    explicit DBusErrorLogging(sdbusplus::bus_t& bus) : bus{bus}
     {}
 
     /** @copydoc ErrorLogging::logConfigFileError() */
@@ -264,7 +264,7 @@
     /**
      * D-Bus bus object.
      */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 };
 
 } // namespace phosphor::power::regulators
diff --git a/phosphor-regulators/src/interfaces/manager_interface.cpp b/phosphor-regulators/src/interfaces/manager_interface.cpp
index 9e1cb34..81196c1 100644
--- a/phosphor-regulators/src/interfaces/manager_interface.cpp
+++ b/phosphor-regulators/src/interfaces/manager_interface.cpp
@@ -33,7 +33,7 @@
 namespace interface
 {
 
-ManagerInterface::ManagerInterface(sdbusplus::bus::bus& bus, const char* path) :
+ManagerInterface::ManagerInterface(sdbusplus::bus_t& bus, const char* path) :
     _serverInterface(bus, path, interface, _vtable, this)
 {}
 
@@ -44,7 +44,7 @@
     {
         try
         {
-            auto m = sdbusplus::message::message(msg);
+            auto m = sdbusplus::message_t(msg);
 
             auto mgrObj = static_cast<ManagerInterface*>(context);
             mgrObj->configure();
@@ -77,7 +77,7 @@
         try
         {
             bool enable{};
-            auto m = sdbusplus::message::message(msg);
+            auto m = sdbusplus::message_t(msg);
 
             m.read(enable);
 
diff --git a/phosphor-regulators/src/interfaces/manager_interface.hpp b/phosphor-regulators/src/interfaces/manager_interface.hpp
index 3f262d3..6f4abe0 100644
--- a/phosphor-regulators/src/interfaces/manager_interface.hpp
+++ b/phosphor-regulators/src/interfaces/manager_interface.hpp
@@ -41,7 +41,7 @@
      * @param[in] bus - Bus to attach to.
      * @param[in] path - Path to attach at.
      */
-    ManagerInterface(sdbusplus::bus::bus& bus, const char* path);
+    ManagerInterface(sdbusplus::bus_t& bus, const char* path);
 
     /**
      * @brief Implementation for the configure method
diff --git a/phosphor-regulators/src/manager.cpp b/phosphor-regulators/src/manager.cpp
index a99ec11..4bb9a23 100644
--- a/phosphor-regulators/src/manager.cpp
+++ b/phosphor-regulators/src/manager.cpp
@@ -71,7 +71,7 @@
  */
 const fs::path testConfigFileDir{"/etc/phosphor-regulators"};
 
-Manager::Manager(sdbusplus::bus::bus& bus, const sdeventplus::Event& event) :
+Manager::Manager(sdbusplus::bus_t& bus, const sdeventplus::Event& event) :
     ManagerObject{bus, managerObjPath}, bus{bus}, eventLoop{event},
     services{bus}, phaseFaultTimer{event,
                                    std::bind(&Manager::phaseFaultTimerExpired,
@@ -138,7 +138,7 @@
     }
 }
 
-void Manager::interfacesAddedHandler(sdbusplus::message::message& msg)
+void Manager::interfacesAddedHandler(sdbusplus::message_t& msg)
 {
     // Verify message is valid
     if (!msg)
diff --git a/phosphor-regulators/src/manager.hpp b/phosphor-regulators/src/manager.hpp
index c056b27..fdb8461 100644
--- a/phosphor-regulators/src/manager.hpp
+++ b/phosphor-regulators/src/manager.hpp
@@ -36,7 +36,7 @@
 
 using Timer = sdeventplus::utility::Timer<sdeventplus::ClockId::Monotonic>;
 
-using ManagerObject = sdbusplus::server::object::object<
+using ManagerObject = sdbusplus::server::object_t<
     phosphor::power::regulators::interface::ManagerInterface>;
 
 class Manager : public ManagerObject
@@ -56,7 +56,7 @@
      * @param bus the D-Bus bus
      * @param event the sdevent event
      */
-    Manager(sdbusplus::bus::bus& bus, const sdeventplus::Event& event);
+    Manager(sdbusplus::bus_t& bus, const sdeventplus::Event& event);
 
     /**
      * Implements the D-Bus "configure" method.
@@ -73,7 +73,7 @@
      *
      * @param msg Expanded sdbusplus message data
      */
-    void interfacesAddedHandler(sdbusplus::message::message& msg);
+    void interfacesAddedHandler(sdbusplus::message_t& msg);
 
     /**
      * Implements the D-Bus "monitor" method.
@@ -203,7 +203,7 @@
     /**
      * The D-Bus bus
      */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /**
      * Event to loop on
@@ -228,7 +228,7 @@
     /**
      * List of D-Bus signal matches
      */
-    std::vector<std::unique_ptr<sdbusplus::bus::match::match>> signals{};
+    std::vector<std::unique_ptr<sdbusplus::bus::match_t>> signals{};
 
     /**
      * Indicates whether regulator monitoring is enabled.
diff --git a/phosphor-regulators/src/presence_service.cpp b/phosphor-regulators/src/presence_service.cpp
index 61d8aec..017bc7a 100644
--- a/phosphor-regulators/src/presence_service.cpp
+++ b/phosphor-regulators/src/presence_service.cpp
@@ -41,7 +41,7 @@
             util::getProperty(INVENTORY_IFACE, PRESENT_PROP, inventoryPath,
                               INVENTORY_MGR_IFACE, bus, present);
         }
-        catch (const sdbusplus::exception::exception& e)
+        catch (const sdbusplus::exception_t& e)
         {
             // If exception type is expected and indicates hardware not present
             if (isExpectedException(e))
@@ -62,8 +62,7 @@
     return present;
 }
 
-bool DBusPresenceService::isExpectedException(
-    const sdbusplus::exception::exception& e)
+bool DBusPresenceService::isExpectedException(const sdbusplus::exception_t& e)
 {
     // Initially assume exception is not one of the expected types
     bool isExpected{false};
diff --git a/phosphor-regulators/src/presence_service.hpp b/phosphor-regulators/src/presence_service.hpp
index 83b73c1..9520dbd 100644
--- a/phosphor-regulators/src/presence_service.hpp
+++ b/phosphor-regulators/src/presence_service.hpp
@@ -83,7 +83,7 @@
      *
      * @param bus D-Bus bus object
      */
-    explicit DBusPresenceService(sdbusplus::bus::bus& bus) : bus{bus}
+    explicit DBusPresenceService(sdbusplus::bus_t& bus) : bus{bus}
     {}
 
     /** @copydoc PresenceService::clearCache() */
@@ -102,12 +102,12 @@
      *
      * @return true if exception type is expected, false otherwise
      */
-    bool isExpectedException(const sdbusplus::exception::exception& e);
+    bool isExpectedException(const sdbusplus::exception_t& e);
 
     /**
      * D-Bus bus object.
      */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /**
      * Cached presence data.
diff --git a/phosphor-regulators/src/services.hpp b/phosphor-regulators/src/services.hpp
index 07e3d5f..3c2e3ff 100644
--- a/phosphor-regulators/src/services.hpp
+++ b/phosphor-regulators/src/services.hpp
@@ -52,7 +52,7 @@
      *
      * @return D-Bus bus
      */
-    virtual sdbusplus::bus::bus& getBus() = 0;
+    virtual sdbusplus::bus_t& getBus() = 0;
 
     /**
      * Returns the error logging interface.
@@ -111,13 +111,13 @@
      *
      * @param bus D-Bus bus object
      */
-    explicit BMCServices(sdbusplus::bus::bus& bus) :
+    explicit BMCServices(sdbusplus::bus_t& bus) :
         bus{bus}, errorLogging{bus},
         presenceService{bus}, sensors{bus}, vpd{bus}
     {}
 
     /** @copydoc Services::getBus() */
-    virtual sdbusplus::bus::bus& getBus() override
+    virtual sdbusplus::bus_t& getBus() override
     {
         return bus;
     }
@@ -156,7 +156,7 @@
     /**
      * D-Bus bus object.
      */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /**
      * Implementation of the ErrorLogging interface using D-Bus method calls.
diff --git a/phosphor-regulators/src/vpd.hpp b/phosphor-regulators/src/vpd.hpp
index f2741d1..514172c 100644
--- a/phosphor-regulators/src/vpd.hpp
+++ b/phosphor-regulators/src/vpd.hpp
@@ -88,7 +88,7 @@
      *
      * @param bus D-Bus bus object
      */
-    explicit DBusVPD(sdbusplus::bus::bus& bus) : bus{bus}
+    explicit DBusVPD(sdbusplus::bus_t& bus) : bus{bus}
     {}
 
     /** @copydoc VPD::clearCache() */
@@ -136,7 +136,7 @@
     /**
      * D-Bus bus object.
      */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /**
      * Cached VPD keyword values.
diff --git a/phosphor-regulators/test/mock_services.hpp b/phosphor-regulators/test/mock_services.hpp
index 8e3a100..72e981e 100644
--- a/phosphor-regulators/test/mock_services.hpp
+++ b/phosphor-regulators/test/mock_services.hpp
@@ -49,7 +49,7 @@
     virtual ~MockServices() = default;
 
     /** @copydoc Services::getBus() */
-    virtual sdbusplus::bus::bus& getBus() override
+    virtual sdbusplus::bus_t& getBus() override
     {
         return bus;
     }
@@ -150,7 +150,7 @@
     /**
      * D-Bus bus object.
      */
-    sdbusplus::bus::bus bus{sdbusplus::bus::new_default()};
+    sdbusplus::bus_t bus{sdbusplus::bus::new_default()};
 
     /**
      * Mock implementation of the ErrorLogging interface.
