diff --git a/oem/ibm/libpldmresponder/file_io_type_dump.cpp b/oem/ibm/libpldmresponder/file_io_type_dump.cpp
index 2360733..9fe270a 100644
--- a/oem/ibm/libpldmresponder/file_io_type_dump.cpp
+++ b/oem/ibm/libpldmresponder/file_io_type_dump.cpp
@@ -16,6 +16,8 @@
 #include "libpldm/base.h"
 #include "oem/ibm/libpldm/file_io.h"
 
+using namespace pldm::utils;
+
 namespace pldm
 {
 namespace responder
@@ -106,5 +108,60 @@
     return PLDM_SUCCESS;
 }
 
+int DumpHandler::fileAck(uint8_t /*fileStatus*/)
+{
+    if (DumpHandler::fd >= 0)
+    {
+        static constexpr auto dumpObjPath = "/xyz/openbmc_project/dump";
+        static constexpr auto MAPPER_BUSNAME =
+            "xyz.openbmc_project.ObjectMapper";
+        static constexpr auto MAPPER_PATH =
+            "/xyz/openbmc_project/object_mapper";
+        static constexpr auto MAPPER_INTERFACE =
+            "xyz.openbmc_project.ObjectMapper";
+        static constexpr auto systemDumpEntry =
+            "xyz.openbmc_project.Dump.Entry.System";
+        static constexpr auto dumpEntry = "xyz.openbmc_project.Dump.Entry";
+        auto& bus = pldm::utils::DBusHandler::getBus();
+
+        try
+        {
+            std::vector<std::string> paths;
+            auto method =
+                bus.new_method_call(MAPPER_BUSNAME, MAPPER_PATH,
+                                    MAPPER_INTERFACE, "GetSubTreePaths");
+            method.append(dumpObjPath);
+            method.append(0);
+            method.append(std::vector<std::string>({systemDumpEntry}));
+            auto reply = bus.call(method);
+            reply.read(paths);
+            for (auto path : paths)
+            {
+                uint32_t dumpId =
+                    pldm::utils::DBusHandler().getDbusProperty<uint32_t>(
+                        path.c_str(), "SourceDumpId", systemDumpEntry);
+                if (dumpId == fileHandle)
+                {
+                    PropertyValue value{true};
+                    DBusMapping dbusMapping{path, dumpEntry, "Offloaded",
+                                            "bool"};
+                    pldm::utils::DBusHandler().setDbusProperty(dbusMapping,
+                                                               value);
+                    close(DumpHandler::fd);
+                    DumpHandler::fd = -1;
+                    return PLDM_SUCCESS;
+                }
+            }
+        }
+        catch (const std::exception& e)
+        {
+            std::cerr << "failed to make a d-bus call to DUMP manager, ERROR="
+                      << e.what() << "\n";
+        }
+    }
+
+    return PLDM_ERROR;
+}
+
 } // namespace responder
 } // namespace pldm
diff --git a/oem/ibm/libpldmresponder/file_io_type_dump.hpp b/oem/ibm/libpldmresponder/file_io_type_dump.hpp
index e20d0d7..79360d0 100644
--- a/oem/ibm/libpldmresponder/file_io_type_dump.hpp
+++ b/oem/ibm/libpldmresponder/file_io_type_dump.hpp
@@ -39,10 +39,7 @@
 
     virtual int newFileAvailable(uint64_t length);
 
-    virtual int fileAck(uint8_t /*fileStatus*/)
-    {
-        return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
-    }
+    virtual int fileAck(uint8_t /*fileStatus*/);
 
     /** @brief DumpHandler destructor
      */
diff --git a/utils.cpp b/utils.cpp
index 836591b..1152783 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -135,6 +135,11 @@
         std::variant<uint8_t> v = std::get<uint8_t>(value);
         setDbusValue(v);
     }
+    else if (dBusMap.propertyType == "bool")
+    {
+        std::variant<bool> v = std::get<bool>(value);
+        setDbusValue(v);
+    }
     else if (dBusMap.propertyType == "int16_t")
     {
         std::variant<int16_t> v = std::get<int16_t>(value);
