diff --git a/common/test/pldm_utils_test.cpp b/common/test/pldm_utils_test.cpp
index 73cd92c..c750ae3 100644
--- a/common/test/pldm_utils_test.cpp
+++ b/common/test/pldm_utils_test.cpp
@@ -161,8 +161,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -196,8 +195,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -247,8 +245,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -269,8 +266,8 @@
     state_second->possible_states_size = 1;
 
     handle = 0;
-    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
-                                 false, 1, &handle),
+    ASSERT_EQ(pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), false, 1,
+                           &handle),
               0);
 
     uint16_t entityID_ = 31;
@@ -309,8 +306,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -331,8 +327,8 @@
     state_second->possible_states_size = 1;
 
     handle = 0;
-    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
-                                 false, 1, &handle),
+    ASSERT_EQ(pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), false, 1,
+                           &handle),
               0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
@@ -367,8 +363,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -389,8 +384,8 @@
     state_second->possible_states_size = 1;
 
     handle = 0;
-    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
-                                 false, 1, &handle),
+    ASSERT_EQ(pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), false, 1,
+                           &handle),
               0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
@@ -426,8 +421,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -448,8 +442,8 @@
     state_second->possible_states_size = 1;
 
     handle = 0;
-    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
-                                 false, 1, &handle),
+    ASSERT_EQ(pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), false, 1,
+                           &handle),
               0);
 
     std::vector<uint8_t> pdr_third(
@@ -515,8 +509,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -562,8 +555,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -597,8 +589,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
@@ -632,8 +623,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
@@ -683,8 +673,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_sensor_pdr) - sizeof(uint8_t) +
@@ -705,8 +694,8 @@
     state_second->possible_states_size = 1;
 
     handle = 0;
-    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
-                                 false, 1, &handle),
+    ASSERT_EQ(pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), false, 1,
+                           &handle),
               0);
 
     uint16_t entityID_ = 5;
@@ -745,8 +734,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_sensor_pdr) - sizeof(uint8_t) +
@@ -767,8 +755,8 @@
     state_second->possible_states_size = 1;
 
     handle = 0;
-    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
-                                 false, 1, &handle),
+    ASSERT_EQ(pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), false, 1,
+                           &handle),
               0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
@@ -803,8 +791,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_sensor_pdr) - sizeof(uint8_t) +
@@ -825,8 +812,8 @@
     state_second->possible_states_size = 1;
 
     handle = 0;
-    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
-                                 false, 1, &handle),
+    ASSERT_EQ(pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), false, 1,
+                           &handle),
               0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
@@ -862,8 +849,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_sensor_pdr) - sizeof(uint8_t) +
@@ -884,8 +870,8 @@
     state_second->possible_states_size = 1;
 
     handle = 0;
-    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
-                                 false, 1, &handle),
+    ASSERT_EQ(pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), false, 1,
+                           &handle),
               0);
 
     std::vector<uint8_t> pdr_third(sizeof(struct pldm_state_sensor_pdr) -
@@ -952,8 +938,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
@@ -999,8 +984,7 @@
     state->possible_states_size = 1;
 
     uint32_t handle = 0;
-    ASSERT_EQ(
-        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
+    ASSERT_EQ(pldm_pdr_add(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
diff --git a/host-bmc/host_pdr_handler.cpp b/host-bmc/host_pdr_handler.cpp
index dee768e..c5b60ce 100644
--- a/host-bmc/host_pdr_handler.cpp
+++ b/host-bmc/host_pdr_handler.cpp
@@ -231,7 +231,7 @@
     {
         // Adding the remote range PDRs to the repo before merging it
         uint32_t handle = record_handle;
-        pldm_pdr_add_check(repo, pdr.data(), size, true, 0xFFFF, &handle);
+        pldm_pdr_add(repo, pdr.data(), size, true, 0xFFFF, &handle);
     }
 
     pldm_entity_association_pdr_extract(pdr.data(), pdr.size(), &numEntities,
@@ -615,8 +615,8 @@
                 }
                 else
                 {
-                    rc = pldm_pdr_add_check(repo, pdr.data(), respCount, true,
-                                            pdrTerminusHandle, &rh);
+                    rc = pldm_pdr_add(repo, pdr.data(), respCount, true,
+                                      pdrTerminusHandle, &rh);
                     if (rc)
                     {
                         // pldm_pdr_add() assert()ed on failure to add a PDR.
diff --git a/libpldmresponder/pdr_utils.cpp b/libpldmresponder/pdr_utils.cpp
index cfc776f..c15e282 100644
--- a/libpldmresponder/pdr_utils.cpp
+++ b/libpldmresponder/pdr_utils.cpp
@@ -34,8 +34,8 @@
 RecordHandle Repo::addRecord(const PdrEntry& pdrEntry)
 {
     uint32_t handle = pdrEntry.handle.recordHandle;
-    int rc = pldm_pdr_add_check(repo, pdrEntry.data, pdrEntry.size, false,
-                                TERMINUS_HANDLE, &handle);
+    int rc = pldm_pdr_add(repo, pdrEntry.data, pdrEntry.size, false,
+                          TERMINUS_HANDLE, &handle);
     if (rc)
     {
         // pldm_pdr_add() assert()ed on failure to add PDR
