diff --git a/redfish-core/src/error_messages.cpp b/redfish-core/src/error_messages.cpp
index f10a4a1..cfbc9c2 100644
--- a/redfish-core/src/error_messages.cpp
+++ b/redfish-core/src/error_messages.cpp
@@ -107,7 +107,7 @@
 nlohmann::json resourceInUse(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceInUse"},
         {"Message", "The change to the requested resource failed because "
                     "the resource is in use or in transition."},
@@ -133,7 +133,7 @@
 nlohmann::json malformedJSON(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.MalformedJSON"},
         {"Message", "The request body submitted was malformed JSON and "
                     "could not be parsed by the receiving service."},
@@ -159,7 +159,7 @@
 nlohmann::json resourceMissingAtURI(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceMissingAtURI"},
         {"Message", "The resource at the URI " + arg1 + " was not found."},
         {"MessageArgs", {arg1}},
@@ -186,7 +186,7 @@
                                                const std::string& arg3)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ActionParameterValueFormatError"},
         {"Message",
          "The value " + arg1 + " for the parameter " + arg2 +
@@ -219,7 +219,7 @@
 nlohmann::json internalError(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.InternalError"},
         {"Message", "The request failed due to an internal service error.  "
                     "The service is still operational."},
@@ -245,7 +245,7 @@
 nlohmann::json unrecognizedRequestBody(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.UnrecognizedRequestBody"},
         {"Message", "The service detected a malformed request body that it "
                     "was unable to interpret."},
@@ -272,7 +272,7 @@
                                          const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceAtUriUnauthorized"},
         {"Message", "While accessing the resource at " + arg1 +
                         ", the service received an authorization error " +
@@ -301,7 +301,7 @@
                                       const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ActionParameterUnknown"},
         {"Message", "The action " + arg1 +
                         " was submitted with the invalid parameter " + arg2 +
@@ -329,7 +329,7 @@
 nlohmann::json resourceCannotBeDeleted(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceCannotBeDeleted"},
         {"Message", "The delete request failed because the resource "
                     "requested cannot be deleted."},
@@ -354,7 +354,7 @@
 nlohmann::json propertyDuplicate(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyDuplicate"},
         {"Message", "The property " + arg1 + " was duplicated in the request."},
         {"MessageArgs", {arg1}},
@@ -380,7 +380,7 @@
 nlohmann::json serviceTemporarilyUnavailable(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ServiceTemporarilyUnavailable"},
         {"Message", "The service is temporarily unavailable.  Retry in " +
                         arg1 + " seconds."},
@@ -409,7 +409,7 @@
                                      const std::string& arg3)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceAlreadyExists"},
         {"Message", "The requested resource of type " + arg1 +
                         " with the property " + arg2 + " with the value " +
@@ -438,7 +438,7 @@
 nlohmann::json accountForSessionNoLongerExists(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.AccountForSessionNoLongerExists"},
         {"Message", "The account for the current session has been removed, "
                     "thus the current session has been removed as well."},
@@ -463,7 +463,7 @@
 nlohmann::json createFailedMissingReqProperties(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.CreateFailedMissingReqProperties"},
         {"Message",
          "The create operation failed because the required property " + arg1 +
@@ -495,7 +495,7 @@
                                         const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyValueFormatError"},
         {"Message",
          "The value " + arg1 + " for the property " + arg2 +
@@ -526,7 +526,7 @@
                                       const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyValueNotInList"},
         {"Message", "The value " + arg1 + " for the property " + arg2 +
                         " is not in the list of acceptable values."},
@@ -555,7 +555,7 @@
 nlohmann::json resourceAtUriInUnknownFormat(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceAtUriInUnknownFormat"},
         {"Message", "The resource at " + arg1 +
                         " is in a format not recognized by the service."},
@@ -581,7 +581,7 @@
 nlohmann::json serviceInUnknownState(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ServiceInUnknownState"},
         {"Message",
          "The operation failed because the service is in an unknown state "
@@ -608,7 +608,7 @@
 nlohmann::json eventSubscriptionLimitExceeded(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.EventSubscriptionLimitExceeded"},
         {"Message",
          "The event subscription failed due to the number of simultaneous "
@@ -638,7 +638,7 @@
                                       const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ActionParameterMissing"},
         {"Message", "The action " + arg1 + " requires the parameter " + arg2 +
                         " to be present in the request body."},
@@ -666,7 +666,7 @@
 nlohmann::json stringValueTooLong(const std::string& arg1, const int& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.StringValueTooLong"},
         {"Message", "The string " + arg1 + " exceeds the length limit " +
                         std::to_string(arg2) + "."},
@@ -693,7 +693,7 @@
 nlohmann::json sessionTerminated(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.SessionTerminated"},
         {"Message", "The session was successfully terminated."},
         {"MessageArgs", nlohmann::json::array()},
@@ -717,7 +717,7 @@
 nlohmann::json subscriptionTerminated(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.SubscriptionTerminated"},
         {"Message", "The event subscription has been terminated."},
         {"MessageArgs", nlohmann::json::array()},
@@ -742,7 +742,7 @@
                                         const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceTypeIncompatible"},
         {"Message", "The @odata.type of the request body " + arg1 +
                         " is incompatible with the @odata.type of the "
@@ -771,7 +771,7 @@
 nlohmann::json resetRequired(const std::string& arg1, const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResetRequired"},
         {"Message", "In order to complete the operation, a component reset is "
                     "required with the Reset action URI '" +
@@ -799,7 +799,7 @@
 nlohmann::json chassisPowerStateOnRequired(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ChassisPowerStateOnRequired"},
         {"Message", "The Chassis with Id '" + arg1 +
                         "' requires to be powered on to perform this request."},
@@ -825,7 +825,7 @@
 nlohmann::json chassisPowerStateOffRequired(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ChassisPowerStateOffRequired"},
         {"Message",
          "The Chassis with Id '" + arg1 +
@@ -853,7 +853,7 @@
                                      const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyValueConflict"},
         {"Message", "The property '" + arg1 +
                         "' could not be written because its value would "
@@ -882,7 +882,7 @@
                                       const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyValueIncorrect"},
         {"Message", "The property '" + arg1 +
                         "' with the requested value of '" + arg2 +
@@ -910,7 +910,7 @@
 nlohmann::json resourceCreationConflict(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceCreationConflict"},
         {"Message", "The resource could not be created.  The service has a "
                     "resource at URI '" +
@@ -936,7 +936,7 @@
 nlohmann::json maximumErrorsExceeded(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.MaximumErrorsExceeded"},
         {"Message", "Too many errors have occurred to report them all."},
         {"MessageArgs", nlohmann::json::array()},
@@ -961,7 +961,7 @@
 nlohmann::json preconditionFailed(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PreconditionFailed"},
         {"Message", "The ETag supplied did not match the ETag required to "
                     "change this resource."},
@@ -986,7 +986,7 @@
 nlohmann::json preconditionRequired(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PreconditionRequired"},
         {"Message", "A precondition header or annotation is required to change "
                     "this resource."},
@@ -1012,7 +1012,7 @@
 nlohmann::json operationFailed(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.OperationFailed"},
         {"Message",
          "An error occurred internal to the service as part of the overall "
@@ -1039,7 +1039,7 @@
 nlohmann::json operationTimeout(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.OperationTimeout"},
         {"Message", "A timeout internal to the service occured as part of the "
                     "request.  Partial results may have been returned."},
@@ -1067,7 +1067,7 @@
                                       const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyValueTypeError"},
         {"Message",
          "The value " + arg1 + " for the property " + arg2 +
@@ -1097,7 +1097,7 @@
                                 const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceNotFound"},
         {"Message", "The requested resource of type " + arg1 + " named " +
                         arg2 + " was not found."},
@@ -1124,7 +1124,7 @@
 nlohmann::json couldNotEstablishConnection(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.CouldNotEstablishConnection"},
         {"Message",
          "The service failed to establish a connection with the URI " + arg1 +
@@ -1153,7 +1153,7 @@
 nlohmann::json propertyNotWritable(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyNotWritable"},
         {"Message", "The property " + arg1 +
                         " is a read only property and cannot be "
@@ -1181,7 +1181,7 @@
                                             const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.QueryParameterValueTypeError"},
         {"Message",
          "The value " + arg1 + " for the query parameter " + arg2 +
@@ -1211,7 +1211,7 @@
 nlohmann::json serviceShuttingDown(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ServiceShuttingDown"},
         {"Message", "The operation failed because the service is shutting "
                     "down and can no longer take incoming requests."},
@@ -1238,7 +1238,7 @@
                                         const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ActionParameterDuplicate"},
         {"Message",
          "The action " + arg1 +
@@ -1269,7 +1269,7 @@
                                            const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ActionParameterNotSupported"},
         {"Message", "The parameter " + arg1 + " for the action " + arg2 +
                         " is not supported on the target resource."},
@@ -1298,7 +1298,7 @@
                                             const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.SourceDoesNotSupportProtocol"},
         {"Message", "The other end of the connection at " + arg1 +
                         " does not support the specified protocol " + arg2 +
@@ -1325,7 +1325,7 @@
  */
 nlohmann::json accountRemoved(void)
 {
-    return nlohmann::json{{"@odata.type", "#Message.v1_0_0.Message"},
+    return nlohmann::json{{"@odata.type", "#Message.v1_1_1.Message"},
                           {"MessageId", "Base.1.8.1.AccountRemoved"},
                           {"Message", "The account was successfully removed."},
                           {"MessageArgs", nlohmann::json::array()},
@@ -1349,7 +1349,7 @@
 nlohmann::json accessDenied(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.AccessDenied"},
         {"Message", "While attempting to establish a connection to " + arg1 +
                         ", the service denied access."},
@@ -1375,7 +1375,7 @@
 nlohmann::json queryNotSupported(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.QueryNotSupported"},
         {"Message", "Querying is not supported by the implementation."},
         {"MessageArgs", nlohmann::json::array()},
@@ -1400,7 +1400,7 @@
 nlohmann::json createLimitReachedForResource(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.CreateLimitReachedForResource"},
         {"Message", "The create operation failed because the resource has "
                     "reached the limit of possible resources."},
@@ -1426,7 +1426,7 @@
  */
 nlohmann::json generalError(void)
 {
-    return nlohmann::json{{"@odata.type", "#Message.v1_0_0.Message"},
+    return nlohmann::json{{"@odata.type", "#Message.v1_1_1.Message"},
                           {"MessageId", "Base.1.8.1.GeneralError"},
                           {"Message",
                            "A general error has occurred. See Resolution for "
@@ -1451,7 +1451,7 @@
  */
 nlohmann::json success(void)
 {
-    return nlohmann::json{{"@odata.type", "#Message.v1_0_0.Message"},
+    return nlohmann::json{{"@odata.type", "#Message.v1_1_1.Message"},
                           {"MessageId", "Base.1.8.1.Success"},
                           {"Message", "Successfully Completed Request"},
                           {"MessageArgs", nlohmann::json::array()},
@@ -1476,7 +1476,7 @@
 nlohmann::json created(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.Created"},
         {"Message", "The resource has been created successfully"},
         {"MessageArgs", nlohmann::json::array()},
@@ -1500,7 +1500,7 @@
 nlohmann::json noOperation(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.NoOperation"},
         {"Message", "The request body submitted contain no data to act "
                     "upon and no changes to the resource took place."},
@@ -1527,7 +1527,7 @@
 nlohmann::json propertyUnknown(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyUnknown"},
         {"Message", "The property " + arg1 +
                         " is not in the list of valid properties for "
@@ -1555,7 +1555,7 @@
 nlohmann::json noValidSession(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.NoValidSession"},
         {"Message",
          "There is no valid session established with the implementation."},
@@ -1581,7 +1581,7 @@
 nlohmann::json invalidObject(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.InvalidObject"},
         {"Message", "The object at " + arg1 + " is invalid."},
         {"MessageArgs", {arg1}},
@@ -1607,7 +1607,7 @@
 nlohmann::json resourceInStandby(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceInStandby"},
         {"Message", "The request could not be performed because the "
                     "resource is in standby."},
@@ -1635,7 +1635,7 @@
                                              const std::string& arg3)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ActionParameterValueTypeError"},
         {"Message",
          "The value " + arg1 + " for the parameter " + arg2 +
@@ -1667,7 +1667,7 @@
 nlohmann::json sessionLimitExceeded(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.SessionLimitExceeded"},
         {"Message", "The session establishment failed due to the number of "
                     "simultaneous sessions exceeding the limit of the "
@@ -1695,7 +1695,7 @@
 nlohmann::json actionNotSupported(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ActionNotSupported"},
         {"Message",
          "The action " + arg1 + " is not supported by the resource."},
@@ -1724,7 +1724,7 @@
 nlohmann::json invalidIndex(const int& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.InvalidIndex"},
         {"Message", "The Index " + std::to_string(arg1) +
                         " is not a valid offset into the array."},
@@ -1750,7 +1750,7 @@
 nlohmann::json emptyJSON(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.EmptyJSON"},
         {"Message", "The request body submitted contained an empty JSON "
                     "object and the service is unable to process it."},
@@ -1776,7 +1776,7 @@
 nlohmann::json queryNotSupportedOnResource(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.QueryNotSupportedOnResource"},
         {"Message", "Querying is not supported on the requested resource."},
         {"MessageArgs", nlohmann::json::array()},
@@ -1801,7 +1801,7 @@
 nlohmann::json queryNotSupportedOnOperation(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.QueryNotSupportedOnOperation"},
         {"Message", "Querying is not supported with the requested operation."},
         {"MessageArgs", nlohmann::json::array()},
@@ -1826,7 +1826,7 @@
 nlohmann::json queryCombinationInvalid(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.QueryCombinationInvalid"},
         {"Message", "Two or more query parameters in the request cannot be "
                     "used together."},
@@ -1852,7 +1852,7 @@
 nlohmann::json insufficientPrivilege(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.InsufficientPrivilege"},
         {"Message", "There are insufficient privileges for the account or "
                     "credentials associated with the current session to "
@@ -1881,7 +1881,7 @@
                                      const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyValueModified"},
         {"Message", "The property " + arg1 + " was assigned the value " + arg2 +
                         " due to modification by the service."},
@@ -1907,7 +1907,7 @@
 nlohmann::json accountNotModified(void)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.AccountNotModified"},
         {"Message", "The account modification request failed."},
         {"MessageArgs", nlohmann::json::array()},
@@ -1933,7 +1933,7 @@
                                               const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.QueryParameterValueFormatError"},
         {"Message",
          "The value " + arg1 + " for the parameter " + arg2 +
@@ -1965,7 +1965,7 @@
 nlohmann::json propertyMissing(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.PropertyMissing"},
         {"Message", "The property " + arg1 +
                         " is a required property and must be included in "
@@ -1994,7 +1994,7 @@
 nlohmann::json resourceExhaustion(const std::string& arg1)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.ResourceExhaustion"},
         {"Message", "The resource " + arg1 +
                         " was unable to satisfy the request due to "
@@ -2020,7 +2020,7 @@
  */
 nlohmann::json accountModified(void)
 {
-    return nlohmann::json{{"@odata.type", "#Message.v1_0_0.Message"},
+    return nlohmann::json{{"@odata.type", "#Message.v1_1_1.Message"},
                           {"MessageId", "Base.1.8.1.AccountModified"},
                           {"Message", "The account was successfully modified."},
                           {"MessageArgs", nlohmann::json::array()},
@@ -2046,7 +2046,7 @@
                                         const std::string& arg3)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.8.1.QueryParameterOutOfRange"},
         {"Message", "The value " + arg1 + " for the query parameter " + arg2 +
                         " is out of range " + arg3 + "."},
@@ -2110,7 +2110,7 @@
 nlohmann::json invalidUpload(const std::string& arg1, const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
+        {"@odata.type", "/redfish/v1/$metadata#Message.v1_1_1.Message"},
         {"MessageId", "OpenBMC.0.1.0.InvalidUpload"},
         {"Message", "Invalid file uploaded to " + arg1 + ": " + arg2 + "."},
         {"MessageArgs", {arg1, arg2}},
@@ -2129,7 +2129,7 @@
                                          const std::string& arg2)
 {
     return nlohmann::json{
-        {"@odata.type", "#Message.v1_0_0.Message"},
+        {"@odata.type", "#Message.v1_1_1.Message"},
         {"MessageId", "Base.1.5.0.MutualExclusiveProperties"},
         {"Message", "The properties " + arg1 + " and " + arg2 +
                         " are mutually exclusive."},
