diff --git a/manager/json-config.hpp b/manager/json-config.hpp
index 4a07175..1e63bc4 100644
--- a/manager/json-config.hpp
+++ b/manager/json-config.hpp
@@ -222,5 +222,32 @@
     /** DBusHandler class handles the D-Bus operations */
     utils::DBusHandler dBusHandler;
 };
+
+/** Blocking call to find the JSON Config from DBus. */
+auto getJsonConfig()
+{
+    // Get a new Dbus
+    auto bus = sdbusplus::bus::new_bus();
+
+    // Get a new event loop
+    auto event = sdeventplus::Event::get_new();
+
+    // Attach the bus to sd_event to service user requests
+    bus.attach_event(event.get(), SD_EVENT_PRIORITY_IMPORTANT);
+    phosphor::led::JsonConfig jsonConfig(bus, event);
+
+    // The event loop will be terminated from inside of a function in JsonConfig
+    // after finding the configuration file
+    if (jsonConfig.getConfFile().empty())
+    {
+        event.loop();
+    }
+
+    // Detach the bus from its sd_event event loop object
+    bus.detach_event();
+
+    return jsonConfig.getConfFile();
+}
+
 } // namespace led
 } // namespace phosphor
diff --git a/manager/json-parser.hpp b/manager/json-parser.hpp
index a18db5d..941ea4b 100644
--- a/manager/json-parser.hpp
+++ b/manager/json-parser.hpp
@@ -149,29 +149,18 @@
 
 /** @brief Get led map from LED groups JSON config
  *
+ *  @param[in] config - Path to the JSON config.
  *  @return LedMap - Generated an std::map of LedAction
+ *
+ *  @note if config is an empty string, daemon will interrogate dbus for
+ *        compatible strings.
  */
-const LedMap getSystemLedMap()
+const LedMap getSystemLedMap(fs::path config)
 {
-    // Get a new Dbus
-    auto bus = sdbusplus::bus::new_bus();
-
-    // Get a new event loop
-    auto event = sdeventplus::Event::get_new();
-
-    // Attach the bus to sd_event to service user requests
-    bus.attach_event(event.get(), SD_EVENT_PRIORITY_IMPORTANT);
-    phosphor::led::JsonConfig jsonConfig(bus, event);
-
-    // The event loop will be terminated from inside of a function in JsonConfig
-    // after finding the configuration file
-    if (jsonConfig.getConfFile().empty())
+    if (config.empty())
     {
-        event.loop();
+        config = phosphor::led::getJsonConfig();
     }
 
-    // Detach the bus from its sd_event event loop object
-    bus.detach_event();
-
-    return loadJsonConfig(jsonConfig.getConfFile());
+    return loadJsonConfig(config);
 }
diff --git a/manager/led-main.cpp b/manager/led-main.cpp
index c3b2cea..8861a64 100644
--- a/manager/led-main.cpp
+++ b/manager/led-main.cpp
@@ -14,13 +14,23 @@
 #include "lamptest/lamptest.hpp"
 #endif
 
+#include <CLI/CLI.hpp>
 #include <sdeventplus/event.hpp>
 
 #include <algorithm>
 #include <iostream>
 
-int main(void)
+int main(int argc, char** argv)
 {
+    CLI::App app("phosphor-led-manager");
+
+#ifdef LED_USE_JSON
+    std::string configFile{};
+    app.add_option("-c,--config", configFile, "Path to JSON config");
+#endif
+
+    CLI11_PARSE(app, argc, argv);
+
     // Get a default event loop
     auto event = sdeventplus::Event::get_default();
 
@@ -28,7 +38,7 @@
     auto& bus = phosphor::led::utils::DBusHandler::getBus();
 
 #ifdef LED_USE_JSON
-    auto systemLedMap = getSystemLedMap();
+    auto systemLedMap = getSystemLedMap(configFile);
 #endif
 
     /** @brief Group manager object */
