eZ Publish has evolved to eZ Platform and after eZ Systems corporation changes their name to Ibexa, eZ Platform has renamed to Ibexa Content.
Ibexa Content is a Hierarchical Content Management System, useful for managing large websites with many different content types.
On eZ Publish or eZ Platform 2.5, you may use the Kaliop bundle to manage the database schema and content between each server environment. This bundle allows to create, update or delete all eZ Platform structure and content. One migration is a simple SQL file or a YAML file with the instructions to migrate the database.
For Ibexa Content, the original Kaliop eZ Migration bundle does not work. Ibexa has published a compatible version with two subtilities.
This guide is only for eZ Platform 3.x and Ibexa Content 3.x. Yous need to have a working project on your computer before continuing.
The dependency manager Composer must be installed. This guide supposes you have the Composer installation path into the operating system environment variable PATH.
To install the bundle, open a terminal window and navigate to your project root folder.
Now, run this command: composer require ezsystems/ezmigrationbundle
The eZ Migration Bundle allows making migration only with a Bundle. It's a legacy behavior from the older Symfony version.
To solve this requirement, make a "SiteMigrationBundle" directory into the "src" directory on your project.
Add the file "SiteMigrationBundle.php" into the directory made in the previous step with this content:
final class SiteMigrationBundle extends Bundle
Register this bundle into config/bundles.php
App\SiteMigrationBundle\SiteMigrationBundle::class => ['all' => true],
Now you can run Kaliop's commands.
If you try this command bin/console kaliop:migration:generate SiteMigrationBundle , you have this error:
In Container.php line 266:
The "ez_migration_bundle.helper.config.resolver" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the container directly and use dependency injection instead.
kaliop:migration:generate [--format FORMAT] [--type TYPE] [--mode MODE] [--match-type MATCH-TYPE] [--match-value MATCH-VALUE] [--match-except] [-l|--lang LANG] [--dbserver DBSERVER] [-a|--admin-login ADMIN-LOGIN] [--list-types] [--siteaccess [SITEACCESS]] [--] [<bundle> [<name>]]
To solve this issue before the new version with the fix is available, add this service configuration in your service file "config/services.yaml":
Now you can use this bundle when you use the Kaliop migration bundle on your Ibexa Content platform.
For example, this command generates a YAML migration for add the Administrator role:
$ bin/console kaliop:migration:generate --type=role --mode=create --match-type=identifier --match-value=Administrator SiteMigrationBundle
Generated new migration file: /var/www/ibexa_website/src/SiteMigrationBundle/MigrationVersions/20210618122305_placeholder.yml
All your generated migrations will be stored into "src/SiteMigrationBundle/MigrationVersions/ "