diff --git a/user_channel/channel_mgmt.cpp b/user_channel/channel_mgmt.cpp
index 20e58b0..697219c 100644
--- a/user_channel/channel_mgmt.cpp
+++ b/user_channel/channel_mgmt.cpp
@@ -605,8 +605,8 @@
                                      "/" + channelData[chNum].chName;
         try
         {
-            if (0 != setDbusProperty(bus, networkIntfServiceName,
-                                     networkIntfObj, networkChConfigIntfName,
+            if (0 != setDbusProperty(networkIntfServiceName, networkIntfObj,
+                                     networkChConfigIntfName,
                                      privilegePropertyString, privStr))
             {
                 log<level::DEBUG>(
@@ -972,7 +972,6 @@
         log<level::DEBUG>("Error in opening IPMI Channel data file");
         return -EIO;
     }
-
     try
     {
         // Fill in global structure
@@ -1041,7 +1040,6 @@
         log<level::DEBUG>("Error in opening IPMI Channel data file");
         return -EIO;
     }
-
     try
     {
         // Fill in global structure
@@ -1238,8 +1236,7 @@
     return ret;
 }
 
-int ChannelConfig::setDbusProperty(sdbusplus::bus::bus& bus,
-                                   const std::string& service,
+int ChannelConfig::setDbusProperty(const std::string& service,
                                    const std::string& objPath,
                                    const std::string& interface,
                                    const std::string& property,
@@ -1268,8 +1265,7 @@
     return 0;
 }
 
-int ChannelConfig::getDbusProperty(sdbusplus::bus::bus& bus,
-                                   const std::string& service,
+int ChannelConfig::getDbusProperty(const std::string& service,
                                    const std::string& objPath,
                                    const std::string& interface,
                                    const std::string& property,
@@ -1314,8 +1310,7 @@
                     std::string(networkIntfObjectBasePath) + "/" +
                     channelData[chNum].chName;
                 DbusVariant variant;
-                if (0 != getDbusProperty(bus, networkIntfServiceName,
-                                         networkIntfObj,
+                if (0 != getDbusProperty(networkIntfServiceName, networkIntfObj,
                                          networkChConfigIntfName,
                                          privilegePropertyString, variant))
                 {
