[Plone-conference] Migrations Open Space Results

Johannes Raggam johannes at raggam.co.at
Fri Oct 31 23:00:39 UTC 2014


We had today an interesting Open Space regarding Plone Migrations.

We were talking about our experience with different migration
strategies:

1) Using the normal plone.app.upgrade path.

- Pros: Fastest method, if there is no mess with add on products. There
are normally no content integrity problems. The contents of the site
should appear the same after the migration as before. Except you get
into troubles with add on products.

- Cons: If you take the chance to remove unnecessary add ons, you'd
probably uninstall them before migrating. But those add ons need
uninstall profiles, often also uninstall setuphandler routines. Those
are often not available or incomplete. In any case, you should expect
some cruft still being around, like some properties in
portal_quickinstaller or portal_properties or some portlets still being
registered...


2) Using zopyx.plone.migrations. This one is exporting contents into
Python pickles and importing them afterwards. You need to have the same
content products installed in the target Plone site to be able to import
content successfully.

- Pros: Exporting/Importing Python. Goes relative fast (E.g. ~50GB
export/import done in ca. 3 hrs). No data serialization mess.

- Cons: There might be the need to modify the importer to fit your
requirements.  No support for archetypes.schemaextender (the trick is to
copy the schemaextender schematas over to another Archetypes base
schema). Unsure, if object annotations are exported (e.g.
plone.app.discussion).

Links:
https://github.com/zopyx/zopyx.plone.migration

You might want to take a look this fork, which adds batch export/import,
LinguaPlone support + more:
https://github.com/bluedynamics/zopyx.plone.migration


3) Using transmogrifier. Transmogrifier exports and imports content via
content serialization/deserialization.

Pro: Modify content in a transmogrifier pipeline. Even export from one
content type to another is no problem. Widely used within Plone
community, lots of experience. 

Cons: A lot of configuration is necessary to get the transmogrifier
chain right. But default blueprints can handle common migrations.
Unclear, if there are blueprints for object annotations.

Project overview:

- collective.transmogrifier: Base transmogrifier package.
- plone.app.transmogrifier: Plone specific additions.
- quintagroup.transmogrifier: Plone specific additions. Mostly made
obsolete by plone.app.Transmogrifier.

- collective.jsonmigrator: Transmogrifier JSON importer.
- collective.jsonify: JSON views for Plone content.

Useful Links:

Transmogrifier CSV import:
http://shuttlethread.com/blog/importing-dexterity-content-via-csv

Plone Conference Talk - Journeys with Transmogrifier & friends or How
not to get stuck in the Plone dark ages - Daniel Jowett
http://vimeo.com/110367183


4) For the sake of completeness: plone.app.dexterity content migrations:
For Archetypes to plone.app.dexterity migrations, There are also
plone.app.contenttypes migration steps. Pro and cons of point 1) apply,
also currently object annotations are not migrated, AFAIK (no
plone.app.discussion migrations).
   
   For some examples on how to use plone.app.dexterity migration
framework for external add-ons, look at collective.folderishtypes and
collective.richdescription migrations.

https://github.com/collective/collective.folderishtypes/blob/master/src/collective/folderishtypes/dx/migration/migrate_atdx_folderishtypes.py
https://github.com/collective/collective.richdescription/blob/master/src/collective/richdescription/dx/migration/__init__.py



Cheers, Johannes



-- 
programmatic  web development
di(fh) johannes raggam / thet
python plone zope development
plone framework  team  member
mail: office at programmatic.pro
web:  http://programmatic.pro
      http://bluedynamics.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <http://lists.plone.org/pipermail/plone-conference/attachments/20141101/fd482c8e/attachment.asc>


More information about the Plone-conference mailing list