Basic Transmogrifier pipeline to migrate to Plone 5 Dexterity Types

I have been working on a basic pipeline to migrate the built in content types from Plone 4.3.x sites to Plone 5 and am having a bit of an issue with both Collections and Events. Everything else in my package seems to work fine with the exception of these two. I think it may be really beneficial to Plone to have a migration strategy using this method to help folks get "over the hump" sometimes and into the latest version with less pain. As in my case, I've collected enough cruft in the Plone 4 era that I would really like to start on a clean 5 build and just move the built in content types content in. Anything else I will have to address separately.

Anyway, can anyone point me in the right direction on how to migrate the plone.app.collections to dexterity types in Plone 5?

The combination of packages I currently am using are collective.jsonify on the source and collective.jsonmigrator/transmogrify.dexterity on the destination. Any help would be GREATLY appreciated.

1 Like

On the topic of migrating Events, I found that the start and end dates on Event are python datetime.datetime, in contrast with the default DublinCore date fields which are zope DateTime.

I've developed a transmogrifier blueprint that fixes timezone errors when importing Events with transmogrifier. It's in a private package but here is the blueprint as a public gist:

1 Like

Thank you. Looks like events are updating properly with the dates/times. All that I have left are these collections.

Again, thank you for the quick help!

have you tried moving to Dexterity in Plone 4.3 before upgrading to Pone 5? you just need to install plone.app.contenttypes and run the migration process.

Thats a great suggestion. But I have a question on that. My current collection in the 4.3 sites are using plone.app.collection, which is basically a dexterity version of collections introduced in the 4.3 era. Would this not be the same as the plone.app.contenttypes version?

@cthomas plone.app.collection has 2.x branch where a dexterity version was created, but this has never been in a Plone 4 or 5 release as far as I can see. plone.app.collection 1.X is still the archetypes version, packaged both with Plone 4.3 and also with Plone 5 (just like ATContenttypes, for migration purposes).

The Collection Dexterity Contenttype from plone.app.contenttypes is a different beast alltogether: the collection part of the contenttype is redefined as a behavior and the contenttype itself just a stack of behaviors. See the Collection.xml in plone.ap.contenttypes: https://github.com/plone/plone.app.contenttypes/blob/master/plone/app/contenttypes/profiles/default/types/Collection.xml

1 Like

Thanks for the clarification.

All, I wanted to pass along an update and a simple solution to the issue I was having. Essentially, my pipeline was grabbing and converting all content into Dexterity objects as expected. However, after the migration, and a clear/rebuild of the catalog, it left all collections functioning in terms of displaying the correct information, but they were not editable. You could edit their settings and click save, but the changes were reset when the page reloaded.

My combination of packages to accomplish this migration were as follows.

On the source site: collective.jsonify

On the destination site: collective.jsonmigrator, transmogrify.dexterity.

With that said, the solution to the problem with collections was to simply go into the ZMI, go to Portal Setup --> Upgrades and from the dropdown select plone.app.querystring. You will need to rerun upgrade steps 7 & 8 through the end, in my case 13. After this, the collections worked perfectly.

I can't take any credit for this as djowett found the issue and figured out the solution. Many thanks to him for all of his help. I hope this may help someone in the future.