SlideShare a Scribd company logo
1 of 37
Download to read offline
U P G R A D E T O P L O N E 5
P H I L I P B A U E R P L O N E C O N F E R E N C E 2 0 1 5
Philip Bauer
Munich
starzel.de
pbauer (github / irc)
StarzelDe (twitter)
PA R T 1 : G O O G L E F O R „ M I G R AT I O N S ,
U P G R A D E S A N D R E L A U N C H E S "
„Every non-trivial upgrade
should be approached as a relaunch.“
„The primary challenge is not development but
communication and project management.“
„Bring time. And space.“
„Expect everything to break!“
„Don't experiment, document.“
„Write your code as if your own kids will inherit the
code one day.“
„Write upgrade-steps.“
„Divide and conquer.“
„Don't try more than two new things at once.“
„Use the Help.“
U P G R A D I N G F R O M P L O N E 4 T O 5
Why?
Cui bono?
An easy sell?
L I V E D E M O
I T C A N ’ T B E T H AT E A S Y
A old site with content, configuration and add-ons
www.starzel.de
I T C A N ’ T B E T H AT E A S Y
I T C A N ’ T B E T H AT E A S Y
LinguaPlone is hard to get rid of
Theming is tricky
Some add-ons work nicely in Plone 5
I S S U E S
KeyError: 'Interface
`plone.app.iterate.interfaces.IIterateSettings`
defines a field `checkout_workflow_policy`, 

for which there is no record.'
I S S U E S
ComponentLookupError: (<InterfaceClass
plone.resource.interfaces.IResourceDirectory>,
'persistent')
I S S U E S
List of content to migrate from AT to DX is empty
L I N G U A P L O N E – O H M Y !
LinguaPlone ➟ plone.app.multilingual (2.x) in 4.3.x
Documentation: https://github.com/plone/
plone.app.multilingual/issues/181
wildcard.fixpersistentutilities to the rescue!
Can someone please sprint on this?
T H E U P G R A D E - G U I D E
http://docs.plone.org/manage/upgrading/
version_specific_migration/p4x_to_p5x_upgrade.html
Needs love at sprint
Your design will break unless it is a full diazo theme
T H E D E S I G N
Just joking ;-)
T H E D E S I G N
Your design will always break
T H E D E S I G N
Disable your custom theme before migrating!
T H E D E S I G N
C O N T E N T
S E T T I N G S
<record name="plone.displayed_types">
<value purge="false">
<element>talk</element>
</value>
</record>
C O D E
A R C H E T Y P E S D E X T E R I T Y
@@pac_installer
@@atct_migrator
@@migrate_from_atct
A R C H E T Y P E S D E X T E R I T Y
@@custom_migration
A R C H E T Y P E S D E X T E R I T Y
from plone.app.contenttypes.migration
import field_migrators
A R C H E T Y P E S D E X T E R I T Y
A R C H E T Y P E S D E X T E R I T Y
ISSUES:
memory
commits
U P G R A D I N G A D D - O N S F R O M 4 T O 5
That’s your job.
Thanks

More Related Content

What's hot

Mud flooring
Mud flooringMud flooring
Mud flooringanjali s
 
Oriental furniture styles REPORT
Oriental furniture styles REPORTOriental furniture styles REPORT
Oriental furniture styles REPORTKL Santos
 
Brick partition walls
Brick partition wallsBrick partition walls
Brick partition wallsRashi Jain
 
SERVICES air handling unit
SERVICES air handling unitSERVICES air handling unit
SERVICES air handling unitAs Per Design
 
Electrochromic Glass
Electrochromic GlassElectrochromic Glass
Electrochromic GlassGlass Apps
 
Vernacular architecture
Vernacular architectureVernacular architecture
Vernacular architectureKhyati Vasani
 
passive techniques
passive techniquespassive techniques
passive techniquesAnvita Jain
 
01 History of Architecture-I Part A Western Lecture I.pdf
01 History of Architecture-I Part A Western Lecture I.pdf01 History of Architecture-I Part A Western Lecture I.pdf
01 History of Architecture-I Part A Western Lecture I.pdfSparklingpradip
 
ARCHITECTURE HISTORY OF MALAYSIA HOUSES
ARCHITECTURE HISTORY OF MALAYSIA HOUSES ARCHITECTURE HISTORY OF MALAYSIA HOUSES
ARCHITECTURE HISTORY OF MALAYSIA HOUSES Ali Alakhram
 
Architecture in cold and dry regions
Architecture in cold and dry regionsArchitecture in cold and dry regions
Architecture in cold and dry regionsAkshay Parakh
 
Desktop study hostel
Desktop study hostelDesktop study hostel
Desktop study hostelIdrees Ali
 
One Museum Park West (Post-Tensioning case study)
One Museum Park West (Post-Tensioning case study)One Museum Park West (Post-Tensioning case study)
One Museum Park West (Post-Tensioning case study)AMSYSCO Inc.
 
Climate Responsive Architecture
Climate Responsive ArchitectureClimate Responsive Architecture
Climate Responsive ArchitectureMithilesh Mandal
 
History of architecture
History of architectureHistory of architecture
History of architectureMark Agpaoa
 

What's hot (20)

9. Ventilation
9. Ventilation9. Ventilation
9. Ventilation
 
Greek architecture
Greek architectureGreek architecture
Greek architecture
 
Mud flooring
Mud flooringMud flooring
Mud flooring
 
Oriental furniture styles REPORT
Oriental furniture styles REPORTOriental furniture styles REPORT
Oriental furniture styles REPORT
 
Brick partition walls
Brick partition wallsBrick partition walls
Brick partition walls
 
SERVICES air handling unit
SERVICES air handling unitSERVICES air handling unit
SERVICES air handling unit
 
Partition walls
Partition wallsPartition walls
Partition walls
 
Electrochromic Glass
Electrochromic GlassElectrochromic Glass
Electrochromic Glass
 
Vernacular architecture
Vernacular architectureVernacular architecture
Vernacular architecture
 
passive techniques
passive techniquespassive techniques
passive techniques
 
Stone cladding
Stone claddingStone cladding
Stone cladding
 
01 History of Architecture-I Part A Western Lecture I.pdf
01 History of Architecture-I Part A Western Lecture I.pdf01 History of Architecture-I Part A Western Lecture I.pdf
01 History of Architecture-I Part A Western Lecture I.pdf
 
ARCHITECTURE HISTORY OF MALAYSIA HOUSES
ARCHITECTURE HISTORY OF MALAYSIA HOUSES ARCHITECTURE HISTORY OF MALAYSIA HOUSES
ARCHITECTURE HISTORY OF MALAYSIA HOUSES
 
Architecture in cold and dry regions
Architecture in cold and dry regionsArchitecture in cold and dry regions
Architecture in cold and dry regions
 
Desktop study hostel
Desktop study hostelDesktop study hostel
Desktop study hostel
 
Building materials
Building materialsBuilding materials
Building materials
 
One Museum Park West (Post-Tensioning case study)
One Museum Park West (Post-Tensioning case study)One Museum Park West (Post-Tensioning case study)
One Museum Park West (Post-Tensioning case study)
 
Climate Responsive Architecture
Climate Responsive ArchitectureClimate Responsive Architecture
Climate Responsive Architecture
 
History of architecture
History of architectureHistory of architecture
History of architecture
 
CONSTRUCTION OF DOMES
CONSTRUCTION OF DOMESCONSTRUCTION OF DOMES
CONSTRUCTION OF DOMES
 

Similar to Upgrade to Plone 5

Prototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporePrototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporeDhruv Gohil
 
Alexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesAlexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesNaotaka Jay HOTTA
 
PowerPoint Presentation about Programming 101 for Girls
PowerPoint Presentation about Programming 101 for GirlsPowerPoint Presentation about Programming 101 for Girls
PowerPoint Presentation about Programming 101 for GirlsImelda Reyes
 
Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
 Won't You Take Me to Chunk-y Town: Component-based theming and the future of... Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
Won't You Take Me to Chunk-y Town: Component-based theming and the future of...Heather Brooke Drummond
 
State of Drupal keynote, DrupalCon Dublin
State of Drupal keynote, DrupalCon DublinState of Drupal keynote, DrupalCon Dublin
State of Drupal keynote, DrupalCon DublinDries Buytaert
 
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...Holden Karau
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet CodeDavid Danzilio
 
Simplifying training deep and serving learning models with big data in python...
Simplifying training deep and serving learning models with big data in python...Simplifying training deep and serving learning models with big data in python...
Simplifying training deep and serving learning models with big data in python...Holden Karau
 
Evolving your Design System: People, Product, and Process
Evolving your Design System: People, Product, and ProcessEvolving your Design System: People, Product, and Process
Evolving your Design System: People, Product, and Processuxpin
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile WebC4Media
 
PHP Doesn't Suck - Notes
PHP Doesn't Suck - NotesPHP Doesn't Suck - Notes
PHP Doesn't Suck - NotesJohn Hobbs
 
code review, style guides and tools for pythin
code review, style guides and tools for pythincode review, style guides and tools for pythin
code review, style guides and tools for pythinuniversité d'el jadida
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)wesley chun
 
Architecting your IT career
Architecting your IT careerArchitecting your IT career
Architecting your IT careerJohn Mark Troyer
 
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...Holden Karau
 

Similar to Upgrade to Plone 5 (20)

Prototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporePrototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at Singapore
 
Pair Programming
Pair ProgrammingPair Programming
Pair Programming
 
Ploneide
PloneidePloneide
Ploneide
 
Python in 15 minutes
Python in 15 minutesPython in 15 minutes
Python in 15 minutes
 
Alexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesAlexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummies
 
PowerPoint Presentation about Programming 101 for Girls
PowerPoint Presentation about Programming 101 for GirlsPowerPoint Presentation about Programming 101 for Girls
PowerPoint Presentation about Programming 101 for Girls
 
Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
 Won't You Take Me to Chunk-y Town: Component-based theming and the future of... Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
 
State of Drupal keynote, DrupalCon Dublin
State of Drupal keynote, DrupalCon DublinState of Drupal keynote, DrupalCon Dublin
State of Drupal keynote, DrupalCon Dublin
 
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code
 
Simplifying training deep and serving learning models with big data in python...
Simplifying training deep and serving learning models with big data in python...Simplifying training deep and serving learning models with big data in python...
Simplifying training deep and serving learning models with big data in python...
 
Evolving your Design System: People, Product, and Process
Evolving your Design System: People, Product, and ProcessEvolving your Design System: People, Product, and Process
Evolving your Design System: People, Product, and Process
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile Web
 
PHP Doesn't Suck - Notes
PHP Doesn't Suck - NotesPHP Doesn't Suck - Notes
PHP Doesn't Suck - Notes
 
DevstackPY
DevstackPYDevstackPY
DevstackPY
 
Code Forensics
Code ForensicsCode Forensics
Code Forensics
 
code review, style guides and tools for pythin
code review, style guides and tools for pythincode review, style guides and tools for pythin
code review, style guides and tools for pythin
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)
 
Architecting your IT career
Architecting your IT careerArchitecting your IT career
Architecting your IT career
 
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
 

More from Philip Bauer

Growing pains - PosKeyErrors and other malaises
Growing pains - PosKeyErrors and other malaisesGrowing pains - PosKeyErrors and other malaises
Growing pains - PosKeyErrors and other malaisesPhilip Bauer
 
Migrations migrations migrations
Migrations migrations migrationsMigrations migrations migrations
Migrations migrations migrationsPhilip Bauer
 
Plone ♥︎ Python 3
Plone ♥︎ Python 3Plone ♥︎ Python 3
Plone ♥︎ Python 3Philip Bauer
 
Mosaic - The Layout Solution You Always Wanted
Mosaic - The Layout Solution You Always WantedMosaic - The Layout Solution You Always Wanted
Mosaic - The Layout Solution You Always WantedPhilip Bauer
 
Migrations, Upgrades and Relaunches
Migrations, Upgrades and RelaunchesMigrations, Upgrades and Relaunches
Migrations, Upgrades and RelaunchesPhilip Bauer
 
It's the way of the present - Why you should use plone.app.contenttypes
It's the way of the present - Why you should use plone.app.contenttypesIt's the way of the present - Why you should use plone.app.contenttypes
It's the way of the present - Why you should use plone.app.contenttypesPhilip Bauer
 
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...Philip Bauer
 
Plone-Content-Typen mit Dexterity
Plone-Content-Typen mit DexterityPlone-Content-Typen mit Dexterity
Plone-Content-Typen mit DexterityPhilip Bauer
 

More from Philip Bauer (10)

Growing pains - PosKeyErrors and other malaises
Growing pains - PosKeyErrors and other malaisesGrowing pains - PosKeyErrors and other malaises
Growing pains - PosKeyErrors and other malaises
 
Migrations migrations migrations
Migrations migrations migrationsMigrations migrations migrations
Migrations migrations migrations
 
Plone ♥︎ Python 3
Plone ♥︎ Python 3Plone ♥︎ Python 3
Plone ♥︎ Python 3
 
pdb like a pro
pdb like a propdb like a pro
pdb like a pro
 
Mosaic - The Layout Solution You Always Wanted
Mosaic - The Layout Solution You Always WantedMosaic - The Layout Solution You Always Wanted
Mosaic - The Layout Solution You Always Wanted
 
Migrations, Upgrades and Relaunches
Migrations, Upgrades and RelaunchesMigrations, Upgrades and Relaunches
Migrations, Upgrades and Relaunches
 
Pimp my Plone
Pimp my PlonePimp my Plone
Pimp my Plone
 
It's the way of the present - Why you should use plone.app.contenttypes
It's the way of the present - Why you should use plone.app.contenttypesIt's the way of the present - Why you should use plone.app.contenttypes
It's the way of the present - Why you should use plone.app.contenttypes
 
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
 
Plone-Content-Typen mit Dexterity
Plone-Content-Typen mit DexterityPlone-Content-Typen mit Dexterity
Plone-Content-Typen mit Dexterity
 

Recently uploaded

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

Upgrade to Plone 5

  • 1. U P G R A D E T O P L O N E 5 P H I L I P B A U E R P L O N E C O N F E R E N C E 2 0 1 5
  • 3. PA R T 1 : G O O G L E F O R „ M I G R AT I O N S , U P G R A D E S A N D R E L A U N C H E S "
  • 4. „Every non-trivial upgrade should be approached as a relaunch.“
  • 5. „The primary challenge is not development but communication and project management.“
  • 6. „Bring time. And space.“
  • 9. „Write your code as if your own kids will inherit the code one day.“
  • 12. „Don't try more than two new things at once.“
  • 14. U P G R A D I N G F R O M P L O N E 4 T O 5 Why? Cui bono? An easy sell?
  • 15. L I V E D E M O
  • 16. I T C A N ’ T B E T H AT E A S Y A old site with content, configuration and add-ons www.starzel.de
  • 17. I T C A N ’ T B E T H AT E A S Y
  • 18. I T C A N ’ T B E T H AT E A S Y LinguaPlone is hard to get rid of Theming is tricky Some add-ons work nicely in Plone 5
  • 19. I S S U E S KeyError: 'Interface `plone.app.iterate.interfaces.IIterateSettings` defines a field `checkout_workflow_policy`, 
 for which there is no record.'
  • 20. I S S U E S ComponentLookupError: (<InterfaceClass plone.resource.interfaces.IResourceDirectory>, 'persistent')
  • 21. I S S U E S List of content to migrate from AT to DX is empty
  • 22. L I N G U A P L O N E – O H M Y ! LinguaPlone ➟ plone.app.multilingual (2.x) in 4.3.x Documentation: https://github.com/plone/ plone.app.multilingual/issues/181 wildcard.fixpersistentutilities to the rescue! Can someone please sprint on this?
  • 23. T H E U P G R A D E - G U I D E http://docs.plone.org/manage/upgrading/ version_specific_migration/p4x_to_p5x_upgrade.html Needs love at sprint
  • 24. Your design will break unless it is a full diazo theme T H E D E S I G N
  • 25. Just joking ;-) T H E D E S I G N
  • 26. Your design will always break T H E D E S I G N
  • 27. Disable your custom theme before migrating! T H E D E S I G N
  • 28. C O N T E N T
  • 29. S E T T I N G S <record name="plone.displayed_types"> <value purge="false"> <element>talk</element> </value> </record>
  • 30. C O D E
  • 31. A R C H E T Y P E S D E X T E R I T Y @@pac_installer @@atct_migrator @@migrate_from_atct
  • 32. A R C H E T Y P E S D E X T E R I T Y @@custom_migration
  • 33. A R C H E T Y P E S D E X T E R I T Y from plone.app.contenttypes.migration import field_migrators
  • 34. A R C H E T Y P E S D E X T E R I T Y
  • 35. A R C H E T Y P E S D E X T E R I T Y ISSUES: memory commits
  • 36. U P G R A D I N G A D D - O N S F R O M 4 T O 5 That’s your job.

Editor's Notes

  1. With a stable release of Plone 5 customers you should start planning to upgrade existing sites to Plone 5. In this talk I will discuss migrations in general and especially those from Plone 4 to Plone 5. When not to upgrade and on the code-part of migrations. Mainly I will discuss what you can and should do in Upgrade-Steps and which problems await you when migrating from one Plone-Version to another. I will also discuss migrations from Archetypes to Dexterity. This talk is for developers who don't regularly write Upgrade-Steps and want to know why they should be bothered. Also if you do not write upgrade steps without ftw.upgrade you need to see this talk.
  2. who am i
  3. This is a sequel to "Migrations, Upgrades and Relaunches" given 2013 in Brasilia (http://www.youtube.com/watch?v=1Qx0JALp3lQ) 1. Lessons from part 1 ---------------------- The most important lessons from part 1 Held in Brasilia at Ploneconf 2013 and available on video Google for "Migrations, Upgrades and Relaunches"
  4. Every non-trivial upgrade should be approached as a relaunch. Be careful with words: Update, Upgrade, Migration, Redesign, Rewrite, Relaunch Almost everything is a relaunch, at least you want it to be.
  5. The primary challenge is not development but communication and project management What does the client really want?
  6. Bring time. And space you will always forget hat you'll have to migrate multiple times. Double your estimates. Get lot's and lot's of Disk-Space (and a fast SSD) Your DB will double during migrations and you need several copies of it.
  7. Expect everything to break! You will have to - fix old javascript - figure out what custom skin-templates actually did
  8. Don't experiment, document Write every problem and every solution down! Make a Plan Write down how you want to approach it A to Z and change the plan as you go. Keep the plan for future reference.
  9. Write your code as if your own kids will inherit the code one day. Do you want them to hate you?
  10. Write upgrade-steps! I wrote a upgrade-step that migrated a site from P3->P4 and ran for 14 straight hours It consisted of ~30 single steps including: - migration to blobs - migration of comments - removal of old content - running upgrade-steps for about 15 Addons - Intermediary commits You don't want to do that by hand
  11. Divide and conquer Write single upgrade-steps with commits after each one If A works use a copy of the DB at that state to write B and so on Combine to ABCDE when they work
  12. Don't try to add more than two new technologies at once. You will make your customer pay for your inexperience
  13. Use the Help plone.api ftw.upgrade
  14. Why would you want to migrate to Plone 5? First mistake: It’s not about you. It’s about your client. You want to play with the newest shiny toys and bang you head against the resource-registry! But: Why would your customer want to migrate if she/he has a really nice running site based on Plone 4 Customers don't like paying for upgrades that give them no real benefit. They don't want you to have fun using the newest toys The want Design, Usability, Functionality Is Plone 5 an easy sell for a customer with a existing site? Great responsive design ootb -> Meh They probably have a great responsive design Web Editors -> Meh TinyMCE 4 not perfect either Security -> Meh! Is taken for granted. TTW Features -> Meh! Great for prototyping and clients who want to do stuff themselved. Not very important in most our setups. Dexteriy -> Meh! The probably use it already UX and Usability > That increases productivity \o/ Demo of P5 for a client. At the time I showed the new folder_contents it was a done deal. Most relevant for people who work with content. Not always an easy sell! We could discuss the marketing-side of upgrading to Plone 5 It's ok to wait with migrating until 5.0.1 is out. It's not ok to use P4 in new projects unless you have no budget at all to deal with new stuff When not to upgrade: No budget Many incompatible Addons Short site-lifespan No developer-resources I did not migrate any client-project yet.
  15. Show 4.3 demo-site $ cd buildout43 $ ./bin/instance fg http://localhost:8080/Plone/ http://localhost:8080/Plone/ein-oerdner/ein-termin Migrate live to 5.0 $ cd .. $ cd buildout/var $ extract 43.tar.gz $ cd .. $ ./bin/instance fg http://localhost:8080/manage Upgrade and show http://localhost:8080/Plone/ein-oerdner/ein-termin (comment, static portlet, workflow state) http://localhost:8080/Plone/ein-oerdner/a-newsuetem/@@sharing (local roles, image migrated to behavior) Then migrate to DX install pac migrate types show same links Summary: Easy as a pie! Can it really be that easy?
  16. Another example: Starzel migration $ cd ~/workspace/starzel $ ./bin/instance fg $ open http://localhost:8080/starzel $ open http://localhost:8080/starzel/portal_quickinstaller/manage_installProductsForm
  17. These are the add-ons
  18. For this talk I migrated our company-site and this was my experience: - LinguaPlone is hard to get rid of - Theming is tricky - Some addons actually work nicely in Plone 5: - collective.plonetruegallery - collective.disqus - Products.PloneFormGen - collective.js.jqueryui Use checkouts or newest versions Main issues: - Products.LinguaPlone - plone.app.theming was not installed by migration - Theme breaks everything -> Concentrate on content and logic first, design later If everything works as it should in Barceloneta then focus on the theme Not possible for people without developer skills!!!
  19. Reinstall plone.app.iterate (outdated version)
  20. install plone.app.theming (was not installed in old site)
  21. Remove Language-Index! Another issue: thousands of old spam comments skip migration of comments or upgrade-step to remove them (before migrating from 4 to 5)
  22. LinguaPlone > plone.app.multilingual !!! You should migrate from LinguaPLone to Plone.plone.app.multilingual 2.x before migrating from 4 to 5!!! Needs more work Needs more documentation Please sprint on this Wishlist: Working complete uninstall-method for LinguaPlone Documentation Don't expect people who wrote packages to take care of them forever! Someone please adopt/shepherd the maintenance of p.a.m! You still need wildcard.fixpersistentutilities to remove LP *phew*! We already migrated several 4.x-sites from LP to p.a.m but it is always a adventure and never fun.
  23. Read the Upgrade-Guide! Needs some more work! During the sprint: Write down all issues you encounter when upgrading add-ons (google-doc, we'll merge it into the rst after the sprint).
  24. Once the migration is done you can re-enable and fit it.
  25. The Theme will break Sunburst does not work in P5. structure of many elements has changed (html5!) Disable your custom theme before migrating! For www.starzel.de: The Design probably sucked anyways. Create a new one or keep default until we find time for that.
  26. Content Default AT content will work as before. The main thing is that you should actually migrate to Dexterity (next part)
  27. Settings When you modified plone-setting via GS (either with portal_properties or portal_registry) portal_properties is deprecated but works for you custom settings All plone-settings are kept and migrated to portal_registry add custom types to navigation api.portal.get_registry_value("plone.displayed_types")
  28. No code-examples. Would be too many… Before you work on custom code figure out if it is actually needed any more! Example: custom code replaced by LanguageSwitcher in plone.app.multilingual Use plone.api! Some imports changed (CMFDefault is gone). formlib is gone: controlpanels and custom forms should be moved to z3c.form portlets also moved to z3c.form your overrides/patches will likely break
  29. Install plone.app.contenttypes (@@pac_installer) Installs pac but only replaces types without any instances Migrate content with form: @@atct_migrator In code use the view @@migrate_from_atct: migration_view = api.get_view('migrate_from_atct', portal) results = migration_view(content_types=['News Item', 'Image']) Only works for default-types!!! Allows migration of schemaextendend types (contentleadimage -> leadimage-behavior). Is extendable. Has several in-place patches (linkintegrity, notifyModified, UUIDIndex etc...) Might be modified so that it is better reusable for custom types) Partial migrations Choose which types you want migrated. The others stay AT (not recommended but may be necessary if you have heavily customized types)
  30. Custom migration form form: @@custom_migration Show Example? Migrate ATEvent to NewsItem Create Site with ATCT: - Disable "setup_content" - Enable "Archetypes-based default content for Plone" @@pac_installer @@custom_migration Maybe has bugs. Please test and fix instead of writing custom addons
  31. Custom migrations Products.contentmigration is great! use field migrators in plone.app.contenttypes.migration.field_migrators! migrate relations with plone.app.contenttypes.migration.utils.link_items Migrate the branch you are standing on... e.g. all references are stored in an annotation on the portal and restored from there
  32. memory useage PR to add transactions after every X items and after each type is ready for review (thanks Daniel Jowett!) Create tickets please! And fix them as well.
  33. This is the main sprint topic. Does it solve a problem that actually still exists (collective.contentleadimage)? If there are content-types: - AT works in P5 (Example: Products.PloneFormGen) - Maybe migrate them to DX (provide a custom migration using the code-examples above) -> Warning: that means a lot of extra work! Fix resources (css/js) Functionality tied to content-types (e.g. a special field) -> turn into a behavior Some add-ons are not worth migrating since there are similar addons that already work with P5