Installation
Add the bundle to your composer.json:
composer require akeneo/delta-export-bundle:1.0.0-BETA2
Register the bundle in app/AppKernel.php:
new Akeneo\Bundle\DeltaExportBundle\AkeneoDeltaExportBundle(),
Configuration
Ensure your config.yml includes Akeneo PIM’s base config (required for compatibility):
akeneo_pim:
# ... existing Akeneo PIM config ...
First Use Case Trigger a delta export via CLI:
php app/console akeneo:delta-export:export --entity=product --identifier=123
Verify output in var/export/delta/ (default path).
Delta Export Triggering
akeneo:delta-export:export command with --entity (e.g., product, family) and --identifier (e.g., SKU or ID).Akeneo\Bundle\DeltaExportBundle\Event\ExportDeltaEvent to automate exports post-save:
// services.yml
akeneo.delta_export.listener:
class: AppBundle\EventListener\DeltaExportListener
tags:
- { name: kernel.event_listener, event: akeneo_delta_export.export_delta, method: onExport }
Customizing Export Format
Override the default CSV exporter by extending Akeneo\Bundle\DeltaExportBundle\Exporter\CsvExporter:
namespace AppBundle\Exporter;
use Akeneo\Bundle\DeltaExportBundle\Exporter\CsvExporter as BaseExporter;
class CustomCsvExporter extends BaseExporter {
protected function getHeader() {
return ['custom_field', 'original_header'];
}
}
Register in services.yml:
akeneo.delta_export.exporter.csv:
class: AppBundle\Exporter\CustomCsvExporter
tags:
- { name: akeneo.delta_export.exporter, type: csv }
Batch Processing
For large datasets, implement chunked exports by extending Akeneo\Bundle\DeltaExportBundle\Processor\BatchProcessor:
$processor = new BatchProcessor($entityManager, $exporter, 100); // 100 items per batch
$processor->process($deltaEntities);
symfony/process to send exported files via HTTP POST to downstream services.config.yml to log delta changes:
akeneo_delta_export:
debug: true
Deprecation Risk
Entity-Specific Quirks
@Akeneo\Tool\Bundle\VersioningBundle\Annotation\Versioned. Verify your entity has this annotation.var/log/dev.log for Akeneo\Bundle\DeltaExportBundle\Exception\UnsupportedEntityException.File Overwrite Behavior
var/export/delta/. Add timestamps to filenames to avoid conflicts:
$filename = sprintf('delta_%s_%s.csv', $entityName, (new \DateTime())->format('YmdHis'));
php app/console akeneo:delta-export:export --entity=product --verbose
Akeneo\Tool\Bundle\VersioningBundle\Manager\VersionManager to detect changes. Override this manager to customize delta logic:
services:
akeneo.delta_export.version_manager:
class: AppBundle\Versioning\CustomVersionManager
parent: akeneo_versioning.version_manager
Custom Delta Criteria
Extend Akeneo\Bundle\DeltaExportBundle\Criteria\DeltaCriteria to filter deltas (e.g., by date or attribute):
class CustomDeltaCriteria extends DeltaCriteria {
public function addDateFilter(\DateTime $since) {
$this->addWhere('e.updated >= ?', $since->format('Y-m-d H:i:s'));
}
}
Post-Export Actions
Hook into akeneo_delta_export.post_export event to process files (e.g., compress, upload):
public function onPostExport(PostExportEvent $event) {
$file = $event->getFile();
// Add custom logic (e.g., FTP upload)
}
Performance
updated_at fields for large datasets.memory_limit in php.ini if processing >10K entities (default PHP limits may fail).How can I help you explore Laravel packages today?