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

Upgrades without breaking integrations

Keeping integrations working through Exponential, extension and PHP upgrades - what tends to change under an integration, reading the behavior change notes, pinning versions with Composer, a rehearsal on a copy…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/integrators/upgrades-without-breaking-integrations.md

On this page

Upgrades without breaking integrations

This page is for integrators and operators who must upgrade an installation that other systems depend on. Exponential is maintained actively; each release brings fixes, security hardening and new features, and a few of them change behavior an integration relies on. Upgrades are safe when you know where to look and rehearse once. The upgrade itself is described in Upgrading.

Contents

  1. What tends to change under an integration
  2. Read before you upgrade
  3. Versions and Composer
  4. The upgrade, with integrations
  5. Writing integrations that age well

What tends to change under an integration

AreaExample from the 6.0 lineEffect on an integration
Input validationDatatypes refuse values they used to store (ezprice refuses a non-numeric price, ezurl refuses unsafe schemes, ezboolean maps text to 0 or 1)An import that sent sloppy values now fails for those records; good, but plan for it
PermissionsThe REST content controller checks content policies on every route since 6.0.15A key or token whose user lacks a policy gets 403 where it used to succeed
Extensionsezprestapiprovider is deprecated; ezprestapi serves v1 and v2Overrides naming the old provider class work through a shim; move to ezp7xRestApiProvider
Operations and triggersOperations beyond AvailableOperationList[]'s shipped list may change without compatibility rulesWorkflow events on extra operations need a test after each upgrade
RuntimeVelocity workers, PHP 8.x deprecationsStatics and dynamic properties in old code; restart after class changes
SchemaNew tables and columns (for example expapikey)Run the database update of your engine before using the feature

Read before you upgrade

Search them for the names your integration uses: the classes it calls, the settings it sets, the routes it calls.

Versions and Composer

  • The root composer.json uses tilde constraints (~1.2.6): the last position floats, so composer update brings fixes of the same line but no new minor line.
  • Your integration extension declares what it needs in its own composer.json ("se7enxweb/ezprestapi": "~1.2.6"), so an installation cannot update into a line you have not tested (composer.json for extensions).
  • Record the versions in the handover documents; composer show and Setup > Extensions list them.

The upgrade, with integrations

  1. Rehearse on a copy of production with the same integration versions; run the acceptance cases and the import dry runs (Testing integrations).
  2. Tell the owners of the other systems the window; calls during it may fail.
  3. Pause the integration's cronjob parts at Setup > Cronjobs (and the queue workers), so no import runs half on the old and half on the new code (Cronjobs for integrations).
  4. Optionally switch maintenance mode on (php bin/php/maintenance.php on --message="..." --until=1h); API clients get 503 with Retry-After and should back off.
  5. Upgrade: code, database update, autoloads, caches, php bin/php/console exp:velocity deploy.
  6. Check: the acceptance cases, one dry run per import, one call per API client, exp:audit sinks list.
  7. Resume the cronjob parts and watch the first runs.
  8. Write down what changed for the integration in its changelog.

Writing integrations that age well

  • Use the supported APIs (eZContentFunctions, operations, expservices, the REST routes) rather than tables and internal methods.
  • Keep the code in one extension with tests, not in scattered scripts.
  • Guard optional kernel classes with class_exists() (the audit API documents this) so a missing piece degrades instead of failing.
  • Prefer settings to code for anything a site may need to change.
  • Follow the project: contribute fixes you need upstream, so the next release carries them (Contributing integrations back).

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