diff --git a/item_updater.cpp b/item_updater.cpp
index d831217..e8196af 100644
--- a/item_updater.cpp
+++ b/item_updater.cpp
@@ -5,6 +5,7 @@
 #include "images.hpp"
 #include "serialize.hpp"
 #include "version.hpp"
+#include "xyz/openbmc_project/Software/ExtendedVersion/server.hpp"
 #include "xyz/openbmc_project/Software/Version/server.hpp"
 
 #include <phosphor-logging/elog-errors.hpp>
@@ -45,6 +46,7 @@
 
     sdbusplus::message::object_path objPath;
     auto purpose = VersionPurpose::Unknown;
+    std::string extendedVersion;
     std::string version;
     std::map<std::string, std::map<std::string, std::variant<std::string>>>
         interfaces;
@@ -87,6 +89,16 @@
                 }
             }
         }
+        else if (intf.first == EXTENDED_VERSION_IFACE)
+        {
+            for (const auto& property : intf.second)
+            {
+                if (property.first == "ExtendedVersion")
+                {
+                    extendedVersion = std::get<std::string>(property.second);
+                }
+            }
+        }
     }
     if (version.empty() || filePath.empty() ||
         purpose == VersionPurpose::Unknown)
@@ -132,7 +144,7 @@
                                          activationState, associations)));
 
         auto versionPtr = std::make_unique<VersionClass>(
-            bus, path, version, purpose, filePath,
+            bus, path, version, purpose, extendedVersion, filePath,
             std::bind(&ItemUpdater::erase, this, std::placeholders::_1));
         versionPtr->deleteObject =
             std::make_unique<phosphor::software::manager::Delete>(bus, path,
@@ -221,6 +233,10 @@
             auto purpose = server::Version::VersionPurpose::BMC;
             restorePurpose(id, purpose);
 
+            // Read os-release from /etc/ to get the BMC extended version
+            std::string extendedVersion =
+                VersionClass::getBMCExtendedVersion(osRelease);
+
             auto path = fs::path(SOFTWARE_OBJPATH) / id;
 
             // Create functional association if this is the functional
@@ -249,7 +265,7 @@
 
             // Create Version instance for this version.
             auto versionPtr = std::make_unique<VersionClass>(
-                bus, path, version, purpose, "",
+                bus, path, version, purpose, extendedVersion, "",
                 std::bind(&ItemUpdater::erase, this, std::placeholders::_1));
             auto isVersionFunctional = versionPtr->isFunctional();
             if (!isVersionFunctional)
