diff --git a/Makefile.am b/Makefile.am
index f62a5f3..b859f32 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -81,6 +81,7 @@
 libswampd_la_SOURCES = \
 	notimpl/readonly.cpp \
 	notimpl/writeonly.cpp \
+	dbus/dbusconfiguration.cpp \
 	dbus/dbusutil.cpp \
 	dbus/dbushelper.cpp \
 	dbus/dbuspassiveredundancy.cpp \
@@ -111,10 +112,6 @@
 	build/buildjson.cpp \
 	experiments/drive.cpp
 
-if CONFIGURE_DBUS
-libswampd_la_SOURCES += dbus/dbusconfiguration.cpp
-endif
-
 libmanualcmdsdir = ${libdir}/ipmid-providers
 libmanualcmds_LTLIBRARIES = libmanualcmds.la
 libmanualcmds_la_SOURCES = \
diff --git a/configure.ac b/configure.ac
index 5075c67..82d7d8a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -203,11 +203,6 @@
         [--enable-configure-dbus], [Enable configuring pid from D-Bus.]
     )
 )
-AM_CONDITIONAL(CONFIGURE_DBUS, [test "x$enable_configure_dbus" = "xyes"])
-AS_IF([test "x$enable_configure_dbus" = "xyes"],
-    [AC_DEFINE(CONFIGURE_DBUS, [1], [Read configuration from D-Bus.])],
-    [AC_DEFINE(CONFIGURE_DBUS, [0], [Do not read configuration from D-Bus.])]
-)
 
 AC_ARG_VAR(SYSTEMD_TARGET, "Target for starting this service")
 AS_IF([test "x$SYSTEMD_TARGET" == "x"], [SYSTEMD_TARGET="multi-user.target"])
diff --git a/main.cpp b/main.cpp
index 73e43c8..712d2cf 100644
--- a/main.cpp
+++ b/main.cpp
@@ -18,6 +18,7 @@
 
 #include "build/buildjson.hpp"
 #include "conf.hpp"
+#include "dbus/dbusconfiguration.hpp"
 #include "interfaces.hpp"
 #include "pid/builder.hpp"
 #include "pid/buildjson.hpp"
@@ -36,6 +37,7 @@
 #include <sdbusplus/bus.hpp>
 
 #include <chrono>
+#include <filesystem>
 #include <iostream>
 #include <list>
 #include <map>
@@ -45,10 +47,6 @@
 #include <utility>
 #include <vector>
 
-#if CONFIGURE_DBUS
-#include "dbus/dbusconfiguration.hpp"
-#endif
-
 namespace pid_control
 {
 
@@ -86,34 +84,36 @@
 
     timers.clear();
 
-#if CONFIGURE_DBUS
-
-    static boost::asio::steady_timer reloadTimer(io);
-    if (!dbus_configuration::init(modeControlBus, reloadTimer))
-    {
-        return; // configuration not ready
-    }
-
-#else
     const std::string& path =
         (configPath.length() > 0) ? configPath : jsonConfigurationPath;
 
-    /*
-     * When building the sensors, if any of the dbus passive ones aren't on the
-     * bus, it'll fail immediately.
-     */
-    try
+    if (std::filesystem::exists(path))
     {
-        auto jsonData = parseValidateJson(path);
-        sensorConfig = buildSensorsFromJson(jsonData);
-        std::tie(zoneConfig, zoneDetailsConfig) = buildPIDsFromJson(jsonData);
+        /*
+         * When building the sensors, if any of the dbus passive ones aren't on
+         * the bus, it'll fail immediately.
+         */
+        try
+        {
+            auto jsonData = parseValidateJson(path);
+            sensorConfig = buildSensorsFromJson(jsonData);
+            std::tie(zoneConfig, zoneDetailsConfig) =
+                buildPIDsFromJson(jsonData);
+        }
+        catch (const std::exception& e)
+        {
+            std::cerr << "Failed during building: " << e.what() << "\n";
+            exit(EXIT_FAILURE); /* fatal error. */
+        }
     }
-    catch (const std::exception& e)
+    else
     {
-        std::cerr << "Failed during building: " << e.what() << "\n";
-        exit(EXIT_FAILURE); /* fatal error. */
+        static boost::asio::steady_timer reloadTimer(io);
+        if (!dbus_configuration::init(modeControlBus, reloadTimer))
+        {
+            return; // configuration not ready
+        }
     }
-#endif
 
     mgmr = buildSensors(sensorConfig, passiveBus, hostBus);
     zones = buildZones(zoneConfig, zoneDetailsConfig, mgmr, modeControlBus);
