Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Migrating customers from older versions

What a host needs to know when a customer's site runs an older release of the software (3.x, 4.x and 5.x under the old name, or an older 6.0.x): what stays the same, what changes, the effort drivers, a staging plan, and…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/hosting/migrations/from-older-exponential-versions.md

On this page

Migrating customers from older versions

This page is for hosting companies whose customers run an older release: a site from the 3.x, 4.x or 5.x era (when the product was still called eZ Publish, a product its creator discontinued after almost 18 years) or an older Exponential 6.0.x. It answers: how big is the job, what drives the effort, and where are the exact steps?

Note

The steps themselves are in the installation book. This page tells a host how to assess, offer and stage the work; it does not repeat the database runbooks.

Contents

  1. Starting points
  2. What stays the same
  3. What changes
  4. What drives the effort
  5. From an older 6.0.x release
  6. A staging plan
  7. What to tell the customer

Starting points

The site runsChapter
3.10, 4.0 to 4.7, an early 5.x legacy kernel on PHP 5Chapter 14: Migrating from the 4.x line
5.0 to 5.4, the community releases 2013.x and 2014.x, 5.90 (legacy kernel beside a Symfony stack)Chapter 15: Migrating from the 5.x legacy stack
Exponential 6.0.x, older than the current releaseChapter 11: Upgrading, 11.6
any of these, table and script referenceChapter 17: Migration reference

What stays the same

Exponential 6.0 is "the same legacy kernel, carried forward" (14.1):

  • The database schema family. The same tables; the old update files bring an old database up to the current schema. Nothing is exported and re-imported.
  • The datatypes. The 3.x/4.x kernel datatypes are still there; rich text stays ezxmltext.
  • Templates and settings. The template language and the INI block and key names keep their names.
  • The extension API. Modules, datatypes, workflow events, fetch functions and template operators are written the same way.

What changes

From the same section of chapter 14: PHP 5 to PHP 8 ("your own PHP code is the largest piece of work"), eZ Components replaced by Zeta Components installed by Composer (since 6.0.15 their fork, the expcomponents), the cluster handlers that stored files in the database, YUI (gone), jQuery (4.0.0), the online editor, several rewrite rules and a stricter security baseline.

For a 5.x site, the move is "an extraction rather than a rewrite": the legacy part is taken out of the Symfony application, its Symfony configuration is written down in INI files, and the database is upgraded in place (Chapter 15).

What drives the effort

Chapter 14 is clear that "the time depends far more on the size of a few tables than on the version you come from" (14.15). For an offer, assess:

DriverGrows withAsk for
Database stepsdatabase size, rows of ezcontentobject_attribute, ezurlalias_mla database dump for a rehearsal
Search reindexnumber of objects; "usually the longest single step"the object count
Copying filesnumber and size of files in var/the size of var/storage
Porting extensions"lines of your own PHP and templates, not database size"the list of custom extensions and their source
Designscustom templates and JavaScript that used YUI or old jQuerythe design extensions

Tip

Make the rehearsal the first billable step. The measured time of the rehearsal is the only reliable basis for the production window and for the rest of the offer.

From an older 6.0.x release

This is an update, not a migration. In outline (11.6):

  1. Put the new code in place (Git checkout of the tag, or composer update se7enxweb/exponential).

  2. Regenerate the autoloads and clear the caches:

    php bin/php/ezpgenerateautoloads.php -e
    php bin/php/ezcache.php --clear-all
  3. Reload the PHP that serves the site; under Velocity, php bin/php/console exp:velocity deploy runs every step in order (Deploying changes).

  4. Apply the database update file of the line once, whole, in order: update/database/<engine>/6.0/dbupdate-6.0.0-6.0.15.sql, then the audit tables script php update/common/scripts/6.0/createaudittables.php (with --dry-run first).

  5. Read the checklist of each period you pass and check the customer's own extensions (11.6, steps 3 and 4).

See Upgrading customer sites for the host's routine.

A staging plan

  1. Copy the old site (database and files) to a staging machine on your platform.
  2. Walk the chapter for the starting point on that copy, and write down every step and its duration.
  3. Port the custom extensions to PHP 8; the checklist is in 14.9.
  4. Let the customer test the staging copy.
  5. Repeat the database steps on a fresh copy for the final run, in a maintenance window.
  6. Keep the rollback plan of the chapter ready (14.14).

What to tell the customer

  • Their old version receives no security fixes: only the 6.0 line is maintained (SECURITY.md).
  • Their content, users and URLs carry over; the database is upgraded, not rebuilt.
  • Their custom code may need porting; that is the largest unknown and is measured during the rehearsal.
  • The final switch needs a content freeze and a maintenance window.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x