Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ezmigrationbundle2 Laravel Package

suez/ezmigrationbundle2

Easily manage versioned database and content migrations in Symfony with this bundle, offering flexible migration classes, a CLI to run and roll back changes, and integrations for eZ Platform content structures.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What it is. suez/ezmigrationbundle2 is a community fork of the widely used Kaliop eZ-Migration Bundle, retargeted at eZ Platform 3 (the release line later rebranded Ibexa DXP 3.x). Architecturally it is a Symfony bundle that sits on top of the Ibexa Public API (eZ\Publish\API\Repository), exposing a declarative YAML migration DSL plus console commands to create/update content types, content, users, roles, locations, and translations. The value proposition is unchanged from upstream: repeatable, version-controlled, idempotent content/data migrations rather than ad-hoc scripts against the repository.

Architecture fit. The bundle is a developer/ops tool, not a runtime dependency. It touches the content repository through the public API, so conceptually it fits cleanly into an Ibexa deployment: migrations become artifacts in the application repo, executed by CI or release runbooks, with environment-specific parameters. For an organization that already treats content model and content as code, it is a natural fit. It is a poor fit for organizations without an existing deployment pipeline, because it presumes disciplined promotion between environments.

Integration feasibility. Mechanically straightforward: composer require, register the bundle, configure migration paths, and run the console commands. The real feasibility question is not "can we install it" but "does it run on our version." The fork's stated target (eZ Platform 3 / Ibexa 3.x) is now a legacy line; current Ibexa DXP 4.x/5.x moved to newer PHP and Symfony majors, and the upstream Kaliop bundle was already trailing those upgrades. Expect to patch service definitions, deprecated API calls, and possibly PHPUnit/Symfony constraints before it is usable on a modern stack. Since it is a fork of kaliop/ezmigrationbundle, also verify Composer aliasing/replace semantics and PHP namespace collisions if the original is present anywhere in the dependency graph.

Technical risk. High, concentrated in four areas:

Risk Severity Notes
Maintenance / bus factor High 0 stars, 0 dependents, single-vendor fork, last release Jan 2023. Effectively a private fork published to Packagist.
Version drift High Tied to Ibexa 3.x era; Ibexa 4/5 compatibility is unlikely without work.
Licensing High GPL-2.0 is copyleft. If the bundle is distributed with a proprietary client build or offered as a hosted service, legal review is mandatory. Internal-only use is generally lower risk but must be confirmed.
Correctness of migrations Medium Declarative migrations are powerful but idempotency depends on well-written match/replace strategies; a bad migration can corrupt content state with no transactional rollback.

The zero-adoption signal is meaningful: there is no community to catch regressions, no ecosystem of examples, and no third-party security review. Treat it as a vendored internal component you happen to have found on GitHub, not as a supported open-source dependency.

Key questions to resolve before committing:

  1. What exact Ibexa/PHP/Symfony versions does it support, and has anyone actually run it there? (Demand a spike, not a README claim.)
  2. Who maintains the fork, what is the commit cadence, and is there a CI matrix?
  3. Has legal signed off on GPL-2.0 for our distribution model?
  4. Is there a maintained alternative — notably Ibexa's own migration tooling and the still-active upstream Kaliop lineage — that covers our use cases? Benchmark before adopting a fork of a fork.
  5. What is the rollback story if a migration half-fails in production?

Integration Approach

Stack fit. Good on paper. The bundle expects an Ibexa/Symfony application with console access, a configured repository, and writable migration directories. It composes with standard CI/CD (migrations run as a release step after code deploy and before cache warmup/traffic shift), and it plays well with environment-scoped configuration for siteaccess, languages, and parent locations. It does not fit well with immutable-infrastructure models unless migrations are run as a one-shot job with explicit locking.

Migration path (adopting the package). Three realistic paths:

  • Greenfield adoption — add the bundle, write a first migration that only creates a content type in a sandbox, and validate the DSL before investing in content migrations. Lowest risk.
  • Fork replacement — if kaliop/ezmigrationbundle is already in use, this fork likely requires a Composer replace/alias plus namespace and config changes. Do this on a branch, run the existing migration suite unchanged, and diff resulting content state. Any behavioral difference is a blocker.
  • Internal fork — the pragmatic recommendation. Vendor the package into our own namespace, pin it, add CI, and own the patches. Given the upstream's state, we will be maintaining it regardless.

Compatibility work to schedule explicitly: PHP version bump, Symfony major alignment, deprecation cleanup against the target Ibexa API, and a smoke matrix across the versions we actually deploy. Budget this as a spike with a go/no-go, not as a line item assumed to be zero.

Sequencing.

  1. Legal/licensing review (gate).
  2. Compatibility spike on a disposable Ibexa instance at our target version.
  3. Stand up a content-model-only migration in sandbox; verify idempotency by running twice.
  4. Extend to content and relations in staging against a production data snapshot.
  5. Define the release-runbook contract (dry-run, lock, abort criteria, restore point).
  6. Production rollout for non-destructive migrations first; destructive/transformative migrations only after two clean staging cycles.

Operational Impact

Maintenance. This is the dominant cost. With no upstream community and a stale release, every Ibexa upgrade becomes our problem. Plan for an owned fork with a named maintainer, a pinned version, a patch branch, and a documented upgrade procedure. Treat "does it still install?" as part of every platform upgrade checklist.

Support. There is no vendor support and effectively no community support. Internal expertise must be built deliberately — at minimum two engineers who can read the bundle's internals, not just write YAML. Escalation path is "read the source."

Scaling. Fine for content-model changes and modest content volumes; weaker for bulk operations. Long-running migrations against large content sets risk memory growth, repository cache contention, search-index load, and timeouts. Mitigate with batching, running against a quiesced environment, and scheduling outside traffic peaks. There is no native parallel-execution story; concurrency control is ours to build.

Failure modes to design around.

  • Partial application — a step fails midway, leaving content in a mixed state with no transaction boundary. Mitigation: snapshot/restore point before every production run, and keep migrations small and ordered.
  • Non-idempotent matches — duplicate content or orphaned locations when match criteria are wrong. Mitigation: mandatory double-run in staging.
  • Silent no-ops — a migration reports success while matching nothing due to a siteaccess or language mismatch. Mitigation: assertions and post-run verification queries.
  • Version drift across environments — a migration written for staging applied to a divergent production content model. Mitigation: same migration artifact promoted, never re-authored per environment.
  • Dependency abandonment — a future Ibexa release breaks the bundle with no fix coming. Mitigation: internal fork plus a documented exit plan (export the DSL intent; reimplement critical migrations against the Public API directly).

Ramp-up. The YAML DSL is learnable in days for a Symfony-fluent developer, and Kaliop's upstream documentation largely still applies, which softens the lack of fork-specific docs. Realistic estimate: one engineer productive on simple migrations within a week; confident on relations, translations, and idempotency within a month; able to debug the bundle itself within a quarter. That last milestone matters more than it should, because debugging the bundle will be required.

TPM verdict. Adopt only if we are on (or can support) the Ibexa 3.x-era stack, legal clears GPL-2.0, and we accept ownership of an internal fork. Otherwise, evaluate Ibexa's maintained migration tooling first. The low adoption signals are not disqualifying in a niche CMS ecosystem — most Ibexa shops run small, private forks — but they do mean the total cost of ownership is dominated by maintenance, not by integration. Budget accordingly and gate the decision on the compatibility spike, not on the README.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle