clickandmortar/akeneo-migrations-manager-bundle
Installation
Run composer require clickandmortar/akeneo-migrations-manager-bundle in your Akeneo (v2.3+ or v3.1+) project.
Ensure PHP ≥7.1 is used.
Enable the Bundle
Add the bundle to AppKernel.php under registerProjectBundles():
new ClickAndMortar\AkeneoMigrationsManagerBundle\ClickAndMortarAkeneoMigrationsManagerBundle(),
Create a Migration Job Generate a batch job to execute migrations via CLI:
php bin/console akeneo:batch:create-job internal execute_migration migration execute_migration_by_version '{"migrationVersion":null}' 'Execute migration by version'
This creates a job (execute_migration) to run migrations programmatically.
First Use Case Run a migration manually:
php bin/console akeneo:batch:execute execute_migration
Check the Akeneo dashboard for a new "Migrations" widget listing available migrations.
Migration Development
src/Akeneo/Migration/ (or a custom namespace).src/
└── Akeneo/
└── Migration/
├── Version20230101000000.php
└── Version20230102000000.php
VersionYYYYMMDDHHMMSS.php.Running Migrations
php bin/console akeneo:batch:execute execute_migration
Version-Specific Execution
php bin/console akeneo:batch:execute execute_migration --parameters='{"migrationVersion":"20230101000000"}'
Integration with Custom Logic
migration.executor).# config/services.yaml
services:
App\Migration\CustomMigrationExecutor:
decorates: 'migration.executor'
arguments: ['@App\Migration\CustomMigrationExecutor.inner']
Automated Migration Runs
php bin/console akeneo:batch:execute execute_migration --env=prod
Bundle Compatibility
Migration Execution Issues
execute_migration job is missing, recreate it:
php bin/console akeneo:batch:create-job internal execute_migration migration execute_migration_by_version '{"migrationVersion":null}' 'Execute migration by version'
var/ directory and database.Dashboard Widget Missing
php bin/console cache:clear
AppKernel.php.Migration Ordering
Version20230101000000.php vs. Version20230101000001.php).up() and down() methods in your migration classes for reversible changes:
public function up()
{
// Apply changes
}
public function down()
{
// Revert changes
}
Logging and Rollbacks
tail -f var/log/akeneo_migrations.log
down() or recreate the migration with a higher timestamp.Custom Migration Classes
Akeneo\Migration\AbstractMigration for reusable logic:
namespace App\Migration;
use Akeneo\Migration\AbstractMigration;
class CustomMigration extends AbstractMigration {
protected function execute(AkeneoMigrationContext $context) {
// Custom logic
}
}
Override Job Configuration
config/packages/akeneo_migrations_manager.yaml:
akeneo_migrations_manager:
job_name: 'custom_migration_job'
job_parameters: '{"timeout": 3600, "memory_limit": "1G"}'
Add Migration Metadata
class Version20230101000000 extends AbstractMigration {
public function getDescription() {
return "Add new product attribute";
}
public function getAuthor() {
return "John Doe";
}
}
Event Listeners
akeneo_migrations_manager.migration.pre_execute) to add pre-flight checks:
// src/EventListener/MigrationListener.php
public static function getSubscribedEvents() {
return [
'akeneo_migrations_manager.migration.pre_execute' => 'onPreExecute',
];
}
How can I help you explore Laravel packages today?