diff --git a/activation.cpp b/activation.cpp
index 6b9dfb8..79b5b10 100644
--- a/activation.cpp
+++ b/activation.cpp
@@ -2,6 +2,7 @@
 
 #include "images.hpp"
 #include "item_updater.hpp"
+#include "msl_verify.hpp"
 #include "serialize.hpp"
 
 #include <phosphor-logging/elog-errors.hpp>
@@ -9,6 +10,7 @@
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/exception.hpp>
 #include <xyz/openbmc_project/Common/error.hpp>
+#include <xyz/openbmc_project/Software/Version/error.hpp>
 
 #ifdef WANT_SIGNATURE_VERIFY
 #include "image_verify.hpp"
@@ -78,7 +80,6 @@
 
 auto Activation::activation(Activations value) -> Activations
 {
-
     if ((value != softwareServer::Activation::Activations::Active) &&
         (value != softwareServer::Activation::Activations::Activating))
     {
@@ -111,6 +112,24 @@
         }
 #endif
 
+        auto versionStr = parent.versions.find(versionId)->second->version();
+
+        if (!minimum_ship_level::verify(versionStr))
+        {
+            using namespace phosphor::logging;
+            using IncompatibleErr = sdbusplus::xyz::openbmc_project::Software::
+                Version::Error::Incompatible;
+            using Incompatible =
+                xyz::openbmc_project::Software::Version::Incompatible;
+
+            report<IncompatibleErr>(
+                prev_entry<Incompatible::MIN_VERSION>(),
+                prev_entry<Incompatible::ACTUAL_VERSION>(),
+                prev_entry<Incompatible::VERSION_PURPOSE>());
+            return softwareServer::Activation::activation(
+                softwareServer::Activation::Activations::Failed);
+        }
+
 #ifdef WANT_SIGNATURE_VERIFY
         fs::path uploadDir(IMG_UPLOAD_DIR);
         if (!verifySignature(uploadDir / versionId, SIGNED_IMAGE_CONF_PATH))
