diff --git a/test/openpower-pels/src_callouts_test.cpp b/test/openpower-pels/src_callouts_test.cpp
index b1fe9c4..69c26b8 100644
--- a/test/openpower-pels/src_callouts_test.cpp
+++ b/test/openpower-pels/src_callouts_test.cpp
@@ -120,3 +120,83 @@
 
     EXPECT_EQ(callouts.callouts().size(), maxNumberOfCallouts);
 }
+
+TEST(CalloutsTest, TestSortCallouts)
+{
+    Callouts callouts;
+
+    // Add  callouts with different priorities to test sorting in descending
+    // order
+
+    auto c0 = std::make_unique<Callout>(CalloutPriority::high, "U1-P1",
+                                        "1234567", "ABC", "123456789ABC");
+
+    callouts.addCallout(std::move(c0));
+
+    auto c1 = std::make_unique<Callout>(CalloutPriority::medium, "U1-P2",
+                                        "1234567", "ABCD", "123456789ABC");
+
+    callouts.addCallout(std::move(c1));
+
+    auto c2 = std::make_unique<Callout>(CalloutPriority::low, "U1-P3",
+                                        "1234567", "ABCDE", "123456789ABC");
+
+    callouts.addCallout(std::move(c2));
+
+    auto c3 = std::make_unique<Callout>(CalloutPriority::high, "U1-P4",
+                                        "1234567", "ABCDE1", "123456789ABC");
+
+    callouts.addCallout(std::move(c3));
+
+    auto c4 = std::make_unique<Callout>(CalloutPriority::high, "U1-P5",
+                                        "1234567", "ABCDE2", "123456789ABC");
+
+    callouts.addCallout(std::move(c4));
+
+    auto c5 = std::make_unique<Callout>(CalloutPriority::low, "U1-P6",
+                                        "1234567", "ABCDE2", "123456789ABC");
+
+    callouts.addCallout(std::move(c5));
+
+    auto c6 = std::make_unique<Callout>(CalloutPriority::medium, "U1-P7",
+                                        "1234567", "ABCD2", "123456789ABC");
+
+    callouts.addCallout(std::move(c6));
+
+    auto c7 = std::make_unique<Callout>(CalloutPriority::mediumGroupA, "U1-P8",
+                                        "1234567", "ABCDE3", "123456789ABC");
+
+    callouts.addCallout(std::move(c7));
+
+    auto c8 = std::make_unique<Callout>(CalloutPriority::mediumGroupC, "U1-P9",
+                                        "1234567", "ABCDE4", "123456789ABC");
+
+    callouts.addCallout(std::move(c8));
+
+    auto c9 = std::make_unique<Callout>(CalloutPriority::low, "U1-P10",
+                                        "1234567", "ABCDE3", "123456789ABC");
+
+    callouts.addCallout(std::move(c9));
+
+    const auto& calloutObjects = callouts.callouts();
+    EXPECT_EQ(calloutObjects[0]->locationCode(), "U1-P1");
+    EXPECT_EQ(calloutObjects[0]->priority(), 'H');
+    EXPECT_EQ(calloutObjects[1]->locationCode(), "U1-P4");
+    EXPECT_EQ(calloutObjects[1]->priority(), 'H');
+    EXPECT_EQ(calloutObjects[2]->locationCode(), "U1-P5");
+    EXPECT_EQ(calloutObjects[2]->priority(), 'H');
+    EXPECT_EQ(calloutObjects[3]->locationCode(), "U1-P2");
+    EXPECT_EQ(calloutObjects[3]->priority(), 'M');
+    EXPECT_EQ(calloutObjects[4]->locationCode(), "U1-P7");
+    EXPECT_EQ(calloutObjects[4]->priority(), 'M');
+    EXPECT_EQ(calloutObjects[5]->locationCode(), "U1-P8");
+    EXPECT_EQ(calloutObjects[5]->priority(), 'A');
+    EXPECT_EQ(calloutObjects[6]->locationCode(), "U1-P9");
+    EXPECT_EQ(calloutObjects[6]->priority(), 'C');
+    EXPECT_EQ(calloutObjects[7]->locationCode(), "U1-P3");
+    EXPECT_EQ(calloutObjects[7]->priority(), 'L');
+    EXPECT_EQ(calloutObjects[8]->locationCode(), "U1-P6");
+    EXPECT_EQ(calloutObjects[8]->priority(), 'L');
+    EXPECT_EQ(calloutObjects[9]->locationCode(), "U1-P10");
+    EXPECT_EQ(calloutObjects[9]->priority(), 'L');
+}
diff --git a/test/openpower-pels/src_test.cpp b/test/openpower-pels/src_test.cpp
index 1f0db2a..671bd54 100644
--- a/test/openpower-pels/src_test.cpp
+++ b/test/openpower-pels/src_test.cpp
@@ -1265,3 +1265,39 @@
                  "Failed extracting callout data from JSON: Invalid "
                  "priority 'X' found in JSON callout");
 }
+
+// Test that an inventory path callout can have
+// a different priority than H.
+TEST_F(SRCTest, InventoryCalloutTestPriority)
+{
+    message::Entry entry;
+    entry.src.type = 0xBD;
+    entry.src.reasonCode = 0xABCD;
+    entry.subsystem = 0x42;
+    entry.src.powerFault = false;
+
+    std::vector<std::string> adData{"CALLOUT_INVENTORY_PATH=motherboard",
+                                    "CALLOUT_PRIORITY=M"};
+    AdditionalData ad{adData};
+    NiceMock<MockDataInterface> dataIface;
+
+    EXPECT_CALL(dataIface, getLocationCode("motherboard"))
+        .WillOnce(Return("UTMS-P1"));
+
+    EXPECT_CALL(dataIface, getHWCalloutFields("motherboard", _, _, _))
+        .Times(1)
+        .WillOnce(DoAll(SetArgReferee<1>("1234567"), SetArgReferee<2>("CCCC"),
+                        SetArgReferee<3>("123456789ABC")));
+
+    SRC src{entry, ad, dataIface};
+    EXPECT_TRUE(src.valid());
+
+    ASSERT_TRUE(src.callouts());
+
+    EXPECT_EQ(src.callouts()->callouts().size(), 1);
+
+    auto& callout = src.callouts()->callouts().front();
+
+    EXPECT_EQ(callout->locationCode(), "UTMS-P1");
+    EXPECT_EQ(callout->priority(), 'M');
+}
\ No newline at end of file
