diff --git a/src/entity_manager/dbus_interface.cpp b/src/entity_manager/dbus_interface.cpp
index 72f67f4..45e4f6d 100644
--- a/src/entity_manager/dbus_interface.cpp
+++ b/src/entity_manager/dbus_interface.cpp
@@ -194,63 +194,26 @@
             }
             case (nlohmann::json::value_t::number_integer):
             {
-                if (array)
-                {
-                    addArrayToDbus<int64_t>(key, value, iface.get(), permission,
-                                            systemConfiguration, path);
-                }
-                else
-                {
-                    addProperty(key, value.get<int64_t>(), iface.get(),
-                                systemConfiguration, path,
-                                sdbusplus::asio::PropertyPermission::readOnly);
-                }
+                addValueToDBus<int64_t>(key, value, *iface, permission,
+                                        systemConfiguration, path);
                 break;
             }
             case (nlohmann::json::value_t::number_unsigned):
             {
-                if (array)
-                {
-                    addArrayToDbus<uint64_t>(key, value, iface.get(),
-                                             permission, systemConfiguration,
-                                             path);
-                }
-                else
-                {
-                    addProperty(key, value.get<uint64_t>(), iface.get(),
-                                systemConfiguration, path,
-                                sdbusplus::asio::PropertyPermission::readOnly);
-                }
+                addValueToDBus<uint64_t>(key, value, *iface, permission,
+                                         systemConfiguration, path);
                 break;
             }
             case (nlohmann::json::value_t::number_float):
             {
-                if (array)
-                {
-                    addArrayToDbus<double>(key, value, iface.get(), permission,
-                                           systemConfiguration, path);
-                }
-
-                else
-                {
-                    addProperty(key, value.get<double>(), iface.get(),
-                                systemConfiguration, path, permission);
-                }
+                addValueToDBus<double>(key, value, *iface, permission,
+                                       systemConfiguration, path);
                 break;
             }
             case (nlohmann::json::value_t::string):
             {
-                if (array)
-                {
-                    addArrayToDbus<std::string>(key, value, iface.get(),
-                                                permission, systemConfiguration,
-                                                path);
-                }
-                else
-                {
-                    addProperty(key, value.get<std::string>(), iface.get(),
-                                systemConfiguration, path, permission);
-                }
+                addValueToDBus<std::string>(key, value, *iface, permission,
+                                            systemConfiguration, path);
                 break;
             }
             default:
diff --git a/src/entity_manager/dbus_interface.hpp b/src/entity_manager/dbus_interface.hpp
index 35ea742..5e6609d 100644
--- a/src/entity_manager/dbus_interface.hpp
+++ b/src/entity_manager/dbus_interface.hpp
@@ -99,6 +99,25 @@
         });
 }
 
+template <typename PropertyType>
+void addValueToDBus(const std::string& key, const nlohmann::json& value,
+                    sdbusplus::asio::dbus_interface& iface,
+                    sdbusplus::asio::PropertyPermission permission,
+                    nlohmann::json& systemConfiguration,
+                    const std::string& path)
+{
+    if (value.is_array())
+    {
+        addArrayToDbus<PropertyType>(key, value, &iface, permission,
+                                     systemConfiguration, path);
+    }
+    else
+    {
+        addProperty(key, value.get<PropertyType>(), &iface, systemConfiguration,
+                    path, sdbusplus::asio::PropertyPermission::readOnly);
+    }
+}
+
 void createDeleteObjectMethod(
     const std::string& jsonPointerPath,
     const std::shared_ptr<sdbusplus::asio::dbus_interface>& iface,
