diff --git a/presence/json_config.cpp b/presence/json_config.cpp
index d85f721..6dc06c2 100644
--- a/presence/json_config.cpp
+++ b/presence/json_config.cpp
@@ -53,8 +53,16 @@
 JsonConfig::JsonConfig(const std::string& jsonFile) :
     _defaultFile(fs::path(jsonFile))
 {
-    // Load and process the json configuration
-    load();
+    if (!_defaultFile.empty())
+    {
+        // Load and process the json configuration
+        load();
+    }
+    else
+    {
+        log<level::ERR>("No JSON config file provided");
+        throw std::runtime_error("No JSON config file provided");
+    }
 }
 
 const policies& JsonConfig::get()
diff --git a/presence/tach_detect.cpp b/presence/tach_detect.cpp
index eb4b895..1636b9a 100644
--- a/presence/tach_detect.cpp
+++ b/presence/tach_detect.cpp
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 #include "config.h"
-#ifdef PRESENCE_JSON_FILE
+#if defined(PRESENCE_JSON_FILE) || \
+    (defined(PRESENCE_JSON_DBUS_INTF) && defined(PRESENCE_JSON_DBUS_PROP))
 #include "json_config.hpp"
 #else
 #include "generated.hpp"
@@ -29,13 +30,36 @@
 {
     using namespace phosphor::fan;
 
+    auto bus = sdbusplus::bus::new_default();
     auto event = sdeventplus::Event::get_default();
-    util::SDBusPlus::getBus().attach_event(
-            event.get(), SD_EVENT_PRIORITY_NORMAL);
+    bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
 
 #ifdef PRESENCE_JSON_FILE
     // Use json file for presence config
     presence::JsonConfig config(PRESENCE_JSON_FILE);
+#elif defined(PRESENCE_JSON_DBUS_INTF) && defined(PRESENCE_JSON_DBUS_PROP)
+    // Use first object returned in the subtree
+    // (There should really only be one object with the config interface)
+    std::string jsonFile = "";
+    auto objects = util::SDBusPlus::getSubTree(
+        bus, "/", PRESENCE_JSON_DBUS_INTF, 0);
+    auto itObj = objects.begin();
+    if (itObj != objects.end())
+    {
+        auto itServ = itObj->second.begin();
+        if (itServ != itObj->second.end())
+        {
+            // Retrieve json config file location from dbus
+            jsonFile = util::SDBusPlus::getProperty<std::string>(
+                bus, itServ->first, itObj->first,
+                    PRESENCE_JSON_DBUS_INTF, PRESENCE_JSON_DBUS_PROP);
+        }
+    }
+    presence::JsonConfig config(jsonFile);
+#endif
+
+#if defined(PRESENCE_JSON_FILE) || \
+    (defined(PRESENCE_JSON_DBUS_INTF) && defined(PRESENCE_JSON_DBUS_PROP))
     for (auto& p: presence::JsonConfig::get())
     {
         p->monitor();
