nicolas-souffleur/mapping-connector-bundle
A Symfony bundle for wiring configurable mapping definitions between source and target data structures, so you can transform arrays, objects, and DTOs through reusable connector mappings instead of hand-written conversion code.
Architecture fit — fundamental mismatch to validate first. Despite being a PHP package, this is not a Laravel package: it is a Symfony bundle built as an Akeneo PIM connector (readers/processors/writers registered as Akeneo import/export jobs). It cannot be composer require'd into a Laravel application and used as a library. Its value to a Laravel-based stack is limited to reference material — the column-to-attribute mapping model and CSV generation approach — not the runtime code.
For an organisation already running Akeneo, the fit is much better: it extends the native connector framework in the way Akeneo intends, so it slots into the existing job/import-profile model rather than fighting it.
Integration feasibility — low, and version-gated. The last release was 2019-02-21, which places it in the Akeneo 2.x/3.x, PHP 7.x, Symfony 3.4/4.x era. Any current Akeneo install (5.x–7.x, PHP 8.1+) will almost certainly fail Composer dependency resolution on Symfony, Doctrine, or Akeneo's own bundle constraints. Zero dependents and 11 stars mean the compatibility matrix has never been exercised by anyone but the author.
Technical risk — high across the board.
| Risk | Assessment |
|---|---|
| Abandonment | Single maintainer, no release in ~6 years, no evidence of active triage |
| Security | No patch cadence; transitive Symfony/PHP 7 dependencies carry known CVEs |
| Correctness | No dependents implies no production validation; no visible test suite or CI |
| Lock-in | Ties the solution to a specific Akeneo major version, complicating PIM upgrades |
| Scope | CSV-centric mapping; unclear coverage of scopable/locale-specific values, metric units, reference data, and variant axes — the exact areas where Akeneo mapping usually breaks |
Key questions to resolve before any commitment:
composer.json resolve against it in a throwaway sandbox?Stack fit. Two distinct paths, and the decision hinges on whether an Akeneo instance exists.
Migration path (adopt-as-fork).
Compatibility. Expect to spend one to two days just establishing the constraint surface. Treat any successful resolution as accidental rather than guaranteed, and record the exact lockfile — future Akeneo upgrades will re-open this question every time.
Sequencing. Put this behind a timeboxed spike (2–3 days) with a hard go/no-go. Do not sequence it ahead of the mapping requirements definition, because the attribute-type coverage question determines feasibility more than the package's technical state does. If the spike fails, the fallback — a small internal mapping service — is not much more work than the integration and carries none of the abandonment risk.
Maintenance — we become the maintainers on day one. There is no upstream roadmap and no realistic prospect of one. Budget permanent ownership: dependency patching, Akeneo upgrade compatibility, and bug fixes. A reasonable planning figure is a low but non-zero ongoing allocation (roughly 1–3 days per quarter in steady state, spiking to 1–2 weeks at every Akeneo major upgrade).
Support. None commercially. Community support is a single GitHub issue tracker with an inactive maintainer; internal escalation paths must be defined before adoption, not after an incident.
Scaling. The design is batch CSV import/export within Akeneo's job framework. Concerns to validate with a representative catalogue (say 50k–100k SKUs, multi-channel, multi-locale): whether the reader streams or loads into memory, memory ceiling during mapping, and job duration/timeout behaviour. There is no published performance evidence, so this must be load-tested rather than assumed.
Failure modes to instrument for.
Ramp-up. An engineer fluent in Symfony and Akeneo's connector architecture needs roughly one to two weeks to be productive in this codebase; add two to three weeks for someone learning Akeneo's attribute model (families, scopable/localisable semantics, variant axes, reference data) from scratch. Document the mapping configuration format early — it is the artefact most likely to become tribal knowledge.
Recommendation. Do not adopt as a runtime dependency for a Laravel-centric stack; the fit is wrong and the maintenance burden is unshared. For an Akeneo-centric stack, run the timeboxed compatibility spike, and if it passes, fork with an owner assigned and a test suite added. In both cases the durable value here is the mapping concept, not the code.
How can I help you explore Laravel packages today?