The document discusses migrating a Plone site from older versions to Plone 5.2 and Volto. It describes the challenges of migrating from Python 2 to 3 and older Plone versions. It then outlines the process and tools used for the migration, including packages, a commander utility, Jenkins, and a migration server. Details are provided on how content types were migrated and the Volto frontend was implemented.
Uncommon Grace The Autobiography of Isaac Folorunso
Data migration to Plone 5.2 and Volto
1. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Data migration to Plone 5.2 and Volto
Rodrigo Ferreira de Souza
October, 2019
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
2. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Where we are
1 Knoledgements
2 Use cases
3 The challendge
4 Our way
5 Details on how we did things
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
3. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Options to Migrate
Plone 4.3 → Plone 5+
Collective Transmogrifier
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
4. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Options to Migrate
Plone 4.3 → Plone 5+
Collective Transmogrifier
Plone 5.1 → Plone 5.2+
Migrate a ZODB from Python 2.7 to
Python 3
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
5. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Options to Migrate
Plone 4.3 → Plone 5+
Collective Transmogrifier
Plone 5.1 → Plone 5.2+
Migrate a ZODB from Python 2.7 to
Python 3
Collective Transmogrifier
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
6. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Options to Migrate
Plone 4.3 → Plone 5+
Collective Transmogrifier
Plone 5.1 → Plone 5.2+
Migrate a ZODB from Python 2.7 to
Python 3
Collective Transmogrifier
Figure: A transmogrifier is fictional device used
for transforming one object into another object.
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
7. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Why we use Transmogrifier?
Have many generic Pipelines available
for common cases
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
8. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Why we use Transmogrifier?
Have many generic Pipelines available
for common cases
Flexibility to deal with different use
cases
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
9. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Why we use Transmogrifier?
Have many generic Pipelines available
for common cases
Flexibility to deal with different use
cases
Briliant way to use Iterator Design
Pattern!
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
10. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Why we use Transmogrifier?
Have many generic Pipelines available
for common cases
Flexibility to deal with different use
cases
Briliant way to use Iterator Design
Pattern!
Figure: Transmogrify Diagram
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
11. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Options to Migrate
Why we use Transmogrifier?
Why we use Transmogrifier?
Have many generic Pipelines available
for common cases
Flexibility to deal with different use
cases
Briliant way to use Iterator Design
Pattern!
Figure: Modern Times – Production line
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
12. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Large University
High-profile government client
One of the largest research institutions in Germany
Where we are
1 Knoledgements
2 Use cases
3 The challendge
4 Our way
5 Details on how we did things
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
13. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Large University
High-profile government client
One of the largest research institutions in Germany
Large University
Figure: Large University client website
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
14. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Large University
High-profile government client
One of the largest research institutions in Germany
High-profile government client
Figure: High-profile government client website
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
15. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Large University
High-profile government client
One of the largest research institutions in Germany
One of the largest research institutions in Germany
Figure: Large research institution client website
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
16. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
Where we are
1 Knoledgements
2 Use cases
3 The challendge
4 Our way
5 Details on how we did things
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
17. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
The challendge
From:
Python 2.x
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
18. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
The challendge
From:
Python 2.x
Plone 4.3.x or 5.0.x or 5.1.x
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
19. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
The challendge
From:
Python 2.x
Plone 4.3.x or 5.0.x or 5.1.x
Archetypes or Dexterity
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
20. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
The challendge
From:
Python 2.x
Plone 4.3.x or 5.0.x or 5.1.x
Archetypes or Dexterity
Old Products
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
21. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
The challendge
From:
Python 2.x
Plone 4.3.x or 5.0.x or 5.1.x
Archetypes or Dexterity
Old Products
Sometimes other systems
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
22. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
The challendge
From:
Python 2.x
Plone 4.3.x or 5.0.x or 5.1.x
Archetypes or Dexterity
Old Products
Sometimes other systems
To:
Python 3
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
23. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
The challendge
From:
Python 2.x
Plone 4.3.x or 5.0.x or 5.1.x
Archetypes or Dexterity
Old Products
Sometimes other systems
To:
Python 3
Plone 5.2
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
24. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
The challendge
From:
Python 2.x
Plone 4.3.x or 5.0.x or 5.1.x
Archetypes or Dexterity
Old Products
Sometimes other systems
To:
Python 3
Plone 5.2
Volto
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
25. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
Advantages for the clients
They spare a migration from Plone 5 to Plone 6
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
26. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
Advantages for the clients
They spare a migration from Plone 5 to Plone 6
At least part of it
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
27. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
Advantages for Plone solutions providers
A way to sell clients the Python 3 upgrade
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
28. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
The challendge
Advantages for the clients
Advantages for Plone solutions providers
Advantages for Plone solutions providers
A way to sell clients the Python 3 upgrade
Which is costly but does not gain the client anything in terms of functionality
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
29. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Packages
Commander Utility
Jenkins
Migration Server
Where we are
1 Knoledgements
2 Use cases
3 The challendge
4 Our way
5 Details on how we did things
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
30. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Packages
Commander Utility
Jenkins
Migration Server
Packages
kitconcept Content Creator
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
31. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Packages
Commander Utility
Jenkins
Migration Server
Packages
kitconcept Content Creator
kitconcept Migrator
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
32. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Packages
Commander Utility
Jenkins
Migration Server
Packages
kitconcept Content Creator
kitconcept Migrator
Migration Plone 5
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
33. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Packages
Commander Utility
Jenkins
Migration Server
Commander Utility
Figure: Commander Utility
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
34. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Packages
Commander Utility
Jenkins
Migration Server
Jenkins
Figure: Jenkins
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
35. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
Packages
Commander Utility
Jenkins
Migration Server
Migration Server
Figure: Migration Server
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
36. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
Where we are
1 Knoledgements
2 Use cases
3 The challendge
4 Our way
5 Details on how we did things
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
37. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
General Backend
ATTopics → Collection
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
38. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
General Backend
ATTopics → Collection
RichText → Volto Blocks
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
39. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
General Backend
ATTopics → Collection
RichText → Volto Blocks
Portlets
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
40. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
General Backend
ATTopics → Collection
RichText → Volto Blocks
Portlets
Postmigration
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
41. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
The Volto part
What we Polish to enter in Volto land:
Use Collective Folderish Types
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
42. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
The Volto part
What we Polish to enter in Volto land:
Use Collective Folderish Types
Deal with default pages
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
43. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
The Volto part
What we Polish to enter in Volto land:
Use Collective Folderish Types
Deal with default pages
Convert RichText HTML to Volto DraftJS (node utility)
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
44. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
The Volto part
What we Polish to enter in Volto land:
Use Collective Folderish Types
Deal with default pages
Convert RichText HTML to Volto DraftJS (node utility)
Easily point to old website when content not imported
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
45. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
The Volto part
What we Polish to enter in Volto land:
Use Collective Folderish Types
Deal with default pages
Convert RichText HTML to Volto DraftJS (node utility)
Easily point to old website when content not imported
Fix URLs (planned resolveuid)
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
46. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
The Volto part
What we Polish to enter in Volto land:
Use Collective Folderish Types
Deal with default pages
Convert RichText HTML to Volto DraftJS (node utility)
Easily point to old website when content not imported
Fix URLs (planned resolveuid)
Simple Folders → Document with Collection Block (planned)
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
47. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
The Volto part
What we Polish to enter in Volto land:
Use Collective Folderish Types
Deal with default pages
Convert RichText HTML to Volto DraftJS (node utility)
Easily point to old website when content not imported
Fix URLs (planned resolveuid)
Simple Folders → Document with Collection Block (planned)
Simple Collection → Document with Collection Block (planned)
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
48. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
Questions?
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto
49. Knoledgements
Use cases
The challendge
Our way
Details on how we did things
General Backend
The Volto part
Rodrigo Ferreira de Souza Data migration to Plone 5.2 and Volto