Fix a bunch of warnings

using the list of warnings from here:
https://github.com/lefticus/cppbestpractices/blob/e73393f25a85f83fed7399d8b65cb117d00b2231/02-Use_the_Tools_Available.md#L100

Seems like a good place to start, and would improve things a bit
type-wise.  This patchset attempts to correct all the issues in one
shot.

Tested:
It builds.  Will test various subsystems that have been touched

Signed-off-by: Ed Tanous <ed.tanous@intel.com>
Change-Id: I588c26440e5a97f718a0f0ea74cc84107d53aa1e
diff --git a/.clang-tidy b/.clang-tidy
deleted file mode 100644
index 9a314f1..0000000
--- a/.clang-tidy
+++ /dev/null
@@ -1,15 +0,0 @@
----
-Checks:          '-*,readability-identifier-naming'
-WarningsAsErrors: ''
-HeaderFilterRegex: '.*'
-AnalyzeTemporaryDtors: false
-CheckOptions:
-  - { key: readability-identifier-naming.NamespaceCase,      value: lower_case}
-  - { key: readability-identifier-naming.ClassCase,          value: CamelCase }
-  - { key: readability-identifier-naming.StructCase,         value: CamelCase }
-  - { key: readability-identifier-naming.FunctionCase,       value: camelBack }
-  - { key: readability-identifier-naming.VariableCase,       value: camelBack }
-  - { key: readability-identifier-naming.GlobalConstantCase, value: camelBack }
-  - { key: readability-identifier-naming.MemberCase,         value: camelBack }
-...
-
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 943d956..0268ed8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,7 @@
 cmake_minimum_required (VERSION 3.5 FATAL_ERROR)
 
+project (bmc-webserver CXX)
+
 cmake_policy (SET CMP0054 NEW)
 
 set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
@@ -58,8 +60,6 @@
        firmware update transactions through Redfish
        UpdateService.SimpleUpdate." OFF)
 
-project (bmc-webserver CXX)
-
 include (CTest)
 
 set (CMAKE_CXX_STANDARD 17)
@@ -69,7 +69,43 @@
 
 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -Wall")
 
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
+    -fno-rtti \
+")
+
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
+-Wall \
+-Wextra \
+-Wnon-virtual-dtor \
+-Wold-style-cast \
+-Wcast-align \
+-Wunused \
+-Woverloaded-virtual \
+-Wpedantic \
+-Wconversion \
+-Wsign-conversion \
+-Wnull-dereference \
+-Wdouble-promotion \
+-Wformat=2 \
+-Wno-unused-parameter \
+")
+
+# only set -Werror if we're on a compiler that we know passes
+if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+    if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0)
+        set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
+        -Werror \
+        -Wduplicated-cond \
+        -Wduplicated-branches \
+        -Wlogical-op \
+        -Wnull-dereference \
+        -Wdouble-promotion \
+        -Wformat=2 \
+        -Wno-unused-parameter \
+        ")
+    endif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0)
+endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+
 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-rtti")
 
 # general
@@ -127,30 +163,32 @@
     set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/prefix ${CMAKE_PREFIX_PATH})
 endif ()
 
+find_package (Boost 1.66 REQUIRED)
+include_directories (SYSTEM ${BOOST_SRC_DIR})
+
 # add_definitions(-DBOOST_ASIO_ENABLE_HANDLER_TRACKING)
 add_definitions (-DBOOST_ASIO_DISABLE_THREADS)
 add_definitions (-DBOOST_BEAST_USE_STD_STRING_VIEW)
 add_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY)
 add_definitions (-DBOOST_SYSTEM_NO_DEPRECATED)
-# Uncomment once Yocto moves to boost 1.70
-# add_definitions (-DBOOST_ASIO_NO_DEPRECATED)
+message(BOOST_VERSION = ${Boost_VERSION})
+if ("${Boost_VERSION}" STREQUAL "107100")
+    add_definitions (-DBOOST_ASIO_NO_DEPRECATED)
+endif()
 add_definitions (-DBOOST_ALL_NO_LIB)
 add_definitions (-DBOOST_NO_RTTI)
 add_definitions (-DBOOST_NO_TYPEID)
 add_definitions (-DBOOST_COROUTINES_NO_DEPRECATION_WARNING)
 
-find_package (Boost 1.66 REQUIRED)
-include_directories (${BOOST_SRC_DIR})
-
 # sdbusplus
 if (NOT ${YOCTO_DEPENDENCIES})
-    include_directories (${CMAKE_BINARY_DIR}/sdbusplus-src)
+    include_directories (SYSTEM ${CMAKE_BINARY_DIR}/sdbusplus-src)
     link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/.libs)
 endif ()
 
 # Openssl
 find_package (OpenSSL REQUIRED)
-include_directories (${OPENSSL_INCLUDE_DIR})
+include_directories (SYSTEM ${OPENSSL_INCLUDE_DIR})
 message ("OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR}")
 
 # bmcweb
@@ -168,7 +206,7 @@
 
 # Zlib
 find_package (ZLIB REQUIRED)
-include_directories (${ZLIB_INCLUDE_DIRS})
+include_directories (SYSTEM ${ZLIB_INCLUDE_DIRS})
 
 # PAM
 option (WEBSERVER_ENABLE_PAM "enable pam authentication" ON)
diff --git a/CMakeLists.txt.in b/CMakeLists.txt.in
index ce96647..4e6f6b6 100644
--- a/CMakeLists.txt.in
+++ b/CMakeLists.txt.in
@@ -36,8 +36,8 @@
 
 externalproject_add (
     Boost URL
-    https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.gz
-    URL_MD5 b50944c0c13f81ce2c006802a1186f5a SOURCE_DIR
+    https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.gz
+    URL_MD5 5f521b41b79bf8616582c4a8a2c10177 SOURCE_DIR
     "${CMAKE_BINARY_DIR}/boost-src" BINARY_DIR "${CMAKE_BINARY_DIR}/boost-build"
     CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND mkdir -p
     "${CMAKE_BINARY_DIR}/prefix/include/" && cp -R
diff --git a/crow/include/crow/app.h b/crow/include/crow/app.h
index 4bdf9ff..7885c02 100644
--- a/crow/include/crow/app.h
+++ b/crow/include/crow/app.h
@@ -38,9 +38,9 @@
     using server_t = Server<Crow, socket_t, Middlewares...>;
 #endif
 
-    explicit Crow(std::shared_ptr<boost::asio::io_context> io =
+    explicit Crow(std::shared_ptr<boost::asio::io_context> ioIn =
                       std::make_shared<boost::asio::io_context>()) :
-        io(std::move(io))
+        io(std::move(ioIn))
     {
     }
     ~Crow()
diff --git a/crow/include/crow/http_connection.h b/crow/include/crow/http_connection.h
index 78ee70b..5c9be09 100644
--- a/crow/include/crow/http_connection.h
+++ b/crow/include/crow/http_connection.h
@@ -164,7 +164,7 @@
     mw.afterHandle(req, res, ctx.template get<MW>());
 }
 
-template <int N, typename Context, typename Container, typename CurrentMW,
+template <size_t N, typename Context, typename Container, typename CurrentMW,
           typename... Middlewares>
 bool middlewareCallHelper(Container& middlewares, Request& req, Response& res,
                           Context& ctx)
@@ -194,21 +194,21 @@
     return false;
 }
 
-template <int N, typename Context, typename Container>
+template <size_t N, typename Context, typename Container>
 bool middlewareCallHelper(Container& /*middlewares*/, Request& /*req*/,
                           Response& /*res*/, Context& /*ctx*/)
 {
     return false;
 }
 
-template <int N, typename Context, typename Container>
+template <size_t N, typename Context, typename Container>
 typename std::enable_if<(N < 0)>::type
     afterHandlersCallHelper(Container& /*middlewares*/, Context& /*Context*/,
                             Request& /*req*/, Response& /*res*/)
 {
 }
 
-template <int N, typename Context, typename Container>
+template <size_t N, typename Context, typename Container>
 typename std::enable_if<(N == 0)>::type
     afterHandlersCallHelper(Container& middlewares, Context& ctx, Request& req,
                             Response& res)
@@ -221,7 +221,7 @@
         static_cast<parent_context_t&>(ctx));
 }
 
-template <int N, typename Context, typename Container>
+template <size_t N, typename Context, typename Container>
 typename std::enable_if<(N > 0)>::type
     afterHandlersCallHelper(Container& middlewares, Context& ctx, Request& req,
                             Response& res)
@@ -248,14 +248,15 @@
 class Connection
 {
   public:
-    Connection(boost::asio::io_context& ioService, Handler* handler,
-               const std::string& server_name,
-               std::tuple<Middlewares...>* middlewares,
+    Connection(boost::asio::io_context& ioService, Handler* handlerIn,
+               const std::string& ServerNameIn,
+               std::tuple<Middlewares...>* middlewaresIn,
                std::function<std::string()>& get_cached_date_str_f,
-               detail::TimerQueue& timerQueue, Adaptor adaptorIn) :
+               detail::TimerQueue& timerQueueIn, Adaptor adaptorIn) :
         adaptor(std::move(adaptorIn)),
-        handler(handler), serverName(server_name), middlewares(middlewares),
-        getCachedDateStr(get_cached_date_str_f), timerQueue(timerQueue)
+        handler(handlerIn), serverName(ServerNameIn),
+        middlewares(middlewaresIn), getCachedDateStr(get_cached_date_str_f),
+        timerQueue(timerQueueIn)
     {
         parser.emplace(std::piecewise_construct, std::make_tuple());
         // Temporarily changed to 30MB; Need to modify uploading/authentication
@@ -344,7 +345,7 @@
             req->ioService = static_cast<decltype(req->ioService)>(
                 &adaptor.get_executor().context());
             detail::middlewareCallHelper<
-                0, decltype(ctx), decltype(*middlewares), Middlewares...>(
+                0U, decltype(ctx), decltype(*middlewares), Middlewares...>(
                 *middlewares, *req, res, ctx);
 
             if (!res.completed)
@@ -413,7 +414,7 @@
             needToCallAfterHandlers = false;
 
             // call all afterHandler of middlewares
-            detail::afterHandlersCallHelper<((int)sizeof...(Middlewares) - 1),
+            detail::afterHandlersCallHelper<sizeof...(Middlewares) - 1,
                                             decltype(ctx),
                                             decltype(*middlewares)>(
                 *middlewares, ctx, *req, res);
@@ -654,7 +655,7 @@
 
     const std::string& serverName;
 
-    int timerCancelKey{-1};
+    size_t timerCancelKey = 0;
 
     bool isReading{};
     bool isWriting{};
diff --git a/crow/include/crow/http_request.h b/crow/include/crow/http_request.h
index ef0bb28..c8551cd 100644
--- a/crow/include/crow/http_request.h
+++ b/crow/include/crow/http_request.h
@@ -26,12 +26,14 @@
 
     std::shared_ptr<crow::persistent_data::UserSession> session;
 
-    Request(boost::beast::http::request<boost::beast::http::string_body>& req) :
-        req(req), body(req.body())
+    Request(
+        boost::beast::http::request<boost::beast::http::string_body>& reqIn) :
+        req(reqIn),
+        body(reqIn.body())
     {
     }
 
-    const boost::beast::http::verb method() const
+    boost::beast::http::verb method() const
     {
         return req.method();
     }
diff --git a/crow/include/crow/http_server.h b/crow/include/crow/http_server.h
index 304f562..2e43056 100644
--- a/crow/include/crow/http_server.h
+++ b/crow/include/crow/http_server.h
@@ -1,11 +1,11 @@
 #pragma once
 
 #include <atomic>
-#include <boost/asio/deadline_timer.hpp>
 #include <boost/asio/ip/address.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/signal_set.hpp>
 #include <boost/asio/ssl/context.hpp>
+#include <boost/asio/steady_timer.hpp>
 #if BOOST_VERSION >= 107000
 #include <boost/beast/ssl/ssl_stream.hpp>
 #else
@@ -44,7 +44,7 @@
         ioService(std::move(io)),
         acceptor(std::move(acceptor)),
         signals(*ioService, SIGINT, SIGTERM, SIGHUP), tickTimer(*ioService),
-        handler(handler), adaptorCtx(adaptor_ctx), middlewares(middlewares)
+        handler(handler), middlewares(middlewares), adaptorCtx(adaptor_ctx)
     {
     }
 
@@ -82,8 +82,8 @@
     void onTick()
     {
         tickFunction();
-        tickTimer.expires_from_now(
-            boost::posix_time::milliseconds(tickInterval.count()));
+        tickTimer.expires_after(
+            std::chrono::milliseconds(tickInterval.count()));
         tickTimer.async_wait([this](const boost::system::error_code& ec) {
             if (ec)
             {
@@ -95,14 +95,11 @@
 
     void updateDateStr()
     {
-        auto lastTimeT = time(0);
+        time_t lastTimeT = time(0);
         tm myTm{};
 
-#ifdef _MSC_VER
-        gmtime_s(&my_tm, &last_time_t);
-#else
         gmtime_r(&lastTimeT, &myTm);
-#endif
+
         dateStr.resize(100);
         size_t dateStrSz =
             strftime(&dateStr[0], 99, "%a, %d %b %Y %H:%M:%S GMT", &myTm);
@@ -126,8 +123,8 @@
             return this->dateStr;
         };
 
-        boost::asio::deadline_timer timer(*ioService);
-        timer.expires_from_now(boost::posix_time::seconds(1));
+        boost::asio::steady_timer timer(*ioService);
+        timer.expires_after(std::chrono::seconds(1));
 
         std::function<void(const boost::system::error_code& ec)> timerHandler;
         timerHandler = [&](const boost::system::error_code& ec) {
@@ -136,15 +133,15 @@
                 return;
             }
             timerQueue.process();
-            timer.expires_from_now(boost::posix_time::seconds(1));
+            timer.expires_after(std::chrono::seconds(1));
             timer.async_wait(timerHandler);
         };
         timer.async_wait(timerHandler);
 
         if (tickFunction && tickInterval.count() > 0)
         {
-            tickTimer.expires_from_now(
-                boost::posix_time::milliseconds(tickInterval.count()));
+            tickTimer.expires_after(
+                std::chrono::milliseconds(tickInterval.count()));
             tickTimer.async_wait([this](const boost::system::error_code& ec) {
                 if (ec)
                 {
@@ -278,7 +275,7 @@
     std::function<std::string()> getCachedDateStr;
     std::unique_ptr<tcp::acceptor> acceptor;
     boost::asio::signal_set signals;
-    boost::asio::deadline_timer tickTimer;
+    boost::asio::steady_timer tickTimer;
 
     std::string dateStr;
 
diff --git a/crow/include/crow/logging.h b/crow/include/crow/logging.h
index 1d4de57..a608f1f 100644
--- a/crow/include/crow/logging.h
+++ b/crow/include/crow/logging.h
@@ -12,14 +12,6 @@
 {
 enum class LogLevel
 {
-#ifndef ERROR
-    DEBUG = 0,
-    INFO,
-    WARNING,
-    ERROR,
-    CRITICAL,
-#endif
-
     Debug = 0,
     Info,
     Warning,
@@ -27,46 +19,30 @@
     Critical,
 };
 
-class ILogHandler
-{
-  public:
-    virtual void log(std::string message, LogLevel level) = 0;
-};
-
-class CerrLogHandler : public ILogHandler
-{
-  public:
-    void log(std::string message, LogLevel /*level*/) override
-    {
-        std::cerr << message;
-    }
-};
-
 class logger
 {
   private:
     //
     static std::string timestamp()
     {
-        char date[32];
+        std::string date;
+        date.resize(32, '\0');
         time_t t = time(0);
 
         tm myTm{};
 
-#ifdef _MSC_VER
-        gmtime_s(&my_tm, &t);
-#else
         gmtime_r(&t, &myTm);
-#endif
 
-        size_t sz = strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", &myTm);
-        return std::string(date, date + sz);
+        size_t sz =
+            strftime(date.data(), date.size(), "%Y-%m-%d %H:%M:%S", &myTm);
+        date.resize(sz);
+        return date;
     }
 
   public:
     logger(const std::string& prefix, const std::string& filename,
-           const size_t line, LogLevel level) :
-        level(level)
+           const size_t line, LogLevel levelIn) :
+        level(levelIn)
     {
 #ifdef BMCWEB_ENABLE_LOGGING
         stringstream << "(" << timestamp() << ") [" << prefix << " "
@@ -80,7 +56,7 @@
         {
 #ifdef BMCWEB_ENABLE_LOGGING
             stringstream << std::endl;
-            getHandlerRef()->log(stringstream.str(), level);
+            std::cerr << stringstream.str();
 #endif
         }
     }
@@ -103,11 +79,6 @@
         getLogLevelRef() = level;
     }
 
-    static void setHandler(ILogHandler* handler)
-    {
-        getHandlerRef() = handler;
-    }
-
     static LogLevel get_current_log_level()
     {
         return getLogLevelRef();
@@ -120,12 +91,6 @@
         static auto currentLevel = static_cast<LogLevel>(1);
         return currentLevel;
     }
-    static ILogHandler*& getHandlerRef()
-    {
-        static CerrLogHandler defaultHandler;
-        static ILogHandler* currentHandler = &defaultHandler;
-        return currentHandler;
-    }
 
     //
     std::ostringstream stringstream;
diff --git a/crow/include/crow/middleware_context.h b/crow/include/crow/middleware_context.h
index f109a44..2247ca6 100644
--- a/crow/include/crow/middleware_context.h
+++ b/crow/include/crow/middleware_context.h
@@ -16,7 +16,7 @@
 {
     using parent_context = typename black_magic::PopBack<
         Middlewares...>::template rebind<::crow::detail::PartialContext>;
-    template <int N>
+    template <size_t N>
     using partial = typename std::conditional<
         N == sizeof...(Middlewares) - 1, PartialContext,
         typename parent_context::template partial<N>>::type;
@@ -29,10 +29,10 @@
 
 template <> struct PartialContext<>
 {
-    template <int> using partial = PartialContext;
+    template <size_t> using partial = PartialContext;
 };
 
-template <int N, typename Context, typename Container, typename CurrentMW,
+template <size_t N, typename Context, typename Container, typename CurrentMW,
           typename... Middlewares>
 bool middlewareCallHelper(Container& middlewares, Request& req, Response& res,
                           Context& ctx);
@@ -41,17 +41,17 @@
 struct Context : private PartialContext<Middlewares...>
 // struct Context : private Middlewares::context... // simple but less type-safe
 {
-    template <int N, typename Context, typename Container>
+    template <size_t N, typename Context, typename Container>
     friend typename std::enable_if<(N == 0)>::type
         afterHandlersCallHelper(Container& middlewares, Context& ctx,
                                 Request& req, Response& res);
-    template <int N, typename Context, typename Container>
+    template <size_t N, typename Context, typename Container>
     friend typename std::enable_if<(N > 0)>::type
         afterHandlersCallHelper(Container& middlewares, Context& ctx,
                                 Request& req, Response& res);
 
-    template <int N, typename Context, typename Container, typename CurrentMW,
-              typename... Middlewares2>
+    template <size_t N, typename Context, typename Container,
+              typename CurrentMW, typename... Middlewares2>
     friend bool middlewareCallHelper(Container& middlewares, Request& req,
                                      Response& res, Context& ctx);
 
@@ -60,7 +60,7 @@
         return static_cast<typename T::Context&>(*this);
     }
 
-    template <int N>
+    template <size_t N>
     using partial =
         typename PartialContext<Middlewares...>::template partial<N>;
 };
diff --git a/crow/include/crow/query_string.h b/crow/include/crow/query_string.h
index 553960e..0cd21e4 100644
--- a/crow/include/crow/query_string.h
+++ b/crow/include/crow/query_string.h
@@ -19,7 +19,7 @@
  *  Also decodes the value portion of the k/v pair *in-place*.  In a future
  *  enhancement it will also have a compile-time option of sorting qs_kv
  *  alphabetically by key.  */
-int qsParse(char* qs, char* qs_kv[], int qs_kv_size);
+size_t qsParse(char* qs, char* qs_kv[], size_t qs_kv_size);
 
 /*  Used by qs_parse to decode the value portion of a k/v pair  */
 int qsDecode(char* qs);
@@ -55,12 +55,13 @@
 inline int qsStrncmp(const char* s, const char* qs, size_t n)
 {
     int i = 0;
-    unsigned char u1, u2, unyb, lnyb;
+    char u1, u2;
+    char unyb, lnyb;
 
     while (n-- > 0)
     {
-        u1 = static_cast<unsigned char>(*s++);
-        u2 = static_cast<unsigned char>(*qs++);
+        u1 = *s++;
+        u2 = *qs++;
 
         if (!BMCWEB_QS_ISQSCHR(u1))
         {
@@ -77,11 +78,12 @@
         }
         if (u1 == '%') // easier/safer than scanf
         {
-            unyb = static_cast<unsigned char>(*s++);
-            lnyb = static_cast<unsigned char>(*s++);
+            unyb = static_cast<char>(*s++);
+            lnyb = static_cast<char>(*s++);
             if (BMCWEB_QS_ISHEX(unyb) && BMCWEB_QS_ISHEX(lnyb))
             {
-                u1 = (BMCWEB_QS_HEX2DEC(unyb) * 16) + BMCWEB_QS_HEX2DEC(lnyb);
+                u1 = static_cast<char>((BMCWEB_QS_HEX2DEC(unyb) * 16) +
+                                       BMCWEB_QS_HEX2DEC(lnyb));
             }
             else
             {
@@ -95,11 +97,12 @@
         }
         if (u2 == '%') // easier/safer than scanf
         {
-            unyb = static_cast<unsigned char>(*qs++);
-            lnyb = static_cast<unsigned char>(*qs++);
+            unyb = static_cast<char>(*qs++);
+            lnyb = static_cast<char>(*qs++);
             if (BMCWEB_QS_ISHEX(unyb) && BMCWEB_QS_ISHEX(lnyb))
             {
-                u2 = (BMCWEB_QS_HEX2DEC(unyb) * 16) + BMCWEB_QS_HEX2DEC(lnyb);
+                u2 = static_cast<char>((BMCWEB_QS_HEX2DEC(unyb) * 16) +
+                                       BMCWEB_QS_HEX2DEC(lnyb));
             }
             else
             {
@@ -127,9 +130,10 @@
     }
 }
 
-inline int qsParse(char* qs, char* qs_kv[], int qs_kv_size)
+inline size_t qsParse(char* qs, char* qs_kv[], size_t qs_kv_size)
 {
-    int i, j;
+    size_t i;
+    size_t j;
     char* substrPtr;
 
     for (i = 0; i < qs_kv_size; i++)
@@ -201,8 +205,8 @@
                 qs[i] = '\0';
                 return i;
             }
-            qs[i] = (BMCWEB_QS_HEX2DEC(qs[j + 1]) * 16) +
-                    BMCWEB_QS_HEX2DEC(qs[j + 2]);
+            qs[i] = static_cast<char>(BMCWEB_QS_HEX2DEC(qs[j + 1] * 16) +
+                                      BMCWEB_QS_HEX2DEC(qs[j + 2]));
             j += 2;
         }
         else
@@ -307,7 +311,7 @@
 class QueryString
 {
   public:
-    static const int maxKeyValuePairsCount = 256;
+    static const size_t maxKeyValuePairsCount = 256;
 
     QueryString() = default;
 
@@ -353,7 +357,8 @@
 
         keyValuePairs.resize(maxKeyValuePairsCount);
 
-        int count = qsParse(&url[0], &keyValuePairs[0], maxKeyValuePairsCount);
+        size_t count =
+            qsParse(&url[0], &keyValuePairs[0], maxKeyValuePairsCount);
         keyValuePairs.resize(count);
     }
 
@@ -380,8 +385,8 @@
 
     char* get(const std::string& name) const
     {
-        char* ret =
-            qsK2v(name.c_str(), keyValuePairs.data(), keyValuePairs.size());
+        char* ret = qsK2v(name.c_str(), keyValuePairs.data(),
+                          static_cast<int>(keyValuePairs.size()));
         return ret;
     }
 
@@ -395,7 +400,7 @@
         while (1)
         {
             element = qsK2v(plus.c_str(), keyValuePairs.data(),
-                            keyValuePairs.size(), count++);
+                            static_cast<int>(keyValuePairs.size()), count++);
             if (element == nullptr)
             {
                 break;
diff --git a/crow/include/crow/routing.h b/crow/include/crow/routing.h
index 0be5dbd..6297448 100644
--- a/crow/include/crow/routing.h
+++ b/crow/include/crow/routing.h
@@ -64,7 +64,7 @@
     }
 #endif
 
-    uint32_t getMethods()
+    size_t getMethods()
     {
         return methodsBitfield;
     }
@@ -88,7 +88,8 @@
         return false;
     }
 
-    uint32_t methodsBitfield{1 << (int)boost::beast::http::verb::get};
+    size_t methodsBitfield{
+        1 << static_cast<size_t>(boost::beast::http::verb::get)};
 
     std::vector<redfish::Privileges> privilegesSet;
 
@@ -384,46 +385,52 @@
     using self_t = T;
     WebSocketRule& websocket()
     {
-        WebSocketRule* p = new WebSocketRule(((self_t*)this)->rule);
-        ((self_t*)this)->ruleToUpgrade.reset(p);
+        self_t* self = static_cast<self_t*>(this);
+        WebSocketRule* p = new WebSocketRule(self->rule);
+        self->ruleToUpgrade.reset(p);
         return *p;
     }
 
     self_t& name(std::string name) noexcept
     {
-        ((self_t*)this)->nameStr = std::move(name);
-        return (self_t&)*this;
+        self_t* self = static_cast<self_t*>(this);
+        self->nameStr = std::move(name);
+        return *self;
     }
 
     self_t& methods(boost::beast::http::verb method)
     {
-        ((self_t*)this)->methodsBitfield = 1 << (int)method;
-        return (self_t&)*this;
+        self_t* self = static_cast<self_t*>(this);
+        self->methodsBitfield = 1U << static_cast<size_t>(method);
+        return *self;
     }
 
     template <typename... MethodArgs>
     self_t& methods(boost::beast::http::verb method, MethodArgs... args_method)
     {
+        self_t* self = static_cast<self_t*>(this);
         methods(args_method...);
-        ((self_t*)this)->methodsBitfield |= 1 << (int)method;
-        return (self_t&)*this;
+        self->methodsBitfield |= 1U << static_cast<size_t>(method);
+        return *self;
     }
 
     template <typename... MethodArgs>
     self_t& requires(std::initializer_list<const char*> l)
     {
-        ((self_t*)this)->privilegesSet.emplace_back(l);
-        return (self_t&)*this;
+        self_t* self = static_cast<self_t*>(this);
+        self->privilegesSet.emplace_back(l);
+        return *self;
     }
 
     template <typename... MethodArgs>
     self_t& requires(const std::vector<redfish::Privileges>& p)
     {
+        self_t* self = static_cast<self_t*>(this);
         for (const redfish::Privileges& privilege : p)
         {
-            ((self_t*)this)->privilegesSet.emplace_back(privilege);
+            self->privilegesSet.emplace_back(privilege);
         }
-        return (self_t&)*this;
+        return *self;
     }
 };
 
@@ -502,7 +509,7 @@
   public:
     using self_t = TaggedRule<Args...>;
 
-    TaggedRule(std::string rule) : BaseRule(std::move(rule))
+    TaggedRule(std::string ruleIn) : BaseRule(std::move(ruleIn))
     {
     }
 
@@ -621,14 +628,15 @@
     struct Node
     {
         unsigned ruleIndex{};
-        std::array<unsigned, (int)ParamType::MAX> paramChildrens{};
+        std::array<size_t, static_cast<size_t>(ParamType::MAX)>
+            paramChildrens{};
         boost::container::flat_map<std::string, unsigned> children;
 
         bool isSimpleNode() const
         {
             return !ruleIndex && std::all_of(std::begin(paramChildrens),
                                              std::end(paramChildrens),
-                                             [](unsigned x) { return !x; });
+                                             [](size_t x) { return !x; });
         }
     };
 
@@ -639,7 +647,7 @@
   private:
     void optimizeNode(Node* node)
     {
-        for (unsigned int x : node->paramChildrens)
+        for (size_t x : node->paramChildrens)
         {
             if (!x)
                 continue;
@@ -716,14 +724,15 @@
                     route_indexes.push_back(child->ruleIndex);
                 }
                 findRouteIndexes(req_url, route_indexes, child,
-                                 pos + fragment.size());
+                                 static_cast<unsigned>(pos + fragment.size()));
             }
             else
             {
                 if (req_url.compare(pos, fragment.size(), fragment) == 0)
                 {
-                    findRouteIndexes(req_url, route_indexes, child,
-                                     pos + fragment.size());
+                    findRouteIndexes(
+                        req_url, route_indexes, child,
+                        static_cast<unsigned>(pos + fragment.size()));
                 }
             }
         }
@@ -731,7 +740,7 @@
 
     std::pair<unsigned, RoutingParams>
         find(const std::string_view req_url, const Node* node = nullptr,
-             unsigned pos = 0, RoutingParams* params = nullptr) const
+             size_t pos = 0, RoutingParams* params = nullptr) const
     {
         RoutingParams empty;
         if (params == nullptr)
@@ -754,7 +763,7 @@
                 }
             };
 
-        if (node->paramChildrens[(int)ParamType::INT])
+        if (node->paramChildrens[static_cast<size_t>(ParamType::INT)])
         {
             char c = req_url[pos];
             if ((c >= '0' && c <= '9') || c == '+' || c == '-')
@@ -766,17 +775,18 @@
                 if (errno != ERANGE && eptr != req_url.data() + pos)
                 {
                     params->intParams.push_back(value);
-                    std::pair<unsigned, RoutingParams> ret =
-                        find(req_url,
-                             &nodes[node->paramChildrens[(int)ParamType::INT]],
-                             eptr - req_url.data(), params);
+                    std::pair<unsigned, RoutingParams> ret = find(
+                        req_url,
+                        &nodes[node->paramChildrens[static_cast<size_t>(
+                            ParamType::INT)]],
+                        static_cast<size_t>(eptr - req_url.data()), params);
                     updateFound(ret);
                     params->intParams.pop_back();
                 }
             }
         }
 
-        if (node->paramChildrens[(int)ParamType::UINT])
+        if (node->paramChildrens[static_cast<size_t>(ParamType::UINT)])
         {
             char c = req_url[pos];
             if ((c >= '0' && c <= '9') || c == '+')
@@ -788,17 +798,18 @@
                 if (errno != ERANGE && eptr != req_url.data() + pos)
                 {
                     params->uintParams.push_back(value);
-                    std::pair<unsigned, RoutingParams> ret =
-                        find(req_url,
-                             &nodes[node->paramChildrens[(int)ParamType::UINT]],
-                             eptr - req_url.data(), params);
+                    std::pair<unsigned, RoutingParams> ret = find(
+                        req_url,
+                        &nodes[node->paramChildrens[static_cast<size_t>(
+                            ParamType::UINT)]],
+                        static_cast<size_t>(eptr - req_url.data()), params);
                     updateFound(ret);
                     params->uintParams.pop_back();
                 }
             }
         }
 
-        if (node->paramChildrens[(int)ParamType::DOUBLE])
+        if (node->paramChildrens[static_cast<size_t>(ParamType::DOUBLE)])
         {
             char c = req_url[pos];
             if ((c >= '0' && c <= '9') || c == '+' || c == '-' || c == '.')
@@ -811,15 +822,16 @@
                     params->doubleParams.push_back(value);
                     std::pair<unsigned, RoutingParams> ret = find(
                         req_url,
-                        &nodes[node->paramChildrens[(int)ParamType::DOUBLE]],
-                        eptr - req_url.data(), params);
+                        &nodes[node->paramChildrens[static_cast<size_t>(
+                            ParamType::DOUBLE)]],
+                        static_cast<size_t>(eptr - req_url.data()), params);
                     updateFound(ret);
                     params->doubleParams.pop_back();
                 }
             }
         }
 
-        if (node->paramChildrens[(int)ParamType::STRING])
+        if (node->paramChildrens[static_cast<size_t>(ParamType::STRING)])
         {
             size_t epos = pos;
             for (; epos < req_url.size(); epos++)
@@ -834,14 +846,15 @@
                     req_url.substr(pos, epos - pos));
                 std::pair<unsigned, RoutingParams> ret =
                     find(req_url,
-                         &nodes[node->paramChildrens[(int)ParamType::STRING]],
+                         &nodes[node->paramChildrens[static_cast<size_t>(
+                             ParamType::STRING)]],
                          epos, params);
                 updateFound(ret);
                 params->stringParams.pop_back();
             }
         }
 
-        if (node->paramChildrens[(int)ParamType::PATH])
+        if (node->paramChildrens[static_cast<size_t>(ParamType::PATH)])
         {
             size_t epos = req_url.size();
 
@@ -849,9 +862,11 @@
             {
                 params->stringParams.emplace_back(
                     req_url.substr(pos, epos - pos));
-                std::pair<unsigned, RoutingParams> ret = find(
-                    req_url, &nodes[node->paramChildrens[(int)ParamType::PATH]],
-                    epos, params);
+                std::pair<unsigned, RoutingParams> ret =
+                    find(req_url,
+                         &nodes[node->paramChildrens[static_cast<size_t>(
+                             ParamType::PATH)]],
+                         epos, params);
                 updateFound(ret);
                 params->stringParams.pop_back();
             }
@@ -875,7 +890,7 @@
 
     void add(const std::string& url, unsigned ruleIndex)
     {
-        unsigned idx{0};
+        size_t idx = 0;
 
         for (unsigned i = 0; i < url.size(); i++)
         {
@@ -897,14 +912,14 @@
                 {
                     if (url.compare(i, x.second.size(), x.second) == 0)
                     {
-                        if (!nodes[idx].paramChildrens[(int)x.first])
+                        size_t index = static_cast<size_t>(x.first);
+                        if (!nodes[idx].paramChildrens[index])
                         {
                             unsigned newNodeIdx = newNode();
-                            nodes[idx].paramChildrens[(int)x.first] =
-                                newNodeIdx;
+                            nodes[idx].paramChildrens[index] = newNodeIdx;
                         }
-                        idx = nodes[idx].paramChildrens[(int)x.first];
-                        i += x.second.size();
+                        idx = nodes[idx].paramChildrens[index];
+                        i += static_cast<unsigned>(x.second.size());
                         break;
                     }
                 }
@@ -928,15 +943,15 @@
     }
 
   private:
-    void debugNodePrint(Node* n, int level)
+    void debugNodePrint(Node* n, size_t level)
     {
-        for (int i = 0; i < (int)ParamType::MAX; i++)
+        for (size_t i = 0; i < static_cast<size_t>(ParamType::MAX); i++)
         {
             if (n->paramChildrens[i])
             {
                 BMCWEB_LOG_DEBUG << std::string(
-                    2 * level, ' ') /*<< "("<<n->paramChildrens[i]<<") "*/;
-                switch ((ParamType)i)
+                    2U * level, ' ') /*<< "("<<n->paramChildrens[i]<<") "*/;
+                switch (static_cast<ParamType>(i))
                 {
                     case ParamType::INT:
                         BMCWEB_LOG_DEBUG << "<int>";
@@ -964,7 +979,7 @@
         for (const std::pair<std::string, unsigned>& kv : n->children)
         {
             BMCWEB_LOG_DEBUG
-                << std::string(2 * level, ' ') /*<< "(" << kv.second << ") "*/
+                << std::string(2U * level, ' ') /*<< "(" << kv.second << ") "*/
                 << kv.first;
             debugNodePrint(&nodes[kv.second], level + 1);
         }
@@ -973,7 +988,7 @@
   public:
     void debugPrint()
     {
-        debugNodePrint(head(), 0);
+        debugNodePrint(head(), 0U);
     }
 
   private:
@@ -990,7 +1005,7 @@
     unsigned newNode()
     {
         nodes.resize(nodes.size() + 1);
-        return nodes.size() - 1;
+        return static_cast<unsigned>(nodes.size() - 1);
     }
 
     std::vector<Node> nodes;
@@ -1039,14 +1054,16 @@
             {
                 perMethods[method].rules.emplace_back(ruleObject);
                 perMethods[method].trie.add(
-                    rule, perMethods[method].rules.size() - 1);
+                    rule, static_cast<unsigned>(
+                              perMethods[method].rules.size() - 1U));
                 // directory case:
                 //   request to `/about' url matches `/about/' rule
                 if (rule.size() > 2 && rule.back() == '/')
                 {
                     perMethods[method].trie.add(
                         rule.substr(0, rule.size() - 1),
-                        perMethods[method].rules.size() - 1);
+                        static_cast<unsigned>(perMethods[method].rules.size() -
+                                              1));
                 }
             }
         }
@@ -1074,10 +1091,10 @@
     template <typename Adaptor>
     void handleUpgrade(const Request& req, Response& res, Adaptor&& adaptor)
     {
-        if (static_cast<int>(req.method()) >= perMethods.size())
+        if (static_cast<size_t>(req.method()) >= perMethods.size())
             return;
 
-        PerMethod& perMethod = perMethods[(int)req.method()];
+        PerMethod& perMethod = perMethods[static_cast<size_t>(req.method())];
         Trie& trie = perMethod.trie;
         std::vector<BaseRule*>& rules = perMethod.rules;
 
@@ -1118,12 +1135,12 @@
             return;
         }
 
-        if ((rules[ruleIndex]->getMethods() & (1 << (uint32_t)req.method())) ==
-            0)
+        if ((rules[ruleIndex]->getMethods() &
+             (1U << static_cast<size_t>(req.method()))) == 0)
         {
             BMCWEB_LOG_DEBUG << "Rule found but method mismatch: " << req.url
                              << " with " << req.methodString() << "("
-                             << (uint32_t)req.method() << ") / "
+                             << static_cast<uint32_t>(req.method()) << ") / "
                              << rules[ruleIndex]->getMethods();
             res.result(boost::beast::http::status::not_found);
             res.end();
@@ -1131,7 +1148,7 @@
         }
 
         BMCWEB_LOG_DEBUG << "Matched rule (upgrade) '" << rules[ruleIndex]->rule
-                         << "' " << (uint32_t)req.method() << " / "
+                         << "' " << static_cast<uint32_t>(req.method()) << " / "
                          << rules[ruleIndex]->getMethods();
 
         // any uncaught exceptions become 500s
@@ -1159,9 +1176,9 @@
 
     void handle(const Request& req, Response& res)
     {
-        if ((int)req.method() >= perMethods.size())
+        if (static_cast<size_t>(req.method()) >= perMethods.size())
             return;
-        PerMethod& perMethod = perMethods[(int)req.method()];
+        PerMethod& perMethod = perMethods[static_cast<size_t>(req.method())];
         Trie& trie = perMethod.trie;
         std::vector<BaseRule*>& rules = perMethod.rules;
 
@@ -1214,12 +1231,12 @@
             return;
         }
 
-        if ((rules[ruleIndex]->getMethods() & (1 << (uint32_t)req.method())) ==
-            0)
+        if ((rules[ruleIndex]->getMethods() &
+             (1U << static_cast<uint32_t>(req.method()))) == 0)
         {
             BMCWEB_LOG_DEBUG << "Rule found but method mismatch: " << req.url
                              << " with " << req.methodString() << "("
-                             << (uint32_t)req.method() << ") / "
+                             << static_cast<uint32_t>(req.method()) << ") / "
                              << rules[ruleIndex]->getMethods();
             res.result(boost::beast::http::status::method_not_allowed);
             res.end();
@@ -1227,7 +1244,7 @@
         }
 
         BMCWEB_LOG_DEBUG << "Matched rule '" << rules[ruleIndex]->rule << "' "
-                         << (uint32_t)req.method() << " / "
+                         << static_cast<uint32_t>(req.method()) << " / "
                          << rules[ruleIndex]->getMethods();
 
         redfish::Privileges userPrivileges;
@@ -1276,9 +1293,10 @@
 
     void debugPrint()
     {
-        for (int i = 0; i < perMethods.size(); i++)
+        for (size_t i = 0; i < perMethods.size(); i++)
         {
-            BMCWEB_LOG_DEBUG << methodName((boost::beast::http::verb)i);
+            BMCWEB_LOG_DEBUG
+                << methodName(static_cast<boost::beast::http::verb>(i));
             perMethods[i].trie.debugPrint();
         }
     }
diff --git a/crow/include/crow/settings.h b/crow/include/crow/settings.h
index 8cb1219..959eb95 100644
--- a/crow/include/crow/settings.h
+++ b/crow/include/crow/settings.h
@@ -2,15 +2,6 @@
 // settings for crow
 // TODO - replace with runtime config. libucl?
 
-/* #ifdef - enables debug mode */
-//#define BMCWEB_ENABLE_DEBUG
-
-/* #ifdef - enables logging */
-//#define BMCWEB_ENABLE_LOGGING
-
-/* #ifdef - enables ssl */
-//#define BMCWEB_ENABLE_SSL
-
 /* #define - specifies log level */
 /*
     Debug       = 0
@@ -23,13 +14,6 @@
 */
 #define BMCWEB_LOG_LEVEL 1
 
-// compiler flags
-#if __cplusplus >= 201402L
-#define BMCWEB_CAN_USE_CPP14
-#endif
-
 #if defined(_MSC_VER)
-#if _MSC_VER < 1900
-#error "MSVC versions betfore VS2015 are not supported"
-#endif
+#error "MSVC is not supported"
 #endif
diff --git a/crow/include/crow/timer_queue.h b/crow/include/crow/timer_queue.h
index bf1e084..35e4048 100644
--- a/crow/include/crow/timer_queue.h
+++ b/crow/include/crow/timer_queue.h
@@ -20,20 +20,20 @@
         dq.set_capacity(100);
     }
 
-    void cancel(int k)
+    void cancel(size_t k)
     {
-        unsigned int index = static_cast<unsigned int>(k - step);
+        size_t index = k - step;
         if (index < dq.size())
         {
             dq[index].second = nullptr;
         }
     }
 
-    int add(std::function<void()> f)
+    size_t add(std::function<void()> f)
     {
         dq.push_back(
             std::make_pair(std::chrono::steady_clock::now(), std::move(f)));
-        int ret = step + dq.size() - 1;
+        size_t ret = step + dq.size() - 1;
 
         BMCWEB_LOG_DEBUG << "timer add inside: " << this << ' ' << ret;
         return ret;
@@ -72,7 +72,7 @@
 
     // boost::circular_buffer<storage_type> dq{20};
     // std::deque<storage_type> dq{};
-    int step{};
+    size_t step{};
 };
 } // namespace detail
 } // namespace crow
diff --git a/crow/include/crow/utility.h b/crow/include/crow/utility.h
index b402b79..d08d548 100644
--- a/crow/include/crow/utility.h
+++ b/crow/include/crow/utility.h
@@ -173,8 +173,8 @@
     {
         return a == 0;
     }
-    int sa = a % 6;
-    int sb = a % 6;
+    uint64_t sa = a % 6;
+    uint64_t sb = a % 6;
     if (sa == 5)
     {
         sa = 4;
@@ -291,7 +291,7 @@
     static constexpr bool value = sizeof(__test<F, Args...>(0)) == sizeof(char);
 };
 
-template <int N> struct SingleTagToType
+template <uint64_t N> struct SingleTagToType
 {
 };
 
@@ -360,10 +360,10 @@
 
 template <class S1, class S2> using Concat = Invoke<concat<S1, S2>>;
 
-template <unsigned N> struct gen_seq;
-template <unsigned N> using GenSeq = Invoke<gen_seq<N>>;
+template <size_t N> struct gen_seq;
+template <size_t N> using GenSeq = Invoke<gen_seq<N>>;
 
-template <unsigned N> struct gen_seq : Concat<GenSeq<N / 2>, GenSeq<N - N / 2>>
+template <size_t N> struct gen_seq : Concat<GenSeq<N / 2>, GenSeq<N - N / 2>>
 {
 };
 
@@ -388,7 +388,7 @@
 {
     template <template <typename... Args> class U>
     using rebind =
-        typename PopBackHelper<typename gen_seq<sizeof...(T) - 1>::type,
+        typename PopBackHelper<typename gen_seq<sizeof...(T) - 1UL>::type,
                                std::tuple<T...>>::template rebind<U>;
 };
 
@@ -452,19 +452,19 @@
 template <class T, std::size_t N, class... Args>
 struct GetIndexOfElementFromTupleByTypeImpl
 {
-    static constexpr auto value = N;
+    static constexpr std::size_t value = N;
 };
 
 template <class T, std::size_t N, class... Args>
 struct GetIndexOfElementFromTupleByTypeImpl<T, N, T, Args...>
 {
-    static constexpr auto value = N;
+    static constexpr std::size_t value = N;
 };
 
 template <class T, std::size_t N, class U, class... Args>
 struct GetIndexOfElementFromTupleByTypeImpl<T, N, U, Args...>
 {
-    static constexpr auto value =
+    static constexpr std::size_t value =
         GetIndexOfElementFromTupleByTypeImpl<T, N + 1, Args...>::value;
 };
 
@@ -532,29 +532,34 @@
     auto it = ret.begin();
     while (size >= 3)
     {
-        *it++ = key[(((unsigned char)*data) & 0xFC) >> 2];
-        unsigned char h = (((unsigned char)*data++) & 0x03) << 4;
-        *it++ = key[h | ((((unsigned char)*data) & 0xF0) >> 4)];
-        h = (((unsigned char)*data++) & 0x0F) << 2;
-        *it++ = key[h | ((((unsigned char)*data) & 0xC0) >> 6)];
-        *it++ = key[((unsigned char)*data++) & 0x3F];
+        *it++ = key[(static_cast<unsigned char>(*data) & 0xFC) >> 2];
+        unsigned char h = static_cast<unsigned char>(
+            (static_cast<unsigned char>(*data++) & 0x03u) << 4u);
+        *it++ = key[h | ((static_cast<unsigned char>(*data) & 0xF0) >> 4)];
+        h = static_cast<unsigned char>(
+            (static_cast<unsigned char>(*data++) & 0x0F) << 2u);
+        *it++ = key[h | ((static_cast<unsigned char>(*data) & 0xC0) >> 6)];
+        *it++ = key[static_cast<unsigned char>(*data++) & 0x3F];
 
         size -= 3;
     }
     if (size == 1)
     {
-        *it++ = key[(((unsigned char)*data) & 0xFC) >> 2];
-        unsigned char h = (((unsigned char)*data++) & 0x03) << 4;
+        *it++ = key[(static_cast<unsigned char>(*data) & 0xFC) >> 2];
+        unsigned char h = static_cast<unsigned char>(
+            (static_cast<unsigned char>(*data++) & 0x03) << 4u);
         *it++ = key[h];
         *it++ = '=';
         *it++ = '=';
     }
     else if (size == 2)
     {
-        *it++ = key[(((unsigned char)*data) & 0xFC) >> 2];
-        unsigned char h = (((unsigned char)*data++) & 0x03) << 4;
-        *it++ = key[h | ((((unsigned char)*data) & 0xF0) >> 4)];
-        h = (((unsigned char)*data++) & 0x0F) << 2;
+        *it++ = key[(static_cast<unsigned char>(*data) & 0xFC) >> 2];
+        unsigned char h = static_cast<unsigned char>(
+            (static_cast<unsigned char>(*data++) & 0x03) << 4u);
+        *it++ = key[h | ((static_cast<unsigned char>(*data) & 0xF0) >> 4)];
+        h = static_cast<unsigned char>(
+            (static_cast<unsigned char>(*data++) & 0x0F) << 2u);
         *it++ = key[h];
         *it++ = '=';
     }
@@ -572,7 +577,7 @@
 // crow
 inline bool base64Decode(const std::string_view input, std::string& output)
 {
-    static const char nop = -1;
+    static const char nop = static_cast<char>(-1);
     // See note on encoding_data[] in above function
     static const char decodingData[] = {
         nop, nop, nop, nop, nop, nop, nop, nop, nop, nop, nop, nop, nop, nop,
@@ -671,7 +676,7 @@
     std::string buffer;
     // less than 5% of characters should be larger, so reserve a buffer of the
     // right size
-    buffer.reserve(data.size() * 1.05);
+    buffer.reserve(data.size() * 11 / 10);
     for (size_t pos = 0; pos != data.size(); ++pos)
     {
         switch (data[pos])
diff --git a/crow/include/crow/websocket.h b/crow/include/crow/websocket.h
index 301f394..7166c82 100644
--- a/crow/include/crow/websocket.h
+++ b/crow/include/crow/websocket.h
@@ -18,8 +18,8 @@
 struct Connection : std::enable_shared_from_this<Connection>
 {
   public:
-    explicit Connection(const crow::Request& req) :
-        req(req), userdataPtr(nullptr){};
+    explicit Connection(const crow::Request& reqIn) :
+        req(reqIn), userdataPtr(nullptr){};
 
     virtual void sendBinary(const std::string_view msg) = 0;
     virtual void sendBinary(std::string&& msg) = 0;
@@ -48,13 +48,13 @@
 {
   public:
     ConnectionImpl(
-        const crow::Request& req, Adaptor adaptorIn,
+        const crow::Request& reqIn, Adaptor adaptorIn,
         std::function<void(Connection&)> open_handler,
         std::function<void(Connection&, const std::string&, bool)>
             message_handler,
         std::function<void(Connection&, const std::string&)> close_handler,
         std::function<void(Connection&)> error_handler) :
-        Connection(req),
+        Connection(reqIn),
         ws(std::move(adaptorIn)), inString(), inBuffer(inString, 131088),
         openHandler(std::move(open_handler)),
         messageHandler(std::move(message_handler)),
@@ -66,7 +66,8 @@
 
     boost::asio::io_context& get_io_context() override
     {
-        return (boost::asio::io_context&)ws.get_executor().context();
+        return static_cast<boost::asio::io_context&>(
+            ws.get_executor().context());
     }
 
     void start()
diff --git a/include/dbus_monitor.hpp b/include/dbus_monitor.hpp
index 1b82697..8c46cf4 100644
--- a/include/dbus_monitor.hpp
+++ b/include/dbus_monitor.hpp
@@ -109,7 +109,7 @@
 
     connection->sendText(j.dump());
     return 0;
-};
+}
 
 template <typename... Middlewares> void requestRoutes(Crow<Middlewares...>& app)
 {
@@ -150,7 +150,7 @@
             nlohmann::json::iterator paths = j.find("paths");
             if (paths != j.end())
             {
-                int interfaceCount = thisSession.interfaces.size();
+                size_t interfaceCount = thisSession.interfaces.size();
                 if (interfaceCount == 0)
                 {
                     interfaceCount = 1;
@@ -160,7 +160,7 @@
                 // PropertiesChanged
                 thisSession.matches.reserve(thisSession.matches.size() +
                                             paths->size() *
-                                                (1 + interfaceCount));
+                                                (1U + interfaceCount));
             }
             std::string object_manager_match_string;
             std::string properties_match_string;
diff --git a/include/dbus_utility.hpp b/include/dbus_utility.hpp
index 2dd3d97..ac5970d 100644
--- a/include/dbus_utility.hpp
+++ b/include/dbus_utility.hpp
@@ -53,9 +53,9 @@
                                  std::string& result)
 {
     int count = 0;
-    auto first = path.begin();
-    auto last = path.end();
-    for (auto it = path.begin(); it < path.end(); it++)
+    std::string::const_iterator first = path.begin();
+    std::string::const_iterator last = path.end();
+    for (std::string::const_iterator it = path.begin(); it < path.end(); it++)
     {
         // skip first character as it's either a leading slash or the first
         // character in the word
@@ -85,7 +85,8 @@
     {
         first++;
     }
-    result = path.substr(first - path.begin(), last - first);
+    result = path.substr(static_cast<size_t>(first - path.begin()),
+                         static_cast<size_t>(last - first));
     return true;
 }
 
diff --git a/include/image_upload.hpp b/include/image_upload.hpp
index 867d1bc..529e056 100644
--- a/include/image_upload.hpp
+++ b/include/image_upload.hpp
@@ -29,10 +29,10 @@
         return;
     }
     // Make this const static so it survives outside this method
-    static boost::asio::deadline_timer timeout(*req.ioService,
-                                               boost::posix_time::seconds(5));
+    static boost::asio::steady_timer timeout(*req.ioService,
+                                             std::chrono::seconds(5));
 
-    timeout.expires_from_now(boost::posix_time::seconds(15));
+    timeout.expires_after(std::chrono::seconds(15));
 
     auto timeoutHandler = [&res](const boost::system::error_code& ec) {
         fwUpdateMatcher = nullptr;
@@ -76,12 +76,7 @@
                                         "xyz.openbmc_project.Software.Version";
                              }) != interfaces.end())
             {
-                boost::system::error_code ec;
-                timeout.cancel(ec);
-                if (ec)
-                {
-                    BMCWEB_LOG_ERROR << "error canceling timer " << ec;
-                }
+                timeout.cancel();
 
                 std::size_t index = path.str.rfind('/');
                 if (index != std::string::npos)
diff --git a/include/kvm_websocket.hpp b/include/kvm_websocket.hpp
index db42ab8..9fc3926 100644
--- a/include/kvm_websocket.hpp
+++ b/include/kvm_websocket.hpp
@@ -17,7 +17,7 @@
 {
   public:
     explicit KvmSession(crow::websocket::Connection& conn) :
-        conn(conn), doingWrite(false), hostSocket(conn.get_io_context())
+        conn(conn), hostSocket(conn.get_io_context()), doingWrite(false)
     {
         boost::asio::ip::tcp::endpoint endpoint(
             boost::asio::ip::make_address("::1"), 5900);
diff --git a/include/obmc_console.hpp b/include/obmc_console.hpp
index ca723d3..25f3b39 100644
--- a/include/obmc_console.hpp
+++ b/include/obmc_console.hpp
@@ -44,7 +44,7 @@
 
             if (ec == boost::asio::error::eof)
             {
-                for (auto session : sessions)
+                for (crow::websocket::Connection* session : sessions)
                 {
                     session->close("Error in reading to host port");
                 }
@@ -70,14 +70,14 @@
             {
                 BMCWEB_LOG_ERROR << "Couldn't read from host serial port: "
                                  << ec;
-                for (auto session : sessions)
+                for (crow::websocket::Connection* session : sessions)
                 {
                     session->close("Error in connecting to host port");
                 }
                 return;
             }
             std::string_view payload(outputBuffer.data(), bytesRead);
-            for (auto session : sessions)
+            for (crow::websocket::Connection* session : sessions)
             {
                 session->sendBinary(payload);
             }
@@ -90,7 +90,7 @@
     if (ec)
     {
         BMCWEB_LOG_ERROR << "Couldn't connect to host serial port: " << ec;
-        for (auto session : sessions)
+        for (crow::websocket::Connection* session : sessions)
         {
             session->close("Error in connecting to host port");
         }
diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp
index 7839e65..775e6e1 100644
--- a/include/openbmc_dbus_rest.hpp
+++ b/include/openbmc_dbus_rest.hpp
@@ -564,8 +564,8 @@
             {
                 return -1;
             }
-            r = sd_bus_message_append_basic(m, argCode[0],
-                                            (void *)stringValue->c_str());
+            r = sd_bus_message_append_basic(
+                m, argCode[0], static_cast<const void *>(stringValue->data()));
             if (r < 0)
             {
                 return r;
@@ -1640,8 +1640,8 @@
         },
         "xyz.openbmc_project.ObjectMapper",
         "/xyz/openbmc_project/object_mapper",
-        "xyz.openbmc_project.ObjectMapper", "GetSubTree", objectPath,
-        static_cast<int32_t>(0), std::array<const char *, 0>());
+        "xyz.openbmc_project.ObjectMapper", "GetSubTree", objectPath, 0,
+        std::array<const char *, 0>());
 }
 
 void handleGet(crow::Response &res, std::string &objectPath,
@@ -2500,14 +2500,15 @@
                                     propertiesObj[name];
                                 crow::connections::systemBus->async_send(
                                     m, [&propertyItem, asyncResp](
-                                           boost::system::error_code &ec,
-                                           sdbusplus::message::message &m) {
-                                        if (ec)
+                                           boost::system::error_code &e,
+                                           sdbusplus::message::message &msg) {
+                                        if (e)
                                         {
                                             return;
                                         }
 
-                                        convertDBusToJSON("v", m, propertyItem);
+                                        convertDBusToJSON("v", msg,
+                                                          propertyItem);
                                     });
                             }
                             property = property->NextSiblingElement("property");
diff --git a/include/pam_authenticate.hpp b/include/pam_authenticate.hpp
index f211a29..1469aef 100644
--- a/include/pam_authenticate.hpp
+++ b/include/pam_authenticate.hpp
@@ -25,7 +25,7 @@
     std::strcpy(pass, appPass);
 
     *resp = reinterpret_cast<pam_response*>(
-        calloc(numMsg, sizeof(struct pam_response)));
+        calloc(static_cast<size_t>(numMsg), sizeof(struct pam_response)));
 
     if (resp == nullptr)
     {
diff --git a/include/persistent_data_middleware.hpp b/include/persistent_data_middleware.hpp
index 1162fc5..5d7e97c 100644
--- a/include/persistent_data_middleware.hpp
+++ b/include/persistent_data_middleware.hpp
@@ -25,7 +25,7 @@
 
 class Middleware
 {
-    int jsonRevision = 1;
+    uint64_t jsonRevision = 1;
 
   public:
     // todo(ed) should read this from a fixed location somewhere, not CWD
@@ -62,7 +62,7 @@
     void readData()
     {
         std::ifstream persistentFile(filename);
-        int fileRevision = 0;
+        uint64_t fileRevision = 0;
         if (persistentFile.is_open())
         {
             // call with exceptions disabled
diff --git a/include/sessions.hpp b/include/sessions.hpp
index 2900cd5..b183a0e 100644
--- a/include/sessions.hpp
+++ b/include/sessions.hpp
@@ -362,22 +362,22 @@
         // https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Session_ID_Entropy
         std::string sessionToken;
         sessionToken.resize(20, '0');
-        std::uniform_int_distribution<int> dist(0, alphanum.size() - 1);
-        for (int i = 0; i < sessionToken.size(); ++i)
+        std::uniform_int_distribution<size_t> dist(0, alphanum.size() - 1);
+        for (size_t i = 0; i < sessionToken.size(); ++i)
         {
             sessionToken[i] = alphanum[dist(rd)];
         }
         // Only need csrf tokens for cookie based auth, token doesn't matter
         std::string csrfToken;
         csrfToken.resize(20, '0');
-        for (int i = 0; i < csrfToken.size(); ++i)
+        for (size_t i = 0; i < csrfToken.size(); ++i)
         {
             csrfToken[i] = alphanum[dist(rd)];
         }
 
         std::string uniqueId;
         uniqueId.resize(10, '0');
-        for (int i = 0; i < uniqueId.size(); ++i)
+        for (size_t i = 0; i < uniqueId.size(); ++i)
         {
             uniqueId[i] = alphanum[dist(rd)];
         }
@@ -449,7 +449,7 @@
     {
         return needWrite;
     }
-    int getTimeoutInSeconds() const
+    int64_t getTimeoutInSeconds() const
     {
         return std::chrono::seconds(timeoutInMinutes).count();
     };
diff --git a/include/ssl_key_handler.hpp b/include/ssl_key_handler.hpp
index ce6d9fa..d634d63 100644
--- a/include/ssl_key_handler.hpp
+++ b/include/ssl_key_handler.hpp
@@ -17,10 +17,7 @@
 namespace ensuressl
 {
 static void initOpenssl();
-static void cleanupOpenssl();
-static EVP_PKEY *createRsaKey();
 static EVP_PKEY *createEcKey();
-static void handleOpensslError();
 
 // Trust chain related errors.`
 inline bool isTrustChainError(int errnum)
@@ -112,7 +109,6 @@
     if (file != NULL)
     {
         EVP_PKEY *pkey = PEM_read_PrivateKey(file, NULL, NULL, NULL);
-        int rc;
         if (pkey != nullptr)
         {
             RSA *rsa = EVP_PKEY_get1_RSA(pkey);
@@ -200,7 +196,7 @@
             // number If this is not random, regenerating certs throws broswer
             // errors
             std::random_device rd;
-            int serial = rd();
+            int serial = static_cast<int>(rd());
 
             ASN1_INTEGER_set(X509_get_serialNumber(x509), serial);
 
@@ -254,45 +250,6 @@
     // cleanup_openssl();
 }
 
-EVP_PKEY *createRsaKey()
-{
-    RSA *pRSA = NULL;
-#if OPENSSL_VERSION_NUMBER < 0x00908000L
-    pRSA = RSA_generate_key(2048, RSA_3, NULL, NULL);
-#else
-    RSA_generate_key_ex(pRSA, 2048, NULL, NULL);
-#endif
-
-    EVP_PKEY *pKey = EVP_PKEY_new();
-    if ((pRSA != nullptr) && (pKey != nullptr) &&
-        EVP_PKEY_assign_RSA(pKey, pRSA))
-    {
-        /* pKey owns pRSA from now */
-        if (RSA_check_key(pRSA) <= 0)
-        {
-            fprintf(stderr, "RSA_check_key failed.\n");
-            handleOpensslError();
-            EVP_PKEY_free(pKey);
-            pKey = NULL;
-        }
-    }
-    else
-    {
-        handleOpensslError();
-        if (pRSA != nullptr)
-        {
-            RSA_free(pRSA);
-            pRSA = NULL;
-        }
-        if (pKey != nullptr)
-        {
-            EVP_PKEY_free(pKey);
-            pKey = NULL;
-        }
-    }
-    return pKey;
-}
-
 EVP_PKEY *createEcKey()
 {
     EVP_PKEY *pKey = NULL;
@@ -329,20 +286,6 @@
 #endif
 }
 
-void cleanupOpenssl()
-{
-    CRYPTO_cleanup_all_ex_data();
-    ERR_free_strings();
-#if OPENSSL_VERSION_NUMBER < 0x10100000L
-    ERR_remove_thread_state(0);
-#endif
-    EVP_cleanup();
-}
-
-void handleOpensslError()
-{
-    ERR_print_errors_fp(stderr);
-}
 inline void ensureOpensslKeyPresentAndValid(const std::string &filepath)
 {
     bool pemFileValid = false;
diff --git a/include/vm_websocket.hpp b/include/vm_websocket.hpp
index 3f229e6..6485920 100644
--- a/include/vm_websocket.hpp
+++ b/include/vm_websocket.hpp
@@ -23,8 +23,8 @@
 class Handler : public std::enable_shared_from_this<Handler>
 {
   public:
-    Handler(const std::string& media, boost::asio::io_service& ios) :
-        pipeOut(ios), pipeIn(ios), media(media), doingWrite(false),
+    Handler(const std::string& mediaIn, boost::asio::io_context& ios) :
+        pipeOut(ios), pipeIn(ios), media(mediaIn), doingWrite(false),
         outputBuffer(new boost::beast::flat_static_buffer<nbdBufferSize>),
         inputBuffer(new boost::beast::flat_static_buffer<nbdBufferSize>)
     {
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"});
     }
diff --git a/scripts/parse_registries.py b/scripts/parse_registries.py
index 3eff312..572fe7e 100644
--- a/scripts/parse_registries.py
+++ b/scripts/parse_registries.py
@@ -41,7 +41,7 @@
 
 SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
 
-include_path = os.path.realpath(os.path.join(SCRIPT_DIR, "..", "redfish-core", "include"))
+include_path = os.path.realpath(os.path.join(SCRIPT_DIR, "..", "redfish-core", "include", "registries"))
 
 proxies = {
     'https': os.environ.get("https_proxy", None)
@@ -65,15 +65,15 @@
         registry.write(REGISTRY_HEADER.format(namespace))
         # Parse the Registry header info
         registry.write("const Header header = {")
-        registry.write(".copyright = \"{}\",".format(json["@Redfish.Copyright"]))
-        registry.write(".type = \"{}\",".format(json["@odata.type"]))
-        registry.write(".id = \"{}\",".format(json["Id"]))
-        registry.write(".name = \"{}\",".format(json["Name"]))
-        registry.write(".language = \"{}\",".format(json["Language"]))
-        registry.write(".description = \"{}\",".format(json["Description"]))
-        registry.write(".registryPrefix = \"{}\",".format(json["RegistryPrefix"]))
-        registry.write(".registryVersion = \"{}\",".format(json["RegistryVersion"]))
-        registry.write(".owningEntity = \"{}\",".format(json["OwningEntity"]))
+        registry.write("\"{}\",".format(json["@Redfish.Copyright"]))
+        registry.write("\"{}\",".format(json["@odata.type"]))
+        registry.write("\"{}\",".format(json["Id"]))
+        registry.write(".\"{}\",".format(json["Name"]))
+        registry.write("\"{}\",".format(json["Language"]))
+        registry.write("\"{}\",".format(json["Description"]))
+        registry.write(".\"{}\",".format(json["RegistryPrefix"]))
+        registry.write("\"{}\",".format(json["RegistryVersion"]))
+        registry.write("\"{}\",".format(json["OwningEntity"]))
         registry.write("};")
 
         # Parse each Message entry
@@ -82,17 +82,17 @@
             registry.write("MessageEntry{")
             registry.write("\"{}\",".format(messageId))
             registry.write("{")
-            registry.write(".description = \"{}\",".format(message["Description"]))
-            registry.write(".message = \"{}\",".format(message["Message"]))
-            registry.write(".severity = \"{}\",".format(message["Severity"]))
-            registry.write(".numberOfArgs = {},".format(message["NumberOfArgs"]))
-            registry.write(".paramTypes = {")
+            registry.write("\"{}\",".format(message["Description"]))
+            registry.write("\"{}\",".format(message["Message"]))
+            registry.write("\"{}\",".format(message["Severity"]))
+            registry.write("{},".format(message["NumberOfArgs"]))
+            registry.write("{")
             paramTypes = message.get("ParamTypes")
             if paramTypes:
                 for paramType in paramTypes:
                     registry.write("\"{}\",".format(paramType))
             registry.write("},")
-            registry.write(".resolution = \"{}\",".format(message["Resolution"]))
+            registry.write("\"{}\",".format(message["Resolution"]))
             registry.write("}},")
         registry.write("};}\n")
-    subprocess.check_call(["clang-format", "-i", file])
+    subprocess.check_call(["clang-format-6.0", "-i", file])
diff --git a/src/crow_test.cpp b/src/crow_test.cpp
index beefdee..f427a2f 100644
--- a/src/crow_test.cpp
+++ b/src/crow_test.cpp
@@ -5,8 +5,6 @@
 #include "crow.h"
 
 #include "gtest/gtest.h"
-#undef BMCWEB_LOG_LEVEL
-#define BMCWEB_LOG_LEVEL 0
 
 using namespace std;
 using namespace crow;
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp
index 602c216..c477581 100644
--- a/src/webserver_main.cpp
+++ b/src/webserver_main.cpp
@@ -56,7 +56,7 @@
 
 int main(int argc, char** argv)
 {
-    crow::logger::setLogLevel(crow::LogLevel::DEBUG);
+    crow::logger::setLogLevel(crow::LogLevel::Debug);
 
     auto io = std::make_shared<boost::asio::io_context>();
     CrowApp app(io);