diff --git a/host-bmc/host_pdr_handler.cpp b/host-bmc/host_pdr_handler.cpp
index 3c8d54e..f8594d6 100644
--- a/host-bmc/host_pdr_handler.cpp
+++ b/host-bmc/host_pdr_handler.cpp
@@ -85,7 +85,7 @@
         });
 }
 
-void HostPDRHandler::fetchPDR(std::vector<uint32_t>&& recordHandles)
+void HostPDRHandler::fetchPDR(PDRRecordHandles&& recordHandles)
 {
     pdrRecordHandles.clear();
     pdrRecordHandles = std::move(recordHandles);
@@ -107,7 +107,17 @@
     auto request = reinterpret_cast<pldm_msg*>(requestMsg.data());
     bool merged = false;
 
-    for (auto recordHandle : pdrRecordHandles)
+    uint32_t nextRecordHandle{};
+    uint32_t recordHandle{};
+    bool isFormatRecHandles = false;
+    if (!pdrRecordHandles.empty())
+    {
+        recordHandle = pdrRecordHandles.front();
+        pdrRecordHandles.pop_front();
+        isFormatRecHandles = true;
+    }
+
+    do
     {
         auto instanceId = requester.getInstanceId(mctp_eid);
 
@@ -138,7 +148,6 @@
         }
 
         uint8_t completionCode{};
-        uint32_t nextRecordHandle{};
         uint32_t nextDataTransferHandle{};
         uint8_t transferFlag{};
         uint16_t respCount{};
@@ -194,8 +203,19 @@
                     pldm_pdr_add(repo, pdr.data(), respCount, 0, true);
                 }
             }
+
+            recordHandle = nextRecordHandle;
+            if (!pdrRecordHandles.empty())
+            {
+                recordHandle = pdrRecordHandles.front();
+                pdrRecordHandles.pop_front();
+            }
+            else if (isFormatRecHandles)
+            {
+                break;
+            }
         }
-    }
+    } while (recordHandle);
 
     if (merged)
     {
diff --git a/host-bmc/host_pdr_handler.hpp b/host-bmc/host_pdr_handler.hpp
index a54c008..fbb206c 100644
--- a/host-bmc/host_pdr_handler.hpp
+++ b/host-bmc/host_pdr_handler.hpp
@@ -11,6 +11,7 @@
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/source/event.hpp>
 
+#include <deque>
 #include <map>
 #include <memory>
 #include <vector>
@@ -24,7 +25,7 @@
 // vector which would hold the PDR record handle data returned by
 // pldmPDRRepositoryChgEvent event data
 using ChangeEntry = uint32_t;
-using PDRRecordHandles = std::vector<ChangeEntry>;
+using PDRRecordHandles = std::deque<ChangeEntry>;
 
 /** @struct SensorEntry
  *
@@ -88,7 +89,7 @@
      *             PDRs that need to be fetched.
      */
 
-    void fetchPDR(std::vector<uint32_t>&& recordHandles);
+    void fetchPDR(PDRRecordHandles&& recordHandles);
 
     /** @brief Send a PLDM event to host firmware containing a list of record
      *  handles of PDRs that the host firmware has to fetch.
diff --git a/libpldmresponder/platform.cpp b/libpldmresponder/platform.cpp
index b94fdab..6801566 100644
--- a/libpldmresponder/platform.cpp
+++ b/libpldmresponder/platform.cpp
@@ -448,6 +448,12 @@
     }
 
     PDRRecordHandles pdrRecordHandles;
+
+    if (eventDataFormat == FORMAT_IS_PDR_TYPES)
+    {
+        return PLDM_ERROR_INVALID_DATA;
+    }
+
     if (eventDataFormat == FORMAT_IS_PDR_HANDLES)
     {
         uint8_t eventDataOperation{};
@@ -487,15 +493,10 @@
             changeRecordDataSize -=
                 dataOffset + (numberOfChangeEntries * sizeof(ChangeEntry));
         }
-
-        if (hostPDRHandler && !pdrRecordHandles.empty())
-        {
-            hostPDRHandler->fetchPDR(std::move(pdrRecordHandles));
-        }
     }
-    else
+    if (hostPDRHandler)
     {
-        return PLDM_ERROR_INVALID_DATA;
+        hostPDRHandler->fetchPDR(std::move(pdrRecordHandles));
     }
 
     return PLDM_SUCCESS;
