Symfony bundle for the Fregata migration framework.
Symfony bundle for the Fregata data migration framework. Provides an UI and executes migrations asynchronously using the Messenger component.
- User interface overview
- Starting a migration
This bundle requires PHP >= 8.1 and a Symfony 4.4 or 5 application. Note that as it uses a database, it will install the Doctrine bundle.
If you are not familiar with Fregata's features, make sure to read its documentation.
Install with Composer:
composer require aymdev/fregata-bundle
Then you will need to create the database tables for the provided entities (3 entities + a ManyToMany relation). You can do this how you want.
Suggestion: My preferred way to use database migrations is by using the MakerBundle and its
make:migrationcommand followed by Doctrine's
As the main work of the bundle happens in Messenger components, you need to route the provided messages to a transport of your choice. Example config/packages/messenger.yaml:
framework: messenger: transports: # You are entirely responsible for the transport configuration async: '%env(MESSENGER_TRANSPORT_DSN)%' routing: # Every message implements the following interface, nothing more is needed 'Fregata\FregataBundle\Messenger\FregataMessageInterface': async
To enable the user interface, import the routes by creating a config/routes/fregata.yaml file:
fregata: resource: "@FregataBundle/Resources/config/routes.xml" prefix: /fregata
prefixto anything you want, or remove it if you want to set the Fregata dashboard at the root of your app.
You can then reach the dashboard at
The dashboard lists the current migration runs, or the last one if nothing is running. The migrations page lists the currently configured migrations with a link to a dedicated page to get a quick overview with the list of components and the run history of a specific migration. The complete run history is on a separated page.
The table shown here is used in multiple pages of the user interface and contains:
- the id of the migration run
- the name of the migration with a link to the details page
- the status tag
- the time stats: start time, end time and duration
- the number of components
- a link to the run details
- Before tasks
- After tasks
Each tab shows a progress bar and its associated components. The migrators are sorted according to their dependencies from left to right.
You can start a migration from the user interface by clicking the "New run" button in the menu.
fregata:migration:execute console command is available:
php ./bin/console fregata:migration:execute
You should then see the run on the user interface.
If you want to run a migration as in the Fregata framework, without Messenger, you can add the
Warning: by doing so, the migration runs in the foreground, doesn't use the database and can't show on the UI.