diff --git a/item_updater.cpp b/item_updater.cpp
index 42e7729..7a5629d 100755
--- a/item_updater.cpp
+++ b/item_updater.cpp
@@ -3,6 +3,7 @@
 #include <phosphor-logging/log.hpp>
 #include "config.h"
 #include "item_updater.hpp"
+#include "activation.hpp"
 
 namespace openpower
 {
@@ -11,8 +12,13 @@
 namespace updater
 {
 
+// When you see server:: you know we're referencing our base class
+namespace server = sdbusplus::xyz::openbmc_project::Software::server;
+
 using namespace phosphor::logging;
 
+constexpr auto squashFSImage = "pnor.xz.squashfs";
+
 int ItemUpdater::createActivation(sd_bus_message* msg,
                                   void* userData,
                                   sd_bus_error* retErr)
@@ -59,6 +65,14 @@
         }
 
         auto versionId = resp.substr(pos + 1);
+
+        // Determine the Activation state by processing the given image dir.
+        auto activationState = server::Activation::Activations::Invalid;
+        if (ItemUpdater::validateSquashFSImage(versionId) == 0)
+        {
+            activationState = server::Activation::Activations::Ready;
+        }
+
         if (updater->activations.find(versionId) == updater->activations.end())
         {
             updater->activations.insert(std::make_pair(
@@ -67,7 +81,8 @@
                             updater->busItem,
                             resp,
                             versionId,
-                            extendedVersion)));
+                            extendedVersion,
+                            activationState)));
         }
     }
     return 0;
@@ -109,10 +124,26 @@
     {
         log<level::ERR>("Error in reading Host MANIFEST file");
     }
-
     return extendedVersion;
 }
 
+int ItemUpdater::validateSquashFSImage(const std::string& versionId)
+{
+    auto file = IMAGE_DIR + versionId + "/" +
+                std::string(squashFSImage);
+    std::ifstream efile(file.c_str());
+
+    if (efile.good() == 1)
+    {
+        return 0;
+    }
+    else
+    {
+        log<level::ERR>("Failed to find the SquashFS image.");
+        return -1;
+    }
+}
+
 } // namespace updater
 } // namespace software
 } // namespace openpower
