diff --git a/user_channel/channel_mgmt.cpp b/user_channel/channel_mgmt.cpp
index 96776df..7d3cf95 100644
--- a/user_channel/channel_mgmt.cpp
+++ b/user_channel/channel_mgmt.cpp
@@ -349,7 +349,7 @@
                 sdbusplus::bus::match::rules::interface(
                     dBusPropertiesInterface) +
                 sdbusplus::bus::match::rules::argN(0, networkChConfigIntfName),
-            [&](sdbusplus::message::message& msg) {
+            [&](sdbusplus::message_t& msg) {
                 DbusChObjProperties props;
                 std::string iface;
                 std::string path = msg.get_path();
@@ -364,7 +364,7 @@
                 sdbusplus::bus::match::rules::member(interfaceAddedSignal) +
                 sdbusplus::bus::match::rules::argNpath(
                     0, std::string(networkIntfObjectBasePath) + "/"),
-            [&](sdbusplus::message::message&) { initChannelPersistData(); });
+            [&](sdbusplus::message_t&) { initChannelPersistData(); });
 
         chInterfaceRemovedSignal = std::make_unique<sdbusplus::bus::match_t>(
             bus,
@@ -372,7 +372,7 @@
                 sdbusplus::bus::match::rules::member(interfaceRemovedSignal) +
                 sdbusplus::bus::match::rules::argNpath(
                     0, std::string(networkIntfObjectBasePath) + "/"),
-            [&](sdbusplus::message::message&) { initChannelPersistData(); });
+            [&](sdbusplus::message_t&) { initChannelPersistData(); });
     }
 }
 
@@ -649,7 +649,7 @@
                 return ccUnspecifiedError;
             }
         }
-        catch (const sdbusplus::exception::exception& e)
+        catch (const sdbusplus::exception_t& e)
         {
             log<level::ERR>("Exception: Network interface does not exist");
             return ccInvalidFieldRequest;
@@ -1321,7 +1321,7 @@
 
         auto reply = bus.call(method);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         log<level::DEBUG>("set-property failed",
                           entry("SERVICE=%s", service.c_str()),
@@ -1351,7 +1351,7 @@
         auto reply = bus.call(method);
         reply.read(value);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         log<level::DEBUG>("get-property failed",
                           entry("SERVICE=%s", service.c_str()),
@@ -1396,7 +1396,7 @@
                     "exception: Network interface does not exist");
                 continue;
             }
-            catch (const sdbusplus::exception::exception& e)
+            catch (const sdbusplus::exception_t& e)
             {
                 log<level::DEBUG>(
                     "exception: Network interface does not exist");
diff --git a/user_channel/channel_mgmt.hpp b/user_channel/channel_mgmt.hpp
index 0f35816..9b03063 100644
--- a/user_channel/channel_mgmt.hpp
+++ b/user_channel/channel_mgmt.hpp
@@ -252,7 +252,7 @@
     std::time_t nvFileLastUpdatedTime;
     std::time_t voltFileLastUpdatedTime;
     boost::interprocess::file_lock mutexCleanupLock;
-    sdbusplus::bus::bus bus;
+    sdbusplus::bus_t bus;
     bool signalHndlrObjectState = false;
     boost::interprocess::file_lock sigHndlrLock;
 
diff --git a/user_channel/user_mgmt.cpp b/user_channel/user_mgmt.cpp
index a30c99a..f516d83 100644
--- a/user_channel/user_mgmt.cpp
+++ b/user_channel/user_mgmt.cpp
@@ -128,7 +128,7 @@
     __attribute__((init_priority(101)));
 
 // TODO:  Below code can be removed once it is moved to common layer libmiscutil
-std::string getUserService(sdbusplus::bus::bus& bus, const std::string& intf,
+std::string getUserService(sdbusplus::bus_t& bus, const std::string& intf,
                            const std::string& path)
 {
     auto mapperCall = bus.new_method_call(objMapperService, objMapperPath,
@@ -151,7 +151,7 @@
     return mapperResponse.begin()->first;
 }
 
-void setDbusProperty(sdbusplus::bus::bus& bus, const std::string& service,
+void setDbusProperty(sdbusplus::bus_t& bus, const std::string& service,
                      const std::string& objPath, const std::string& interface,
                      const std::string& property,
                      const DbusUserPropVariant& value)
@@ -164,7 +164,7 @@
         method.append(interface, property, value);
         bus.call(method);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         log<level::ERR>("Failed to set property",
                         entry("PROPERTY=%s", property.c_str()),
@@ -176,7 +176,7 @@
 
 static std::string getUserServiceName()
 {
-    static sdbusplus::bus::bus bus(ipmid_get_sd_bus_connection());
+    static sdbusplus::bus_t bus(ipmid_get_sd_bus_connection());
     static std::string userMgmtService;
     if (userMgmtService.empty())
     {
@@ -185,7 +185,7 @@
             userMgmtService =
                 ipmi::getUserService(bus, userMgrInterface, userMgrObjBasePath);
         }
-        catch (const sdbusplus::exception::exception& e)
+        catch (const sdbusplus::exception_t& e)
         {
             userMgmtService.clear();
         }
@@ -302,10 +302,9 @@
     return;
 }
 
-void userUpdatedSignalHandler(UserAccess& usrAccess,
-                              sdbusplus::message::message& msg)
+void userUpdatedSignalHandler(UserAccess& usrAccess, sdbusplus::message_t& msg)
 {
-    static sdbusplus::bus::bus bus(ipmid_get_sd_bus_connection());
+    static sdbusplus::bus_t bus(ipmid_get_sd_bus_connection());
     std::string signal = msg.get_member();
     std::string userName, priv, newUserName;
     std::vector<std::string> groups;
@@ -410,7 +409,7 @@
                         auto reply = bus.call(method);
                         reply.read(properties);
                     }
-                    catch (const sdbusplus::exception::exception& e)
+                    catch (const sdbusplus::exception_t& e)
                     {
                         log<level::DEBUG>(
                             "Failed to excute method",
@@ -584,7 +583,7 @@
         auto reply = bus.call(method);
         reply.read(properties);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         log<level::ERR>("Failed to excute method",
                         entry("METHOD=%s", getSubTreeMethod),
@@ -1038,7 +1037,7 @@
                 deleteUserInterface, deleteUserMethod);
             auto reply = bus.call(method);
         }
-        catch (const sdbusplus::exception::exception& e)
+        catch (const sdbusplus::exception_t& e)
         {
             log<level::DEBUG>("Failed to excute method",
                               entry("METHOD=%s", deleteUserMethod),
@@ -1062,7 +1061,7 @@
             method.append(userName.c_str(), availableGroups, "", false);
             auto reply = bus.call(method);
         }
-        catch (const sdbusplus::exception::exception& e)
+        catch (const sdbusplus::exception_t& e)
         {
             log<level::DEBUG>("Failed to excute method",
                               entry("METHOD=%s", createUserMethod),
@@ -1086,7 +1085,7 @@
             method.append(oldUser.c_str(), userName.c_str());
             auto reply = bus.call(method);
         }
-        catch (const sdbusplus::exception::exception& e)
+        catch (const sdbusplus::exception_t& e)
         {
             log<level::DEBUG>("Failed to excute method",
                               entry("METHOD=%s", renameUserMethod),
@@ -1537,7 +1536,7 @@
         auto reply = bus.call(method);
         reply.read(properties);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         log<level::DEBUG>("Failed to excute method",
                           entry("METHOD=%s", getAllPropertiesMethod),
@@ -1656,7 +1655,7 @@
             sdbusplus::bus::match::rules::type::signal() +
                 sdbusplus::bus::match::rules::interface(dBusObjManager) +
                 sdbusplus::bus::match::rules::path(userMgrObjBasePath),
-            [&](sdbusplus::message::message& msg) {
+            [&](sdbusplus::message_t& msg) {
                 userUpdatedSignalHandler(*this, msg);
             });
         userMgrRenamedSignal = std::make_unique<sdbusplus::bus::match_t>(
@@ -1664,7 +1663,7 @@
             sdbusplus::bus::match::rules::type::signal() +
                 sdbusplus::bus::match::rules::interface(userMgrInterface) +
                 sdbusplus::bus::match::rules::path(userMgrObjBasePath),
-            [&](sdbusplus::message::message& msg) {
+            [&](sdbusplus::message_t& msg) {
                 userUpdatedSignalHandler(*this, msg);
             });
         userPropertiesSignal = std::make_unique<sdbusplus::bus::match_t>(
@@ -1675,7 +1674,7 @@
                     dBusPropertiesInterface) +
                 sdbusplus::bus::match::rules::member(propertiesChangedSignal) +
                 sdbusplus::bus::match::rules::argN(0, usersInterface),
-            [&](sdbusplus::message::message& msg) {
+            [&](sdbusplus::message_t& msg) {
                 userUpdatedSignalHandler(*this, msg);
             });
         signalHndlrObject = true;
@@ -1689,7 +1688,7 @@
         auto reply = bus.call(method);
         reply.read(managedObjs);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         log<level::DEBUG>("Failed to excute method",
                           entry("METHOD=%s", getSubTreeMethod),
diff --git a/user_channel/user_mgmt.hpp b/user_channel/user_mgmt.hpp
index 602d549..b3db460 100644
--- a/user_channel/user_mgmt.hpp
+++ b/user_channel/user_mgmt.hpp
@@ -378,7 +378,7 @@
     UsersTbl usersTbl;
     std::vector<std::string> availablePrivileges;
     std::vector<std::string> availableGroups;
-    sdbusplus::bus::bus bus;
+    sdbusplus::bus_t bus;
     std::timespec fileLastUpdatedTime;
     bool signalHndlrObject = false;
     boost::interprocess::file_lock sigHndlrLock;
