boutdecode/etl-core-bundle
Symfony bundle for building configurable ETL pipelines with reusable Workflow templates and time-bound Pipeline runs. Chains Extract, Transform, and Load steps via Symfony Messenger, Workflow, and Flow-PHP, with DDD/CQS structure, status tracking, and per-run configuration overrides.
pending → in_progress → completed/failed), history entities, and middleware hooks. It is a candidate to evaluate only if you are already committed to Symfony and have recurring ETL-shaped work (imports, data syncs, file ingestion) that would otherwise be rebuilt per feature.Extract/Transform/Load steps, shared Context, per-step configuration), which helps PMs argue for a platform-shaped solution over N bespoke scripts.PipelineHistory / StepHistory entities directly support compliance and debugging features ("what ran, when, with what input, and what did each step return?"). Useful when a product requirement demands run-level traceability without building it separately.Consider it only if all of the following hold:
ExecutableStep classes.Look elsewhere if:
For executives: "We evaluated an open-source Symfony bundle that provides the skeleton of a data-pipeline engine — the template/instance model, retries and state machine, and run history. It is technically promising in the right context but is a low-maturity, low-adoption community project (2 stars, no known dependents), so I do not recommend it as a strategic platform dependency. My recommendation is to treat it as a reference design we borrow from, not a library we adopt, unless engineering confirms we are already deeply on Symfony + Doctrine + Messenger and wants to save 3–6 weeks of scaffolding. Either way, the product decision it informs is whether we fund a small internal ETL platform — that decision can be made independently of this specific package."
For engineering: "It's a Symfony 6.4/7 bundle (not Laravel) built on Flow-PHP + Symfony Messenger + Workflow, with DDD/CQS layering, tagged ExecutableStep plugins, middleware chains, and abstract entities you must materialize and migrate yourself. Pros: clean extension points, 243 unit tests, opinionated contracts that would force consistency across pipeline features. Cons: hard-coded service IDs (no config namespace), no shipped entities, no vendor support, sparse ecosystem, and a suspicious forward-dated release. Suggest a 2-day spike: build one real pipeline (e.g., a CSV import) end-to-end in a throwaway Symfony app, measure the effort saved versus a plain Messenger-based pipeline, and audit its dependency health (flow-php, Doctrine ORM 3.6, Symfony 7.x) before we commit."
Bottom line for the go/no-go meeting: Adopt patterns (Workflow vs Pipeline separation, Context, step middleware) with high confidence; adopt the package as a dependency only with explicit engineering sponsorship, a fork/vendor strategy, and a defined boundary so it can be replaced without disrupting product roadmaps.
How can I help you explore Laravel packages today?