From Plone 3.1.2 to 5.2

Hi! First of all let me introduce my case: since February I've been working for a laboratory as a research assistant and one of the projects that the laboratory assign me was the migration and update of the web page of the research group. This site is actually in Plone 3.1.2 (yeah, pretty old...) based on windows and the objective is to migrate to a new server based on linux and update the sites to plone 5. I'm a Biomedical Engineer so my programing skills are basic to say at the most, and migrating the sites to a new server is one thing but updating such an old site to 5.2... I actually don't know if it is possible! I've been trying migrating from 3.1.2 to 3.2, after that to 3.3.6 then to 4.3.7 but int this last step the migration failed:

Upgrade aborted. Error:
Traceback (most recent call last):
File "/usr/local/Plone/buildout-cache/eggs/Products.CMFPlone-4.3.7-py2.7.egg/Products/CMFPlone/", line 259, in upgrade
File "/usr/local/Plone/buildout-cache/eggs/Products.GenericSetup-1.7.7-py2.7.egg/Products/GenericSetup/", line 160, in doStep
File "/usr/local/Plone/buildout-cache/eggs/", line 99, in beta3_beta4
value.remove('Large Plone Folder')
AttributeError: 'tuple' object has no attribute 'remove'
Starting upgrade of core addons.
Done upgrading core addons.
End of upgrade path, migration has finished
The upgrade path did NOT reach current version
Migration has failed

So my question to the Plone community: is it possible/worth updating such an old site to 5.2? it is a better idea to create a new site from zero and "paste" the contents from past sites?

Luckily for you there is a simple fix for that problem:

It should be in 1.3.19 (1 minor version after yours).
Try to upgrade and retry the migration.

HI, thx for answering! I applied what you said and I could import almost all of the plone sites to the 4.3.7.

But now I have a new problem: I installed Plone 5.2.1 and tried to import the sites fron 4.3.7 (the last step!) but the next error appear for all the sites:

Traceback (innermost last):
Module ZPublisher.WSGIPublisher, line 156, in transaction_pubevents
Module ZPublisher.WSGIPublisher, line 338, in publish_module
Module ZPublisher.WSGIPublisher, line 256, in publish
Module ZPublisher.mapply, line 85, in mapply
Module ZPublisher.WSGIPublisher, line 62, in call_object
Module OFS.ObjectManager, line 669, in manage_importObject
Module OFS.ObjectManager, line 692, in _importObjectFromFile
Module ZODB.ExportImport, line 79, in importFile
Module ZODB.ExportImport, line 95, in importFile
Module transaction._transaction, line 229, in savepoint
Module transaction._transaction, line 345, in _saveAndRaiseCommitishError
Module transaction._compat, line 50, in reraise
Module transaction._transaction, line 226, in savepoint
Module transaction._transaction, line 717, in init
Module ZODB.Connection, line 997, in savepoint
Module ZODB.Connection, line 517, in _commit
Module ZODB.ExportImport, line 188, in _importDuringCommit
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa7 in position 7: ordinal not in range(128)

Is this common? is there any possible solution?

Hi! I've been trying a couple things regarding this problem but still stuck in the same error as before. Tried to migrate first to Plone5 using Python 2.7, eliminate any special character that could trigger the UnicodeDecodeError,...
I've seen that some people fixed this problem by considering to purge some of the old files in order to avoid the UnicodDecodeError, but I don't know if this is actually safe or even possible.

Again, sorry for my way of explaining the problem, my programing skills are basic to say at the most so maybe I use some of the terms in a non-correct way. Thanks for any help.

Are you making a zexp export with the Import/Export button in the Zope Management Interface, and then you import it with that button in the new versions? That is only supported between sites with the exact same version numbers. It will break when you do this beween different Plone versions. (If the difference is small, it might work, but certainly not here.)

Did you find the Plone Upgrade Guide?

Also, I would be inclined to first upgrade to Plone 4.3.19. But sure: from 4.3.7 to 5.2.1 is intended to work.

Also, I can't tell from the traceback above which Python version you are using. During the migration to 5.2, you should definitely use Python 2.7.
Only afterwards can you migrate the database to Python 3, if all add-ons work on Python 3.
See various entries in the version specific migration procedures and tips

it is a better idea to create a new site from zero and "paste" the contents from past sites?

That depends. How much content would need to be copy/pasted manually?

Thanks for answering! Yeah, I'm using zexp and the to migrate the sites. I discarded any other way as it my current programming skills would not allow me to do it. I followed the guide until I found the problem I described before regarding the migration from 3.3.6 to 4.3.7, when I needed to apply the solution proposed by the Plone community. I will try again, but when migrating to Plone 5.2 based on Python 3 I got the following error:
Captura de pantalla (216)

We are talking about sites from 2008, so at least 2Gb per site (being 7 Plone sites the ones that I have to migrate)

at least 2Gb per site

I'm sorry, I must have misunderstood. I thought you wanted to manually copy/paste content, which would make sense if it was only a few pages.

sorry, my explanations are probably poor due to my knowledge. under which conditions would be better to manually copy/paste the contents?

ATContentTypes cannot be used on Python 3. You must first go to Plone 5.2 on Python 2.7, start the site, run the upgrades at @@plone-upgrade, then migrate the ATContentTypes content (based on Archetypes) to (based on dexterity). See the documentation, especially the migration part.

Also, the migration docs from Plone 4.x to 5.0 point to a video of a talk “How to upgrade sites to Plone 5” and slides. That could be helpful.

About copy/paste: if the content of your site is only a few pages, then it is probably much easier to start with a fresh and standard Plone 5.2 Python 3 site, and recreate the content manually.

Also, see this current thread about migrating an even older Plone, with alternatives for the in-place migration from above: Migrating ancient Plone 2.1 -> 5.2. What approach would you recommend?

I did a hack on some sites that I could not successfully migrate.

Kind of 'last approach', but I think I did it like this

  1. Upgrade as much as possible, run the upgrade steps 'manually' from /portal_setup

  2. Drop those that does not run

  3. Migrate Archetype to Dexteriy, try both the custom migration and atct migration.


  4. Make a new Plone site on the same zope.

  5. Move (Copy) as much as possible of the content from Plone1 to Plone2 in the ZMI (delete whatever you can not move)

  6. Delete the 'old' Plone site and reindex the new one

under which conditions would be better to manually copy/paste the contents?

When the site contains few pages / content items. Dozens or so.

Plone Foundation Code of Conduct