diff --git a/bmc/buildjson.cpp b/bmc/buildjson.cpp
index d8a9ea1..60575db 100644
--- a/bmc/buildjson.cpp
+++ b/bmc/buildjson.cpp
@@ -91,8 +91,9 @@
             {
                 const auto& path = verify.at("path");
                 const auto& unit = verify.at("unit");
+                const std::string mode = "replace";
                 pack->verification = SystemdVerification::CreateVerification(
-                    sdbusplus::bus::new_default(), path, unit);
+                    sdbusplus::bus::new_default(), path, unit, mode);
             }
             else
             {
diff --git a/bmc/test/firmware_json_unittest.cpp b/bmc/test/firmware_json_unittest.cpp
index 04c0f09..8b4f130 100644
--- a/bmc/test/firmware_json_unittest.cpp
+++ b/bmc/test/firmware_json_unittest.cpp
@@ -1,5 +1,6 @@
 #include "buildjson.hpp"
 #include "update_systemd.hpp"
+#include "verify_systemd.hpp"
 
 #include <nlohmann/json.hpp>
 
@@ -423,6 +424,9 @@
     EXPECT_FALSE(h[0].actions == nullptr);
     EXPECT_FALSE(h[0].actions->preparation == nullptr);
     EXPECT_FALSE(h[0].actions->verification == nullptr);
+    auto verifier = reinterpret_cast<SystemdVerification*>(
+        h[0].actions->verification.get());
+    EXPECT_THAT(verifier->getMode(), "replace");
     EXPECT_FALSE(h[0].actions->update == nullptr);
     auto updater =
         reinterpret_cast<SystemdUpdateMechanism*>(h[0].actions->update.get());
diff --git a/bmc/verify_systemd.cpp b/bmc/verify_systemd.cpp
index f7b88b0..e3316a0 100644
--- a/bmc/verify_systemd.cpp
+++ b/bmc/verify_systemd.cpp
@@ -30,9 +30,11 @@
 std::unique_ptr<TriggerableActionInterface>
     SystemdVerification::CreateVerification(sdbusplus::bus::bus&& bus,
                                             const std::string& path,
-                                            const std::string& service)
+                                            const std::string& service,
+                                            const std::string& mode)
 {
-    return std::make_unique<SystemdVerification>(std::move(bus), path, service);
+    return std::make_unique<SystemdVerification>(std::move(bus), path, service,
+                                                 mode);
 }
 
 bool SystemdVerification::trigger()
@@ -44,7 +46,7 @@
     auto method = bus.new_method_call(systemdService, systemdRoot,
                                       systemdInterface, "StartUnit");
     method.append(triggerService);
-    method.append("replace");
+    method.append(mode);
 
     try
     {
@@ -97,4 +99,9 @@
     return result;
 }
 
+const std::string SystemdVerification::getMode() const
+{
+    return mode;
+}
+
 } // namespace ipmi_flash
diff --git a/bmc/verify_systemd.hpp b/bmc/verify_systemd.hpp
index 894b534..9d56722 100644
--- a/bmc/verify_systemd.hpp
+++ b/bmc/verify_systemd.hpp
@@ -24,17 +24,18 @@
      *
      * @param[in] bus - an sdbusplus handler for a bus to use.
      * @param[in] path - the path to check for verification status.
-     * @param[in[ service - the systemd service to start to trigger
+     * @param[in] service - the systemd service to start to trigger
      * verification.
+     * @param[in] mode - the job-mode when starting the systemd Unit.
      */
     static std::unique_ptr<TriggerableActionInterface>
         CreateVerification(sdbusplus::bus::bus&& bus, const std::string& path,
-                           const std::string& service);
+                           const std::string& service, const std::string& mode);
 
     SystemdVerification(sdbusplus::bus::bus&& bus, const std::string& path,
-                        const std::string& service) :
+                        const std::string& service, const std::string& mode) :
         bus(std::move(bus)),
-        checkPath(path), triggerService(service)
+        checkPath(path), triggerService(service), mode(mode)
     {
     }
 
@@ -48,9 +49,12 @@
     void abort() override;
     ActionStatus status() override;
 
+    const std::string getMode() const;
+
   private:
     sdbusplus::bus::bus bus;
     const std::string checkPath;
     const std::string triggerService;
+    const std::string mode;
 };
 } // namespace ipmi_flash
