diff --git a/src/entity_manager/dbus_interface.cpp b/src/entity_manager/dbus_interface.cpp
index c4bd311..3ad8874 100644
--- a/src/entity_manager/dbus_interface.cpp
+++ b/src/entity_manager/dbus_interface.cpp
@@ -122,11 +122,8 @@
     });
 }
 
-static void populateInterfacePropertyFromJson(
-    nlohmann::json& systemConfiguration, const std::string& path,
-    const nlohmann::json& key, const nlohmann::json& value,
-    nlohmann::json::value_t type,
-    std::shared_ptr<sdbusplus::asio::dbus_interface>& iface,
+static nlohmann::json::value_t getDBusType(
+    const nlohmann::json& value, nlohmann::json::value_t type,
     sdbusplus::asio::PropertyPermission permission)
 {
     const bool array = value.type() == nlohmann::json::value_t::array;
@@ -140,20 +137,32 @@
         {
             if (value[0].is_number())
             {
-                type = nlohmann::json::value_t::number_float;
+                return nlohmann::json::value_t::number_float;
             }
         }
         else if (value.is_number())
         {
-            type = nlohmann::json::value_t::number_float;
+            return nlohmann::json::value_t::number_float;
         }
     }
 
-    switch (type)
+    return type;
+}
+
+static void populateInterfacePropertyFromJson(
+    nlohmann::json& systemConfiguration, const std::string& path,
+    const nlohmann::json& key, const nlohmann::json& value,
+    nlohmann::json::value_t type,
+    std::shared_ptr<sdbusplus::asio::dbus_interface>& iface,
+    sdbusplus::asio::PropertyPermission permission)
+{
+    const auto modifiedType = getDBusType(value, type, permission);
+
+    switch (modifiedType)
     {
         case (nlohmann::json::value_t::boolean):
         {
-            if (array)
+            if (value.is_array())
             {
                 // todo: array of bool isn't detected correctly by
                 // sdbusplus, change it to numbers
