Proof · Case studies · Study
They stopped paying for Adobe Commerce. The store didn’t notice.
A specialty retailer’s license expired on short notice. We relaunched the store on Mage-OS in two days. This is what was actually involved.
Study · a specialty retailer
Adobe Commerce → Mage-OS, against a hard deadline.
Context
Specialty retailer on Adobe Commerce, running a Hyvä frontend and a login-protected wholesale storefront alongside the public catalog. In December 2024 they asked the obvious question: what is the license actually buying us? They had just renewed for another year at a five-figure annual figure.
We went looking for what they’d lose. The answer was short. The only Commerce feature genuinely in use was catalog permissions, doing the login-gating on the wholesale storefront, and that is replaceable with an extension or custom code. Target rules were configured but rendered nowhere on the live frontend: paid-for, unused.
Constraint
A hard date, set by someone else. The client decided not to renew on short notice, so the license expired Friday, January 17, 2026. Running Commerce unlicensed past that date was not an option; it would have been a five-figure invoice or a legal letter. The swap had to be finished before the license was.
What we did
Not our first one. We’ve migrated numerous clients from Commerce to Open Source with the same toolkit, so the sequence was proven in-house: maintenance mode, database backup, migrating data for Commerce features in use, composer platform swap, Commerce code and schema cleanup, then relaunch. Easy, right?
- Fall 2025: prep. We modernized the software versions and custom code ahead of time, so the platform swap wasn’t landing on top of unrelated PHP debt.
- Jan 16–17, 2026: the swap. We didn't know the exact license end date until the week of. Composer swap to Mage-OS, compatibility fixes, trigger cleanup, wholesale-access replacement for catalog permissions. Live Saturday morning, the day the license expired.
- Insurance we didn’t need. A drop-in target-rule replacement module, deployed disabled in case related-product rules turned out to matter. They didn’t.
Core Web Vitals stayed green across the cutover, and the store has taken routine Mage-OS updates since: 2.2 in March, 2.3 in May, security patches between. The point of the exit is that it’s a maintained path, not a one-off escape that strands you on a frozen build. The LCP improvement is field data over ten months; the swap itself didn't cause it, but leaving Commerce didn't hurt their site in any way either.
What we’d do differently
The decision window was too narrow for comfort. The question was raised in December 2024; the expiry came up in mid-January. It worked, but it went to the wire, and the margin came from having done this migration before, not from the schedule. Next time the license date gets named as the deadline, in writing, well in advance.
Engagement type: project, delivered under an ongoing retainer.