diff --git a/item_updater.cpp b/item_updater.cpp
index ba153e6..42e7729 100755
--- a/item_updater.cpp
+++ b/item_updater.cpp
@@ -1,3 +1,5 @@
+#include <string>
+#include <fstream>
 #include <phosphor-logging/log.hpp>
 #include "config.h"
 #include "item_updater.hpp"
@@ -44,6 +46,7 @@
         return -1;
     }
 
+    auto extendedVersion = ItemUpdater::getExtendedVersion(MANIFEST_FILE);
     for (const auto& resp : mapperResponse)
     {
         // Version id is the last item in the path
@@ -63,12 +66,53 @@
                     std::make_unique<Activation>(
                             updater->busItem,
                             resp,
-                            versionId)));
+                            versionId,
+                            extendedVersion)));
         }
     }
     return 0;
 }
 
+std::string ItemUpdater::getExtendedVersion(const std::string& manifestFilePath)
+{
+    constexpr auto extendedVersionKey = "extended_version=";
+    constexpr auto extendedVersionKeySize = strlen(extendedVersionKey);
+
+    if (manifestFilePath.empty())
+    {
+        log<level::ERR>("Error MANIFESTFilePath is empty");
+        throw std::runtime_error("MANIFESTFilePath is empty");
+    }
+
+    std::string extendedVersion{};
+    std::ifstream efile;
+    std::string line;
+    efile.exceptions(std::ifstream::failbit
+                     | std::ifstream::badbit
+                     | std::ifstream::eofbit);
+
+    try
+    {
+        efile.open(manifestFilePath);
+        while (getline(efile, line))
+        {
+            if (line.compare(0, extendedVersionKeySize,
+                             extendedVersionKey) == 0)
+            {
+                extendedVersion = line.substr(extendedVersionKeySize);
+                break;
+            }
+        }
+        efile.close();
+    }
+    catch (const std::exception& e)
+    {
+        log<level::ERR>("Error in reading Host MANIFEST file");
+    }
+
+    return extendedVersion;
+}
+
 } // namespace updater
 } // namespace software
 } // namespace openpower
