diff --git a/lib/alchemy/upgrader/tasks/add_page_versions.rb b/lib/alchemy/upgrader/tasks/add_page_versions.rb
index <HASH>..<HASH> 100644
--- a/lib/alchemy/upgrader/tasks/add_page_versions.rb
+++ b/lib/alchemy/upgrader/tasks/add_page_versions.rb
@@ -12,12 +12,22 @@ module Alchemy::Upgrader::Tasks
         Alchemy::Page.find_each do |page|
           next if page.versions.any?
 
-          version = page.versions.create!
-          version = page.versions.create!(
-            public_on: page.public_on,
-            public_until: page.public_until
-          ) if page.public?
-          page.elements.update_all(page_version_id: version.id)
+          Alchemy::Page.transaction do
+            page.versions.create!.tap do |version|
+              Alchemy::Element.where(page_id: page.id).update_all(page_version_id: version.id)
+            end
+
+            if page.public_on?
+              page.versions.create!(
+                public_on: page.public_on,
+                public_until: page.public_until
+              ).tap do |version|
+                Alchemy::Element.where(page_id: page.id).not_nested.available.order(:position).find_each do |element|
+                  Alchemy::Element.copy(element, page_version_id: version.id)
+                end
+              end
+            end
+          end
 
           print "."
         end
Update page version upgrader

Create a public version as well and copy the public elements over.