Migrating from eZ Publish¶
eZ Publish was eZ Platform's predecessor, a CMS in development for five major versions and several years.
Users of eZ Publish can find eZ Platform largely similar to what they know. The improvements and enhancements did not turn the fundamental concepts underlying the system, such as the content model, upside down. However, specific features, solutions, and recipes may work differently between the two versions.
The release of eZ Platform brought about an inevitable disruption in backwards compatibility with eZ Publish. This means that the process of migrating existing installations requires more effort than simply upgrading from one version to another. Here you can find details on moving existing Publish-powered websites to eZ Platform.
Changes overview¶
Incompatibilities with legacy¶
eZ Platform represents the 6th generation of eZ Publish, and while the 5th generation had* a major focus on backwards code compatibility with the 3rd and 4th generations *(legacy), the 6th generation doesn't.
The 6th generation is aimed at being fully backwards compatible on the following:
- Content from 4th and later 5th generation installation
- Code from 5th generation system when written for Platform (Symfony) stack
The specific incompatibilities
The specific changes that are migrated and are incompatible with legacy are:
- XmlText fields have been replaced with a new RichText field
- Page field (ezflow) has been replaced by the LandingPage field, and is now provided by our commercial product eZ Platform Enterprise Edition
- Incremental future improvements to the database schema to improve features and scalability of the content repository
Together these major improvements make it practically impossible to run eZ Platform side by side with eZ Publish legacy, like it was possible in 5.x series. For these reasons we recommend that you use eZ Publish Enterprise 5.4 (which is supported until end of 2021) if you don't have the option to remake your web application yet, or want to do it gradually.
Migration Path¶
From legacy (4.x or 5.x) to Platform stack (5.4/2014.11)¶
If you're coming directly from legacy (4.x), you need to follow the best practice 5.x Platform migration path and do the following:
- Rewrite custom field types for the new Platform stack. Alternatively you can use Null field type as a dummy implementation for the custom field types that you don't want to migrate. Using Null field type prevents errors from the Platform Stack, see Null field type Reference
- Rewrite custom web front end to use the new Platform/Symfony stack, see Beginner Tutorial
- Rewrite custom admin modules to use the new Platform/Symfony stack
- And if you do this while on 5.x, you can use several of the available legacy migration features to make the new code appear in legacy admin
See Upgrade documentation on how to perform the actual upgrade: Upgrade (eZ Publish Platform page).
Avoid exception when migrating the database
If you plan to migrate from from eZ Publish through eZ Publish Platform 5.4 to eZ Platform and further, an exception may occur when you try to migrate the database while it contains internal drafts of landing pages.
This can happen because such drafts don't have an expected row in the ezcontentobject_name
table.
To avoid this exception, you must remove all internal drafts before you migrate.
First, in content.ini
, set the InternalDraftsCleanUpLimit
and InternalDraftsDuration
values to 0.
Then run the internal drafts cleanup cron job.
From Platform stack (5.4/2014.11) to eZ Platform¶
As eZ Platform introduced completely new user interfaces with greatly improved user experience, the following custom developments needs to be made if you have customization needs:
- Write UI code for custom field types for the new JavaScript-based editorial interface, (see Page blocks
- Adjust custom admin modules for the new Symfony-based admin interface
For a detailed guide through these developments see Upgrading from 5.4.x and 2014.11 to 16.xx