- Add a database table A migration that creates a table of the site's own on every engine from a share/db_schema.dba definition, writes a first row, and drops it again in down() - with the dry run, the run, the checks and the rollback.
- Software engineers: start here Where software engineers start who evaluate, architect, operate, review or contribute to Exponential as a system. The system in one paragraph, your first hour, five engineering rules, and a map of every page for…
- Create or change a content class A migration that creates the content class news_article with its attributes and class group, the same way on development, staging and production, and the pattern for changing a class (its name, its name pattern) in a…
- Change content in bulk A migration that walks every object of a class in batches, publishes a new version of each one that needs the change, commits per object, logs its progress and is safe to run again - the pattern for any change to many…
- Testing migrations: check, simulate, diff and CI Four layers of tests for migrations - the lint without a database, the dry run, the simulation with a diff on PostgreSQL or SQLite, and a PHPUnit test on a throwaway SQLite database - and how to run them in CI.
- Team workflow with git: branches, conflicts and order How several developers write migrations on branches without stepping on each other - timestamps and order, requires for real dependencies, two migrations with the same timestamp, rebasing, renaming only before a merge…
- Deploying with migrations: CI/CD and GitHub Actions Run migrations as part of every deploy - the order of the steps, a complete GitHub Actions workflow that checks pull requests and deploys over SSH, the exit codes a pipeline acts on, the installation lock, and runs…
- Captions and rollback in practice Walk through the ways back after a migration run - the automatic restore after a failure, rolling back a whole run, one migration with its down(), an earlier caption for experts - with the commands, their output and…
- Upgrade step or migration? When a change belongs in an upgrade step that exp:upgrade applies to every installation of the kernel or an extension, and when in a migration of one site; how the upgrade steps appear among the migrations, and how a…
- Coming from Doctrine Migrations For developers who know Doctrine Migrations from Symfony projects - every Doctrine command and class mapped to its Exponential 6 counterpart, what Exponential adds (captions, commit, tag and push, environments…
- Coming from the Kaliop migration bundle For developers who used the Kaliop eZ Migration Bundle (ezmigrationbundle) on eZ Platform and Ibexa projects - its commands, files and table mapped to Exponential 6, and a YAML content, class and role step rewritten by…
- When a migration fails: troubleshooting by symptom Troubleshooting migrations by what you see - a failed run, a refused run, a migration that does not run or runs where it should not, a held lock, nothing restored, a push that waits, a run in the administration that…
- Migrations: frequently asked questions Short answers to the questions people ask about migrations in Exponential 6.0.15 - what they are for, how they differ from upgrades and site moves, how runs, captions, rollback, environments, teams, CI, engines…
- Migrations for software engineers The migration model of Exponential 6.0.15 for engineers - ordered, recorded, checksum-guarded, captioned and committed changes - its architecture next to the .dba schema files and the upgrade steps, the design rules for…
- Migrations The start of everything about migrations in Exponential 6.0.15 - schema and content changes written once as files under version control and applied to every installation of a site in the same order, with a caption…
- Migrations versus migrating a site The word migration means two different jobs in the Exponential documentation - migrations (schema and content changes of one site, written as files and applied with exp:migration:migrate) and migrating a site (moving or…
- Add a column or an index A migration that adds a column with a default and an index to an existing table on every SQL engine, through the engine's own schema handler, checks the catalog first so it completes a half-applied change, and drops…
- Add a class attribute A migration that adds the attribute subtitle to the class news_article at the right position, gives every existing object the new field, and removes attribute and values again in down().
- Fix data A migration that corrects wrong rows - names with stray spaces, addresses over http - with a pure function that the plan, the run and a test share, escaped SQL through the run's connection, and the old values in the run…
- Move or rename INI settings A PHP migration that moves settings of an installation's override from site.ini to a file of their own and renames one on the way, keeps the value of each installation, writes the new file before it removes the old…
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