diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index 663d48b..e420130 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -65,7 +65,7 @@
 static void
     softwareInterfaceAdded(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                            sdbusplus::message::message& m,
-                           const crow::Request& req)
+                           task::Payload&& payload)
 {
     std::vector<std::pair<
         std::string,
@@ -85,10 +85,11 @@
         {
             // Retrieve service and activate
             crow::connections::systemBus->async_method_call(
-                [objPath, asyncResp,
-                 req](const boost::system::error_code errorCode,
-                      const std::vector<std::pair<
-                          std::string, std::vector<std::string>>>& objInfo) {
+                [objPath, asyncResp, payload(std::move(payload))](
+                    const boost::system::error_code errorCode,
+                    const std::vector<
+                        std::pair<std::string, std::vector<std::string>>>&
+                        objInfo) mutable {
                     if (errorCode)
                     {
                         BMCWEB_LOG_DEBUG << "error_code = " << errorCode;
@@ -243,7 +244,7 @@
                                     objPath.str + "'");
                         task->startTimer(std::chrono::minutes(5));
                         task->populateResp(asyncResp->res);
-                        task->payload.emplace(req);
+                        task->payload.emplace(std::move(payload));
                     }
                     fwUpdateInProgress = false;
                 },
@@ -300,10 +301,11 @@
                 redfish::messages::internalError(asyncResp->res);
             }
         });
-
-    auto callback = [asyncResp, req](sdbusplus::message::message& m) {
+    task::Payload payload(req);
+    auto callback = [asyncResp,
+                     payload](sdbusplus::message::message& m) mutable {
         BMCWEB_LOG_DEBUG << "Match fired";
-        softwareInterfaceAdded(asyncResp, m, req);
+        softwareInterfaceAdded(asyncResp, m, std::move(payload));
     };
 
     fwUpdateInProgress = true;
