diff --git a/const.hpp b/const.hpp
index 6b27977..2090b2a 100644
--- a/const.hpp
+++ b/const.hpp
@@ -55,6 +55,7 @@
 static constexpr auto RAINIER_4U_V2 = "50001000_v2.json";
 static constexpr auto RAINIER_1S4U = "50001002.json";
 static constexpr auto EVEREST = "50003000.json";
+static constexpr auto EVEREST_V2 = "50003000_v2.json";
 
 constexpr uint8_t KW_VPD_START_TAG = 0x82;
 constexpr uint8_t KW_VPD_END_TAG = 0x78;
diff --git a/ibm_vpd_app.cpp b/ibm_vpd_app.cpp
index 2d460d6..b02cc43 100644
--- a/ibm_vpd_app.cpp
+++ b/ibm_vpd_app.cpp
@@ -797,7 +797,8 @@
         {RAINIER_4U, "conf-aspeed-bmc-ibm-rainier-4u-p1.dtb"},
         {RAINIER_4U_V2, "conf-aspeed-bmc-ibm-rainier-4u.dtb"},
         {RAINIER_1S4U, "conf-aspeed-bmc-ibm-rainier-1s4u.dtb"},
-        {EVEREST, "conf-aspeed-bmc-ibm-everest.dtb"}};
+        {EVEREST, "conf-aspeed-bmc-ibm-everest.dtb"},
+        {EVEREST_V2, "conf-aspeed-bmc-ibm-everest.dtb"}};
 
     if (deviceTreeSystemTypeMap.find(systemType) !=
         deviceTreeSystemTypeMap.end())
diff --git a/ibm_vpd_utils.cpp b/ibm_vpd_utils.cpp
index 25960fc..4eb99cb 100644
--- a/ibm_vpd_utils.cpp
+++ b/ibm_vpd_utils.cpp
@@ -387,9 +387,12 @@
     {
         auto js = json::parse(systemJson);
 
-        const string hwKeyword = getHW(vpdMap);
+        string hwKeyword = getHW(vpdMap);
         const string imKeyword = getIM(vpdMap);
 
+        transform(hwKeyword.begin(), hwKeyword.end(), hwKeyword.begin(),
+                  ::toupper);
+
         if (js.find("system") == js.end())
         {
             throw runtime_error("Invalid systems Json");
@@ -405,9 +408,30 @@
 
         if ((js["system"][imKeyword].find("constraint") !=
              js["system"][imKeyword].end()) &&
-            (hwKeyword == js["system"][imKeyword]["constraint"]["HW"]))
+            js["system"][imKeyword]["constraint"].find("HW") !=
+                js["system"][imKeyword]["constraint"].end())
         {
-            jsonName = js["system"][imKeyword]["constraint"]["json"];
+            // collect hw versions from json, and check hwKeyword  is part of it
+            // if hwKeyword is found there then load respective json
+            // otherwise load default one.
+            for (const auto& hwVersion :
+                 js["system"][imKeyword]["constraint"]["HW"])
+            {
+                string hw = hwVersion;
+                transform(hw.begin(), hw.end(), hw.begin(), ::toupper);
+
+                if (hw == hwKeyword)
+                {
+                    jsonName = js["system"][imKeyword]["constraint"]["json"];
+                    break;
+                }
+            }
+
+            if (jsonName.empty() && js["system"][imKeyword].find("default") !=
+                                        js["system"][imKeyword].end())
+            {
+                jsonName = js["system"][imKeyword]["default"];
+            }
         }
         else if (js["system"][imKeyword].find("default") !=
                  js["system"][imKeyword].end())
