diff --git a/src/mainapp.cpp b/src/mainapp.cpp
index ef9b353..7d64ec7 100644
--- a/src/mainapp.cpp
+++ b/src/mainapp.cpp
@@ -223,7 +223,7 @@
         auto bus = sdbusplus::bus::new_default();
 
         // Add systemd object manager.
-        sdbusplus::server::manager::manager watchdogManager(bus, path.c_str());
+        sdbusplus::server::manager_t watchdogManager(bus, path.c_str());
 
         // Attach the bus to sd_event to service user requests
         bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
@@ -233,7 +233,7 @@
                           std::move(maybeFallback), minInterval,
                           defaultInterval);
 
-        std::optional<sdbusplus::bus::match::match> watchPostcodeMatch;
+        std::optional<sdbusplus::bus::match_t> watchPostcodeMatch;
         if (watchPostcodes)
         {
             watchPostcodeMatch.emplace(
diff --git a/src/watchdog.cpp b/src/watchdog.cpp
index 05a95e9..918a372 100644
--- a/src/watchdog.cpp
+++ b/src/watchdog.cpp
@@ -138,7 +138,7 @@
             signal.append(convertForMessage(action).c_str());
             signal.signal_send();
         }
-        catch (const sdbusplus::exception::exception& e)
+        catch (const sdbusplus::exception_t& e)
         {
             log<level::ERR>("watchdog: failed to send timeout signal",
                             entry("ERROR=%s", e.what()));
@@ -153,7 +153,7 @@
 
             bus.call_noreply(method);
         }
-        catch (const sdbusplus::exception::exception& e)
+        catch (const sdbusplus::exception_t& e)
         {
             log<level::ERR>("watchdog: Failed to start unit",
                             entry("TARGET=%s", target->second.c_str()),
diff --git a/src/watchdog.hpp b/src/watchdog.hpp
index 31cde63..16f05f1 100644
--- a/src/watchdog.hpp
+++ b/src/watchdog.hpp
@@ -18,7 +18,7 @@
 
 constexpr auto DEFAULT_MIN_INTERVAL_MS = 0;
 namespace Base = sdbusplus::xyz::openbmc_project::State::server;
-using WatchdogInherits = sdbusplus::server::object::object<Base::Watchdog>;
+using WatchdogInherits = sdbusplus::server::object_t<Base::Watchdog>;
 
 /** @class Watchdog
  *  @brief OpenBMC watchdog implementation.
@@ -63,7 +63,7 @@
      *  @param[in] minInterval     - minimum intervale value allowed
      *  @param[in] defaultInterval - default interval to start with
      */
-    Watchdog(sdbusplus::bus::bus& bus, const char* objPath,
+    Watchdog(sdbusplus::bus_t& bus, const char* objPath,
              const sdeventplus::Event& event,
              ActionTargetMap&& actionTargetMap = {},
              std::optional<Fallback>&& fallback = std::nullopt,
@@ -164,7 +164,7 @@
 
   private:
     /** @brief sdbusplus handle */
-    sdbusplus::bus::bus& bus;
+    sdbusplus::bus_t& bus;
 
     /** @brief Map of systemd units to be started when the timer expires */
     ActionTargetMap actionTargetMap;
diff --git a/test/watchdog.cpp b/test/watchdog.cpp
index 3f0e06d..4f4a4cc 100644
--- a/test/watchdog.cpp
+++ b/test/watchdog.cpp
@@ -47,7 +47,7 @@
     sdeventplus::Event event;
 
     // sdbusplus handle
-    sdbusplus::bus::bus bus;
+    sdbusplus::bus_t bus;
 
     // Watchdog object
     std::unique_ptr<Watchdog> wdog;
