diff --git a/extensions/openpower-pels/callouts.cpp b/extensions/openpower-pels/callouts.cpp
index 2440621..885dda5 100644
--- a/extensions/openpower-pels/callouts.cpp
+++ b/extensions/openpower-pels/callouts.cpp
@@ -61,7 +61,19 @@
         using namespace phosphor::logging;
         log<level::INFO>("Dropping PEL callout because at max");
     }
+
+    // Mapping including the  3 Medium levels as A,B and C
+    const std::map<std::uint8_t, int> priorities = {
+        {'H', 10}, {'M', 9}, {'A', 8}, {'B', 7}, {'C', 6}, {'L', 5}};
+
+    auto sortPriority = [&priorities](const std::unique_ptr<Callout>& p1,
+                                      const std::unique_ptr<Callout>& p2) {
+        return priorities.at(p1->priority()) > priorities.at(p2->priority());
+    };
+
+    std::sort(_callouts.begin(), _callouts.end(), sortPriority);
 }
+
 } // namespace src
 } // namespace pels
-} // namespace openpower
+} // namespace openpower
\ No newline at end of file
diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index 3fd62e8..643adec 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -748,7 +748,19 @@
         getRegistryCallouts(regEntry, additionalData, dataIface);
 
     auto item = additionalData.getValue("CALLOUT_INVENTORY_PATH");
+    auto priority = additionalData.getValue("CALLOUT_PRIORITY");
 
+    std::optional<CalloutPriority> calloutPriority;
+
+    // Only  H, M or L priority values.
+    if (priority && !(*priority).empty())
+    {
+        uint8_t p = (*priority)[0];
+        if (p == 'H' || p == 'M' || p == 'L')
+        {
+            calloutPriority = static_cast<CalloutPriority>(p);
+        }
+    }
     // If the first registry callout says to use the passed in inventory
     // path to get the location code for a symbolic FRU callout with a
     // trusted location code, then do not add the inventory path as a
@@ -759,7 +771,7 @@
 
     if (item && !useInvForSymbolicFRULocCode)
     {
-        addInventoryCallout(*item, std::nullopt, std::nullopt, dataIface);
+        addInventoryCallout(*item, calloutPriority, std::nullopt, dataIface);
     }
 
     addDevicePathCallouts(additionalData, dataIface);
