diff --git a/mmc/flash.cpp b/mmc/flash.cpp
index afaadfb..dd12b0d 100644
--- a/mmc/flash.cpp
+++ b/mmc/flash.cpp
@@ -1,3 +1,5 @@
+#include "config.h"
+
 #include "flash.hpp"
 
 #include "activation.hpp"
@@ -9,14 +11,49 @@
 namespace updater
 {
 
+namespace softwareServer = sdbusplus::xyz::openbmc_project::Software::server;
+
 void Activation::flashWrite()
 {
-    // Empty
+    auto method = bus.new_method_call(SYSTEMD_BUSNAME, SYSTEMD_PATH,
+                                      SYSTEMD_INTERFACE, "StartUnit");
+    auto serviceFile = "obmc-flash-mmc@" + versionId + ".service";
+    method.append(serviceFile, "replace");
+    bus.call_noreply(method);
 }
 
-void Activation::onStateChanges(sdbusplus::message::message& /*msg*/)
+void Activation::onStateChanges(sdbusplus::message::message& msg)
 {
-    // Empty
+    uint32_t newStateID{};
+    sdbusplus::message::object_path newStateObjPath;
+    std::string newStateUnit{};
+    std::string newStateResult{};
+
+    // Read the msg and populate each variable
+    msg.read(newStateID, newStateObjPath, newStateUnit, newStateResult);
+
+    auto mmcServiceFile = "obmc-flash-mmc@" + versionId + ".service";
+
+    if (newStateUnit == mmcServiceFile && newStateResult == "done")
+    {
+        roVolumeCreated = true;
+        activationProgress->progress(activationProgress->progress() + 1);
+    }
+
+    if (newStateUnit == mmcServiceFile)
+    {
+        if (newStateResult == "failed" || newStateResult == "dependency")
+        {
+            Activation::activation(
+                softwareServer::Activation::Activations::Failed);
+        }
+        else if (roVolumeCreated)
+        {
+            Activation::onFlashWriteSuccess();
+        }
+    }
+
+    return;
 }
 
 } // namespace updater
diff --git a/mmc/item_updater_helper.cpp b/mmc/item_updater_helper.cpp
index 8ef5749..0eb910e 100644
--- a/mmc/item_updater_helper.cpp
+++ b/mmc/item_updater_helper.cpp
@@ -1,3 +1,5 @@
+#include "config.h"
+
 #include "item_updater_helper.hpp"
 
 namespace phosphor
@@ -27,9 +29,13 @@
     // Empty
 }
 
-void Helper::removeVersion(const std::string& /* versionId */)
+void Helper::removeVersion(const std::string& versionId)
 {
-    // Empty
+    auto method = bus.new_method_call(SYSTEMD_BUSNAME, SYSTEMD_PATH,
+                                      SYSTEMD_INTERFACE, "StartUnit");
+    auto serviceFile = "obmc-flash-mmc-remove@" + versionId + ".service";
+    method.append(serviceFile, "replace");
+    bus.call_noreply(method);
 }
 
 void Helper::updateUbootVersionId(const std::string& /* versionId */)
diff --git a/mmc/obmc-flash-mmc-remove@.service.in b/mmc/obmc-flash-mmc-remove@.service.in
new file mode 100644
index 0000000..0fb4311
--- /dev/null
+++ b/mmc/obmc-flash-mmc-remove@.service.in
@@ -0,0 +1,7 @@
+[Unit]
+Description=Delete image %I from BMC storage
+
+[Service]
+Type=oneshot
+RemainAfterExit=no
+ExecStart=/usr/bin/obmc-flash-bmc mmc-remove %i
diff --git a/mmc/obmc-flash-mmc@.service.in b/mmc/obmc-flash-mmc@.service.in
new file mode 100644
index 0000000..f8b4262
--- /dev/null
+++ b/mmc/obmc-flash-mmc@.service.in
@@ -0,0 +1,8 @@
+[Unit]
+Description=Write image %I to BMC storage
+OnFailure=obmc-flash-mmc-remove@%i.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=no
+ExecStart=/usr/bin/obmc-flash-bmc mmc %i @IMG_UPLOAD_DIR@
