diff --git a/dump-extensions/openpower-dumps/resource_dump_entry.cpp b/dump-extensions/openpower-dumps/resource_dump_entry.cpp
index efbb758..e8e73f3 100644
--- a/dump-extensions/openpower-dumps/resource_dump_entry.cpp
+++ b/dump-extensions/openpower-dumps/resource_dump_entry.cpp
@@ -12,6 +12,10 @@
 {
 namespace resource
 {
+// TODO #ibm-openbmc/issues/2859
+// Revisit host transport impelementation
+// This value is used to identify the dump in the transport layer to host,
+constexpr auto TRANSPORT_DUMP_TYPE_IDENTIFIER = 7;
 using namespace phosphor::logging;
 
 void Entry::initiateOffload(std::string uri)
@@ -30,6 +34,21 @@
     phosphor::dump::host::requestOffload(sourceDumpId());
 }
 
+void Entry::delete_()
+{
+    auto srcDumpID = sourceDumpId();
+
+    // Remove Dump entry D-bus object
+    phosphor::dump::Entry::delete_();
+
+    // Remove resource dump when host is up by using source dump id
+    // which is present in resource dump entry dbus object as a property.
+    if (phosphor::dump::isHostRunning())
+    {
+        phosphor::dump::host::requestDelete(srcDumpID,
+                                            TRANSPORT_DUMP_TYPE_IDENTIFIER);
+    }
+}
 } // namespace resource
 } // namespace dump
 } // namespace openpower
diff --git a/dump-extensions/openpower-dumps/resource_dump_entry.hpp b/dump-extensions/openpower-dumps/resource_dump_entry.hpp
index cc5172d..3e099a9 100644
--- a/dump-extensions/openpower-dumps/resource_dump_entry.hpp
+++ b/dump-extensions/openpower-dumps/resource_dump_entry.hpp
@@ -88,6 +88,11 @@
         status(OperationStatus::Completed);
         completedTime(timeStamp);
     }
+
+    /**
+     * @brief Delete resource dump in host memory and the entry dbus object
+     */
+    void delete_() override;
 };
 
 } // namespace resource
diff --git a/dump-extensions/openpower-dumps/system_dump_entry.cpp b/dump-extensions/openpower-dumps/system_dump_entry.cpp
index f950c5d..af7714d 100644
--- a/dump-extensions/openpower-dumps/system_dump_entry.cpp
+++ b/dump-extensions/openpower-dumps/system_dump_entry.cpp
@@ -12,6 +12,10 @@
 {
 namespace system
 {
+// TODO #ibm-openbmc/issues/2859
+// Revisit host transport impelementation
+// This value is used to identify the dump in the transport layer to host,
+constexpr auto TRANSPORT_DUMP_TYPE_IDENTIFIER = 3;
 using namespace phosphor::logging;
 
 void Entry::initiateOffload(std::string uri)
@@ -42,7 +46,8 @@
     // which is present in system dump entry dbus object as a property.
     if (phosphor::dump::isHostRunning())
     {
-        phosphor::dump::host::requestDelete(srcDumpID);
+        phosphor::dump::host::requestDelete(srcDumpID,
+                                            TRANSPORT_DUMP_TYPE_IDENTIFIER);
     }
 }
 } // namespace system
diff --git a/host-transport-extensions/default/default.cpp b/host-transport-extensions/default/default.cpp
index bc49afc..7b613df 100644
--- a/host-transport-extensions/default/default.cpp
+++ b/host-transport-extensions/default/default.cpp
@@ -12,7 +12,7 @@
     throw std::runtime_error("Hostdump offload method not specified");
 }
 
-void requestDelete(uint32_t)
+void requestDelete(uint32_t, uint32_t)
 {
     throw std::runtime_error("Hostdump delete method not specified");
 }
diff --git a/host-transport-extensions/pldm/default/pldm_interface.cpp b/host-transport-extensions/pldm/default/pldm_interface.cpp
index f432b03..09b96db 100644
--- a/host-transport-extensions/pldm/default/pldm_interface.cpp
+++ b/host-transport-extensions/pldm/default/pldm_interface.cpp
@@ -21,7 +21,7 @@
     throw std::runtime_error("PLDM: Hostdump offload method not specified");
 }
 
-void requestDelete(uint32_t)
+void requestDelete(uint32_t, uint32_t)
 {
     throw std::runtime_error("PLDM: Hostdump delete method not specified");
 }
diff --git a/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp b/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
index a26a5d3..981076c 100644
--- a/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
+++ b/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
@@ -46,9 +46,9 @@
     pldm::requestOffload(id);
 }
 
-void requestDelete(uint32_t id)
+void requestDelete(uint32_t id, uint32_t dumpType)
 {
-    pldm::requestDelete(id);
+    pldm::requestDelete(id, dumpType);
 }
 } // namespace host
 
@@ -119,7 +119,7 @@
     if (rc != PLDM_SUCCESS)
     {
         log<level::ERR>("Message encode failure. ", entry("RC=%d", rc));
-        elog<NotAllowed>(Reason("Host system dump offload via pldm is not "
+        elog<NotAllowed>(Reason("Host dump offload via pldm is not "
                                 "allowed due to encode failed"));
     }
 
@@ -135,7 +135,7 @@
         auto e = errno;
         log<level::ERR>("pldm_send failed", entry("RC=%d", rc),
                         entry("ERRNO=%d", e));
-        elog<NotAllowed>(Reason("Host system dump offload via pldm is not "
+        elog<NotAllowed>(Reason("Host dump offload via pldm is not "
                                 "allowed due to fileack send failed"));
     }
     pldm_msg* response = reinterpret_cast<pldm_msg*>(responseMsg);
@@ -144,12 +144,21 @@
         entry("RC=%d", static_cast<uint16_t>(response->payload[0])));
 }
 
-/*
- * Using FileAck pldm command with file type as PLDM_FILE_TYPE_DUMP
- * to delete host system dump
- */
-void requestDelete(uint32_t dumpId)
+void requestDelete(uint32_t dumpId, uint32_t dumpType)
 {
+    pldm_fileio_file_type pldmDumpType;
+    switch (dumpType)
+    {
+        case PLDM_FILE_TYPE_DUMP:
+            pldmDumpType = PLDM_FILE_TYPE_DUMP;
+            break;
+        case PLDM_FILE_TYPE_RESOURCE_DUMP_PARMS:
+            pldmDumpType = PLDM_FILE_TYPE_RESOURCE_DUMP_PARMS;
+            break;
+        default:
+            throw std::runtime_error("Unknown pldm dump file-io type to delete "
+                                     "host dump");
+    }
     const size_t pldmMsgHdrSize = sizeof(pldm_msg_hdr);
     std::array<uint8_t, pldmMsgHdrSize + PLDM_FILE_ACK_REQ_BYTES> fileAckReqMsg;
 
@@ -157,21 +166,20 @@
 
     auto pldmInstanceId = getPLDMInstanceID(mctpEndPointId);
 
-    // - PLDM_FILE_TYPE_DUMP - To indicate FileAck for Host system dump
     // - PLDM_SUCCESS - To indicate dump was readed (offloaded) or user decided,
-    //   no longer host system dump is not required so, initiate deletion from
+    //   no longer host dump is not required so, initiate deletion from
     //   host memory
-    int retCode = encode_file_ack_req(
-        pldmInstanceId, PLDM_FILE_TYPE_DUMP, dumpId, PLDM_SUCCESS,
-        reinterpret_cast<pldm_msg*>(fileAckReqMsg.data()));
+    int retCode =
+        encode_file_ack_req(pldmInstanceId, pldmDumpType, dumpId, PLDM_SUCCESS,
+                            reinterpret_cast<pldm_msg*>(fileAckReqMsg.data()));
 
     if (retCode != PLDM_SUCCESS)
     {
-        log<level::ERR>(
-            "Failed to encode pldm FileAck to delete host system dump",
-            entry("SRC_DUMP_ID=%d", dumpId),
-            entry("PLDM_RETURN_CODE=%d", retCode));
-        elog<NotAllowed>(Reason("Host system dump deletion via pldm is not "
+        log<level::ERR>("Failed to encode pldm FileAck to delete host dump",
+                        entry("SRC_DUMP_ID=%d", dumpId),
+                        entry("PLDM_FILE_IO_TYPE=%d", pldmDumpType),
+                        entry("PLDM_RETURN_CODE=%d", retCode));
+        elog<NotAllowed>(Reason("Host dump deletion via pldm is not "
                                 "allowed due to encode fileack failed"));
     }
 
@@ -189,13 +197,13 @@
     if (retCode != PLDM_REQUESTER_SUCCESS)
     {
         auto errorNumber = errno;
-        log<level::ERR>(
-            "Failed to send pldm FileAck to delete host system dump",
-            entry("SRC_DUMP_ID=%d", dumpId),
-            entry("PLDM_RETURN_CODE=%d", retCode),
-            entry("ERRNO=%d", errorNumber),
-            entry("ERRMSG=%s", strerror(errorNumber)));
-        elog<NotAllowed>(Reason("Host system dump deletion via pldm is not "
+        log<level::ERR>("Failed to send pldm FileAck to delete host dump",
+                        entry("SRC_DUMP_ID=%d", dumpId),
+                        entry("PLDM_FILE_IO_TYPE=%d", pldmDumpType),
+                        entry("PLDM_RETURN_CODE=%d", retCode),
+                        entry("ERRNO=%d", errorNumber),
+                        entry("ERRMSG=%s", strerror(errorNumber)));
+        elog<NotAllowed>(Reason("Host dump deletion via pldm is not "
                                 "allowed due to fileack send failed"));
     }
 
@@ -207,16 +215,16 @@
 
     if (retCode || completionCode)
     {
-        log<level::ERR>("Failed to delete host system dump",
+        log<level::ERR>("Failed to delete host dump",
                         entry("SRC_DUMP_ID=%d", dumpId),
+                        entry("PLDM_FILE_IO_TYPE=%d", pldmDumpType),
                         entry("PLDM_RETURN_CODE=%d", retCode),
                         entry("PLDM_COMPLETION_CODE=%d", completionCode));
-        elog<NotAllowed>(Reason("Host system dump deletion via pldm is "
+        elog<NotAllowed>(Reason("Host dump deletion via pldm is "
                                 "failed"));
     }
 
-    log<level::INFO>("Deleted host system dump",
-                     entry("SRC_DUMP_ID=%d", dumpId));
+    log<level::INFO>("Deleted host dump", entry("SRC_DUMP_ID=%d", dumpId));
 }
 } // namespace pldm
 } // namespace dump
diff --git a/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.hpp b/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.hpp
index 1ab099a..b4b0d9d 100644
--- a/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.hpp
+++ b/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.hpp
@@ -20,10 +20,11 @@
  * @brief Request to delete dump
  *
  * @param[in] id - The Dump Source ID.
+ * @param[in] dumpType - Type of the dump.
  * @return NULL
  *
  */
-void requestDelete(uint32_t id);
+void requestDelete(uint32_t id, uint32_t dumpType);
 } // namespace host
 
 namespace pldm
@@ -56,10 +57,11 @@
  * @brief Request to delete dump
  *
  * @param[in] id - The Dump Source ID.
+ * @param[in] dumpType - Type of the dump.
  * @return NULL
  *
  */
-void requestDelete(uint32_t id);
+void requestDelete(uint32_t id, uint32_t dumpType);
 } // namespace pldm
 } // namespace dump
 } // namespace phosphor
diff --git a/host_transport_exts.hpp b/host_transport_exts.hpp
index b31585e..8e218ee 100644
--- a/host_transport_exts.hpp
+++ b/host_transport_exts.hpp
@@ -17,10 +17,11 @@
  * @brief Request to delete dump
  *
  * @param[in] id - The Dump Source ID.
+ * @param[in] type - transport defined type of the dump.
  * @return NULL
  *
  */
-void requestDelete(uint32_t id);
+void requestDelete(uint32_t id, uint32_t type);
 
 } // namespace host
 } // namespace dump
