diff --git a/callback-manager/src/callback_manager.cpp b/callback-manager/src/callback_manager.cpp
index 5050205..2ecf357 100644
--- a/callback-manager/src/callback_manager.cpp
+++ b/callback-manager/src/callback_manager.cpp
@@ -209,10 +209,10 @@
 void createThresholdMatch(std::shared_ptr<sdbusplus::asio::connection>& conn)
 {
 
-    static sdbusplus::bus::match::match match(
-        static_cast<sdbusplus::bus::bus&>(*conn),
+    static sdbusplus::bus::match_t match(
+        static_cast<sdbusplus::bus_t&>(*conn),
         "type='signal',member='ThresholdAsserted'",
-        [&conn](sdbusplus::message::message& message) {
+        [&conn](sdbusplus::message_t& message) {
             std::string sensorName;
             std::string thresholdInterface;
             std::string event;
@@ -262,12 +262,12 @@
 
 void createAssociationMatch(std::shared_ptr<sdbusplus::asio::connection>& conn)
 {
-    static sdbusplus::bus::match::match match(
-        static_cast<sdbusplus::bus::bus&>(*conn),
+    static sdbusplus::bus::match_t match(
+        static_cast<sdbusplus::bus_t&>(*conn),
         "type='signal',interface='org.freedesktop.DBus.Properties',"
         "arg0namespace='" +
             std::string(associationIface) + "'",
-        [&conn](sdbusplus::message::message& message) {
+        [&conn](sdbusplus::message_t& message) {
             if (message.get_path() == rootPath)
             {
                 return; // it's us
diff --git a/hsbp-manager/include/utils.hpp b/hsbp-manager/include/utils.hpp
index 73bd957..bfe549c 100644
--- a/hsbp-manager/include/utils.hpp
+++ b/hsbp-manager/include/utils.hpp
@@ -23,6 +23,7 @@
 #include <cstdint>
 #include <iostream>
 #include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/bus.hpp>
 #include <sdbusplus/bus/match.hpp>
 #include <string>
 #include <variant>
@@ -138,11 +139,11 @@
     }
 
     powerMatch = std::make_unique<sdbusplus::bus::match_t>(
-        static_cast<sdbusplus::bus::bus&>(*conn),
+        static_cast<sdbusplus::bus_t&>(*conn),
         "type='signal',interface='" + std::string(properties::interface) +
             "',path='" + std::string(power::path) + "',arg0='" +
             std::string(power::interface) + "'",
-        [](sdbusplus::message::message& message) {
+        [](sdbusplus::message_t& message) {
             std::string objectName;
             boost::container::flat_map<std::string, std::variant<std::string>>
                 values;
diff --git a/hsbp-manager/src/hsbp_manager.cpp b/hsbp-manager/src/hsbp_manager.cpp
index ad1aea2..9bb1367 100644
--- a/hsbp-manager/src/hsbp_manager.cpp
+++ b/hsbp-manager/src/hsbp_manager.cpp
@@ -1455,11 +1455,11 @@
 
     conn->request_name(busName);
 
-    sdbusplus::bus::match::match match(
+    sdbusplus::bus::match_t match(
         *conn,
         "type='signal',member='PropertiesChanged',arg0='" +
             std::string(configType) + "'",
-        [&callbackTimer](sdbusplus::message::message&) {
+        [&callbackTimer](sdbusplus::message_t&) {
             callbackTimer.expires_after(std::chrono::seconds(2));
             callbackTimer.async_wait([](const boost::system::error_code ec) {
                 if (ec == boost::asio::error::operation_aborted)
@@ -1476,11 +1476,11 @@
             });
         });
 
-    sdbusplus::bus::match::match drive(
+    sdbusplus::bus::match_t drive(
         *conn,
         "type='signal',member='PropertiesChanged',arg0='xyz.openbmc_project."
         "Inventory.Item.NVMe'",
-        [&callbackTimer](sdbusplus::message::message& message) {
+        [&callbackTimer](sdbusplus::message_t& message) {
             callbackTimer.expires_after(std::chrono::seconds(2));
             if (message.get_sender() == conn->get_unique_name())
             {
