diff --git a/item_updater.cpp b/item_updater.cpp
index 85fc8ed..3dfa2bc 100644
--- a/item_updater.cpp
+++ b/item_updater.cpp
@@ -200,6 +200,18 @@
                 createActiveAssociation(path);
             }
 
+            // Create Version instance for this version.
+            auto versionPtr = std::make_unique<VersionClass>(
+                            bus,
+                            path,
+                            version,
+                            purpose,
+                            "");
+            auto isVersionFunctional = versionPtr->isFunctional();
+            versions.insert(std::make_pair(
+                                id,
+                                std::move(versionPtr)));
+
             // Create Activation instance for this version.
             activations.insert(std::make_pair(
                                    id,
@@ -217,8 +229,15 @@
                 uint8_t priority = std::numeric_limits<uint8_t>::max();
                 if (!restoreFromFile(id, priority))
                 {
-                    log<level::ERR>("Unable to restore priority from file.",
-                            entry("VERSIONID=%s", id));
+                    if (isVersionFunctional)
+                    {
+                        priority = 0;
+                    }
+                    else
+                    {
+                        log<level::ERR>("Unable to restore priority from file.",
+                                entry("VERSIONID=%s", id));
+                    }
                 }
                 activations.find(id)->second->redundancyPriority =
                         std::make_unique<RedundancyPriority>(
@@ -227,17 +246,6 @@
                              *(activations.find(id)->second),
                              priority);
             }
-
-            // Create Version instance for this version.
-            versions.insert(std::make_pair(
-                                id,
-                                std::make_unique<
-                                     phosphor::software::manager::Version>(
-                                     bus,
-                                     path,
-                                     version,
-                                     purpose,
-                                     "")));
         }
     }
     return;
