diff --git a/dcmihandler.cpp b/dcmihandler.cpp
index 1c448ce..7a4db9f 100644
--- a/dcmihandler.cpp
+++ b/dcmihandler.cpp
@@ -50,8 +50,6 @@
 // SendHostNameEnabled will set to true.
 constexpr auto DHCP_OPT12_ENABLED = "SendHostNameEnabled";
 
-constexpr auto DCMI_CAP_JSON_FILE = "/usr/share/ipmi-providers/dcmi_cap.json";
-
 constexpr auto SENSOR_VALUE_INTF = "xyz.openbmc_project.Sensor.Value";
 constexpr auto SENSOR_VALUE_PROP = "Value";
 constexpr auto SENSOR_SCALE_PROP = "Scale";
@@ -275,7 +273,7 @@
     ipmi::setDbusProperty(bus, service, dhcpObj, dhcpIntf, prop, value);
 }
 
-Json parseSensorConfig()
+Json parseJSONConfig(const std::string& configFile)
 {
     std::ifstream jsonFile(configFile);
     if (!jsonFile.is_open())
@@ -717,7 +715,7 @@
                                ipmi_data_len_t data_len, ipmi_context_t context)
 {
 
-    std::ifstream dcmiCapFile(DCMI_CAP_JSON_FILE);
+    std::ifstream dcmiCapFile(dcmi::gDCMICapabilitiesConfig);
     if (!dcmiCapFile.is_open())
     {
         log<level::ERR>("DCMI Capabilities file not found");
@@ -838,7 +836,7 @@
         elog<InternalFailure>();
     }
 
-    auto data = parseSensorConfig();
+    auto data = parseJSONConfig(gDCMISensorsConfig);
     static const std::vector<Json> empty{};
     std::vector<Json> readings = data.value(type, empty);
     size_t numInstances = readings.size();
@@ -889,7 +887,7 @@
     sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
 
     size_t numInstances = 0;
-    auto data = parseSensorConfig();
+    auto data = parseJSONConfig(gDCMISensorsConfig);
     static const std::vector<Json> empty{};
     std::vector<Json> readings = data.value(type, empty);
     numInstances = readings.size();
@@ -1410,7 +1408,7 @@
     {
         if (!parsed)
         {
-            config = dcmi::parseSensorConfig();
+            config = dcmi::parseJSONConfig(dcmi::gDCMISensorsConfig);
             parsed = true;
         }
 
diff --git a/dcmihandler.hpp b/dcmihandler.hpp
index 29757ff..e3fa9de 100644
--- a/dcmihandler.hpp
+++ b/dcmihandler.hpp
@@ -42,7 +42,7 @@
 static constexpr auto hostNameProp = "HostName";
 static constexpr auto temperatureSensorType = 0x01;
 static constexpr auto maxInstances = 255;
-static constexpr auto configFile =
+static constexpr auto gDCMISensorsConfig =
     "/usr/share/ipmi-providers/dcmi_sensors.json";
 static constexpr auto ethernetIntf =
     "xyz.openbmc_project.Network.EthernetInterface";
@@ -54,6 +54,8 @@
 static constexpr auto systemBusName = "org.freedesktop.systemd1";
 static constexpr auto systemPath = "/org/freedesktop/systemd1";
 static constexpr auto systemIntf = "org.freedesktop.systemd1.Manager";
+static constexpr auto gDCMICapabilitiesConfig =
+    "/usr/share/ipmi-providers/dcmi_cap.json";
 
 namespace assettag
 {
@@ -411,12 +413,13 @@
     uint8_t numDataSets;  //!< No. of sets of temperature data
 } __attribute__((packed));
 
-/** @brief Parse out JSON config file containing information
- *         related to sensors.
+/** @brief Parse out JSON config file.
+ *
+ *  @param[in] configFile - JSON config file name
  *
  *  @return A json object
  */
-Json parseSensorConfig();
+Json parseJSONConfig(const std::string& configFile);
 
 namespace temp_readings
 {
