Jan Mevißen: Lost in migration?

published Oct 14, 2015

Talk by Jan Mevißen at the Plone Conference 2015 in Bucharest. A flexible approach to content migration in Plone.

Why another migration tool for Plone? plone.app.contenttypes already has migration for Archetypes to Dexterity. This atct_migrator is in most cases the right tool. Watch and listen to Philip Bauer's talk (tomorrow) about this: How to upgrade sites to Plone 5.

We have Plone 3.3.5, more than 20,000 items. Custom content types, with archetypes.schemaextender. Merging of content from different sites, cluster of five sites sharing a mounted zeo. This live implementation was actually uninstallable anywhere else, so we could not get a good test migration using the default ways.

interaktiv.migrator gets source as json and pushes it to the target.


  • import content directly to a newer Plone version.
  • migrate our own content types without mapping fields that were already matching
  • archetypes.schemaextender data worked fine with this
  • This could be done from a live system.
  • You get a new and clean database.


  • Only content is migrated, so settings and users are lost. So you should do something else to get this part of your setup back.
  • References have to be migrated at a second run.

I wrote a transmogrifier based workflow to export and import the data.

In the old site there is a configuration form for the migrator, with a target url and for security reasons an api key that must match between source and target. On the target site, you set mappings for types, fields, views.

Live demo, migrating some content, with portlets and local roles on the Sharing tab.

After migration some things still need to be done:

  • Go to portal_workflow and update the security settings (button).
  • Go to portal_catalog and clear and rebuild the catalog (button).

You can write code to export only some portal_types, or only published items, or only content from one folder.

  • interaktiv.migrator is in beta.
  • Target audience: developers.
  • Does not work yet for collections.
  • Only migrates from Archetypes to Dexterity.
  • Content gets a different uid currently.
  • Needs better documentation, testing, refactoring.



  • Are dates migrated correctly, so creation and modification date? No, but for example we added this for the Creators field and this took only half an hour to implement.
  • Which Plone versions? Tested on migrating from Plone 3 or 4 to 5.
  • plone.app.contenttypes migrates schemaextender, dates, uids, etcetera. Did you report any issues there? No.