diff --git a/redfish-core/include/error_messages.hpp b/redfish-core/include/error_messages.hpp
index 7ac53e7..4870b30 100644
--- a/redfish-core/include/error_messages.hpp
+++ b/redfish-core/include/error_messages.hpp
@@ -1112,10 +1112,10 @@
  * Message body: "Indicates that a string value passed to the given resource
  * exceeded its length limit."
  * @returns Message ArraySizeTooLong formatted to JSON */
-nlohmann::json arraySizeTooLong(std::string_view property, uint64_t length);
+nlohmann::json arraySizeTooLong(std::string_view arg1, uint64_t arg2);
 
-void arraySizeTooLong(crow::Response& res, std::string_view property,
-                      uint64_t length);
+void arraySizeTooLong(crow::Response& res, std::string_view arg1,
+                      uint64_t arg2);
 
 /**
  * @brief Formats GenerateSecretKeyRequired message into JSON
diff --git a/redfish-core/src/error_messages.cpp b/redfish-core/src/error_messages.cpp
index 13ba85e..45388d2 100644
--- a/redfish-core/src/error_messages.cpp
+++ b/redfish-core/src/error_messages.cpp
@@ -1867,18 +1867,17 @@
  * See header file for more information
  * @endinternal
  */
-nlohmann::json arraySizeTooLong(std::string_view property, uint64_t length)
+nlohmann::json arraySizeTooLong(std::string_view arg1, uint64_t arg2)
 {
-    std::string valStr = std::to_string(length);
+    std::string arg2Str = std::to_string(arg2);
     return getLog(redfish::registries::base::Index::arraySizeTooLong,
-                  std::to_array<std::string_view>({property, valStr}));
+                  std::to_array<std::string_view>({arg1, arg2Str}));
 }
 
-void arraySizeTooLong(crow::Response& res, std::string_view property,
-                      uint64_t length)
+void arraySizeTooLong(crow::Response& res, std::string_view arg1, uint64_t arg2)
 {
     res.result(boost::beast::http::status::bad_request);
-    addMessageToErrorJson(res.jsonValue, arraySizeTooLong(property, length));
+    addMessageToErrorJson(res.jsonValue, arraySizeTooLong(arg1, arg2));
 }
 
 void invalidUpload(crow::Response& res, std::string_view arg1,
