diff --git a/static/flash.cpp b/static/flash.cpp
index 101828b..748a6cf 100644
--- a/static/flash.cpp
+++ b/static/flash.cpp
@@ -6,11 +6,14 @@
 #include "images.hpp"
 #include "item_updater.hpp"
 
+#include <phosphor-logging/lg2.hpp>
+
 #include <filesystem>
 
 namespace
 {
 constexpr auto PATH_INITRAMFS = "/run/initramfs";
+constexpr auto FLASH_ALT_SERVICE_TMPL = "obmc-flash-bmc-alt@";
 } // namespace
 
 namespace phosphor
@@ -20,11 +23,27 @@
 namespace updater
 {
 
+PHOSPHOR_LOG2_USING;
+
 namespace fs = std::filesystem;
 using namespace phosphor::software::image;
 
 void Activation::flashWrite()
 {
+#ifdef BMC_STATIC_DUAL_IMAGE
+    if (parent.runningImageSlot != 0)
+    {
+        // It's running on the secondary chip, update the primary one
+        info("Flashing primary flash from secondary, id: {ID}", "ID",
+             versionId);
+        auto method = bus.new_method_call(SYSTEMD_BUSNAME, SYSTEMD_PATH,
+                                          SYSTEMD_INTERFACE, "StartUnit");
+        auto serviceFile = FLASH_ALT_SERVICE_TMPL + versionId + ".service";
+        method.append(serviceFile, "replace");
+        bus.call_noreply(method);
+        return;
+    }
+#endif
     // For static layout code update, just put images in /run/initramfs.
     // It expects user to trigger a reboot and an updater script will program
     // the image to flash during reboot.
@@ -38,9 +57,33 @@
     }
 }
 
-void Activation::onStateChanges(sdbusplus::message::message& /*msg*/)
+void Activation::onStateChanges(
+    [[maybe_unused]] sdbusplus::message::message& msg)
 {
-    // Empty
+#ifdef BMC_STATIC_DUAL_IMAGE
+    uint32_t newStateID;
+    auto serviceFile = FLASH_ALT_SERVICE_TMPL + versionId + ".service";
+    sdbusplus::message::object_path newStateObjPath;
+    std::string newStateUnit{};
+    std::string newStateResult{};
+    msg.read(newStateID, newStateObjPath, newStateUnit, newStateResult);
+
+    if (newStateUnit != serviceFile)
+    {
+        return;
+    }
+    if (newStateResult == "done")
+    {
+        activationProgress->progress(90);
+        onFlashWriteSuccess();
+    }
+    else
+    {
+        namespace softwareServer =
+            sdbusplus::xyz::openbmc_project::Software::server;
+        Activation::activation(softwareServer::Activation::Activations::Failed);
+    }
+#endif
 }
 
 } // namespace updater
diff --git a/static/obmc-flash-bmc-alt@.service.in b/static/obmc-flash-bmc-alt@.service.in
new file mode 100644
index 0000000..8ea4790
--- /dev/null
+++ b/static/obmc-flash-bmc-alt@.service.in
@@ -0,0 +1,7 @@
+[Unit]
+Description=Flash image-bmc to the alt chip
+
+[Service]
+Type=oneshot
+RemainAfterExit=no
+ExecStart=/usr/sbin/flashcp /tmp/images/%i/image-bmc /dev/mtd/alt-bmc
