diff --git a/attn/attn_dbus.cpp b/attn/attn_dbus.cpp
index 2d11bde..7613777 100644
--- a/attn/attn_dbus.cpp
+++ b/attn/attn_dbus.cpp
@@ -12,8 +12,7 @@
 
 /** @brief Create a dbus method */
 int dbusMethod(const std::string& i_path, const std::string& i_interface,
-               const std::string& i_function,
-               sdbusplus::message::message& o_method)
+               const std::string& i_function, sdbusplus::message_t& o_method)
 {
     int rc = RC_DBUS_ERROR; // assume error
 
@@ -77,7 +76,7 @@
     constexpr auto interface = "xyz.openbmc_project.Logging.Create";
     constexpr auto function  = "Create";
 
-    sdbusplus::message::message method;
+    sdbusplus::message_t method;
 
     if (0 == dbusMethod(pathLogging, interface, function, method))
     {
@@ -108,7 +107,7 @@
     constexpr auto interface = "org.open_power.Logging.PEL";
     constexpr auto function  = "GetPEL";
 
-    sdbusplus::message::message method;
+    sdbusplus::message_t method;
 
     if (0 == dbusMethod(pathLogging, interface, function, method))
     {
diff --git a/attn/attn_dbus.hpp b/attn/attn_dbus.hpp
index b01c82d..6c2d608 100644
--- a/attn/attn_dbus.hpp
+++ b/attn/attn_dbus.hpp
@@ -22,8 +22,7 @@
  *
  **/
 int dbusMethod(const std::string& i_path, const std::string& i_interface,
-               const std::string& i_function,
-               sdbusplus::message::message& o_method);
+               const std::string& i_function, sdbusplus::message_t& o_method);
 
 /**
  * Create a PEL from raw PEL data
diff --git a/attn/attn_dump.cpp b/attn/attn_dump.cpp
index c3dc5b2..6a106a0 100644
--- a/attn/attn_dump.cpp
+++ b/attn/attn_dump.cpp
@@ -20,8 +20,7 @@
  * @param[out] o_dumpStatus Dump status dbus response string
  * @return Always non-zero indicating no error, no cascading callbacks
  */
-uint dumpStatusChanged(sdbusplus::message::message& i_msg,
-                       std::string& o_dumpStatus)
+uint dumpStatusChanged(sdbusplus::message_t& i_msg, std::string& o_dumpStatus)
 {
     // reply (msg) will be a property change message
     std::string interface;
@@ -107,7 +106,7 @@
     constexpr auto interface = "xyz.openbmc_project.Dump.Create";
     constexpr auto function  = "CreateDump";
 
-    sdbusplus::message::message method;
+    sdbusplus::message_t method;
 
     if (0 == dbusMethod(path, interface, function, method))
     {
