diff --git a/src/activation.cpp b/src/activation.cpp
index 65db23b..a7ffd6c 100644
--- a/src/activation.cpp
+++ b/src/activation.cpp
@@ -25,10 +25,12 @@
 constexpr auto SYSTEMD_INTERFACE = "org.freedesktop.systemd1.Manager";
 
 namespace fs = std::filesystem;
-namespace softwareServer = sdbusplus::xyz::openbmc_project::Software::server;
 
 using namespace phosphor::logging;
-using SoftwareActivation = softwareServer::Activation;
+using SoftwareActivation =
+    sdbusplus::server::xyz::openbmc_project::software::Activation;
+using ExtendedVersion =
+    sdbusplus::server::xyz::openbmc_project::software::ExtendedVersion;
 
 auto Activation::activation(Activations value) -> Activations
 {
@@ -64,6 +66,15 @@
     return SoftwareActivation::requestedActivation(value);
 }
 
+auto Activation::extendedVersion(std::string value) -> std::string
+{
+    auto info = Version::getExtVersionInfo(value);
+    manufacturer = info["manufacturer"];
+    model = info["model"];
+
+    return ExtendedVersion::extendedVersion(value);
+}
+
 void Activation::unitStateChange(sdbusplus::message_t& msg)
 {
     uint32_t newStateID{};
diff --git a/src/activation.hpp b/src/activation.hpp
index 092fe3d..cd90217 100644
--- a/src/activation.hpp
+++ b/src/activation.hpp
@@ -148,10 +148,6 @@
         associations(assocs);
         path(filePath);
 
-        auto info = Version::getExtVersionInfo(extVersion);
-        manufacturer = info["manufacturer"];
-        model = info["model"];
-
         // Emit deferred signal.
         emit_object_added();
     }
@@ -176,6 +172,14 @@
     RequestedActivations
         requestedActivation(RequestedActivations value) override;
 
+    /** @brief Overloaded ExtendedVersion property setter function
+     *
+     * @param[in] value - Extended version value
+     *
+     * @return New value of property
+     */
+    std::string extendedVersion(std::string value) override;
+
     /** @brief Get the object path */
     const std::string& getObjectPath() const
     {
diff --git a/src/item_updater.cpp b/src/item_updater.cpp
index 62d2145..a77d2e4 100644
--- a/src/item_updater.cpp
+++ b/src/item_updater.cpp
@@ -535,9 +535,12 @@
     }
     else
     {
-        // This is a version that a running PSU is using, set the path
-        // on the version object
+        // Activation already exists. It may have been created for code that is
+        // running on one or more PSUs. Set Path and ExtendedVersion properties.
+        // The properties are not set when the Activation is created for code
+        // running on a PSU. The properties are needed to update other PSUs.
         it->second->path(modelDir);
+        it->second->extendedVersion(extVersion);
     }
 }
 
