diff --git a/libpldmresponder/platform.cpp b/libpldmresponder/platform.cpp
index dff2352..7309cea 100644
--- a/libpldmresponder/platform.cpp
+++ b/libpldmresponder/platform.cpp
@@ -167,19 +167,6 @@
 
 Response Handler::getPDR(const pldm_msg* request, size_t payloadLength)
 {
-    if (!pdrCreated)
-    {
-        generateTerminusLocatorPDR(pdrRepo);
-        generate(*dBusIntf, pdrJsonsDir, pdrRepo);
-        pdrCreated = true;
-
-        if (dbusToPLDMEventHandler)
-        {
-            dbusToPLDMEventHandler->listenSensorEvent(pdrRepo,
-                                                      sensorDbusObjMaps);
-        }
-    }
-
     // Build FRU table if not built, since entity association PDR's are built
     // when the FRU table is constructed.
     if (fruHandler)
@@ -187,6 +174,13 @@
         fruHandler->buildFRUTable();
     }
 
+    if (!pdrCreated)
+    {
+        generateTerminusLocatorPDR(pdrRepo);
+        generate(*dBusIntf, pdrJsonsDir, pdrRepo);
+        pdrCreated = true;
+    }
+
     Response response(sizeof(pldm_msg_hdr) + PLDM_GET_PDR_MIN_RESP_BYTES, 0);
     auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
 
