diff --git a/dbus/dbuspassive.cpp b/dbus/dbuspassive.cpp
index 4bfac57..32c31af 100644
--- a/dbus/dbuspassive.cpp
+++ b/dbus/dbuspassive.cpp
@@ -38,7 +38,7 @@
     }
 
     /* Need to get the scale and initial value */
-    auto tempBus = sdbusplus::bus::new_default();
+    auto tempBus = sdbusplus::bus::new_system();
 
     /* service == busname */
     std::string path = getSensorPath(type, id);
diff --git a/dbus/dbuswrite.cpp b/dbus/dbuswrite.cpp
index 9d8b5a9..bac2187 100644
--- a/dbus/dbuswrite.cpp
+++ b/dbus/dbuswrite.cpp
@@ -30,7 +30,7 @@
     DbusWritePercent::createDbusWrite(const std::string& path, int64_t min,
                                       int64_t max, DbusHelperInterface& helper)
 {
-    auto tempBus = sdbusplus::bus::new_default();
+    auto tempBus = sdbusplus::bus::new_system();
     std::string connectionName;
 
     try
@@ -84,7 +84,7 @@
     DbusWrite::createDbusWrite(const std::string& path, int64_t min,
                                int64_t max, DbusHelperInterface& helper)
 {
-    auto tempBus = sdbusplus::bus::new_default();
+    auto tempBus = sdbusplus::bus::new_system();
     std::string connectionName;
 
     try
diff --git a/ipmi/manualcmds.cpp b/ipmi/manualcmds.cpp
index dd0c0e6..73eec20 100644
--- a/ipmi/manualcmds.cpp
+++ b/ipmi/manualcmds.cpp
@@ -77,7 +77,7 @@
 {
     std::string path = getControlPath(zoneId);
 
-    auto propertyReadBus = sdbusplus::bus::new_default();
+    auto propertyReadBus = sdbusplus::bus::new_system();
     auto pimMsg = propertyReadBus.new_method_call(busName, path.c_str(),
                                                   propertiesintf, "GetAll");
     pimMsg.append(intf);
@@ -182,7 +182,7 @@
     bool setValue = static_cast<bool>(request->value);
     Value v{setValue};
 
-    auto PropertyWriteBus = sdbusplus::bus::new_default();
+    auto PropertyWriteBus = sdbusplus::bus::new_system();
 
     std::string path = getControlPath(request->zone);
 
diff --git a/main.cpp b/main.cpp
index 8e781bc..5289101 100644
--- a/main.cpp
+++ b/main.cpp
@@ -83,7 +83,7 @@
         }
     }
 
-    auto modeControlBus = sdbusplus::bus::new_default();
+    auto modeControlBus = sdbusplus::bus::new_system();
 #if CONFIGURE_DBUS
     {
         dbus_configuration::init(modeControlBus);
diff --git a/sensors/manager.hpp b/sensors/manager.hpp
index f4f3651..a6b4b9d 100644
--- a/sensors/manager.hpp
+++ b/sensors/manager.hpp
@@ -23,8 +23,8 @@
     }
 
     SensorManager() :
-        SensorManager(std::move(sdbusplus::bus::new_default()),
-                      std::move(sdbusplus::bus::new_default()))
+        SensorManager(std::move(sdbusplus::bus::new_system()),
+                      std::move(sdbusplus::bus::new_system()))
     {
     }
 
diff --git a/setsensor.cpp b/setsensor.cpp
index 3681996..fb6d297 100644
--- a/setsensor.cpp
+++ b/setsensor.cpp
@@ -26,7 +26,7 @@
     sValue v{value};
 
     std::string busname{sbusName};
-    auto PropertyWriteBus = sdbusplus::bus::new_default();
+    auto PropertyWriteBus = sdbusplus::bus::new_system();
     std::string path{sobjectPath};
 
     auto pimMsg = PropertyWriteBus.new_method_call(
@@ -59,7 +59,7 @@
     Value v{setValue};
 
     std::string busname{busName};
-    auto PropertyWriteBus = sdbusplus::bus::new_default();
+    auto PropertyWriteBus = sdbusplus::bus::new_system();
     std::string path = GetControlPath(zone);
 
     auto pimMsg = PropertyWriteBus.new_method_call(
