2018 ·English ·7 slides ·768 views

Plone migrations using plone.restapi

This document discusses migrating 10 Plone sites from Plone 4.1/4.3 to Plone 5.1 using plone.restapi. The goals were a consistent look and feel, common code base with fewer dependencies, and consistent deployment. A custom provisioning API was built to handle site creation, content migration, and other tasks. The migration process extracted content from source sites and recreated it in the target Plone 5 sites using plone.api calls over HTTP. Most structures and content migrated automatically, with some manual work needed for default pages, collections, and other content. Lessons learned were that the approach was stable, reasonably fast, and could be adopted for other migrations.

Slide 1 of 7 — Plone migrations using plone.restapi
1/7 arrow keys or swipe · click image for fullscreen
Slide 1 of 7 — Plone migrations using plone.restapi
1/7

Details

Uploaded
7 November 2018
Updated
17 November 2022
Language
English
Slides
7
Image size
2048x1536
Views
768
SlideShare ID
122261611
Uploaded format
PDF, PPTX
Collected
2026-09-27

The description above is SlideShare's automatically generated summary, not the author's own text.

Source & completeness

Content
original + reconstructed
Validation
passed
Slide text
available (7 slides)
Original files
yes
  • original.pdf PDF · 153 KB · 7 slides
  • original.pptx PPTX · 29 KB · 7 slides
Checksums (SHA-256)
  • original.pdf: acf65646a9c1cbfdc18acf2764deb507dc074e44b0e91ae3eae13533cdb1746a
  • original.pptx: 17f46dd1fcba225076bb274a3757cc371cd56f04cc8dd6a593e39e42093e0c17

Slide images come from SlideShare's public renderings (2048x1536 px, WebP). Any file marked as reconstructed is assembled from those images and is not the author's original source file.

Full text of every slide

Text extracted by SlideShare from the slide images — may contain OCR errors. 7 of 7 slides have text.

1
Plone migrations using plone.restapi Andreas Jung Plone Conference 
 November 2018, Tokyo
2
Requirements & goals • Migration of about 10 Plone sites to Plone 5.1 • 3 business sites • 7 project sites • Plone 4.1 and 4.3 • consistent new look & feel • consistent common code base • reduced number of dependencies 
 (old: 15-20 packages, new: 4 packages) • consistent deployment
3
Why not the standard 
 Plone migration? • We wanted to start fresh → in-place migration not applicable • Transmogrifier: too much „magic“ under the hood • every source site slightly different • massive consolidation of Archetypes content-types and packages to a few new Dexterity types • individual restructuring and consolidation of sites • consolidation of security and access management • incremental and partial site migrations (YAML-based configuration)
4
Migration setup Plone 5 plone.restapi Provisioning API Target systemSource systems Plone 4.1/4.3 migrate.py site-specific
 YAML config HTTP
5
Own provisioning API • few supplementary functions to plone.api: • provision new Plone site with add-ons • preserving/restoring old UIDs of source system • handling of navigation root • default pages • customer-specific migration logic • implemented as browser views
6
Migration process create_site() provision_site() migrate_users() migrate_groups() for folder in all_folders: content_objs = find_all_objs(folder) for obj in content_objs: target_pt = determine_target_pt(obj) target_path = determine_target_path(obj) obj_data = extract_data(obj) ensure_folder_hierarchy(target_path) # p.api, prov.api create_content(target_path, target_type, obj_data) # p.api set_workflow() set_local_roles() restore_uids(folder) # provisioning.api switch_to_resolveuid(folder) # provisioning.api commit()
7
Lessons learned • migrations using plone.api over HTTP are very stable and reasonable fast (60-90 minutes for largest sites) • all structures and content could be automatically migrated (80-90%) • 10-20% manual work • default pages • fixing content • collections • replacing various collages • easily adoptable to other migration projects