- Add roles and policies A migration that creates the role News editor with its policies, limits two of them to the class news_article, assigns it to the user group Editors found by remote id, and removes role, policies and assignment in down().
- Seed content for a new site A migration that publishes the starting content of a site - a folder and its first articles - by remote id, only what is missing, in the language of the content root, so every new installation and every developer's copy…
- Exponential for software engineers The whole system on one page for an engineer from any language background - runtime, stack, process model, data stores, configuration, extension model, quality gates and release rules, each with the file or document…
- Per-environment migrations: development, staging and production Limit a migration to some environments with the header line environments, set the environment of each installation, and follow one change from development through staging to production.
- Migrations in an extension or package Ship migrations inside an extension (extension/<name>/migrations/) or an installed package, generate them with --source=extension:<name>, and make a site's migrations wait for them with requires.
- Writing a reversible down() How to write a down() that really undoes up() on every installation - idempotent, found by remote id or identifier, safe on every engine - when to leave it out, and how to prove it with up, down and up again.
- Reviewing a migration in code review A checklist for reviewing a migration in a pull request - the file and header, the order, plan(), up() and down(), engines and transactions, ids that differ between installations, personal data, and what the reviewer…
- Large data migrations: batches, time limits and resume Change thousands of objects or rows in one migration without running out of memory or locking the site - batches, transactional() returning false, an idempotent up(), pauses, maintenance mode, and resuming a run that…
- Migrations on MySQL, PostgreSQL, SQLite, Oracle and MongoDB What each database engine means for a migration - transactions, the simulation, captions and the restore, schema changes that commit at once - and how to write one migration that works on MySQL/MariaDB, PostgreSQL…
- Migration commands Every exp:migration command in one table - what it does, when to use it, its most used options and a link to its generated reference page - with the options all of them share, the exit codes, the machine output and the…
- Reading path for software engineers The software engineering pages in a sensible order, with four shorter paths for the evaluator, the architect, the operator and the reviewer or contributor, and the deeper documents to read after each step.
- The audit trail of migration runs Where a migration run leaves its traces - the tables exp_migration and exp_migration_run, the status file and the run log in git, var/log/migration.log and the audit events system.migration.* - and how to answer "what…
- Commit, tag and push the record of a run Set up the migrations repository so every run's status file and log are committed, tagged migrations/<environment>/<run-id> and pushed; choose between the site's own repository and a separate one, push what failed…
- Migration settings Every setting that shapes migrations in one place - the five blocks of migration.ini with their defaults and a link to each generated reference page, the settings in site.ini, dashboard.ini, audit.ini and cronjob.ini…
- Migrations: policies, views and events The policies of the module migration and which views check them, the seven views with their addresses, the dashboard block and its fetch function, the ezpEvent events a run sends with their parameters, and the audit…
- Coming from SQL update files For teams that ship database changes as hand-written SQL files and update scripts - how one change becomes one PHP migration that knows every engine, is recorded, captioned and committed, with a worked example of an…
- Evaluating Exponential A structured technical evaluation of Exponential for a project - the questions to answer about fit, runtime, data, performance, security, quality, maintenance and licensing, how to answer each one from the code and the…
- Migration recipes Twenty-five task pages for migrations in Exponential 6.0.15, each with what you will have at the end, the steps and their output, the complete PHP migration, how to check it, how to take it back and the next step - from…
- Architecture overview The layers of an Exponential installation and what each is responsible for - servers, the kernel entry points, the domain classes, the libraries, the presentation layer, extensions, settings and var/ - with the…
- The request lifecycle What happens between a browser request and the response in Exponential, step by step - maintenance and repair hooks, autoload, the kernel constructor, siteaccess matching, URL translation, access checks, the module run…
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