diff --git a/redfish-core/include/node.hpp b/redfish-core/include/node.hpp
index 5819527..4c78eef 100644
--- a/redfish-core/include/node.hpp
+++ b/redfish-core/include/node.hpp
@@ -55,7 +55,7 @@
 {
   public:
     template <typename... Params>
-    Node(CrowApp& app, std::string&& entityUrl, Params... params)
+    Node(CrowApp& app, std::string&& entityUrl, Params... paramsIn)
     {
         crow::DynamicRule& get = app.routeDynamic(entityUrl.c_str());
         getRule = &get;
diff --git a/redfish-core/include/privileges.hpp b/redfish-core/include/privileges.hpp
index ec6e6a5..09fa05a 100644
--- a/redfish-core/include/privileges.hpp
+++ b/redfish-core/include/privileges.hpp
@@ -38,10 +38,10 @@
     "Login", "ConfigureManager", "ConfigureComponents", "ConfigureSelf",
     "ConfigureUsers"};
 
-constexpr const int basePrivilegeCount = basePrivileges.size();
+constexpr const size_t basePrivilegeCount = basePrivileges.size();
 
 /** @brief Max number of privileges per type  */
-constexpr const int maxPrivilegeCount = 32;
+constexpr const size_t maxPrivilegeCount = 32;
 
 /** @brief A vector of all privilege names and their indexes */
 static const std::vector<std::string> privilegeNames{basePrivileges.begin(),
@@ -100,7 +100,7 @@
      */
     bool setSinglePrivilege(const char* privilege)
     {
-        for (int searchIndex = 0; searchIndex < privilegeNames.size();
+        for (size_t searchIndex = 0; searchIndex < privilegeNames.size();
              searchIndex++)
         {
             if (privilege == privilegeNames[searchIndex])
@@ -140,8 +140,8 @@
     {
         std::vector<const std::string*> activePrivileges;
 
-        int searchIndex = 0;
-        int endIndex = basePrivilegeCount;
+        size_t searchIndex = 0;
+        size_t endIndex = basePrivilegeCount;
         if (type == PrivilegeType::OEM)
         {
             searchIndex = basePrivilegeCount - 1;
diff --git a/redfish-core/include/registries.hpp b/redfish-core/include/registries.hpp
index 6b30be9..411e9a0 100644
--- a/redfish-core/include/registries.hpp
+++ b/redfish-core/include/registries.hpp
@@ -34,7 +34,7 @@
     const char* description;
     const char* message;
     const char* severity;
-    const int numberOfArgs;
+    const size_t numberOfArgs;
     std::array<const char*, 5> paramTypes;
     const char* resolution;
 };
diff --git a/redfish-core/include/registries/base_message_registry.hpp b/redfish-core/include/registries/base_message_registry.hpp
index 472f51e..1c429c5 100644
--- a/redfish-core/include/registries/base_message_registry.hpp
+++ b/redfish-core/include/registries/base_message_registry.hpp
@@ -23,945 +23,820 @@
 namespace redfish::message_registries::base
 {
 const Header header = {
-    .copyright = "Copyright 2014-2018 DMTF. All rights reserved.",
-    .type = "#MessageRegistry.v1_0_0.MessageRegistry",
-    .id = "Base.1.4.0",
-    .name = "Base Message Registry",
-    .language = "en",
-    .description = "This registry defines the base messages for Redfish",
-    .registryPrefix = "Base",
-    .registryVersion = "1.4.0",
-    .owningEntity = "DMTF",
+    "Copyright 2014-2018 DMTF. All rights reserved.",
+    "#MessageRegistry.v1_0_0.MessageRegistry",
+    "Base.1.4.0",
+    "Base Message Registry",
+    "en",
+    "This registry defines the base messages for Redfish",
+    "Base",
+    "1.4.0",
+    "DMTF",
 };
-const std::array registry = {
+const std::array<MessageEntry, 58> registry = {
     MessageEntry{
         "AccessDenied",
         {
-            .description =
-                "Indicates that while attempting to access, connect to or "
-                "transfer to/from another resource, the service denied access.",
-            .message = "While attempting to establish a connection to %1, the "
-                       "service denied access.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "Attempt to ensure that the URI is correct and that "
-                          "the service has the appropriate credentials.",
+            "Indicates that while attempting to access, connect to or transfer "
+            "to/from another resource, the service denied access.",
+            "While attempting to establish a connection to %1, the service "
+            "denied access.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "Attempt to ensure that the URI is correct and that the service "
+            "has the appropriate credentials.",
         }},
-    MessageEntry{
-        "AccountForSessionNoLongerExists",
-        {
-            .description =
-                "Indicates that the account for the session has been removed, "
-                "thus the session has been removed as well.",
-            .message = "The account for the current session has been removed, "
-                       "thus the current session has been removed as well.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Attempt to connect with a valid account.",
-        }},
-    MessageEntry{
-        "AccountModified",
-        {
-            .description =
-                "Indicates that the account was successfully modified.",
-            .message = "The account was successfully modified.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "No resolution is required.",
-        }},
-    MessageEntry{
-        "AccountNotModified",
-        {
-            .description = "Indicates that the modification requested for the "
-                           "account was not successful.",
-            .message = "The account modification request failed.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "The modification may have failed due to permission "
-                          "issues or issues with the request body.",
-        }},
+    MessageEntry{"AccountForSessionNoLongerExists",
+                 {
+                     "Indicates that the account for the session has been "
+                     "removed, thus the session has been removed as well.",
+                     "The account for the current session has been removed, "
+                     "thus the current session has been removed as well.",
+                     "OK",
+                     0,
+                     {},
+                     "Attempt to connect with a valid account.",
+                 }},
+    MessageEntry{"AccountModified",
+                 {
+                     "Indicates that the account was successfully modified.",
+                     "The account was successfully modified.",
+                     "OK",
+                     0,
+                     {},
+                     "No resolution is required.",
+                 }},
+    MessageEntry{"AccountNotModified",
+                 {
+                     "Indicates that the modification requested for the "
+                     "account was not successful.",
+                     "The account modification request failed.",
+                     "Warning",
+                     0,
+                     {},
+                     "The modification may have failed due to permission "
+                     "issues or issues with the request body.",
+                 }},
     MessageEntry{"AccountRemoved",
                  {
-                     .description =
-                         "Indicates that the account was successfully removed.",
-                     .message = "The account was successfully removed.",
-                     .severity = "OK",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "No resolution is required.",
+                     "Indicates that the account was successfully removed.",
+                     "The account was successfully removed.",
+                     "OK",
+                     0,
+                     {},
+                     "No resolution is required.",
                  }},
     MessageEntry{
         "ActionNotSupported",
         {
-            .description = "Indicates that the action supplied with the POST "
-                           "operation is not supported by the resource.",
-            .message = "The action %1 is not supported by the resource.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "The action supplied cannot be resubmitted to the "
-                          "implementation.  Perhaps the action was invalid, "
-                          "the wrong resource was the target or the "
-                          "implementation documentation may be of assistance.",
+            "Indicates that the action supplied with the POST operation is not "
+            "supported by the resource.",
+            "The action %1 is not supported by the resource.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "The action supplied cannot be resubmitted to the implementation.  "
+            "Perhaps the action was invalid, the wrong resource was the target "
+            "or the implementation documentation may be of assistance.",
         }},
-    MessageEntry{
-        "ActionParameterDuplicate",
-        {
-            .description = "Indicates that the action was supplied with a "
-                           "duplicated parameter in the request body.",
-            .message = "The action %1 was submitted with more than one value "
-                       "for the parameter %2.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Resubmit the action with only one instance of the parameter "
-                "in the request body if the operation failed.",
-        }},
-    MessageEntry{
-        "ActionParameterMissing",
-        {
-            .description = "Indicates that the action requested was missing a "
-                           "parameter that is required to process the action.",
-            .message = "The action %1 requires the parameter %2 to be present "
-                       "in the request body.",
-            .severity = "Critical",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "Supply the action with the required parameter in "
-                          "the request body when the request is resubmitted.",
-        }},
-    MessageEntry{
-        "ActionParameterNotSupported",
-        {
-            .description = "Indicates that the parameter supplied for the "
-                           "action is not supported on the resource.",
-            .message = "The parameter %1 for the action %2 is not supported on "
-                       "the target resource.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "Remove the parameter supplied and resubmit the "
-                          "request if the operation failed.",
-        }},
+    MessageEntry{"ActionParameterDuplicate",
+                 {
+                     "Indicates that the action was supplied with a duplicated "
+                     "parameter in the request body.",
+                     "The action %1 was submitted with more than one value for "
+                     "the parameter %2.",
+                     "Warning",
+                     2,
+                     {
+                         "string",
+                         "string",
+                     },
+                     "Resubmit the action with only one instance of the "
+                     "parameter in the request body if the operation failed.",
+                 }},
+    MessageEntry{"ActionParameterMissing",
+                 {
+                     "Indicates that the action requested was missing a "
+                     "parameter that is required to process the action.",
+                     "The action %1 requires the parameter %2 to be present in "
+                     "the request body.",
+                     "Critical",
+                     2,
+                     {
+                         "string",
+                         "string",
+                     },
+                     "Supply the action with the required parameter in the "
+                     "request body when the request is resubmitted.",
+                 }},
+    MessageEntry{"ActionParameterNotSupported",
+                 {
+                     "Indicates that the parameter supplied for the action is "
+                     "not supported on the resource.",
+                     "The parameter %1 for the action %2 is not supported on "
+                     "the target resource.",
+                     "Warning",
+                     2,
+                     {
+                         "string",
+                         "string",
+                     },
+                     "Remove the parameter supplied and resubmit the request "
+                     "if the operation failed.",
+                 }},
     MessageEntry{
         "ActionParameterUnknown",
         {
-            .description =
-                "Indicates that an action was submitted but a parameter "
-                "supplied did not match any of the known parameters.",
-            .message =
-                "The action %1 was submitted with the invalid parameter %2.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "Correct the invalid parameter and resubmit the "
-                          "request if the operation failed.",
+            "Indicates that an action was submitted but a parameter supplied "
+            "did not match any of the known parameters.",
+            "The action %1 was submitted with the invalid parameter %2.",
+            "Warning",
+            2,
+            {
+                "string",
+                "string",
+            },
+            "Correct the invalid parameter and resubmit the request if the "
+            "operation failed.",
         }},
-    MessageEntry{
-        "ActionParameterValueFormatError",
-        {
-            .description =
-                "Indicates that a parameter was given the correct value type "
-                "but the value of that parameter was not supported.  This "
-                "includes value size/length exceeded.",
-            .message = "The value %1 for the parameter %2 in the action %3 is "
-                       "of a different format than the parameter can accept.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Correct the value for the parameter in the request body and "
-                "resubmit the request if the operation failed.",
-        }},
-    MessageEntry{
-        "ActionParameterValueTypeError",
-        {
-            .description = "Indicates that a parameter was given the wrong "
-                           "value type, such as when a number is supplied for "
-                           "a parameter that requires a string.",
-            .message = "The value %1 for the parameter %2 in the action %3 is "
-                       "of a different type than the parameter can accept.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Correct the value for the parameter in the request body and "
-                "resubmit the request if the operation failed.",
-        }},
+    MessageEntry{"ActionParameterValueFormatError",
+                 {
+                     "Indicates that a parameter was given the correct value "
+                     "type but the value of that parameter was not supported.  "
+                     "This includes value size/length exceeded.",
+                     "The value %1 for the parameter %2 in the action %3 is of "
+                     "a different format than the parameter can accept.",
+                     "Warning",
+                     3,
+                     {
+                         "string",
+                         "string",
+                         "string",
+                     },
+                     "Correct the value for the parameter in the request body "
+                     "and resubmit the request if the operation failed.",
+                 }},
+    MessageEntry{"ActionParameterValueTypeError",
+                 {
+                     "Indicates that a parameter was given the wrong value "
+                     "type, such as when a number is supplied for a parameter "
+                     "that requires a string.",
+                     "The value %1 for the parameter %2 in the action %3 is of "
+                     "a different type than the parameter can accept.",
+                     "Warning",
+                     3,
+                     {
+                         "string",
+                         "string",
+                         "string",
+                     },
+                     "Correct the value for the parameter in the request body "
+                     "and resubmit the request if the operation failed.",
+                 }},
     MessageEntry{
         "CouldNotEstablishConnection",
         {
-            .description = "Indicates that the attempt to access the "
-                           "resource/file/image at the URI was unsuccessful "
-                           "because a session could not be established.",
-            .message =
-                "The service failed to establish a connection with the URI %1.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution =
-                "Ensure that the URI contains a valid and reachable node name, "
-                "protocol information and other URI components.",
+            "Indicates that the attempt to access the resource/file/image at "
+            "the URI was unsuccessful because a session could not be "
+            "established.",
+            "The service failed to establish a connection with the URI %1.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "Ensure that the URI contains a valid and reachable node name, "
+            "protocol information and other URI components.",
         }},
     MessageEntry{
         "CreateFailedMissingReqProperties",
         {
-            .description =
-                "Indicates that a create was attempted on a resource but that "
-                "properties that are required for the create operation were "
-                "missing from the request.",
-            .message = "The create operation failed because the required "
-                       "property %1 was missing from the request.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution =
-                "Correct the body to include the required property with a "
-                "valid value and resubmit the request if the operation failed.",
+            "Indicates that a create was attempted on a resource but that "
+            "properties that are required for the create operation were "
+            "missing from the request.",
+            "The create operation failed because the required property %1 was "
+            "missing from the request.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "Correct the body to include the required property with a valid "
+            "value and resubmit the request if the operation failed.",
         }},
-    MessageEntry{
-        "CreateLimitReachedForResource",
-        {
-            .description = "Indicates that no more resources can be created on "
-                           "the resource as it has reached its create limit.",
-            .message = "The create operation failed because the resource has "
-                       "reached the limit of possible resources.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution =
-                "Either delete resources and resubmit the request if the "
-                "operation failed or do not resubmit the request.",
-        }},
+    MessageEntry{"CreateLimitReachedForResource",
+                 {
+                     "Indicates that no more resources can be created on the "
+                     "resource as it has reached its create limit.",
+                     "The create operation failed because the resource has "
+                     "reached the limit of possible resources.",
+                     "Critical",
+                     0,
+                     {},
+                     "Either delete resources and resubmit the request if the "
+                     "operation failed or do not resubmit the request.",
+                 }},
     MessageEntry{"Created",
                  {
-                     .description =
-                         "Indicates that all conditions of a successful "
-                         "creation operation have been met.",
-                     .message = "The resource has been created successfully",
-                     .severity = "OK",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None",
+                     "Indicates that all conditions of a successful creation "
+                     "operation have been met.",
+                     "The resource has been created successfully",
+                     "OK",
+                     0,
+                     {},
+                     "None",
                  }},
     MessageEntry{
         "EmptyJSON",
         {
-            .description =
-                "Indicates that the request body contained an empty JSON "
-                "object when one or more properties are expected in the body.",
-            .message = "The request body submitted contained an empty JSON "
-                       "object and the service is unable to process it.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution =
-                "Add properties in the JSON object and resubmit the request.",
+            "Indicates that the request body contained an empty JSON object "
+            "when one or more properties are expected in the body.",
+            "The request body submitted contained an empty JSON object and the "
+            "service is unable to process it.",
+            "Warning",
+            0,
+            {},
+            "Add properties in the JSON object and resubmit the request.",
         }},
     MessageEntry{
         "EventSubscriptionLimitExceeded",
         {
-            .description = "Indicates that a event subscription establishment "
-                           "has been requested but the operation failed due to "
-                           "the number of simultaneous connection exceeding "
-                           "the limit of the implementation.",
-            .message = "The event subscription failed due to the number of "
-                       "simultaneous subscriptions exceeding the limit of the "
-                       "implementation.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution =
-                "Reduce the number of other subscriptions before trying to "
-                "establish the event subscription or increase the limit of "
-                "simultaneous subscriptions (if supported).",
+            "Indicates that a event subscription establishment has been "
+            "requested but the operation failed due to the number of "
+            "simultaneous connection exceeding the limit of the "
+            "implementation.",
+            "The event subscription failed due to the number of simultaneous "
+            "subscriptions exceeding the limit of the implementation.",
+            "Critical",
+            0,
+            {},
+            "Reduce the number of other subscriptions before trying to "
+            "establish the event subscription or increase the limit of "
+            "simultaneous subscriptions (if supported).",
         }},
     MessageEntry{
         "GeneralError",
         {
-            .description =
-                "Indicates that a general error has occurred.  Use in "
-                "ExtendedInfo is discouraged.  When used in ExtendedInfo, "
-                "implementations are expected to include a Resolution property "
-                "with this error to indicate how to resolve the problem.",
-            .message = "A general error has occurred. See Resolution for "
-                       "information on how to resolve the error.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
+            "Indicates that a general error has occurred.  Use in ExtendedInfo "
+            "is discouraged.  When used in ExtendedInfo, implementations are "
+            "expected to include a Resolution property with this error to "
+            "indicate how to resolve the problem.",
+            "A general error has occurred. See Resolution for information on "
+            "how to resolve the error.",
+            "Critical",
+            0,
+            {},
+            "None.",
         }},
     MessageEntry{
         "InsufficientPrivilege",
         {
-            .description = "Indicates that the credentials associated with the "
-                           "established session do not have sufficient "
-                           "privileges for the requested operation",
-            .message = "There are insufficient privileges for the account or "
-                       "credentials associated with the current session to "
-                       "perform the requested operation.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution =
-                "Either abandon the operation or change the associated access "
-                "rights and resubmit the request if the operation failed.",
+            "Indicates that the credentials associated with the established "
+            "session do not have sufficient privileges for the requested "
+            "operation",
+            "There are insufficient privileges for the account or credentials "
+            "associated with the current session to perform the requested "
+            "operation.",
+            "Critical",
+            0,
+            {},
+            "Either abandon the operation or change the associated access "
+            "rights and resubmit the request if the operation failed.",
         }},
     MessageEntry{
         "InternalError",
         {
-            .description =
-                "Indicates that the request failed for an unknown internal "
-                "error but that the service is still operational.",
-            .message = "The request failed due to an internal service error.  "
-                       "The service is still operational.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Resubmit the request.  If the problem persists, "
-                          "consider resetting the service.",
+            "Indicates that the request failed for an unknown internal error "
+            "but that the service is still operational.",
+            "The request failed due to an internal service error.  The service "
+            "is still operational.",
+            "Critical",
+            0,
+            {},
+            "Resubmit the request.  If the problem persists, consider "
+            "resetting the service.",
         }},
-    MessageEntry{
-        "InvalidIndex",
-        {
-            .description = "The Index is not valid.",
-            .message = "The Index %1 is not a valid offset into the array.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "number",
-                },
-            .resolution = "Verify the index value provided is within the "
-                          "bounds of the array.",
-        }},
+    MessageEntry{"InvalidIndex",
+                 {
+                     "The Index is not valid.",
+                     "The Index %1 is not a valid offset into the array.",
+                     "Warning",
+                     1,
+                     {
+                         "number",
+                     },
+                     "Verify the index value provided is within the bounds of "
+                     "the array.",
+                 }},
     MessageEntry{
         "InvalidObject",
         {
-            .description = "Indicates that the object in question is invalid "
-                           "according to the implementation.  Examples include "
-                           "a firmware update malformed URI.",
-            .message = "The object at %1 is invalid.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution =
-                "Either the object is malformed or the URI is not correct.  "
-                "Correct the condition and resubmit the request if it failed.",
+            "Indicates that the object in question is invalid according to the "
+            "implementation.  Examples include a firmware update malformed "
+            "URI.",
+            "The object at %1 is invalid.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "Either the object is malformed or the URI is not correct.  "
+            "Correct the condition and resubmit the request if it failed.",
         }},
-    MessageEntry{
-        "MalformedJSON",
-        {
-            .description = "Indicates that the request body was malformed "
-                           "JSON.  Could be duplicate, syntax error,etc.",
-            .message = "The request body submitted was malformed JSON and "
-                       "could not be parsed by the receiving service.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Ensure that the request body is valid JSON and "
-                          "resubmit the request.",
-        }},
+    MessageEntry{"MalformedJSON",
+                 {
+                     "Indicates that the request body was malformed JSON.  "
+                     "Could be duplicate, syntax error,etc.",
+                     "The request body submitted was malformed JSON and could "
+                     "not be parsed by the receiving service.",
+                     "Critical",
+                     0,
+                     {},
+                     "Ensure that the request body is valid JSON and resubmit "
+                     "the request.",
+                 }},
     MessageEntry{
         "NoOperation",
         {
-            .description = "Indicates that the requested operation will not "
-                           "perform any changes on the service.",
-            .message = "The request body submitted contain no data to act upon "
-                       "and no changes to the resource took place.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution =
-                "Add properties in the JSON object and resubmit the request.",
+            "Indicates that the requested operation will not perform any "
+            "changes on the service.",
+            "The request body submitted contain no data to act upon and no "
+            "changes to the resource took place.",
+            "Warning",
+            0,
+            {},
+            "Add properties in the JSON object and resubmit the request.",
         }},
     MessageEntry{
         "NoValidSession",
         {
-            .description =
-                "Indicates that the operation failed because a valid session "
-                "is required in order to access any resources.",
-            .message = "There is no valid session established with the "
-                       "implementation.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution =
-                "Establish as session before attempting any operations.",
+            "Indicates that the operation failed because a valid session is "
+            "required in order to access any resources.",
+            "There is no valid session established with the implementation.",
+            "Critical",
+            0,
+            {},
+            "Establish as session before attempting any operations.",
         }},
-    MessageEntry{
-        "PropertyDuplicate",
-        {
-            .description = "Indicates that a duplicate property was included "
-                           "in the request body.",
-            .message = "The property %1 was duplicated in the request.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "Remove the duplicate property from the request body "
-                          "and resubmit the request if the operation failed.",
-        }},
+    MessageEntry{"PropertyDuplicate",
+                 {
+                     "Indicates that a duplicate property was included in the "
+                     "request body.",
+                     "The property %1 was duplicated in the request.",
+                     "Warning",
+                     1,
+                     {
+                         "string",
+                     },
+                     "Remove the duplicate property from the request body and "
+                     "resubmit the request if the operation failed.",
+                 }},
     MessageEntry{
         "PropertyMissing",
         {
-            .description = "Indicates that a required property was not "
-                           "supplied as part of the request.",
-            .message = "The property %1 is a required property and must be "
-                       "included in the request.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution =
-                "Ensure that the property is in the request body and has a "
-                "valid value and resubmit the request if the operation failed.",
+            "Indicates that a required property was not supplied as part of "
+            "the request.",
+            "The property %1 is a required property and must be included in "
+            "the request.",
+            "Warning",
+            1,
+            {
+                "string",
+            },
+            "Ensure that the property is in the request body and has a valid "
+            "value and resubmit the request if the operation failed.",
         }},
-    MessageEntry{
-        "PropertyNotWritable",
-        {
-            .description =
-                "Indicates that a property was given a value in the request "
-                "body, but the property is a readonly property.",
-            .message = "The property %1 is a read only property and cannot be "
-                       "assigned a value.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "Remove the property from the request body and "
-                          "resubmit the request if the operation failed.",
-        }},
-    MessageEntry{
-        "PropertyUnknown",
-        {
-            .description = "Indicates that an unknown property was included in "
-                           "the request body.",
-            .message = "The property %1 is not in the list of valid properties "
-                       "for the resource.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "Remove the unknown property from the request body "
-                          "and resubmit the request if the operation failed.",
-        }},
-    MessageEntry{
-        "PropertyValueFormatError",
-        {
-            .description =
-                "Indicates that a property was given the correct value type "
-                "but the value of that property was not supported.",
-            .message = "The value %1 for the property %2 is of a different "
-                       "format than the property can accept.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Correct the value for the property in the request body and "
-                "resubmit the request if the operation failed.",
-        }},
+    MessageEntry{"PropertyNotWritable",
+                 {
+                     "Indicates that a property was given a value in the "
+                     "request body, but the property is a readonly property.",
+                     "The property %1 is a read only property and cannot be "
+                     "assigned a value.",
+                     "Warning",
+                     1,
+                     {
+                         "string",
+                     },
+                     "Remove the property from the request body and resubmit "
+                     "the request if the operation failed.",
+                 }},
+    MessageEntry{"PropertyUnknown",
+                 {
+                     "Indicates that an unknown property was included in the "
+                     "request body.",
+                     "The property %1 is not in the list of valid properties "
+                     "for the resource.",
+                     "Warning",
+                     1,
+                     {
+                         "string",
+                     },
+                     "Remove the unknown property from the request body and "
+                     "resubmit the request if the operation failed.",
+                 }},
+    MessageEntry{"PropertyValueFormatError",
+                 {
+                     "Indicates that a property was given the correct value "
+                     "type but the value of that property was not supported.",
+                     "The value %1 for the property %2 is of a different "
+                     "format than the property can accept.",
+                     "Warning",
+                     2,
+                     {
+                         "string",
+                         "string",
+                     },
+                     "Correct the value for the property in the request body "
+                     "and resubmit the request if the operation failed.",
+                 }},
     MessageEntry{"PropertyValueModified",
                  {
-                     .description =
-                         "Indicates that a property was given the correct "
-                         "value type but the value of that property was "
-                         "modified.  Examples are truncated or rounded values.",
-                     .message = "The property %1 was assigned the value %2 due "
-                                "to modification by the service.",
-                     .severity = "Warning",
-                     .numberOfArgs = 2,
-                     .paramTypes =
-                         {
-                             "string",
-                             "string",
-                         },
-                     .resolution = "No resolution is required.",
+                     "Indicates that a property was given the correct value "
+                     "type but the value of that property was modified.  "
+                     "Examples are truncated or rounded values.",
+                     "The property %1 was assigned the value %2 due to "
+                     "modification by the service.",
+                     "Warning",
+                     2,
+                     {
+                         "string",
+                         "string",
+                     },
+                     "No resolution is required.",
                  }},
     MessageEntry{
         "PropertyValueNotInList",
         {
-            .description = "Indicates that a property was given the correct "
-                           "value type but the value of that property was not "
-                           "supported.  This values not in an enumeration",
-            .message = "The value %1 for the property %2 is not in the list of "
-                       "acceptable values.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "Choose a value from the enumeration list that the "
-                          "implementation can support and resubmit the request "
-                          "if the operation failed.",
+            "Indicates that a property was given the correct value type but "
+            "the value of that property was not supported.  This values not in "
+            "an enumeration",
+            "The value %1 for the property %2 is not in the list of acceptable "
+            "values.",
+            "Warning",
+            2,
+            {
+                "string",
+                "string",
+            },
+            "Choose a value from the enumeration list that the implementation "
+            "can support and resubmit the request if the operation failed.",
         }},
     MessageEntry{
         "PropertyValueTypeError",
         {
-            .description = "Indicates that a property was given the wrong "
-                           "value type, such as when a number is supplied for "
-                           "a property that requires a string.",
-            .message = "The value %1 for the property %2 is of a different "
-                       "type than the property can accept.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Correct the value for the property in the request body and "
-                "resubmit the request if the operation failed.",
+            "Indicates that a property was given the wrong value type, such as "
+            "when a number is supplied for a property that requires a string.",
+            "The value %1 for the property %2 is of a different type than the "
+            "property can accept.",
+            "Warning",
+            2,
+            {
+                "string",
+                "string",
+            },
+            "Correct the value for the property in the request body and "
+            "resubmit the request if the operation failed.",
         }},
     MessageEntry{
         "QueryNotSupported",
         {
-            .description =
-                "Indicates that query is not supported on the implementation.",
-            .message = "Querying is not supported by the implementation.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Remove the query parameters and resubmit the "
-                          "request if the operation failed.",
+            "Indicates that query is not supported on the implementation.",
+            "Querying is not supported by the implementation.",
+            "Warning",
+            0,
+            {},
+            "Remove the query parameters and resubmit the request if the "
+            "operation failed.",
         }},
-    MessageEntry{
-        "QueryNotSupportedOnResource",
-        {
-            .description = "Indicates that query is not supported on the given "
-                           "resource, such as when a start/count query is "
-                           "attempted on a resource that is not a collection.",
-            .message = "Querying is not supported on the requested resource.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Remove the query parameters and resubmit the "
-                          "request if the operation failed.",
-        }},
+    MessageEntry{"QueryNotSupportedOnResource",
+                 {
+                     "Indicates that query is not supported on the given "
+                     "resource, such as when a start/count query is attempted "
+                     "on a resource that is not a collection.",
+                     "Querying is not supported on the requested resource.",
+                     "Warning",
+                     0,
+                     {},
+                     "Remove the query parameters and resubmit the request if "
+                     "the operation failed.",
+                 }},
     MessageEntry{
         "QueryParameterOutOfRange",
         {
-            .description = "Indicates that a query parameter was supplied that "
-                           "is out of range for the given resource.  This can "
-                           "happen with values that are too low or beyond that "
-                           "possible for the supplied resource, such as when a "
-                           "page is requested that is beyond the last page.",
-            .message =
-                "The value %1 for the query parameter %2 is out of range %3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Reduce the value for the query parameter to a value that is "
-                "within range, such as a start or count value that is within "
-                "bounds of the number of resources in a collection or a page "
-                "that is within the range of valid pages.",
+            "Indicates that a query parameter was supplied that is out of "
+            "range for the given resource.  This can happen with values that "
+            "are too low or beyond that possible for the supplied resource, "
+            "such as when a page is requested that is beyond the last page.",
+            "The value %1 for the query parameter %2 is out of range %3.",
+            "Warning",
+            3,
+            {
+                "string",
+                "string",
+                "string",
+            },
+            "Reduce the value for the query parameter to a value that is "
+            "within range, such as a start or count value that is within "
+            "bounds of the number of resources in a collection or a page that "
+            "is within the range of valid pages.",
         }},
-    MessageEntry{
-        "QueryParameterValueFormatError",
-        {
-            .description =
-                "Indicates that a query parameter was given the correct value "
-                "type but the value of that parameter was not supported.  This "
-                "includes value size/length exceeded.",
-            .message = "The value %1 for the parameter %2 is of a different "
-                       "format than the parameter can accept.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Correct the value for the query parameter in the request and "
-                "resubmit the request if the operation failed.",
-        }},
-    MessageEntry{
-        "QueryParameterValueTypeError",
-        {
-            .description =
-                "Indicates that a query parameter was given the wrong value "
-                "type, such as when a number is supplied for a query parameter "
-                "that requires a string.",
-            .message = "The value %1 for the query parameter %2 is of a "
-                       "different type than the parameter can accept.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Correct the value for the query parameter in the request and "
-                "resubmit the request if the operation failed.",
-        }},
-    MessageEntry{
-        "ResourceAlreadyExists",
-        {
-            .description = "Indicates that a resource change or creation was "
-                           "attempted but that the operation cannot proceed "
-                           "because the resource already exists.",
-            .message = "The requested resource of type %1 with the property %2 "
-                       "with the value %3 already exists.",
-            .severity = "Critical",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                    "string",
-                },
-            .resolution = "Do not repeat the create operation as the resource "
-                          "has already been created.",
-        }},
+    MessageEntry{"QueryParameterValueFormatError",
+                 {
+                     "Indicates that a query parameter was given the correct "
+                     "value type but the value of that parameter was not "
+                     "supported.  This includes value size/length exceeded.",
+                     "The value %1 for the parameter %2 is of a different "
+                     "format than the parameter can accept.",
+                     "Warning",
+                     2,
+                     {
+                         "string",
+                         "string",
+                     },
+                     "Correct the value for the query parameter in the request "
+                     "and resubmit the request if the operation failed.",
+                 }},
+    MessageEntry{"QueryParameterValueTypeError",
+                 {
+                     "Indicates that a query parameter was given the wrong "
+                     "value type, such as when a number is supplied for a "
+                     "query parameter that requires a string.",
+                     "The value %1 for the query parameter %2 is of a "
+                     "different type than the parameter can accept.",
+                     "Warning",
+                     2,
+                     {
+                         "string",
+                         "string",
+                     },
+                     "Correct the value for the query parameter in the request "
+                     "and resubmit the request if the operation failed.",
+                 }},
+    MessageEntry{"ResourceAlreadyExists",
+                 {
+                     "Indicates that a resource change or creation was "
+                     "attempted but that the operation cannot proceed because "
+                     "the resource already exists.",
+                     "The requested resource of type %1 with the property %2 "
+                     "with the value %3 already exists.",
+                     "Critical",
+                     3,
+                     {
+                         "string",
+                         "string",
+                         "string",
+                     },
+                     "Do not repeat the create operation as the resource has "
+                     "already been created.",
+                 }},
     MessageEntry{
         "ResourceAtUriInUnknownFormat",
         {
-            .description =
-                "Indicates that the URI was valid but the resource or image at "
-                "that URI was in a format not supported by the service.",
-            .message = "The resource at %1 is in a format not recognized by "
-                       "the service.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "Place an image or resource or file that is "
-                          "recognized by the service at the URI.",
+            "Indicates that the URI was valid but the resource or image at "
+            "that URI was in a format not supported by the service.",
+            "The resource at %1 is in a format not recognized by the service.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "Place an image or resource or file that is recognized by the "
+            "service at the URI.",
         }},
-    MessageEntry{
-        "ResourceAtUriUnauthorized",
-        {
-            .description = "Indicates that the attempt to access the "
-                           "resource/file/image at the URI was unauthorized.",
-            .message = "While accessing the resource at %1, the service "
-                       "received an authorization error %2.",
-            .severity = "Critical",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "Ensure that the appropriate access is provided for "
-                          "the service in order for it to access the URI.",
-        }},
-    MessageEntry{
-        "ResourceCannotBeDeleted",
-        {
-            .description = "Indicates that a delete operation was attempted on "
-                           "a resource that cannot be deleted.",
-            .message = "The delete request failed because the resource "
-                       "requested cannot be deleted.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Do not attempt to delete a non-deletable resource.",
-        }},
+    MessageEntry{"ResourceAtUriUnauthorized",
+                 {
+                     "Indicates that the attempt to access the "
+                     "resource/file/image at the URI was unauthorized.",
+                     "While accessing the resource at %1, the service received "
+                     "an authorization error %2.",
+                     "Critical",
+                     2,
+                     {
+                         "string",
+                         "string",
+                     },
+                     "Ensure that the appropriate access is provided for the "
+                     "service in order for it to access the URI.",
+                 }},
+    MessageEntry{"ResourceCannotBeDeleted",
+                 {
+                     "Indicates that a delete operation was attempted on a "
+                     "resource that cannot be deleted.",
+                     "The delete request failed because the resource requested "
+                     "cannot be deleted.",
+                     "Critical",
+                     0,
+                     {},
+                     "Do not attempt to delete a non-deletable resource.",
+                 }},
     MessageEntry{
         "ResourceExhaustion",
         {
-            .description =
-                "Indicates that a resource could not satisfy the request due "
-                "to some unavailability of resources.  An example is that "
-                "available capacity has been allocated.",
-            .message = "The resource %1 was unable to satisfy the request due "
-                       "to unavailability of resources.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "Ensure that the resources are available and "
-                          "resubmit the request.",
+            "Indicates that a resource could not satisfy the request due to "
+            "some unavailability of resources.  An example is that available "
+            "capacity has been allocated.",
+            "The resource %1 was unable to satisfy the request due to "
+            "unavailability of resources.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "Ensure that the resources are available and resubmit the request.",
         }},
-    MessageEntry{
-        "ResourceInStandby",
-        {
-            .description = "Indicates that the request could not be performed "
-                           "because the resource is in standby.",
-            .message = "The request could not be performed because the "
-                       "resource is in standby.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Ensure that the resource is in the correct power "
-                          "state and resubmit the request.",
-        }},
-    MessageEntry{
-        "ResourceInUse",
-        {
-            .description = "Indicates that a change was requested to a "
-                           "resource but the change was rejected due to the "
-                           "resource being in use or transition.",
-            .message = "The change to the requested resource failed because "
-                       "the resource is in use or in transition.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Remove the condition and resubmit the request if "
-                          "the operation failed.",
-        }},
+    MessageEntry{"ResourceInStandby",
+                 {
+                     "Indicates that the request could not be performed "
+                     "because the resource is in standby.",
+                     "The request could not be performed because the resource "
+                     "is in standby.",
+                     "Critical",
+                     0,
+                     {},
+                     "Ensure that the resource is in the correct power state "
+                     "and resubmit the request.",
+                 }},
+    MessageEntry{"ResourceInUse",
+                 {
+                     "Indicates that a change was requested to a resource but "
+                     "the change was rejected due to the resource being in use "
+                     "or transition.",
+                     "The change to the requested resource failed because the "
+                     "resource is in use or in transition.",
+                     "Warning",
+                     0,
+                     {},
+                     "Remove the condition and resubmit the request if the "
+                     "operation failed.",
+                 }},
     MessageEntry{
         "ResourceMissingAtURI",
         {
-            .description =
-                "Indicates that the operation expected an image or other "
-                "resource at the provided URI but none was found.  Examples of "
-                "this are in requests that require URIs like Firmware Update.",
-            .message = "The resource at the URI %1 was not found.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "Place a valid resource at the URI or correct the "
-                          "URI and resubmit the request.",
+            "Indicates that the operation expected an image or other resource "
+            "at the provided URI but none was found.  Examples of this are in "
+            "requests that require URIs like Firmware Update.",
+            "The resource at the URI %1 was not found.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "Place a valid resource at the URI or correct the URI and resubmit "
+            "the request.",
         }},
     MessageEntry{
         "ResourceNotFound",
         {
-            .description = "Indicates that the operation expected a resource "
-                           "identifier that corresponds to an existing "
-                           "resource but one was not found.",
-            .message =
-                "The requested resource of type %1 named %2 was not found.",
-            .severity = "Critical",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution =
-                "Provide a valid resource identifier and resubmit the request.",
+            "Indicates that the operation expected a resource identifier that "
+            "corresponds to an existing resource but one was not found.",
+            "The requested resource of type %1 named %2 was not found.",
+            "Critical",
+            2,
+            {
+                "string",
+                "string",
+            },
+            "Provide a valid resource identifier and resubmit the request.",
         }},
     MessageEntry{
         "ResourceTypeIncompatible",
         {
-            .description =
-                "Indicates that the resource type of the operation does not "
-                "match that for the operation destination.  Examples of when "
-                "this can happen include during a POST to a collection using "
-                "the wrong resource type, an update where the @odata.types do "
-                "not match or on a major version incompatability.",
-            .message = "The @odata.type of the request body %1 is incompatible "
-                       "with the @odata.type of the resource which is %2.",
-            .severity = "Critical",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "Resubmit the request with a payload compatible with "
-                          "the resource's schema.",
+            "Indicates that the resource type of the operation does not match "
+            "that for the operation destination.  Examples of when this can "
+            "happen include during a POST to a collection using the wrong "
+            "resource type, an update where the @odata.types do not match or "
+            "on a major version incompatability.",
+            "The @odata.type of the request body %1 is incompatible with the "
+            "@odata.type of the resource which is %2.",
+            "Critical",
+            2,
+            {
+                "string",
+                "string",
+            },
+            "Resubmit the request with a payload compatible with the "
+            "resource's schema.",
         }},
     MessageEntry{
         "ServiceInUnknownState",
         {
-            .description =
-                "Indicates that the operation failed because the service is in "
-                "an unknown state and cannot accept additional requests.",
-            .message =
-                "The operation failed because the service is in an unknown "
-                "state and can no longer take incoming requests.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Restart the service and resubmit the request if the "
-                          "operation failed.",
+            "Indicates that the operation failed because the service is in an "
+            "unknown state and cannot accept additional requests.",
+            "The operation failed because the service is in an unknown state "
+            "and can no longer take incoming requests.",
+            "Critical",
+            0,
+            {},
+            "Restart the service and resubmit the request if the operation "
+            "failed.",
         }},
-    MessageEntry{
-        "ServiceShuttingDown",
-        {
-            .description =
-                "Indicates that the operation failed as the service is "
-                "shutting down, such as when the service reboots.",
-            .message = "The operation failed because the service is shutting "
-                       "down and can no longer take incoming requests.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "When the service becomes available, resubmit the "
-                          "request if the operation failed.",
-        }},
+    MessageEntry{"ServiceShuttingDown",
+                 {
+                     "Indicates that the operation failed as the service is "
+                     "shutting down, such as when the service reboots.",
+                     "The operation failed because the service is shutting "
+                     "down and can no longer take incoming requests.",
+                     "Critical",
+                     0,
+                     {},
+                     "When the service becomes available, resubmit the request "
+                     "if the operation failed.",
+                 }},
     MessageEntry{
         "ServiceTemporarilyUnavailable",
         {
-            .description = "Indicates the service is temporarily unavailable.",
-            .message =
-                "The service is temporarily unavailable.  Retry in %1 seconds.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "Wait for the indicated retry duration and retry the "
-                          "operation.",
+            "Indicates the service is temporarily unavailable.",
+            "The service is temporarily unavailable.  Retry in %1 seconds.",
+            "Critical",
+            1,
+            {
+                "string",
+            },
+            "Wait for the indicated retry duration and retry the operation.",
         }},
     MessageEntry{
         "SessionLimitExceeded",
         {
-            .description =
-                "Indicates that a session establishment has been requested but "
-                "the operation failed due to the number of simultaneous "
-                "sessions exceeding the limit of the implementation.",
-            .message = "The session establishment failed due to the number of "
-                       "simultaneous sessions exceeding the limit of the "
-                       "implementation.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Reduce the number of other sessions before trying "
-                          "to establish the session or increase the limit of "
-                          "simultaneous sessions (if supported).",
+            "Indicates that a session establishment has been requested but the "
+            "operation failed due to the number of simultaneous sessions "
+            "exceeding the limit of the implementation.",
+            "The session establishment failed due to the number of "
+            "simultaneous sessions exceeding the limit of the implementation.",
+            "Critical",
+            0,
+            {},
+            "Reduce the number of other sessions before trying to establish "
+            "the session or increase the limit of simultaneous sessions (if "
+            "supported).",
         }},
     MessageEntry{
         "SessionTerminated",
         {
-            .description =
-                "Indicates that the DELETE operation on the Session resource "
-                "resulted in the successful termination of the session.",
-            .message = "The session was successfully terminated.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "No resolution is required.",
+            "Indicates that the DELETE operation on the Session resource "
+            "resulted in the successful termination of the session.",
+            "The session was successfully terminated.",
+            "OK",
+            0,
+            {},
+            "No resolution is required.",
         }},
     MessageEntry{
         "SourceDoesNotSupportProtocol",
         {
-            .description =
-                "Indicates that while attempting to access, connect to or "
-                "transfer a resource/file/image from another location that the "
-                "other end of the connection did not support the protocol",
-            .message = "The other end of the connection at %1 does not support "
-                       "the specified protocol %2.",
-            .severity = "Critical",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "Change protocols or URIs. ",
+            "Indicates that while attempting to access, connect to or transfer "
+            "a resource/file/image from another location that the other end of "
+            "the connection did not support the protocol",
+            "The other end of the connection at %1 does not support the "
+            "specified protocol %2.",
+            "Critical",
+            2,
+            {
+                "string",
+                "string",
+            },
+            "Change protocols or URIs. ",
         }},
-    MessageEntry{
-        "StringValueTooLong",
-        {
-            .description =
-                "Indicates that a string value passed to the given resource "
-                "exceeded its length limit. An example is when a shorter limit "
-                "is imposed by an implementation than that allowed by the "
-                "specification.",
-            .message = "The string %1 exceeds the length limit %2.",
-            .severity = "Warning",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "number",
-                },
-            .resolution =
-                "Resubmit the request with an appropriate string length.",
-        }},
+    MessageEntry{"StringValueTooLong",
+                 {
+                     "Indicates that a string value passed to the given "
+                     "resource exceeded its length limit. An example is when a "
+                     "shorter limit is imposed by an implementation than that "
+                     "allowed by the specification.",
+                     "The string %1 exceeds the length limit %2.",
+                     "Warning",
+                     2,
+                     {
+                         "string",
+                         "number",
+                     },
+                     "Resubmit the request with an appropriate string length.",
+                 }},
     MessageEntry{"Success",
                  {
-                     .description = "Indicates that all conditions of a "
-                                    "successful operation have been met.",
-                     .message = "Successfully Completed Request",
-                     .severity = "OK",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None",
+                     "Indicates that all conditions of a successful operation "
+                     "have been met.",
+                     "Successfully Completed Request",
+                     "OK",
+                     0,
+                     {},
+                     "None",
                  }},
     MessageEntry{
         "UnrecognizedRequestBody",
         {
-            .description = "Indicates that the service encountered an "
-                           "unrecognizable request body that could not even be "
-                           "interpreted as malformed JSON.",
-            .message = "The service detected a malformed request body that it "
-                       "was unable to interpret.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "Correct the request body and resubmit the request "
-                          "if it failed.",
+            "Indicates that the service encountered an unrecognizable request "
+            "body that could not even be interpreted as malformed JSON.",
+            "The service detected a malformed request body that it was unable "
+            "to interpret.",
+            "Warning",
+            0,
+            {},
+            "Correct the request body and resubmit the request if it failed.",
         }},
 };
 } // namespace redfish::message_registries::base
diff --git a/redfish-core/include/registries/openbmc_message_registry.hpp b/redfish-core/include/registries/openbmc_message_registry.hpp
index c3ec266..3b577949 100644
--- a/redfish-core/include/registries/openbmc_message_registry.hpp
+++ b/redfish-core/include/registries/openbmc_message_registry.hpp
@@ -19,1512 +19,1410 @@
 namespace redfish::message_registries::openbmc
 {
 const Header header = {
-    .copyright = "Copyright 2018 OpenBMC. All rights reserved.",
-    .type = "#MessageRegistry.v1_0_0.MessageRegistry",
-    .id = "OpenBMC.0.1.0",
-    .name = "OpenBMC Message Registry",
-    .language = "en",
-    .description = "This registry defines the base messages for OpenBMC.",
-    .registryPrefix = "OpenBMC",
-    .registryVersion = "0.1.0",
-    .owningEntity = "OpenBMC",
+    "Copyright 2018 OpenBMC. All rights reserved.",
+    "#MessageRegistry.v1_0_0.MessageRegistry",
+    "OpenBMC.0.1.0",
+    "OpenBMC Message Registry",
+    "en",
+    "This registry defines the base messages for OpenBMC.",
+    "OpenBMC",
+    "0.1.0",
+    "OpenBMC",
 };
-const std::array registry = {
+const std::array<MessageEntry, 114> registry = {
     MessageEntry{
         "ADDDCCorrectable",
         {
-            .description = "Indicates an ADDDC Correctable Error.",
-            .message =
-                "ADDDC Correctable Error.Socket=%1 Channel=%2 DIMM=%3 Rank=%4.",
-            .severity = "Warning",
-            .numberOfArgs = 4,
-            .paramTypes =
-                {
-                    "number",
-                    "string",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates an ADDDC Correctable Error.",
+            "ADDDC Correctable Error.Socket=%1 Channel=%2 DIMM=%3 Rank=%4.",
+            "Warning",
+            4,
+            {
+                "number",
+                "string",
+                "number",
+                "number",
+            },
+            "None.",
         }},
     MessageEntry{
         "BIOSBoot",
         {
-            .description =
-                "Indicates BIOS has transitioned control to the OS Loader.",
-            .message = "BIOS System Boot.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
+            "Indicates BIOS has transitioned control to the OS Loader.",
+            "BIOS System Boot.",
+            "OK",
+            0,
+            {},
+            "None.",
         }},
-    MessageEntry{
-        "BIOSPOSTError",
-        {
-            .description = "Indicates BIOS POST has encountered an error.",
-            .message = "BIOS POST Error. Error Code=%1",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes = {"number"},
-            .resolution = "None.",
-        }},
+    MessageEntry{"BIOSPOSTError",
+                 {
+                     "Indicates BIOS POST has encountered an error.",
+                     "BIOS POST Error. Error Code=%1",
+                     "Warning",
+                     1,
+                     {"number"},
+                     "None.",
+                 }},
     MessageEntry{"BIOSRecoveryComplete",
                  {
-                     .description = "Indicates BIOS Recovery has completed.",
-                     .message = "BIOS Recovery Complete.",
-                     .severity = "OK",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates BIOS Recovery has completed.",
+                     "BIOS Recovery Complete.",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
                  }},
     MessageEntry{"BIOSRecoveryStart",
                  {
-                     .description = "Indicates BIOS Recovery has started.",
-                     .message = "BIOS Recovery Start.",
-                     .severity = "Warning",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates BIOS Recovery has started.",
+                     "BIOS Recovery Start.",
+                     "Warning",
+                     0,
+                     {},
+                     "None.",
                  }},
     MessageEntry{"CPUError",
                  {
-                     .description = "Indicates that a CPU Error occurred of "
-                                    "the specified type or cause.",
-                     .message = "CPU Error Occurred: %1.",
-                     .severity = "Critical",
-                     .numberOfArgs = 1,
-                     .paramTypes = {"string"},
-                     .resolution = "None.",
+                     "Indicates that a CPU Error occurred of "
+                     "the specified type or cause.",
+                     "CPU Error Occurred: %1.",
+                     "Critical",
+                     1,
+                     {"string"},
+                     "None.",
                  }},
     MessageEntry{"CPUThermalTrip",
                  {
-                     .description = "Indicates that the specified CPU thermal "
-                                    "trip has been asserted.",
-                     .message = "CPU %1 Thermal Trip.",
-                     .severity = "Critical",
-                     .numberOfArgs = 1,
-                     .paramTypes = {"number"},
-                     .resolution = "None.",
+                     "Indicates that the specified CPU thermal "
+                     "trip has been asserted.",
+                     "CPU %1 Thermal Trip.",
+                     "Critical",
+                     1,
+                     {"number"},
+                     "None.",
                  }},
-    MessageEntry{
-        "DCPowerOff",
-        {
-            .description = "Indicates that the system DC power is off.",
-            .message = "Host system DC power is off",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"DCPowerOff",
+                 {
+                     "Indicates that the system DC power is off.",
+                     "Host system DC power is off",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{"DCPowerOn",
                  {
-                     .description = "Indicates that the system DC power is on.",
-                     .message = "Host system DC power is on",
-                     .severity = "OK",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that the system DC power is on.",
+                     "Host system DC power is on",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
                  }},
-    MessageEntry{
-        "EventLogCleared",
-        {
-            .description = "Indicates that the event log has been cleared.",
-            .message = "Event Log Cleared.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "FanInserted",
-        {
-            .description = "Indicates that a system fan has been inserted.",
-            .message = "%1 inserted.",
-            .severity = "OK",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
-        }},
+    MessageEntry{"EventLogCleared",
+                 {
+                     "Indicates that the event log has been cleared.",
+                     "Event Log Cleared.",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
+                 }},
+    MessageEntry{"FanInserted",
+                 {
+                     "Indicates that a system fan has been inserted.",
+                     "%1 inserted.",
+                     "OK",
+                     1,
+                     {"string"},
+                     "None.",
+                 }},
     MessageEntry{"FanRedundancyLost",
                  {
-                     .description =
-                         "Indicates that system fan redundancy has been lost.",
-                     .message = "Fan redundancy lost.",
-                     .severity = "Warning",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that system fan redundancy has been lost.",
+                     "Fan redundancy lost.",
+                     "Warning",
+                     0,
+                     {},
+                     "None.",
                  }},
-    MessageEntry{
-        "FanRedundancyRegained",
-        {
-            .description =
-                "Indicates that system fan redundancy has been regained.",
-            .message = "Fan redundancy regained.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "FanRemoved",
-        {
-            .description = "Indicates that a system fan has been removed.",
-            .message = "%1 removed.",
-            .severity = "OK",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "FirmwareUpdateCompleted",
-        {
-            .description =
-                "Indicates a firmware update has completed successfully.",
-            .message = "%1 firmware update to version %2 completed "
-                       "successfully.",
-            .severity = "OK",
-            .numberOfArgs = 2,
-            .paramTypes = {"string", "string"},
-            .resolution = "None.",
-        }},
+    MessageEntry{"FanRedundancyRegained",
+                 {
+                     "Indicates that system fan redundancy has been regained.",
+                     "Fan redundancy regained.",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
+                 }},
+    MessageEntry{"FanRemoved",
+                 {
+                     "Indicates that a system fan has been removed.",
+                     "%1 removed.",
+                     "OK",
+                     1,
+                     {"string"},
+                     "None.",
+                 }},
+    MessageEntry{"FirmwareUpdateCompleted",
+                 {
+                     "Indicates a firmware update has completed successfully.",
+                     "%1 firmware update to version %2 completed "
+                     "successfully.",
+                     "OK",
+                     2,
+                     {"string", "string"},
+                     "None.",
+                 }},
     MessageEntry{"FirmwareUpdateFailed",
                  {
-                     .description = "Indicates a firmware update has failed.",
-                     .message = "%1 firmware update to version %2 failed.",
-                     .severity = "Warning",
-                     .numberOfArgs = 2,
-                     .paramTypes = {"string", "string"},
-                     .resolution = "None.",
+                     "Indicates a firmware update has failed.",
+                     "%1 firmware update to version %2 failed.",
+                     "Warning",
+                     2,
+                     {"string", "string"},
+                     "None.",
                  }},
     MessageEntry{"FirmwareUpdateStarted",
                  {
-                     .description = "Indicates a firmware update has started.",
-                     .message = "%1 firmware update to version %2 started.",
-                     .severity = "OK",
-                     .numberOfArgs = 2,
-                     .paramTypes = {"string", "string"},
-                     .resolution = "None.",
+                     "Indicates a firmware update has started.",
+                     "%1 firmware update to version %2 started.",
+                     "OK",
+                     2,
+                     {"string", "string"},
+                     "None.",
                  }},
     MessageEntry{
         "GeneralFirmwareSecurityViolation",
         {
-            .description =
-                "Indicates a general firmware security violation has occurred.",
-            .message = "Firmware security violation: %1.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
+            "Indicates a general firmware security violation has occurred.",
+            "Firmware security violation: %1.",
+            "Critical",
+            1,
+            {"string"},
+            "None.",
         }},
-    MessageEntry{
-        "InvalidLoginAttempted",
-        {
-            .description =
-                "Indicates that a login was attempted on the specified "
-                "interface with an invalid username or password.",
-            .message = "Invalid username or password attempted on %1.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
-        }},
+    MessageEntry{"InvalidLoginAttempted",
+                 {
+                     "Indicates that a login was attempted on the specified "
+                     "interface with an invalid username or password.",
+                     "Invalid username or password attempted on %1.",
+                     "Warning",
+                     1,
+                     {"string"},
+                     "None.",
+                 }},
     MessageEntry{
         "InventoryAdded",
         {
-            .description =
-                "Indicates that an inventory item with the specified model, "
-                "type, and serial number was installed.",
-            .message = "%1 %2 with serial number %3 was installed.",
-            .severity = "OK",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                    "string",
-                },
-            .resolution = "None.",
+            "Indicates that an inventory item with the specified model, "
+            "type, and serial number was installed.",
+            "%1 %2 with serial number %3 was installed.",
+            "OK",
+            3,
+
+            {
+                "string",
+                "string",
+                "string",
+            },
+            "None.",
         }},
     MessageEntry{
         "InventoryRemoved",
         {
-            .description =
-                "Indicates that an inventory item with the specified model, "
-                "type, and serial number was removed.",
-            .message = "%1 %2 with serial number %3 was removed.",
-            .severity = "OK",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                    "string",
-                },
-            .resolution = "None.",
+            "Indicates that an inventory item with the specified model, "
+            "type, and serial number was removed.",
+            "%1 %2 with serial number %3 was removed.",
+            "OK",
+            3,
+
+            {
+                "string",
+                "string",
+                "string",
+            },
+            "None.",
         }},
     MessageEntry{
         "IntelUPILinkWidthReducedToHalf",
         {
-            .description =
-                "Indicates Intel UPI link width has reduced to half width.",
-            .message = "Intel UPI link width reduced to half. Node=%1.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates Intel UPI link width has reduced to half width.",
+            "Intel UPI link width reduced to half. Node=%1.",
+            "Warning",
+            1,
+
+            {
+                "number",
+            },
+            "None.",
         }},
     MessageEntry{
         "IntelUPILinkWidthReducedToQuarter",
         {
-            .description =
-                "Indicates Intel UPI link width has reduced to quarter width.",
-            .message = "Intel UPI link width reduced to quarter. Node=%1.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates Intel UPI link width has reduced to quarter width.",
+            "Intel UPI link width reduced to quarter. Node=%1.",
+            "Warning",
+            1,
+
+            {
+                "number",
+            },
+            "None.",
         }},
 
-    MessageEntry{
-        "IPMIWatchdog",
-        {
-            .description = "Indicates that there is a host watchdog event.",
-            .message = "Host Watchdog Event: %1",
-            .severity = "OK",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"IPMIWatchdog",
+                 {
+                     "Indicates that there is a host watchdog event.",
+                     "Host Watchdog Event: %1",
+                     "OK",
+                     1,
 
-    MessageEntry{
-        "LegacyPCIPERR",
-        {
-            .description = "Indicates a Legacy PCI PERR.",
-            .message = "Legacy PCI PERR. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "LegacyPCISERR",
-        {
-            .description = "Indicates a Legacy PCI SERR.",
-            .message = "Legacy PCI SERR. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Critical",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+                     {
+                         "string",
+                     },
+                     "None.",
+                 }},
+
+    MessageEntry{"LegacyPCIPERR",
+                 {
+                     "Indicates a Legacy PCI PERR.",
+                     "Legacy PCI PERR. Bus=%1 Device=%2 Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"LegacyPCISERR",
+                 {
+                     "Indicates a Legacy PCI SERR.",
+                     "Legacy PCI SERR. Bus=%1 Device=%2 Function=%3.",
+                     "Critical",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{"ManufacturingModeEntered",
                  {
-                     .description = "Indicates that Factory, Manufacturing, or "
-                                    "Test mode has been entered.",
-                     .message = "Entered Manufacturing Mode.",
-                     .severity = "Warning",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that Factory, Manufacturing, or "
+                     "Test mode has been entered.",
+                     "Entered Manufacturing Mode.",
+                     "Warning",
+                     0,
+                     {},
+                     "None.",
                  }},
     MessageEntry{"MemoryECCCorrectable",
                  {
-                     .description = "Indicates a Correctable Memory ECC error.",
-                     .message = "Memory ECC correctable error. Socket=%1 "
-                                "Channel=%2 DIMM=%3 Rank=%4.",
-                     .severity = "Warning",
-                     .numberOfArgs = 4,
-                     .paramTypes =
-                         {
-                             "number",
-                             "string",
-                             "number",
-                             "number",
-                         },
-                     .resolution = "None.",
+                     "Indicates a Correctable Memory ECC error.",
+                     "Memory ECC correctable error. Socket=%1 "
+                     "Channel=%2 DIMM=%3 Rank=%4.",
+                     "Warning",
+                     4,
+
+                     {
+                         "number",
+                         "string",
+                         "number",
+                         "number",
+                     },
+                     "None.",
                  }},
-    MessageEntry{
-        "MemoryECCUncorrectable",
-        {
-            .description = "Indicates an Uncorrectable Memory ECC error.",
-            .message = "Memory ECC uncorrectable error. Socket=%1 Channel=%2 "
-                       "DIMM=%3 Rank=%4.",
-            .severity = "Critical",
-            .numberOfArgs = 4,
-            .paramTypes =
-                {
-                    "number",
-                    "string",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "MemoryParityCommandAndAddress",
-        {
-            .description = "Indicates a Command and Address parity error.",
-            .message = "Command and Address parity error. Socket=%1 Channel=%2 "
-                       "DIMM=%3 ChannelValid=%4 DIMMValid=%5.",
-            .severity = "Critical",
-            .numberOfArgs = 5,
-            .paramTypes =
-                {
-                    "number",
-                    "string",
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"MemoryECCUncorrectable",
+                 {
+                     "Indicates an Uncorrectable Memory ECC error.",
+                     "Memory ECC uncorrectable error. Socket=%1 Channel=%2 "
+                     "DIMM=%3 Rank=%4.",
+                     "Critical",
+                     4,
+
+                     {
+                         "number",
+                         "string",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"MemoryParityCommandAndAddress",
+                 {
+                     "Indicates a Command and Address parity error.",
+                     "Command and Address parity error. Socket=%1 Channel=%2 "
+                     "DIMM=%3 ChannelValid=%4 DIMMValid=%5.",
+                     "Critical",
+                     5,
+
+                     {
+                         "number",
+                         "string",
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{"MemoryParityNotKnown",
                  {
-                     .description = "Indicates an unknown parity error.",
-                     .message = "Memory parity error. Socket=%1 Channel=%2 "
-                                "DIMM=%3 ChannelValid=%4 DIMMValid=%5.",
-                     .severity = "Critical",
-                     .numberOfArgs = 5,
-                     .paramTypes =
-                         {
-                             "number",
-                             "string",
-                             "number",
-                             "number",
-                             "number",
-                         },
-                     .resolution = "None.",
+                     "Indicates an unknown parity error.",
+                     "Memory parity error. Socket=%1 Channel=%2 "
+                     "DIMM=%3 ChannelValid=%4 DIMMValid=%5.",
+                     "Critical",
+                     5,
+
+                     {
+                         "number",
+                         "string",
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
                  }},
-    MessageEntry{
-        "MemoryRASConfigurationDisabled",
-        {
-            .description =
-                "Indicates Memory RAS Disabled Configuration Status.",
-            .message = "Memory RAS Configuration Disabled. Error=%1 Mode=%2.",
-            .severity = "OK",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "MemoryRASConfigurationEnabled",
-        {
-            .description = "Indicates Memory RAS Enabled Configuration Status.",
-            .message = "Memory RAS Configuration Enabled. Error=%1 Mode=%2.",
-            .severity = "OK",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "MemoryRASModeDisabled",
-        {
-            .description = "Indicates Memory RAS Disabled Mode Selection.",
-            .message = "Memory RAS Mode Select Disabled. Prior Mode=%1 "
-                       "Selected Mode=%2.",
-            .severity = "OK",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "MemoryRASModeEnabled",
-        {
-            .description = "Indicates Memory RAS Enabled Mode Selection.",
-            .message = "Memory RAS Mode Select Enabled. Prior Mode=%1 Selected "
-                       "Mode=%2.",
-            .severity = "OK",
-            .numberOfArgs = 2,
-            .paramTypes =
-                {
-                    "string",
-                    "string",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "MemoryThermTrip",
-        {
-            .description =
-                "Indicates that the system memory ThermTrip is asserted.",
-            .message = "Memory ThermTrip asserted.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "MirroringRedundancyDegraded",
-        {
-            .description =
-                "Indicates the mirroring redundancy state is degraded.",
-            .message = "Mirroring redundancy state degraded. Socket=%1 "
-                       "Channel=%2 DIMM=%3 Pair=%4 Rank=%5.",
-            .severity = "Warning",
-            .numberOfArgs = 5,
-            .paramTypes =
-                {
-                    "number",
-                    "string",
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"MemoryRASConfigurationDisabled",
+                 {
+                     "Indicates Memory RAS Disabled Configuration Status.",
+                     "Memory RAS Configuration Disabled. Error=%1 Mode=%2.",
+                     "OK",
+                     2,
+
+                     {
+                         "string",
+                         "string",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"MemoryRASConfigurationEnabled",
+                 {
+                     "Indicates Memory RAS Enabled Configuration Status.",
+                     "Memory RAS Configuration Enabled. Error=%1 Mode=%2.",
+                     "OK",
+                     2,
+
+                     {
+                         "string",
+                         "string",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"MemoryRASModeDisabled",
+                 {
+                     "Indicates Memory RAS Disabled Mode Selection.",
+                     "Memory RAS Mode Select Disabled. Prior Mode=%1 "
+                     "Selected Mode=%2.",
+                     "OK",
+                     2,
+
+                     {
+                         "string",
+                         "string",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"MemoryRASModeEnabled",
+                 {
+                     "Indicates Memory RAS Enabled Mode Selection.",
+                     "Memory RAS Mode Select Enabled. Prior Mode=%1 Selected "
+                     "Mode=%2.",
+                     "OK",
+                     2,
+
+                     {
+                         "string",
+                         "string",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"MemoryThermTrip",
+                 {
+                     "Indicates that the system memory ThermTrip is asserted.",
+                     "Memory ThermTrip asserted.",
+                     "Critical",
+                     0,
+                     {},
+                     "None.",
+                 }},
+    MessageEntry{"MirroringRedundancyDegraded",
+                 {
+                     "Indicates the mirroring redundancy state is degraded.",
+                     "Mirroring redundancy state degraded. Socket=%1 "
+                     "Channel=%2 DIMM=%3 Pair=%4 Rank=%5.",
+                     "Warning",
+                     5,
+
+                     {
+                         "number",
+                         "string",
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{
         "MirroringRedundancyFull",
         {
-            .description =
-                "Indicates the mirroring redundancy state is fully redundant.",
-            .message = "Mirroring redundancy state fully redundant. Socket=%1 "
-                       "Channel=%2 DIMM=%3 Pair=%4 Rank=%5.",
-            .severity = "OK",
-            .numberOfArgs = 5,
-            .paramTypes =
-                {
-                    "number",
-                    "string",
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates the mirroring redundancy state is fully redundant.",
+            "Mirroring redundancy state fully redundant. Socket=%1 "
+            "Channel=%2 DIMM=%3 Pair=%4 Rank=%5.",
+            "OK",
+            5,
+
+            {
+                "number",
+                "string",
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
-    MessageEntry{
-        "NMIButtonPressed",
-        {
-            .description = "Indicates that the NMI button was pressed.",
-            .message = "NMI Button Pressed.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"NMIButtonPressed",
+                 {
+                     "Indicates that the NMI button was pressed.",
+                     "NMI Button Pressed.",
+                     "Critical",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{"NMIDiagnosticInterrupt",
                  {
-                     .description = "Indicates that an NMI Diagnostic "
-                                    "Interrupt has been generated.",
-                     .message = "NMI Diagnostic Interrupt.",
-                     .severity = "Critical",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that an NMI Diagnostic "
+                     "Interrupt has been generated.",
+                     "NMI Diagnostic Interrupt.",
+                     "Critical",
+                     0,
+                     {},
+                     "None.",
                  }},
-    MessageEntry{
-        "PCIeCorrectableAdvisoryNonFatal",
-        {
-            .description =
-                "Indicates a PCIe Correctable Advisory Non-fatal Error.",
-            .message = "PCIe Correctable Advisory Non-fatal Error. Bus=%1 "
-                       "Device=%2 Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeCorrectableBadDLLP",
-        {
-            .description = "Indicates a PCIe Correctable Bad DLLP Error.",
-            .message =
-                "PCIe Correctable Bad DLLP. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeCorrectableBadTLP",
-        {
-            .description = "Indicates a PCIe Correctable Bad TLP Error.",
-            .message =
-                "PCIe Correctable Bad TLP. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeCorrectableHeaderLogOverflow",
-        {
-            .description =
-                "Indicates a PCIe Correctable Header Log Overflow Error.",
-            .message = "PCIe Correctable Header Log Overflow. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeCorrectableInternal",
-        {
-            .description = "Indicates a PCIe Correctable Internal Error.",
-            .message = "PCIe Correctable Internal Error. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"PCIeCorrectableAdvisoryNonFatal",
+                 {
+                     "Indicates a PCIe Correctable Advisory Non-fatal Error.",
+                     "PCIe Correctable Advisory Non-fatal Error. Bus=%1 "
+                     "Device=%2 Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeCorrectableBadDLLP",
+                 {
+                     "Indicates a PCIe Correctable Bad DLLP Error.",
+
+                     "PCIe Correctable Bad DLLP. Bus=%1 Device=%2 Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeCorrectableBadTLP",
+                 {
+                     "Indicates a PCIe Correctable Bad TLP Error.",
+
+                     "PCIe Correctable Bad TLP. Bus=%1 Device=%2 Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeCorrectableHeaderLogOverflow",
+                 {
+                     "Indicates a PCIe Correctable Header Log Overflow Error.",
+                     "PCIe Correctable Header Log Overflow. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeCorrectableInternal",
+                 {
+                     "Indicates a PCIe Correctable Internal Error.",
+                     "PCIe Correctable Internal Error. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{"PCIeCorrectableLinkBWChanged",
                  {
-                     .description =
-                         "Indicates a PCIe Correctable Link BW Changed Error.",
-                     .message = "PCIe Correctable Link BW Changed. Bus=%1 "
-                                "Device=%2 Function=%3.",
-                     .severity = "Warning",
-                     .numberOfArgs = 3,
-                     .paramTypes =
-                         {
-                             "number",
-                             "number",
-                             "number",
-                         },
-                     .resolution = "None.",
+                     "Indicates a PCIe Correctable Link BW Changed Error.",
+                     "PCIe Correctable Link BW Changed. Bus=%1 "
+                     "Device=%2 Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
                  }},
-    MessageEntry{
-        "PCIeCorrectableReceiverError",
-        {
-            .description = "Indicates a PCIe Correctable Receiver Error.",
-            .message = "PCIe Correctable Receiver Error. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeCorrectableReplayNumRollover",
-        {
-            .description = "Indicates a PCIe Correctable Replay Num Rollover.",
-            .message = "PCIe Correctable Replay Num Rollover. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeCorrectableReplayTimerTimeout",
-        {
-            .description = "Indicates a PCIe Correctable Replay Timer Timeout.",
-            .message = "PCIe Correctable Replay Timer Timeout. Bus=%1 "
-                       "Device=%2 Function=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"PCIeCorrectableReceiverError",
+                 {
+                     "Indicates a PCIe Correctable Receiver Error.",
+                     "PCIe Correctable Receiver Error. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeCorrectableReplayNumRollover",
+                 {
+                     "Indicates a PCIe Correctable Replay Num Rollover.",
+                     "PCIe Correctable Replay Num Rollover. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeCorrectableReplayTimerTimeout",
+                 {
+                     "Indicates a PCIe Correctable Replay Timer Timeout.",
+                     "PCIe Correctable Replay Timer Timeout. Bus=%1 "
+                     "Device=%2 Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{"PCIeCorrectableUnspecifiedAERError",
                  {
-                     .description =
-                         "Indicates a PCIe Correctable Unspecified AER Error.",
-                     .message = "PCIe Correctable Unspecified AER Error. "
-                                "Bus=%1 Device=%2 Function=%3.",
-                     .severity = "Warning",
-                     .numberOfArgs = 3,
-                     .paramTypes =
-                         {
-                             "number",
-                             "number",
-                             "number",
-                         },
-                     .resolution = "None.",
+                     "Indicates a PCIe Correctable Unspecified AER Error.",
+                     "PCIe Correctable Unspecified AER Error. "
+                     "Bus=%1 Device=%2 Function=%3.",
+                     "Warning",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
                  }},
-    MessageEntry{
-        "PCIeFatalACSViolation",
-        {
-            .description = "Indicates a PCIe ACS Violation Error.",
-            .message =
-                "PCIe Fatal ACS Violation. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeFatalAtomicEgressBlocked",
-        {
-            .description = "Indicates a PCIe Atomic Egress Blocked Error.",
-            .message = "PCIe Fatal Atomic Egress Blocked. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"PCIeFatalACSViolation",
+                 {
+                     "Indicates a PCIe ACS Violation Error.",
+
+                     "PCIe Fatal ACS Violation. Bus=%1 Device=%2 Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeFatalAtomicEgressBlocked",
+                 {
+                     "Indicates a PCIe Atomic Egress Blocked Error.",
+                     "PCIe Fatal Atomic Egress Blocked. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{
         "PCIeFatalCompleterAbort",
         {
-            .description = "Indicates a PCIe Completer Abort Error.",
-            .message =
-                "PCIe Fatal Completer Abort. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates a PCIe Completer Abort Error.",
+
+            "PCIe Fatal Completer Abort. Bus=%1 Device=%2 Function=%3.",
+            "Error",
+            3,
+
+            {
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
     MessageEntry{
         "PCIeFatalCompletionTimeout",
         {
-            .description = "Indicates a PCIe Completion Timeout Error.",
-            .message =
-                "PCIe Fatal Completion Timeout. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates a PCIe Completion Timeout Error.",
+
+            "PCIe Fatal Completion Timeout. Bus=%1 Device=%2 Function=%3.",
+            "Error",
+            3,
+
+            {
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
     MessageEntry{
         "PCIeFatalDataLinkLayerProtocol",
         {
-            .description = "Indicates a PCIe Data Link Layer Protocol Error.",
-            .message =
-                "PCIe Fatal Data Link Layer Protocol Error. Bus=%1 Device=%2 "
-                "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates a PCIe Data Link Layer Protocol Error.",
+
+            "PCIe Fatal Data Link Layer Protocol Error. Bus=%1 Device=%2 "
+            "Function=%3.",
+            "Error",
+            3,
+
+            {
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
-    MessageEntry{
-        "PCIeFatalECRCError",
-        {
-            .description = "Indicates a PCIe ECRC Error.",
-            .message = "PCIe Fatal ECRC Error. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeFatalFlowControlProtocol",
-        {
-            .description = "Indicates a PCIe Flow Control Protocol Error.",
-            .message =
-                "PCIe Fatal Flow Control Protocol Error. Bus=%1 Device=%2 "
-                "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"PCIeFatalECRCError",
+                 {
+                     "Indicates a PCIe ECRC Error.",
+                     "PCIe Fatal ECRC Error. Bus=%1 Device=%2 Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeFatalFlowControlProtocol",
+                 {
+                     "Indicates a PCIe Flow Control Protocol Error.",
+
+                     "PCIe Fatal Flow Control Protocol Error. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{
         "PCIeFatalMalformedTLP",
         {
-            .description = "Indicates a PCIe Malformed TLP Error.",
-            .message =
-                "PCIe Fatal Malformed TLP Error. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates a PCIe Malformed TLP Error.",
+
+            "PCIe Fatal Malformed TLP Error. Bus=%1 Device=%2 Function=%3.",
+            "Error",
+            3,
+
+            {
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
     MessageEntry{"PCIeFatalMCBlockedTLP",
                  {
-                     .description = "Indicates a PCIe MC Blocked TLP Error.",
-                     .message = "PCIe Fatal MC Blocked TLP Error. Bus=%1 "
-                                "Device=%2 Function=%3.",
-                     .severity = "Error",
-                     .numberOfArgs = 3,
-                     .paramTypes =
-                         {
-                             "number",
-                             "number",
-                             "number",
-                         },
-                     .resolution = "None.",
+                     "Indicates a PCIe MC Blocked TLP Error.",
+                     "PCIe Fatal MC Blocked TLP Error. Bus=%1 "
+                     "Device=%2 Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
                  }},
     MessageEntry{
         "PCIeFatalPoisonedTLP",
         {
-            .description = "Indicates a PCIe Poisoned TLP Error.",
-            .message =
-                "PCIe Fatal Poisoned TLP Error. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates a PCIe Poisoned TLP Error.",
+
+            "PCIe Fatal Poisoned TLP Error. Bus=%1 Device=%2 Function=%3.",
+            "Error",
+            3,
+
+            {
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
-    MessageEntry{
-        "PCIeFatalReceiverBufferOverflow",
-        {
-            .description = "Indicates a PCIe Receiver Buffer Overflow Error.",
-            .message = "PCIe Fatal Receiver Buffer Overflow. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"PCIeFatalReceiverBufferOverflow",
+                 {
+                     "Indicates a PCIe Receiver Buffer Overflow Error.",
+                     "PCIe Fatal Receiver Buffer Overflow. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{
         "PCIeFatalReceivedErrNonFatalMessage",
         {
-            .description =
-                "Indicates a PCIe Received ERR_NONFATAL Message Error.",
-            .message =
-                "PCIe Fatal Received ERR_NONFATAL Message. Bus=%1 Device=%2 "
-                "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates a PCIe Received ERR_NONFATAL Message Error.",
+
+            "PCIe Fatal Received ERR_NONFATAL Message. Bus=%1 Device=%2 "
+            "Function=%3.",
+            "Error",
+            3,
+
+            {
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
     MessageEntry{"PCIeFatalReceivedFatalMessageFromDownstream",
                  {
-                     .description = "Indicates a PCIe Received Fatal Message "
-                                    "From Downstream Error.",
-                     .message =
-                         "PCIe Fatal Received Fatal Message From Downstream. "
-                         "Bus=%1 Device=%2 Function=%3.",
-                     .severity = "Error",
-                     .numberOfArgs = 3,
-                     .paramTypes =
-                         {
-                             "number",
-                             "number",
-                             "number",
-                         },
-                     .resolution = "None.",
+                     "Indicates a PCIe Received Fatal Message "
+                     "From Downstream Error.",
+
+                     "PCIe Fatal Received Fatal Message From Downstream. "
+                     "Bus=%1 Device=%2 Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
                  }},
-    MessageEntry{
-        "PCIeFatalSurpriseLinkDown",
-        {
-            .description = "Indicates a PCIe Surprise Link Down Error.",
-            .message = "PCIe Fatal Surprise Link Down Error. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeFatalTLPPrefixBlocked",
-        {
-            .description = "Indicates a PCIe TLP Prefix Blocked Error.",
-            .message = "PCIe Fatal TLP Prefix Blocked Error. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"PCIeFatalSurpriseLinkDown",
+                 {
+                     "Indicates a PCIe Surprise Link Down Error.",
+                     "PCIe Fatal Surprise Link Down Error. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeFatalTLPPrefixBlocked",
+                 {
+                     "Indicates a PCIe TLP Prefix Blocked Error.",
+                     "PCIe Fatal TLP Prefix Blocked Error. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{
         "PCIeFatalUncorrectableInternal",
         {
-            .description = "Indicates a PCIe Uncorrectable Internal Error.",
-            .message =
-                "PCIe Fatal Uncorrectable Internal Error. Bus=%1 Device=%2 "
-                "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates a PCIe Uncorrectable Internal Error.",
+
+            "PCIe Fatal Uncorrectable Internal Error. Bus=%1 Device=%2 "
+            "Function=%3.",
+            "Error",
+            3,
+
+            {
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
-    MessageEntry{
-        "PCIeFatalUnexpectedCompletion",
-        {
-            .description = "Indicates a PCIe Unexpected Completion Error.",
-            .message = "PCIe Fatal Unexpected Completion. Bus=%1 Device=%2 "
-                       "Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PCIeFatalUnspecifiedNonAERFatalError",
-        {
-            .description = "Indicates a PCIe Unspecified Non-AER Fatal Error.",
-            .message = "PCIe Fatal Unspecified Non-AER Fatal Error. Bus=%1 "
-                       "Device=%2 Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
-        }},
+    MessageEntry{"PCIeFatalUnexpectedCompletion",
+                 {
+                     "Indicates a PCIe Unexpected Completion Error.",
+                     "PCIe Fatal Unexpected Completion. Bus=%1 Device=%2 "
+                     "Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PCIeFatalUnspecifiedNonAERFatalError",
+                 {
+                     "Indicates a PCIe Unspecified Non-AER Fatal Error.",
+                     "PCIe Fatal Unspecified Non-AER Fatal Error. Bus=%1 "
+                     "Device=%2 Function=%3.",
+                     "Error",
+                     3,
+
+                     {
+                         "number",
+                         "number",
+                         "number",
+                     },
+                     "None.",
+                 }},
     MessageEntry{
         "PCIeFatalUnsupportedRequest",
         {
-            .description = "Indicates a PCIe Unsupported Request Error.",
-            .message =
-                "PCIe Fatal Unsupported Request. Bus=%1 Device=%2 Function=%3.",
-            .severity = "Error",
-            .numberOfArgs = 3,
-            .paramTypes =
-                {
-                    "number",
-                    "number",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates a PCIe Unsupported Request Error.",
+
+            "PCIe Fatal Unsupported Request. Bus=%1 Device=%2 Function=%3.",
+            "Error",
+            3,
+
+            {
+                "number",
+                "number",
+                "number",
+            },
+            "None.",
         }},
     MessageEntry{"ChassisIntrusionDetected",
                  {
-                     .description = "Indicates that a physical security event "
-                                    "of the chassis intrusion has occurred.",
-                     .message = "Chassis Intrusion Detected.",
-                     .severity = "Warning",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that a physical security event "
+                     "of the chassis intrusion has occurred.",
+                     "Chassis Intrusion Detected.",
+                     "Warning",
+                     0,
+                     {},
+                     "None.",
                  }},
-    MessageEntry{
-        "ChassisIntrusionReset",
-        {
-            .description =
-                "Indicates that chassis intrusion status has recovered.",
-            .message = "Chassis Intrusion Reset.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"ChassisIntrusionReset",
+                 {
+                     "Indicates that chassis intrusion status has recovered.",
+                     "Chassis Intrusion Reset.",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{"LanLost",
                  {
-                     .description = "Indicates that a physical security event "
-                                    "of the LAN leash has lost.",
-                     .message = "%1 LAN leash lost.",
-                     .severity = "Warning",
-                     .numberOfArgs = 1,
-                     .paramTypes =
-                         {
-                             "string",
-                         },
-                     .resolution = "None.",
+                     "Indicates that a physical security event "
+                     "of the LAN leash has lost.",
+                     "%1 LAN leash lost.",
+                     "Warning",
+                     1,
+
+                     {
+                         "string",
+                     },
+                     "None.",
                  }},
-    MessageEntry{
-        "LanRegained",
-        {
-            .description = "Indicates that LAN link status has reconnected.",
-            .message = "%1 LAN leash regained.",
-            .severity = "OK",
-            .numberOfArgs = 1,
-            .paramTypes =
-                {
-                    "string",
-                },
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PowerButtonPressed",
-        {
-            .description = "Indicates that the power button was pressed.",
-            .message = "Power Button Pressed.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"LanRegained",
+                 {
+                     "Indicates that LAN link status has reconnected.",
+                     "%1 LAN leash regained.",
+                     "OK",
+                     1,
+
+                     {
+                         "string",
+                     },
+                     "None.",
+                 }},
+    MessageEntry{"PowerButtonPressed",
+                 {
+                     "Indicates that the power button was pressed.",
+                     "Power Button Pressed.",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{"PowerRestorePolicyApplied",
                  {
-                     .description = "Indicates that power was restored and the "
-                                    "BMC has applied the restore policy.",
-                     .message = "Power restore policy applied.",
-                     .severity = "OK",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that power was restored and the "
+                     "BMC has applied the restore policy.",
+                     "Power restore policy applied.",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
                  }},
-    MessageEntry{
-        "PowerSupplyConfigurationError",
-        {
-            .description = "Indicates an error in power supply configuration.",
-            .message = "Power supply %1 configuration error.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
-        }},
+    MessageEntry{"PowerSupplyConfigurationError",
+                 {
+                     "Indicates an error in power supply configuration.",
+                     "Power supply %1 configuration error.",
+                     "Critical",
+                     1,
+                     {"string"},
+                     "None.",
+                 }},
     MessageEntry{
         "PowerSupplyFanFailed",
         {
-            .description =
-                "Indicates that the specified power supply fan has failed.",
-            .message = "Power supply %1 fan %2 failed.",
-            .severity = "Critical",
-            .numberOfArgs = 2,
-            .paramTypes = {"string", "string"},
-            .resolution = "None.",
+            "Indicates that the specified power supply fan has failed.",
+            "Power supply %1 fan %2 failed.",
+            "Critical",
+            2,
+            {"string", "string"},
+            "None.",
         }},
     MessageEntry{
         "PowerSupplyFanRecovered",
         {
-            .description =
-                "Indicates that the power supply fan recovered from a failure.",
-            .message = "Power supply %1 fan %2 recovered.",
-            .severity = "OK",
-            .numberOfArgs = 2,
-            .paramTypes = {"string", "string"},
-            .resolution = "None.",
+            "Indicates that the power supply fan recovered from a failure.",
+            "Power supply %1 fan %2 recovered.",
+            "OK",
+            2,
+            {"string", "string"},
+            "None.",
         }},
     MessageEntry{"PowerSupplyFailed",
                  {
-                     .description = "Indicates that a power supply has failed.",
-                     .message = "Power supply %1 failed.",
-                     .severity = "Critical",
-                     .numberOfArgs = 1,
-                     .paramTypes = {"string"},
-                     .resolution = "None.",
+                     "Indicates that a power supply has failed.",
+                     "Power supply %1 failed.",
+                     "Critical",
+                     1,
+                     {"string"},
+                     "None.",
                  }},
     MessageEntry{"PowerSupplyFailurePredicted",
                  {
-                     .description =
-                         "Indicates that a power supply is predicted to fail.",
-                     .message = "Power supply %1 failure predicted.",
-                     .severity = "Warning",
-                     .numberOfArgs = 1,
-                     .paramTypes = {"string"},
-                     .resolution = "None.",
+                     "Indicates that a power supply is predicted to fail.",
+                     "Power supply %1 failure predicted.",
+                     "Warning",
+                     1,
+                     {"string"},
+                     "None.",
                  }},
-    MessageEntry{
-        "PowerSupplyInserted",
-        {
-            .description = "Indicates that a power supply has been inserted.",
-            .message = "Power supply %1 inserted.",
-            .severity = "OK",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PowerSupplyPowerGoodFailed",
-        {
-            .description = "Indicates that the power supply power good signal "
-                           "failed to assert within the specified time.",
-            .message = "Power supply power good failed to assert within %1 "
-                       "milliseconds.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes = {"number"},
-            .resolution = "None.",
-        }},
+    MessageEntry{"PowerSupplyInserted",
+                 {
+                     "Indicates that a power supply has been inserted.",
+                     "Power supply %1 inserted.",
+                     "OK",
+                     1,
+                     {"string"},
+                     "None.",
+                 }},
+    MessageEntry{"PowerSupplyPowerGoodFailed",
+                 {
+                     "Indicates that the power supply power good signal "
+                     "failed to assert within the specified time.",
+                     "Power supply power good failed to assert within %1 "
+                     "milliseconds.",
+                     "Critical",
+                     1,
+                     {"number"},
+                     "None.",
+                 }},
     MessageEntry{"PowerSupplyPowerLost",
                  {
-                     .description =
-                         "Indicates that a power supply has lost input power.",
-                     .message = "Power supply %1 power lost.",
-                     .severity = "Critical",
-                     .numberOfArgs = 1,
-                     .paramTypes = {"string"},
-                     .resolution = "None.",
+                     "Indicates that a power supply has lost input power.",
+                     "Power supply %1 power lost.",
+                     "Critical",
+                     1,
+                     {"string"},
+                     "None.",
                  }},
-    MessageEntry{
-        "PowerSupplyPowerRestored",
-        {
-            .description =
-                "Indicates that a power supply input power was restored.",
-            .message = "Power supply %1 power restored.",
-            .severity = "OK",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
-        }},
+    MessageEntry{"PowerSupplyPowerRestored",
+                 {
+                     "Indicates that a power supply input power was restored.",
+                     "Power supply %1 power restored.",
+                     "OK",
+                     1,
+                     {"string"},
+                     "None.",
+                 }},
     MessageEntry{"PowerSupplyPredictedFailureRecovered",
                  {
-                     .description = "Indicates that a power supply recovered "
-                                    "from a predicted failure.",
-                     .message = "Power supply %1 predicted failure recovered.",
-                     .severity = "OK",
-                     .numberOfArgs = 1,
-                     .paramTypes = {"string"},
-                     .resolution = "None.",
+                     "Indicates that a power supply recovered "
+                     "from a predicted failure.",
+                     "Power supply %1 predicted failure recovered.",
+                     "OK",
+                     1,
+                     {"string"},
+                     "None.",
                  }},
-    MessageEntry{
-        "PowerSupplyRecovered",
-        {
-            .description =
-                "Indicates that a power supply recovered from a failure.",
-            .message = "Power supply %1 recovered.",
-            .severity = "OK",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PowerSupplyRemoved",
-        {
-            .description = "Indicates that a power supply has been removed.",
-            .message = "Power supply %1 removed.",
-            .severity = "Warning",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "PowerUnitDegradedFromNonRedundant",
-        {
-            .description =
-                "Indicates that power unit is come back to redundant from"
-                "nonredundant but is still not in full redundancy mode.",
-            .message = "Power Unit degraded from nonredundant.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"PowerSupplyRecovered",
+                 {
+                     "Indicates that a power supply recovered from a failure.",
+                     "Power supply %1 recovered.",
+                     "OK",
+                     1,
+                     {"string"},
+                     "None.",
+                 }},
+    MessageEntry{"PowerSupplyRemoved",
+                 {
+                     "Indicates that a power supply has been removed.",
+                     "Power supply %1 removed.",
+                     "Warning",
+                     1,
+                     {"string"},
+                     "None.",
+                 }},
+    MessageEntry{"PowerUnitDegradedFromNonRedundant",
+                 {
+                     "Indicates that power unit is come back to redundant from"
+                     "nonredundant but is still not in full redundancy mode.",
+                     "Power Unit degraded from nonredundant.",
+                     "Warning",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{"PowerUnitDegradedFromRedundant",
                  {
-                     .description =
-                         "Indicates that power unit is degarded from full "
-                         "redundancy mode.",
-                     .message = "Power Unit degraded from redundant.",
-                     .severity = "Warning",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that power unit is degarded from full "
+                     "redundancy mode.",
+                     "Power Unit degraded from redundant.",
+                     "Warning",
+                     0,
+                     {},
+                     "None.",
                  }},
-    MessageEntry{
-        "PowerUnitRedundancyDegraded",
-        {
-            .description =
-                "Indicates that power unit redundancy has been degraded.",
-            .message = "Power Unit Redundancy degraded.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"PowerUnitRedundancyDegraded",
+                 {
+                     "Indicates that power unit redundancy has been degraded.",
+                     "Power Unit Redundancy degraded.",
+                     "Warning",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{
         "PowerUnitNonRedundantFromInsufficient",
         {
-            .description =
-                "Indicates that power unit is not in redundancy mode and get"
-                "sufficient power to support redundancy from insufficient"
-                "power.",
-            .message =
-                "Power Unit NonRedundant from insufficient to sufficient.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
+            "Indicates that power unit is not in redundancy mode and get"
+            "sufficient power to support redundancy from insufficient"
+            "power.",
+
+            "Power Unit NonRedundant from insufficient to sufficient.",
+            "Warning",
+            0,
+            {},
+            "None.",
         }},
-    MessageEntry{
-        "PowerUnitNonRedundantInsufficient",
-        {
-            .description = "Indicates that power unit do not have sufficient "
-                           "power to support redundancy.",
-            .message = "Power Unit NonRedundant and has insufficient resource.",
-            .severity = "Error",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"PowerUnitNonRedundantInsufficient",
+                 {
+                     "Indicates that power unit do not have sufficient "
+                     "power to support redundancy.",
+                     "Power Unit NonRedundant and has insufficient resource.",
+                     "Error",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{"PowerUnitRedundancyLost",
                  {
-                     .description =
-                         "Indicates that power unit redundancy has been lost.",
-                     .message = "Power Unit Redundancy lost.",
-                     .severity = "Warning",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that power unit redundancy has been lost.",
+                     "Power Unit Redundancy lost.",
+                     "Warning",
+                     0,
+                     {},
+                     "None.",
                  }},
     MessageEntry{
         "PowerUnitRedundancyRegained",
         {
-            .description =
-                "Indicates that power unit full redundancy has been regained.",
-            .message = "Power Unit Redundancy regained.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
+            "Indicates that power unit full redundancy has been regained.",
+            "Power Unit Redundancy regained.",
+            "OK",
+            0,
+            {},
+            "None.",
         }},
     MessageEntry{
         "PowerUnitNonRedundantSufficient",
         {
-            .description =
-                "Indicates that power unit is not in redundancy mode but still"
-                "has sufficient power to support redundancy.",
-            .message = "Power Unit Nonredundant but has sufficient resource.",
-            .severity = "Warning",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
+            "Indicates that power unit is not in redundancy mode but still"
+            "has sufficient power to support redundancy.",
+            "Power Unit Nonredundant but has sufficient resource.",
+            "Warning",
+            0,
+            {},
+            "None.",
         }},
-    MessageEntry{
-        "ResetButtonPressed",
-        {
-            .description = "Indicates that the reset button was pressed.",
-            .message = "Reset Button Pressed.",
-            .severity = "OK",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"ResetButtonPressed",
+                 {
+                     "Indicates that the reset button was pressed.",
+                     "Reset Button Pressed.",
+                     "OK",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{"SELEntryAdded",
                  {
-                     .description = "Indicates a SEL entry was added using the "
-                                    "Add SEL Entry or Platform Event command.",
-                     .message = "SEL Entry Added: %1",
-                     .severity = "OK",
-                     .numberOfArgs = 1,
-                     .paramTypes =
-                         {
-                             "string",
-                         },
-                     .resolution = "None.",
+                     "Indicates a SEL entry was added using the "
+                     "Add SEL Entry or Platform Event command.",
+                     "SEL Entry Added: %1",
+                     "OK",
+                     1,
+
+                     {
+                         "string",
+                     },
+                     "None.",
                  }},
-    MessageEntry{
-        "SensorThresholdCriticalHighGoingHigh",
-        {
-            .description = "Indicates that a threshold sensor has crossed a "
-                           "critical high threshold going high.",
-            .message = "%1 sensor crossed a critical high threshold going "
-                       "high. Reading=%2 Threshold=%3.",
-            .severity = "Critical",
-            .numberOfArgs = 3,
-            .paramTypes = {"string", "number", "number"},
-            .resolution = "Check the sensor or subsystem for errors.",
-        }},
-    MessageEntry{
-        "SensorThresholdCriticalHighGoingLow",
-        {
-            .description = "Indicates that a threshold sensor has crossed a "
-                           "critical high threshold going low.",
-            .message = "%1 sensor crossed a critical high threshold going low. "
-                       "Reading=%2 Threshold=%3.",
-            .severity = "OK",
-            .numberOfArgs = 3,
-            .paramTypes = {"string", "number", "number"},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "SensorThresholdCriticalLowGoingHigh",
-        {
-            .description = "Indicates that a threshold sensor has crossed a "
-                           "critical low threshold going high.",
-            .message = "%1 sensor crossed a critical low threshold going high. "
-                       "Reading=%2 Threshold=%3.",
-            .severity = "OK",
-            .numberOfArgs = 3,
-            .paramTypes = {"string", "number", "number"},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "SensorThresholdCriticalLowGoingLow",
-        {
-            .description = "Indicates that a threshold sensor has crossed a "
-                           "critical low threshold going low.",
-            .message = "%1 sensor crossed a critical low threshold going low. "
-                       "Reading=%2 Threshold=%3.",
-            .severity = "Critical",
-            .numberOfArgs = 3,
-            .paramTypes = {"string", "number", "number"},
-            .resolution = "Check the sensor or subsystem for errors.",
-        }},
-    MessageEntry{
-        "SensorThresholdWarningHighGoingHigh",
-        {
-            .description = "Indicates that a threshold sensor has crossed a "
-                           "warning high threshold going high.",
-            .message = "%1 sensor crossed a warning high threshold going high. "
-                       "Reading=%2 Threshold=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes = {"string", "number", "number"},
-            .resolution = "Check the sensor or subsystem for errors.",
-        }},
-    MessageEntry{
-        "SensorThresholdWarningHighGoingLow",
-        {
-            .description = "Indicates that a threshold sensor has crossed a "
-                           "warning high threshold going low.",
-            .message = "%1 sensor crossed a warning high threshold going low. "
-                       "Reading=%2 Threshold=%3.",
-            .severity = "OK",
-            .numberOfArgs = 3,
-            .paramTypes = {"string", "number", "number"},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "SensorThresholdWarningLowGoingHigh",
-        {
-            .description = "Indicates that a threshold sensor has crossed a "
-                           "warning low threshold going high.",
-            .message = "%1 sensor crossed a warning low threshold going high. "
-                       "Reading=%2 Threshold=%3.",
-            .severity = "OK",
-            .numberOfArgs = 3,
-            .paramTypes = {"string", "number", "number"},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "SensorThresholdWarningLowGoingLow",
-        {
-            .description = "Indicates that a threshold sensor has crossed a "
-                           "warning low threshold going low.",
-            .message = "%1 sensor crossed a warning low threshold going low. "
-                       "Reading=%2 Threshold=%3.",
-            .severity = "Warning",
-            .numberOfArgs = 3,
-            .paramTypes = {"string", "number", "number"},
-            .resolution = "Check the sensor or subsystem for errors.",
-        }},
+    MessageEntry{"SensorThresholdCriticalHighGoingHigh",
+                 {
+                     "Indicates that a threshold sensor has crossed a "
+                     "critical high threshold going high.",
+                     "%1 sensor crossed a critical high threshold going "
+                     "high. Reading=%2 Threshold=%3.",
+                     "Critical",
+                     3,
+                     {"string", "number", "number"},
+                     "Check the sensor or subsystem for errors.",
+                 }},
+    MessageEntry{"SensorThresholdCriticalHighGoingLow",
+                 {
+                     "Indicates that a threshold sensor has crossed a "
+                     "critical high threshold going low.",
+                     "%1 sensor crossed a critical high threshold going low. "
+                     "Reading=%2 Threshold=%3.",
+                     "OK",
+                     3,
+                     {"string", "number", "number"},
+                     "None.",
+                 }},
+    MessageEntry{"SensorThresholdCriticalLowGoingHigh",
+                 {
+                     "Indicates that a threshold sensor has crossed a "
+                     "critical low threshold going high.",
+                     "%1 sensor crossed a critical low threshold going high. "
+                     "Reading=%2 Threshold=%3.",
+                     "OK",
+                     3,
+                     {"string", "number", "number"},
+                     "None.",
+                 }},
+    MessageEntry{"SensorThresholdCriticalLowGoingLow",
+                 {
+                     "Indicates that a threshold sensor has crossed a "
+                     "critical low threshold going low.",
+                     "%1 sensor crossed a critical low threshold going low. "
+                     "Reading=%2 Threshold=%3.",
+                     "Critical",
+                     3,
+                     {"string", "number", "number"},
+                     "Check the sensor or subsystem for errors.",
+                 }},
+    MessageEntry{"SensorThresholdWarningHighGoingHigh",
+                 {
+                     "Indicates that a threshold sensor has crossed a "
+                     "warning high threshold going high.",
+                     "%1 sensor crossed a warning high threshold going high. "
+                     "Reading=%2 Threshold=%3.",
+                     "Warning",
+                     3,
+                     {"string", "number", "number"},
+                     "Check the sensor or subsystem for errors.",
+                 }},
+    MessageEntry{"SensorThresholdWarningHighGoingLow",
+                 {
+                     "Indicates that a threshold sensor has crossed a "
+                     "warning high threshold going low.",
+                     "%1 sensor crossed a warning high threshold going low. "
+                     "Reading=%2 Threshold=%3.",
+                     "OK",
+                     3,
+                     {"string", "number", "number"},
+                     "None.",
+                 }},
+    MessageEntry{"SensorThresholdWarningLowGoingHigh",
+                 {
+                     "Indicates that a threshold sensor has crossed a "
+                     "warning low threshold going high.",
+                     "%1 sensor crossed a warning low threshold going high. "
+                     "Reading=%2 Threshold=%3.",
+                     "OK",
+                     3,
+                     {"string", "number", "number"},
+                     "None.",
+                 }},
+    MessageEntry{"SensorThresholdWarningLowGoingLow",
+                 {
+                     "Indicates that a threshold sensor has crossed a "
+                     "warning low threshold going low.",
+                     "%1 sensor crossed a warning low threshold going low. "
+                     "Reading=%2 Threshold=%3.",
+                     "Warning",
+                     3,
+                     {"string", "number", "number"},
+                     "Check the sensor or subsystem for errors.",
+                 }},
     MessageEntry{"ServiceFailure",
                  {
-                     .description =
-                         "Indicates that a service has exited unsuccessfully.",
-                     .message = "Service %1 has exited unsuccessfully.",
-                     .severity = "Warning",
-                     .numberOfArgs = 1,
-                     .paramTypes = {"string"},
-                     .resolution = "None.",
+                     "Indicates that a service has exited unsuccessfully.",
+                     "Service %1 has exited unsuccessfully.",
+                     "Warning",
+                     1,
+                     {"string"},
+                     "None.",
                  }},
     MessageEntry{"SparingRedundancyDegraded",
                  {
-                     .description =
-                         "Indicates the sparing redundancy state is degraded.",
-                     .message = "Sparing redundancy state degraded. Socket=%1 "
-                                "Channel=%2 DIMM=%3 Domain=%4 Rank=%5.",
-                     .severity = "Warning",
-                     .numberOfArgs = 5,
-                     .paramTypes =
-                         {
-                             "number",
-                             "string",
-                             "number",
-                             "string",
-                             "number",
-                         },
-                     .resolution = "None.",
+                     "Indicates the sparing redundancy state is degraded.",
+                     "Sparing redundancy state degraded. Socket=%1 "
+                     "Channel=%2 DIMM=%3 Domain=%4 Rank=%5.",
+                     "Warning",
+                     5,
+
+                     {
+                         "number",
+                         "string",
+                         "number",
+                         "string",
+                         "number",
+                     },
+                     "None.",
                  }},
     MessageEntry{
         "SparingRedundancyFull",
         {
-            .description =
-                "Indicates the sparing redundancy state is fully redundant.",
-            .message = "Sparing redundancy state fully redundant. Socket=%1 "
-                       "Channel=%2 DIMM=%3 Domain=%4 Rank=%5.",
-            .severity = "OK",
-            .numberOfArgs = 5,
-            .paramTypes =
-                {
-                    "number",
-                    "string",
-                    "number",
-                    "string",
-                    "number",
-                },
-            .resolution = "None.",
+            "Indicates the sparing redundancy state is fully redundant.",
+            "Sparing redundancy state fully redundant. Socket=%1 "
+            "Channel=%2 DIMM=%3 Domain=%4 Rank=%5.",
+            "OK",
+            5,
+
+            {
+                "number",
+                "string",
+                "number",
+                "string",
+                "number",
+            },
+            "None.",
         }},
-    MessageEntry{
-        "SsbThermalTrip",
-        {
-            .description =
-                "Indicates that an SSB Thermal trip has been asserted.",
-            .message = "SSB Thermal trip.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"SsbThermalTrip",
+                 {
+                     "Indicates that an SSB Thermal trip has been asserted.",
+                     "SSB Thermal trip.",
+                     "Critical",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{"SystemPowerGoodFailed",
                  {
-                     .description =
-                         "Indicates that the system power good signal failed "
-                         "to assert within the specified time (VR failure).",
-                     .message = "System power good failed to assert within %1 "
-                                "milliseconds (VR failure).",
-                     .severity = "Critical",
-                     .numberOfArgs = 1,
-                     .paramTypes = {"number"},
-                     .resolution = "None.",
+                     "Indicates that the system power good signal failed "
+                     "to assert within the specified time (VR failure).",
+                     "System power good failed to assert within %1 "
+                     "milliseconds (VR failure).",
+                     "Critical",
+                     1,
+                     {"number"},
+                     "None.",
                  }},
     MessageEntry{"SystemPowerLost",
                  {
-                     .description = "Indicates that power was lost while the "
-                                    "system was powered on.",
-                     .message = "System Power Lost.",
-                     .severity = "Critical",
-                     .numberOfArgs = 0,
-                     .paramTypes = {},
-                     .resolution = "None.",
+                     "Indicates that power was lost while the "
+                     "system was powered on.",
+                     "System Power Lost.",
+                     "Critical",
+                     0,
+                     {},
+                     "None.",
                  }},
-    MessageEntry{
-        "SystemPowerOffFailed",
-        {
-            .description = "Indicates that the system failed to power off.",
-            .message = "System Power-Off Failed.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
-    MessageEntry{
-        "SystemPowerOnFailed",
-        {
-            .description = "Indicates that the system failed to power on.",
-            .message = "System Power-On Failed.",
-            .severity = "Critical",
-            .numberOfArgs = 0,
-            .paramTypes = {},
-            .resolution = "None.",
-        }},
+    MessageEntry{"SystemPowerOffFailed",
+                 {
+                     "Indicates that the system failed to power off.",
+                     "System Power-Off Failed.",
+                     "Critical",
+                     0,
+                     {},
+                     "None.",
+                 }},
+    MessageEntry{"SystemPowerOnFailed",
+                 {
+                     "Indicates that the system failed to power on.",
+                     "System Power-On Failed.",
+                     "Critical",
+                     0,
+                     {},
+                     "None.",
+                 }},
     MessageEntry{
         "VoltageRegulatorOverheated",
         {
-            .description =
-                "Indicates that the specified voltage regulator overheated.",
-            .message = "%1 Voltage Regulator Overheated.",
-            .severity = "Critical",
-            .numberOfArgs = 1,
-            .paramTypes = {"string"},
-            .resolution = "None.",
+            "Indicates that the specified voltage regulator overheated.",
+            "%1 Voltage Regulator Overheated.",
+            "Critical",
+            1,
+            {"string"},
+            "None.",
         }},
 };
 } // namespace redfish::message_registries::openbmc
diff --git a/redfish-core/include/utils/json_utils.hpp b/redfish-core/include/utils/json_utils.hpp
index c36ad3c..cf3227a 100644
--- a/redfish-core/include/utils/json_utils.hpp
+++ b/redfish-core/include/utils/json_utils.hpp
@@ -139,6 +139,10 @@
     else if constexpr (std::is_signed_v<Type>)
     {
         int64_t* jsonPtr = jsonValue.get_ptr<int64_t*>();
+        if (jsonPtr == nullptr)
+        {
+            return false;
+        }
         if (!checkRange<Type>(*jsonPtr, key, jsonValue, res))
         {
             return false;
@@ -150,6 +154,10 @@
                            !std::is_same_v<bool, Type>))
     {
         uint64_t* jsonPtr = jsonValue.get_ptr<uint64_t*>();
+        if (jsonPtr == nullptr)
+        {
+            return false;
+        }
         if (!checkRange<Type>(*jsonPtr, key, jsonValue, res))
         {
             return false;
diff --git a/redfish-core/include/utils/systemd_utils.hpp b/redfish-core/include/utils/systemd_utils.hpp
index 1c34fca..da1b4e2 100644
--- a/redfish-core/include/utils/systemd_utils.hpp
+++ b/redfish-core/include/utils/systemd_utils.hpp
@@ -33,9 +33,9 @@
 {
     std::string ret;
     // This ID needs to match the one in ipmid
-    sd_id128_t appId = SD_ID128_MAKE(e0, e1, 73, 76, 64, 61, 47, da, a5, 0c, d0,
-                                     cc, 64, 12, 45, 78);
-    sd_id128_t machineId = SD_ID128_NULL;
+    sd_id128_t appId{{0Xe0, 0Xe1, 0X73, 0X76, 0X64, 0X61, 0X47, 0Xda, 0Xa5,
+                      0X0c, 0Xd0, 0Xcc, 0X64, 0X12, 0X45, 0X78}};
+    sd_id128_t machineId{};
 
     if (sd_id128_get_machine_app_specific(appId, &machineId) == 0)
     {
diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index 9dac7e4..a183f68 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -299,7 +299,7 @@
                                  << ",LocalRole=" << *localRole;
 
                 crow::connections::systemBus->async_method_call(
-                    [asyncResp, serverType, index, localRole,
+                    [asyncResp, serverType, localRole,
                      remoteGroup](const boost::system::error_code ec) {
                         if (ec)
                         {
@@ -422,43 +422,43 @@
 
                                 for (const auto& property : interface.second)
                                 {
-                                    const std::string* value =
+                                    const std::string* strValue =
                                         std::get_if<std::string>(
                                             &property.second);
-                                    if (value == nullptr)
+                                    if (strValue == nullptr)
                                     {
                                         continue;
                                     }
                                     if (property.first == "LDAPServerURI")
                                     {
-                                        confData.uri = *value;
+                                        confData.uri = *strValue;
                                     }
                                     else if (property.first == "LDAPBindDN")
                                     {
-                                        confData.bindDN = *value;
+                                        confData.bindDN = *strValue;
                                     }
                                     else if (property.first == "LDAPBaseDN")
                                     {
-                                        confData.baseDN = *value;
+                                        confData.baseDN = *strValue;
                                     }
                                     else if (property.first ==
                                              "LDAPSearchScope")
                                     {
-                                        confData.searchScope = *value;
+                                        confData.searchScope = *strValue;
                                     }
                                     else if (property.first ==
                                              "GroupNameAttribute")
                                     {
-                                        confData.groupAttribute = *value;
+                                        confData.groupAttribute = *strValue;
                                     }
                                     else if (property.first ==
                                              "UserNameAttribute")
                                     {
-                                        confData.userNameAttribute = *value;
+                                        confData.userNameAttribute = *strValue;
                                     }
                                     else if (property.first == "LDAPType")
                                     {
-                                        confData.serverType = *value;
+                                        confData.serverType = *strValue;
                                     }
                                 }
                             }
@@ -469,22 +469,22 @@
                                 LDAPRoleMapData roleMapData{};
                                 for (const auto& property : interface.second)
                                 {
-                                    const std::string* value =
+                                    const std::string* strValue =
                                         std::get_if<std::string>(
                                             &property.second);
 
-                                    if (value == nullptr)
+                                    if (strValue == nullptr)
                                     {
                                         continue;
                                     }
 
                                     if (property.first == "GroupName")
                                     {
-                                        roleMapData.groupName = *value;
+                                        roleMapData.groupName = *strValue;
                                     }
                                     else if (property.first == "Privilege")
                                     {
-                                        roleMapData.privilege = *value;
+                                        roleMapData.privilege = *strValue;
                                     }
                                 }
 
@@ -1518,7 +1518,7 @@
             crow::connections::systemBus->async_method_call(
                 [this, asyncResp, username, password(std::move(password)),
                  roleId(std::move(roleId)), enabled(std::move(enabled)),
-                 newUser{std::string(*newUserName)}, locked(std::move(locked))](
+                 newUser{*newUserName}, locked(std::move(locked))](
                     const boost::system::error_code ec) {
                     if (ec)
                     {
diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index 111bcec..89d5634 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -458,13 +458,7 @@
             *crow::connections::systemBus, match,
             [asyncResp, service, objectPath,
              certURI](sdbusplus::message::message &m) {
-                boost::system::error_code ec;
-                timeout.cancel(ec);
-                if (ec)
-                {
-                    BMCWEB_LOG_ERROR << "error canceling timer " << ec;
-                    csrMatcher = nullptr;
-                }
+                timeout.cancel();
                 if (m.is_method_error())
                 {
                     BMCWEB_LOG_ERROR << "Dbus method error!!!";
@@ -489,7 +483,7 @@
                 }
             });
         crow::connections::systemBus->async_method_call(
-            [asyncResp](const boost::system::error_code ec,
+            [asyncResp](const boost::system::error_code &ec,
                         const std::string &path) {
                 if (ec)
                 {
@@ -531,14 +525,16 @@
         {
             break;
         }
-        const std::string_view key(tokenBegin, i - tokenBegin);
+        const std::string_view key(tokenBegin,
+                                   static_cast<size_t>(i - tokenBegin));
         i++;
         tokenBegin = i;
         while (i != value.end() && *i != ',')
         {
             i++;
         }
-        const std::string_view val(tokenBegin, i - tokenBegin);
+        const std::string_view val(tokenBegin,
+                                   static_cast<size_t>(i - tokenBegin));
         if (key == "L")
         {
             out["City"] = val;
diff --git a/redfish-core/lib/chassis.hpp b/redfish-core/lib/chassis.hpp
index 8c13414..b08ab25 100644
--- a/redfish-core/lib/chassis.hpp
+++ b/redfish-core/lib/chassis.hpp
@@ -148,7 +148,7 @@
         "xyz.openbmc_project.ObjectMapper",
         "/xyz/openbmc_project/object_mapper",
         "xyz.openbmc_project.ObjectMapper", "GetSubTree",
-        "/xyz/openbmc_project/Intrusion", int32_t(1),
+        "/xyz/openbmc_project/Intrusion", 1,
         std::array<const char *, 1>{"xyz.openbmc_project.Chassis.Intrusion"});
 }
 
@@ -217,7 +217,7 @@
             "xyz.openbmc_project.ObjectMapper",
             "/xyz/openbmc_project/object_mapper",
             "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths",
-            "/xyz/openbmc_project/inventory", int32_t(0), interfaces);
+            "/xyz/openbmc_project/inventory", 0, interfaces);
     }
 };
 
@@ -397,7 +397,7 @@
             "xyz.openbmc_project.ObjectMapper",
             "/xyz/openbmc_project/object_mapper",
             "xyz.openbmc_project.ObjectMapper", "GetSubTree",
-            "/xyz/openbmc_project/inventory", int32_t(0), interfaces);
+            "/xyz/openbmc_project/inventory", 0, interfaces);
 
         getPhysicalSecurityData(asyncResp);
     }
diff --git a/redfish-core/lib/cpudimm.hpp b/redfish-core/lib/cpudimm.hpp
index 2e084d4..d8d4191 100644
--- a/redfish-core/lib/cpudimm.hpp
+++ b/redfish-core/lib/cpudimm.hpp
@@ -63,7 +63,7 @@
         "xyz.openbmc_project.ObjectMapper",
         "/xyz/openbmc_project/object_mapper",
         "xyz.openbmc_project.ObjectMapper", "GetSubTree",
-        "/xyz/openbmc_project/inventory", int32_t(0), collectionName);
+        "/xyz/openbmc_project/inventory", 0, collectionName);
 }
 
 void getCpuDataByInterface(std::shared_ptr<AsyncResp> aResp,
@@ -360,8 +360,8 @@
         "xyz.openbmc_project.ObjectMapper",
         "/xyz/openbmc_project/object_mapper",
         "xyz.openbmc_project.ObjectMapper", "GetSubTree",
-        "/xyz/openbmc_project/inventory", int32_t(0), inventoryItems);
-};
+        "/xyz/openbmc_project/inventory", 0, inventoryItems);
+}
 
 void getDimmDataByService(std::shared_ptr<AsyncResp> aResp,
                           const std::string &dimmId, const std::string &service,
@@ -481,9 +481,9 @@
         "xyz.openbmc_project.ObjectMapper",
         "/xyz/openbmc_project/object_mapper",
         "xyz.openbmc_project.ObjectMapper", "GetSubTree",
-        "/xyz/openbmc_project/inventory", int32_t(0),
+        "/xyz/openbmc_project/inventory", 0,
         std::array<const char *, 1>{"xyz.openbmc_project.Inventory.Item.Dimm"});
-};
+}
 
 class ProcessorCollection : public Node
 {
diff --git a/redfish-core/lib/ethernet.hpp b/redfish-core/lib/ethernet.hpp
index ff37330..b06acf0 100644
--- a/redfish-core/lib/ethernet.hpp
+++ b/redfish-core/lib/ethernet.hpp
@@ -320,9 +320,10 @@
                     std::pair<
                         boost::container::flat_set<IPv6AddressData>::iterator,
                         bool>
-                        it = ipv6_config.insert(
-                            {objpath.first.str.substr(ipv6PathStart.size())});
+                        it = ipv6_config.insert(IPv6AddressData{});
                     IPv6AddressData &ipv6_address = *it.first;
+                    ipv6_address.id =
+                        objpath.first.str.substr(ipv6PathStart.size());
                     for (auto &property : interface.second)
                     {
                         if (property.first == "Address")
@@ -392,9 +393,10 @@
                     std::pair<
                         boost::container::flat_set<IPv4AddressData>::iterator,
                         bool>
-                        it = ipv4_config.insert(
-                            {objpath.first.str.substr(ipv4PathStart.size())});
+                        it = ipv4_config.insert(IPv4AddressData{});
                     IPv4AddressData &ipv4_address = *it.first;
+                    ipv4_address.id =
+                        objpath.first.str.substr(ipv4PathStart.size());
                     for (auto &property : interface.second)
                     {
                         if (property.first == "Address")
@@ -858,7 +860,7 @@
         },
         "xyz.openbmc_project.Network", "/xyz/openbmc_project/network",
         "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
-};
+}
 
 /**
  * Function that retrieves all Ethernet Interfaces available through Network
@@ -911,7 +913,7 @@
         },
         "xyz.openbmc_project.Network", "/xyz/openbmc_project/network",
         "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
-};
+}
 
 /**
  * EthernetCollection derived class for delivering Ethernet Collection Schema
@@ -1169,7 +1171,7 @@
             return;
         }
 
-        int entryIdx = 1;
+        unsigned entryIdx = 1;
         // Find the first static IP address currently active on the NIC and
         // match it to the first JSON element in the IPv4StaticAddresses array.
         // Match each subsequent JSON element to the next static IP programmed
@@ -1201,8 +1203,8 @@
                 // not explicitly provided are assumed to be unmodified from the
                 // current state of the interface. Merge existing state into the
                 // current request.
-                const std::string *addr;
-                const std::string *gw;
+                const std::string *addr = nullptr;
+                const std::string *gw = nullptr;
                 uint8_t prefixLength = 0;
                 bool errorInEntry = false;
                 if (address)
@@ -1288,6 +1290,13 @@
 
                 if (NICIPentry != ipv4Data.cend())
                 {
+                    if (gw != nullptr || addr != nullptr)
+                    {
+                        // Shouldn't be possible based on errorInEntry, but
+                        // it flags -wmaybe-uninitialized in the compiler,
+                        // so defend against that
+                        return;
+                    }
                     deleteAndCreateIPv4(ifaceId, NICIPentry->id, prefixLength,
                                         *gw, *addr, asyncResp);
                     NICIPentry =
@@ -1365,7 +1374,7 @@
                                              "IPv6StaticAddresses");
             return;
         }
-        int entryIdx = 1;
+        size_t entryIdx = 1;
         boost::container::flat_set<IPv6AddressData>::const_iterator NICIPentry =
             GetNextStaticIPEntry(ipv6Data.cbegin(), ipv6Data.cend());
         for (nlohmann::json &thisJson : input)
@@ -1874,7 +1883,7 @@
         // JSON preparation
         getEthernetIfaceData(
             params[1],
-            [this, asyncResp, parentIfaceId{std::string(params[0])},
+            [asyncResp, parentIfaceId{std::string(params[0])},
              ifaceId{std::string(params[1])}, &vlanEnable, &vlanId](
                 const bool &success, const EthernetInterfaceData &ethData,
                 const boost::container::flat_set<IPv4AddressData> &ipv4Data,
@@ -1944,7 +1953,7 @@
         // JSON preparation
         getEthernetIfaceData(
             params[1],
-            [this, asyncResp, parentIfaceId{std::string(params[0])},
+            [asyncResp, parentIfaceId{std::string(params[0])},
              ifaceId{std::string(params[1])}](
                 const bool &success, const EthernetInterfaceData &ethData,
                 const boost::container::flat_set<IPv4AddressData> &ipv4Data,
@@ -2090,7 +2099,7 @@
         {
             messages::propertyMissing(asyncResp->res, "VLANEnable");
         }
-        if (static_cast<bool>(vlanId) ^ static_cast<bool>(vlanEnable))
+        if (static_cast<bool>(vlanId) ^ vlanEnable)
         {
             return;
         }
diff --git a/redfish-core/lib/health.hpp b/redfish-core/lib/health.hpp
index da4f2d9..930eaee 100644
--- a/redfish-core/lib/health.hpp
+++ b/redfish-core/lib/health.hpp
@@ -153,8 +153,7 @@
             },
             "xyz.openbmc_project.ObjectMapper",
             "/xyz/openbmc_project/object_mapper",
-            "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths", "/",
-            int32_t(0),
+            "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths", "/", 0,
             std::array<const char *, 1>{
                 "xyz.openbmc_project.Inventory.Item.Global"});
     }
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index 9fd35a9..7a63162 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -145,8 +145,8 @@
     size_t length = 0;
     int ret = 0;
     // Get the metadata from the requested field of the journal entry
-    ret = sd_journal_get_data(journal, field.data(), (const void **)&data,
-                              &length);
+    ret = sd_journal_get_data(journal, field.data(),
+                              reinterpret_cast<const void **>(&data), &length);
     if (ret < 0)
     {
         return ret;
@@ -159,7 +159,7 @@
 
 static int getJournalMetadata(sd_journal *journal,
                               const std::string_view &field, const int &base,
-                              int &contents)
+                              long int &contents)
 {
     int ret = 0;
     std::string_view metadata;
@@ -205,13 +205,13 @@
 }
 
 static bool getSkipParam(crow::Response &res, const crow::Request &req,
-                         long &skip)
+                         uint64_t &skip)
 {
     char *skipParam = req.urlParams.get("$skip");
     if (skipParam != nullptr)
     {
         char *ptr = nullptr;
-        skip = std::strtol(skipParam, &ptr, 10);
+        skip = std::strtoul(skipParam, &ptr, 10);
         if (*skipParam == '\0' || *ptr != '\0')
         {
 
@@ -219,33 +219,26 @@
                                                    "$skip");
             return false;
         }
-        if (skip < 0)
-        {
-
-            messages::queryParameterOutOfRange(res, std::to_string(skip),
-                                               "$skip", "greater than 0");
-            return false;
-        }
     }
     return true;
 }
 
-static constexpr const long maxEntriesPerPage = 1000;
+static constexpr const uint64_t maxEntriesPerPage = 1000;
 static bool getTopParam(crow::Response &res, const crow::Request &req,
-                        long &top)
+                        uint64_t &top)
 {
     char *topParam = req.urlParams.get("$top");
     if (topParam != nullptr)
     {
         char *ptr = nullptr;
-        top = std::strtol(topParam, &ptr, 10);
+        top = std::strtoul(topParam, &ptr, 10);
         if (*topParam == '\0' || *ptr != '\0')
         {
             messages::queryParameterValueTypeError(res, std::string(topParam),
                                                    "$top");
             return false;
         }
-        if (top < 1 || top > maxEntriesPerPage)
+        if (top < 1U || top > maxEntriesPerPage)
         {
 
             messages::queryParameterOutOfRange(
@@ -301,7 +294,7 @@
 static bool getUniqueEntryID(const std::string &logEntry, std::string &entryID,
                              const bool firstEntry = true)
 {
-    static uint64_t prevTs = 0;
+    static time_t prevTs = 0;
     static int index = 0;
     if (firstEntry)
     {
@@ -309,7 +302,7 @@
     }
 
     // Get the entry timestamp
-    uint64_t curTs = 0;
+    std::time_t curTs = 0;
     std::tm timeStruct = {};
     std::istringstream entryStream(logEntry);
     if (entryStream >> std::get_time(&timeStruct, "%Y-%m-%dT%H:%M:%S"))
@@ -338,7 +331,7 @@
 }
 
 static bool getTimestampFromID(crow::Response &res, const std::string &entryID,
-                               uint64_t &timestamp, uint16_t &index)
+                               uint64_t &timestamp, uint64_t &index)
 {
     if (entryID.empty())
     {
@@ -359,12 +352,12 @@
         {
             index = std::stoul(std::string(indexStr), &pos);
         }
-        catch (std::invalid_argument)
+        catch (std::invalid_argument &)
         {
             messages::resourceMissingAtURI(res, entryID);
             return false;
         }
-        catch (std::out_of_range)
+        catch (std::out_of_range &)
         {
             messages::resourceMissingAtURI(res, entryID);
             return false;
@@ -381,12 +374,12 @@
     {
         timestamp = std::stoull(std::string(tsStr), &pos);
     }
-    catch (std::invalid_argument)
+    catch (std::invalid_argument &)
     {
         messages::resourceMissingAtURI(res, entryID);
         return false;
     }
-    catch (std::out_of_range)
+    catch (std::out_of_range &)
     {
         messages::resourceMissingAtURI(res, entryID);
         return false;
@@ -685,8 +678,8 @@
                const std::vector<std::string> &params) override
     {
         std::shared_ptr<AsyncResp> asyncResp = std::make_shared<AsyncResp>(res);
-        long skip = 0;
-        long top = maxEntriesPerPage; // Show max entries by default
+        uint64_t skip = 0;
+        uint64_t top = maxEntriesPerPage; // Show max entries by default
         if (!getSkipParam(asyncResp->res, req, skip))
         {
             return;
@@ -912,7 +905,6 @@
                         uint32_t *id;
                         std::time_t timestamp;
                         std::string *severity, *message;
-                        bool *resolved;
                         for (auto &propertyMap : interfaceMap.second)
                         {
                             if (propertyMap.first == "Id")
@@ -933,15 +925,16 @@
                                 {
                                     messages::propertyMissing(asyncResp->res,
                                                               "Timestamp");
+                                    continue;
                                 }
                                 // Retrieve Created property with format:
                                 // yyyy-mm-ddThh:mm:ss
                                 std::chrono::milliseconds chronoTimeStamp(
                                     *millisTimeStamp);
-                                timestamp =
-                                    std::chrono::duration_cast<
-                                        std::chrono::seconds>(chronoTimeStamp)
-                                        .count();
+                                timestamp = std::chrono::duration_cast<
+                                                std::chrono::duration<int>>(
+                                                chronoTimeStamp)
+                                                .count();
                             }
                             else if (propertyMap.first == "Severity")
                             {
@@ -1038,7 +1031,6 @@
                 uint32_t *id;
                 std::time_t timestamp;
                 std::string *severity, *message;
-                bool *resolved;
                 for (auto &propertyMap : resp)
                 {
                     if (propertyMap.first == "Id")
@@ -1057,14 +1049,15 @@
                         {
                             messages::propertyMissing(asyncResp->res,
                                                       "Timestamp");
+                            continue;
                         }
                         // Retrieve Created property with format:
                         // yyyy-mm-ddThh:mm:ss
                         std::chrono::milliseconds chronoTimeStamp(
                             *millisTimeStamp);
                         timestamp =
-                            std::chrono::duration_cast<std::chrono::seconds>(
-                                chronoTimeStamp)
+                            std::chrono::duration_cast<
+                                std::chrono::duration<int>>(chronoTimeStamp)
                                 .count();
                     }
                     else if (propertyMap.first == "Severity")
@@ -1087,6 +1080,10 @@
                         }
                     }
                 }
+                if (id == nullptr || message == nullptr || severity == nullptr)
+                {
+                    return;
+                }
                 asyncResp->res.jsonValue = {
                     {"@odata.type", "#LogEntry.v1_4_0.LogEntry"},
                     {"@odata.context", "/redfish/v1/"
@@ -1249,7 +1246,7 @@
     }
 
     // Get the severity from the PRIORITY field
-    int severity = 8; // Default to an invalid priority
+    long int severity = 8; // Default to an invalid priority
     ret = getJournalMetadata(journal, "PRIORITY", 10, severity);
     if (ret < 0)
     {
@@ -1302,8 +1299,8 @@
     {
         std::shared_ptr<AsyncResp> asyncResp = std::make_shared<AsyncResp>(res);
         static constexpr const long maxEntriesPerPage = 1000;
-        long skip = 0;
-        long top = maxEntriesPerPage; // Show max entries by default
+        uint64_t skip = 0;
+        uint64_t top = maxEntriesPerPage; // Show max entries by default
         if (!getSkipParam(asyncResp->res, req, skip))
         {
             return;
@@ -1415,7 +1412,7 @@
         const std::string &entryID = params[0];
         // Convert the unique ID back to a timestamp to find the entry
         uint64_t ts = 0;
-        uint16_t index = 0;
+        uint64_t index = 0;
         if (!getTimestampFromID(asyncResp->res, entryID, ts, index))
         {
             return;
@@ -1437,7 +1434,7 @@
         std::string idStr;
         bool firstEntry = true;
         ret = sd_journal_seek_realtime_usec(journal.get(), ts);
-        for (int i = 0; i <= index; i++)
+        for (uint64_t i = 0; i <= index; i++)
         {
             sd_journal_next(journal.get());
             if (!getUniqueEntryID(journal.get(), idStr, firstEntry))
@@ -1652,7 +1649,7 @@
             messages::internalError(asyncResp->res);
             return;
         }
-        const uint8_t logId = std::atoi(params[0].c_str());
+        const int logId = std::atoi(params[0].c_str());
         auto getStoredLogCallback = [asyncResp, logId](
                                         const boost::system::error_code ec,
                                         const std::variant<std::string> &resp) {
@@ -1728,9 +1725,9 @@
             return;
         }
         // Make this static so it survives outside this method
-        static boost::asio::deadline_timer timeout(*req.ioService);
+        static boost::asio::steady_timer timeout(*req.ioService);
 
-        timeout.expires_from_now(boost::posix_time::seconds(30));
+        timeout.expires_after(std::chrono::seconds(30));
         timeout.async_wait([asyncResp](const boost::system::error_code &ec) {
             onDemandLogMatcher = nullptr;
             if (ec)
@@ -1751,12 +1748,8 @@
         auto onDemandLogMatcherCallback = [asyncResp](
                                               sdbusplus::message::message &m) {
             BMCWEB_LOG_DEBUG << "OnDemand log available match fired";
-            boost::system::error_code ec;
-            timeout.cancel(ec);
-            if (ec)
-            {
-                BMCWEB_LOG_ERROR << "error canceling timer " << ec;
-            }
+            timeout.cancel();
+
             sdbusplus::message::object_path objPath;
             boost::container::flat_map<
                 std::string, boost::container::flat_map<
@@ -1825,13 +1818,8 @@
                     {
                         messages::internalError(asyncResp->res);
                     }
-                    boost::system::error_code timeoutec;
-                    timeout.cancel(timeoutec);
-                    if (timeoutec)
-                    {
-                        BMCWEB_LOG_ERROR << "error canceling timer "
-                                         << timeoutec;
-                    }
+
+                    timeout.cancel();
                     onDemandLogMatcher = nullptr;
                     return;
                 }
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index 459edad..9d2144e 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -278,7 +278,7 @@
                         controller["@odata.id"] =
                             "/redfish/v1/Managers/bmc#/Oem/"
                             "OpenBmc/Fan/StepwiseControllers/" +
-                            std::string(name);
+                            name;
                         controller["@odata.type"] =
                             "#OemManager.StepwiseController";
 
@@ -307,7 +307,7 @@
                             element["@odata.id"] =
                                 "/redfish/v1/Managers/bmc#/Oem/"
                                 "OpenBmc/Fan/FanControllers/" +
-                                std::string(name);
+                                name;
                             element["@odata.type"] =
                                 "#OemManager.FanController";
 
@@ -320,7 +320,7 @@
                             element["@odata.id"] =
                                 "/redfish/v1/Managers/bmc#/Oem/"
                                 "OpenBmc/Fan/PidControllers/" +
-                                std::string(name);
+                                name;
                             element["@odata.type"] =
                                 "#OemManager.PidController";
                             element["@odata.context"] =
@@ -1077,8 +1077,8 @@
                             messages::internalError(self->asyncResp->res);
                             return;
                         }
-                        const std::string* current;
-                        const std::vector<std::string>* supported;
+                        const std::string* current = nullptr;
+                        const std::vector<std::string>* supported = nullptr;
                         for (auto& [key, value] : resp)
                         {
                             if (key == "Current")
@@ -1193,9 +1193,9 @@
 struct SetPIDValues : std::enable_shared_from_this<SetPIDValues>
 {
 
-    SetPIDValues(const std::shared_ptr<AsyncResp>& asyncResp,
+    SetPIDValues(const std::shared_ptr<AsyncResp>& asyncRespIn,
                  nlohmann::json& data) :
-        asyncResp(asyncResp)
+        asyncResp(asyncRespIn)
     {
 
         std::optional<nlohmann::json> pidControllers;
@@ -1231,14 +1231,14 @@
         // interface gets more traction
         crow::connections::systemBus->async_method_call(
             [self](const boost::system::error_code ec,
-                   dbus::utility::ManagedObjectType& managedObj) {
+                   dbus::utility::ManagedObjectType& mObj) {
                 if (ec)
                 {
                     BMCWEB_LOG_ERROR << "Error communicating to Entity Manager";
                     messages::internalError(self->asyncResp->res);
                     return;
                 }
-                self->managedObj = std::move(managedObj);
+                self->managedObj = std::move(mObj);
             },
             "xyz.openbmc_project.EntityManager", "/", objectManagerIface,
             "GetManagedObjects");
@@ -1266,7 +1266,7 @@
                         const boost::system::error_code ec,
                         const boost::container::flat_map<
                             std::string, std::variant<std::vector<std::string>,
-                                                      std::string>>& resp) {
+                                                      std::string>>& r) {
                         if (ec)
                         {
                             BMCWEB_LOG_ERROR << "SetPIDValues: Can't get "
@@ -1275,9 +1275,9 @@
                             messages::internalError(self->asyncResp->res);
                             return;
                         }
-                        const std::string* current;
-                        const std::vector<std::string>* supported;
-                        for (auto& [key, value] : resp)
+                        const std::string* current = nullptr;
+                        const std::vector<std::string>* supported = nullptr;
+                        for (auto& [key, value] : r)
                         {
                             if (key == "Current")
                             {
diff --git a/redfish-core/lib/message_registries.hpp b/redfish-core/lib/message_registries.hpp
index ef443af..96ce0c2 100644
--- a/redfish-core/lib/message_registries.hpp
+++ b/redfish-core/lib/message_registries.hpp
@@ -257,7 +257,7 @@
             if (message.second.numberOfArgs > 0)
             {
                 nlohmann::json &messageParamArray = obj["ParamTypes"];
-                for (int i = 0; i < message.second.numberOfArgs; i++)
+                for (size_t i = 0; i < message.second.numberOfArgs; i++)
                 {
                     messageParamArray.push_back(message.second.paramTypes[i]);
                 }
diff --git a/redfish-core/lib/network_protocol.hpp b/redfish-core/lib/network_protocol.hpp
index 71e58cc..75d13d4 100644
--- a/redfish-core/lib/network_protocol.hpp
+++ b/redfish-core/lib/network_protocol.hpp
@@ -139,7 +139,7 @@
         },
         "xyz.openbmc_project.Network", "/xyz/openbmc_project/network",
         "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
-};
+}
 
 class NetworkProtocol : public Node
 {
@@ -230,32 +230,32 @@
 
         // TODO Get eth0 interface data, and call the below callback for JSON
         // preparation
-        getEthernetIfaceData([this, hostName, asyncResp](
-                                 const bool& success,
-                                 const std::vector<std::string>& ntpServers,
-                                 const std::vector<std::string>& domainNames) {
-            if (!success)
-            {
-                messages::resourceNotFound(asyncResp->res, "EthernetInterface",
-                                           "eth0");
-                return;
-            }
-            asyncResp->res.jsonValue["NTP"]["NTPServers"] = ntpServers;
-            if (hostName.empty() == false)
-            {
-                std::string FQDN = std::move(hostName);
-                if (domainNames.empty() == false)
+        getEthernetIfaceData(
+            [hostName, asyncResp](const bool& success,
+                                  const std::vector<std::string>& ntpServers,
+                                  const std::vector<std::string>& domainNames) {
+                if (!success)
                 {
-                    FQDN += "." + domainNames[0];
+                    messages::resourceNotFound(asyncResp->res,
+                                               "EthernetInterface", "eth0");
+                    return;
                 }
-                asyncResp->res.jsonValue["FQDN"] = std::move(FQDN);
-            }
-        });
+                asyncResp->res.jsonValue["NTP"]["NTPServers"] = ntpServers;
+                if (hostName.empty() == false)
+                {
+                    std::string FQDN = std::move(hostName);
+                    if (domainNames.empty() == false)
+                    {
+                        FQDN += "." + domainNames[0];
+                    }
+                    asyncResp->res.jsonValue["FQDN"] = std::move(FQDN);
+                }
+            });
 
         crow::connections::systemBus->async_method_call(
-            [asyncResp](const boost::system::error_code ec,
-                        const std::vector<UnitStruct>& resp) {
-                if (ec)
+            [asyncResp](const boost::system::error_code e,
+                        const std::vector<UnitStruct>& r) {
+                if (e)
                 {
                     asyncResp->res.jsonValue = nlohmann::json::object();
                     messages::internalError(asyncResp->res);
@@ -265,7 +265,7 @@
                     {"@odata.id", "/redfish/v1/Managers/bmc/NetworkProtocol/"
                                   "HTTPS/Certificates/"}};
 
-                for (auto& unit : resp)
+                for (auto& unit : r)
                 {
                     for (auto& kv : protocolToDBus)
                     {
diff --git a/redfish-core/lib/pcie.hpp b/redfish-core/lib/pcie.hpp
index ad61ff4..5b4f5c5 100644
--- a/redfish-core/lib/pcie.hpp
+++ b/redfish-core/lib/pcie.hpp
@@ -108,7 +108,7 @@
                 {
                     BMCWEB_LOG_DEBUG
                         << "failed to get PCIe Device properties ec: "
-                        << static_cast<int>(ec.value()) << ": " << ec.message();
+                        << ec.value() << ": " << ec.message();
                     if (ec.value() ==
                         boost::system::linux_error::bad_request_descriptor)
                     {
@@ -221,7 +221,7 @@
                 {
                     BMCWEB_LOG_DEBUG
                         << "failed to get PCIe Device properties ec: "
-                        << static_cast<int>(ec.value()) << ": " << ec.message();
+                        << ec.value() << ": " << ec.message();
                     if (ec.value() ==
                         boost::system::linux_error::bad_request_descriptor)
                     {
diff --git a/redfish-core/lib/power.hpp b/redfish-core/lib/power.hpp
index 8c3927b..eaea5ab 100644
--- a/redfish-core/lib/power.hpp
+++ b/redfish-core/lib/power.hpp
@@ -62,13 +62,13 @@
         // chassis that implements the Chassis inventory item. This prevents
         // things like power supplies providing the chassis power limit
         auto chassisHandler = [sensorAsyncResp](
-                                  const boost::system::error_code ec,
+                                  const boost::system::error_code e,
                                   const std::vector<std::string>&
                                       chassisPaths) {
-            if (ec)
+            if (e)
             {
                 BMCWEB_LOG_ERROR
-                    << "Power Limit GetSubTreePaths handler Dbus error " << ec;
+                    << "Power Limit GetSubTreePaths handler Dbus error " << e;
                 return;
             }
 
@@ -178,7 +178,7 @@
                             }
                             else if (i)
                             {
-                                powerCap = *i;
+                                powerCap = static_cast<double>(*i);
                             }
                             else if (u)
                             {
@@ -220,7 +220,7 @@
             std::move(chassisHandler), "xyz.openbmc_project.ObjectMapper",
             "/xyz/openbmc_project/object_mapper",
             "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths",
-            "/xyz/openbmc_project/inventory", int32_t(0),
+            "/xyz/openbmc_project/inventory", 0,
             std::array<const char*, 1>{
                 "xyz.openbmc_project.Inventory.Item.Chassis"});
     }
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 76c304f..738edc2 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -49,11 +49,11 @@
 class SensorsAsyncResp
 {
   public:
-    SensorsAsyncResp(crow::Response& response, const std::string& chassisId,
-                     const std::vector<const char*> types,
+    SensorsAsyncResp(crow::Response& response, const std::string& chassisIdIn,
+                     const std::vector<const char*> typesIn,
                      const std::string& subNode) :
         res(response),
-        chassisId(chassisId), types(types), chassisSubNode(subNode)
+        chassisId(chassisIdIn), types(typesIn), chassisSubNode(subNode)
     {
     }
 
@@ -340,12 +340,12 @@
         std::string sensorPath = *chassisPath + "/all_sensors";
         crow::connections::systemBus->async_method_call(
             [sensorsAsyncResp, callback{std::move(callback)}](
-                const boost::system::error_code ec,
+                const boost::system::error_code& e,
                 const std::variant<std::vector<std::string>>&
                     variantEndpoints) {
-                if (ec)
+                if (e)
                 {
-                    if (ec.value() != EBADR)
+                    if (e.value() != EBADR)
                     {
                         messages::internalError(sensorsAsyncResp->res);
                         return;
@@ -381,7 +381,7 @@
         respHandler, "xyz.openbmc_project.ObjectMapper",
         "/xyz/openbmc_project/object_mapper",
         "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths",
-        "/xyz/openbmc_project/inventory", int32_t(0), interfaces);
+        "/xyz/openbmc_project/inventory", 0, interfaces);
     BMCWEB_LOG_DEBUG << "getChassis exit";
 }
 
@@ -452,8 +452,7 @@
     crow::connections::systemBus->async_method_call(
         std::move(respHandler), "xyz.openbmc_project.ObjectMapper",
         "/xyz/openbmc_project/object_mapper",
-        "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/", int32_t(0),
-        interfaces);
+        "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/", 0, interfaces);
     BMCWEB_LOG_DEBUG << "getObjectManagerPaths exit";
 }
 
@@ -803,10 +802,10 @@
         auto interfaceProperties = interfacesDict.find(std::get<0>(p));
         if (interfaceProperties != interfacesDict.end())
         {
-            auto valueIt = interfaceProperties->second.find(std::get<1>(p));
-            if (valueIt != interfaceProperties->second.end())
+            auto thisValueIt = interfaceProperties->second.find(std::get<1>(p));
+            if (thisValueIt != interfaceProperties->second.end())
             {
-                const SensorVariant& valueVariant = valueIt->second;
+                const SensorVariant& valueVariant = thisValueIt->second;
 
                 // The property we want to set may be nested json, so use
                 // a json_pointer for easy indexing into the json structure.
@@ -820,7 +819,7 @@
                 double temp = 0.0;
                 if (int64Value != nullptr)
                 {
-                    temp = *int64Value;
+                    temp = static_cast<double>(*int64Value);
                 }
                 else if (doubleValue != nullptr)
                 {
@@ -878,10 +877,10 @@
                 const std::string& owner = objDict.begin()->first;
                 crow::connections::systemBus->async_method_call(
                     [path, owner,
-                     sensorsAsyncResp](const boost::system::error_code ec,
+                     sensorsAsyncResp](const boost::system::error_code e,
                                        std::variant<std::vector<std::string>>
                                            variantEndpoints) {
-                        if (ec)
+                        if (e)
                         {
                             return; // if they don't have an association we
                                     // can't tell what chassis is
@@ -911,13 +910,13 @@
                         }
                         crow::connections::systemBus->async_method_call(
                             [path, sensorsAsyncResp](
-                                const boost::system::error_code ec,
+                                const boost::system::error_code& err,
                                 const boost::container::flat_map<
                                     std::string,
                                     std::variant<uint8_t,
                                                  std::vector<std::string>,
                                                  std::string>>& ret) {
-                                if (ec)
+                                if (err)
                                 {
                                     return; // don't have to have this
                                             // interface
@@ -1016,15 +1015,16 @@
                                     }
                                 }
 
-                                auto& resp = sensorsAsyncResp->res
-                                                 .jsonValue["Redundancy"];
-                                resp.push_back(
+                                nlohmann::json& jResp =
+                                    sensorsAsyncResp->res
+                                        .jsonValue["Redundancy"];
+                                jResp.push_back(
                                     {{"@odata.id",
                                       "/refish/v1/Chassis/" +
                                           sensorsAsyncResp->chassisId + "/" +
                                           sensorsAsyncResp->chassisSubNode +
                                           "#/Redundancy/" +
-                                          std::to_string(resp.size())},
+                                          std::to_string(jResp.size())},
                                      {"@odata.type",
                                       "#Redundancy.v1_3_2.Redundancy"},
                                      {"MinNumNeeded",
@@ -1314,7 +1314,7 @@
     std::shared_ptr<boost::container::flat_set<std::string>> invConnections,
     std::shared_ptr<boost::container::flat_map<std::string, std::string>>
         objectMgrPaths,
-    Callback&& callback, int invConnectionsIndex = 0)
+    Callback&& callback, size_t invConnectionsIndex = 0)
 {
     BMCWEB_LOG_DEBUG << "getInventoryItemsData enter";
 
@@ -1800,7 +1800,7 @@
                 }
                 else
                 {
-                    const char* fieldName = nullptr;
+                    std::string fieldName;
                     if (sensorType == "temperature")
                     {
                         fieldName = "Temperatures";
@@ -1978,7 +1978,7 @@
     // Get set of sensors in chassis
     getChassis(SensorsAsyncResp, std::move(getChassisCb));
     BMCWEB_LOG_DEBUG << "getChassisData exit";
-};
+}
 
 /**
  * @brief Find the requested sensorName in the list of all sensors supplied by
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index a3d7196..da88271 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -29,7 +29,7 @@
 // Only allow one update at a time
 static bool fwUpdateInProgress = false;
 // Timer for software available
-static std::unique_ptr<boost::asio::deadline_timer> fwAvailableTimer;
+static std::unique_ptr<boost::asio::steady_timer> fwAvailableTimer;
 
 static void cleanUp()
 {
@@ -148,10 +148,9 @@
     }
 
     fwAvailableTimer =
-        std::make_unique<boost::asio::deadline_timer>(*req.ioService);
+        std::make_unique<boost::asio::steady_timer>(*req.ioService);
 
-    fwAvailableTimer->expires_from_now(
-        boost::posix_time::seconds(timeoutTimeSeconds));
+    fwAvailableTimer->expires_after(std::chrono::seconds(timeoutTimeSeconds));
 
     fwAvailableTimer->async_wait(
         [asyncResp](const boost::system::error_code &ec) {
@@ -485,10 +484,6 @@
 
                 for (auto &obj : subtree)
                 {
-                    const std::vector<
-                        std::pair<std::string, std::vector<std::string>>>
-                        &connections = obj.second;
-
                     // if can't parse fw id then return
                     std::size_t idPos;
                     if ((idPos = obj.first.rfind("/")) == std::string::npos)
@@ -511,7 +506,8 @@
             },
             "xyz.openbmc_project.ObjectMapper",
             "/xyz/openbmc_project/object_mapper",
-            "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/", int32_t(0),
+            "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/",
+            static_cast<int32_t>(0),
             std::array<const char *, 1>{
                 "xyz.openbmc_project.Software.Version"});
     }
@@ -719,7 +715,8 @@
             },
             "xyz.openbmc_project.ObjectMapper",
             "/xyz/openbmc_project/object_mapper",
-            "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/", int32_t(0),
+            "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/",
+            static_cast<int32_t>(0),
             std::array<const char *, 1>{
                 "xyz.openbmc_project.Software.Version"});
     }
