diff --git a/fan_pwm.hpp b/fan_pwm.hpp
index f1dedd6..aa71b9e 100644
--- a/fan_pwm.hpp
+++ b/fan_pwm.hpp
@@ -30,7 +30,7 @@
      */
     FanPwm(std::unique_ptr<hwmonio::HwmonIOInterface> io,
            const std::string& devPath, const std::string& id,
-           sdbusplus::bus::bus& bus, const char* objPath, bool defer,
+           sdbusplus::bus_t& bus, const char* objPath, bool defer,
            uint64_t target) :
         FanPwmObject(bus, objPath,
                      defer ? FanPwmObject::action::emit_no_signals
diff --git a/fan_speed.hpp b/fan_speed.hpp
index f1a3fdb..fd943e1 100644
--- a/fan_speed.hpp
+++ b/fan_speed.hpp
@@ -31,7 +31,7 @@
      */
     FanSpeed(std::unique_ptr<hwmonio::HwmonIOInterface> io,
              const std::string& devPath, const std::string& id,
-             sdbusplus::bus::bus& bus, const char* objPath, bool defer,
+             sdbusplus::bus_t& bus, const char* objPath, bool defer,
              uint64_t target) :
         FanSpeedObject(bus, objPath,
                        defer ? FanSpeedObject::action::emit_no_signals
diff --git a/interface.hpp b/interface.hpp
index 6fdfd51..00ac05e 100644
--- a/interface.hpp
+++ b/interface.hpp
@@ -9,7 +9,7 @@
 #include <xyz/openbmc_project/State/Decorator/OperationalStatus/server.hpp>
 
 template <typename... T>
-using ServerObject = typename sdbusplus::server::object::object<T...>;
+using ServerObject = typename sdbusplus::server::object_t<T...>;
 
 using ValueInterface = sdbusplus::xyz::openbmc_project::Sensor::server::Value;
 using ValueObject = ServerObject<ValueInterface>;
diff --git a/mainloop.cpp b/mainloop.cpp
index 6ab8e9c..85770a2 100644
--- a/mainloop.cpp
+++ b/mainloop.cpp
@@ -303,7 +303,7 @@
                           std::move(info));
 }
 
-MainLoop::MainLoop(sdbusplus::bus::bus&& bus, const std::string& param,
+MainLoop::MainLoop(sdbusplus::bus_t&& bus, const std::string& param,
                    const std::string& path, const std::string& devPath,
                    const char* prefix, const char* root,
                    const std::string& instanceId,
diff --git a/mainloop.hpp b/mainloop.hpp
index 530d4f3..a187b39 100644
--- a/mainloop.hpp
+++ b/mainloop.hpp
@@ -54,7 +54,7 @@
      *  At startup, the application will own a busname with
      *  the format <prefix>.hwmon<n>.
      */
-    MainLoop(sdbusplus::bus::bus&& bus, const std::string& param,
+    MainLoop(sdbusplus::bus_t&& bus, const std::string& param,
              const std::string& path, const std::string& devPath,
              const char* prefix, const char* root,
              const std::string& instanceId,
@@ -91,9 +91,9 @@
     void init();
 
     /** @brief sdbusplus bus client connection. */
-    sdbusplus::bus::bus _bus;
+    sdbusplus::bus_t _bus;
     /** @brief sdbusplus freedesktop.ObjectManager storage. */
-    sdbusplus::server::manager::manager _manager;
+    sdbusplus::server::manager_t _manager;
     /** @brief the parameter path used. */
     std::string _pathParam;
     /** @brief hwmon sysfs class path. */
diff --git a/sensor.cpp b/sensor.cpp
index add4617..2f6ee34 100644
--- a/sensor.cpp
+++ b/sensor.cpp
@@ -122,7 +122,7 @@
                                               TimedoutMap& timedoutMap)
 {
     // Get the initial value for the value interface.
-    auto& bus = *std::get<sdbusplus::bus::bus*>(info);
+    auto& bus = *std::get<sdbusplus::bus_t*>(info);
     auto& obj = std::get<InterfaceMap>(info);
     auto& objPath = std::get<std::string>(info);
 
@@ -251,7 +251,7 @@
         }
     }
 
-    auto& bus = *std::get<sdbusplus::bus::bus*>(info);
+    auto& bus = *std::get<sdbusplus::bus_t*>(info);
 
     iface = std::make_shared<StatusObject>(
         bus, objPath.c_str(), StatusObject::action::emit_no_signals);
diff --git a/targets.hpp b/targets.hpp
index 51e98a5..a66a15b 100644
--- a/targets.hpp
+++ b/targets.hpp
@@ -160,7 +160,7 @@
             }
 
             static constexpr bool deferSignals = true;
-            auto& bus = *std::get<sdbusplus::bus::bus*>(info);
+            auto& bus = *std::get<sdbusplus::bus_t*>(info);
 
             // ioAccess->path() is a path like: /sys/class/hwmon/hwmon1
             // NOTE: When unit-testing, the target won't have an inject-ible
diff --git a/thresholds.hpp b/thresholds.hpp
index d339ea8..162e1c2 100644
--- a/thresholds.hpp
+++ b/thresholds.hpp
@@ -129,7 +129,7 @@
     auto tHi = env::getEnv(Thresholds<T>::envHi, sensorType, sensorID);
     if (!tLo.empty() || !tHi.empty())
     {
-        auto& bus = *std::get<sdbusplus::bus::bus*>(info);
+        auto& bus = *std::get<sdbusplus::bus_t*>(info);
 
         iface = std::make_shared<T>(bus, objPath.c_str(),
                                     T::action::emit_no_signals);
diff --git a/types.hpp b/types.hpp
index e079003..ada6f7f 100644
--- a/types.hpp
+++ b/types.hpp
@@ -10,6 +10,6 @@
 #include <utility>
 
 using InterfaceMap = std::map<InterfaceType, std::any>;
-using ObjectInfo = std::tuple<sdbusplus::bus::bus*, std::string, InterfaceMap>;
+using ObjectInfo = std::tuple<sdbusplus::bus_t*, std::string, InterfaceMap>;
 using RetryIO = std::tuple<size_t, std::chrono::milliseconds>;
 using ObjectStateData = std::pair<std::string, ObjectInfo>;
