Skip to content
AT
All case studies
Logistics 2023 9 months

Legacy Yii 1 Portal Modernisation

Migrating a business-critical Yii 1 client portal to Laravel in slices, without a freeze and without a big-bang cutover.

Client
Logistics operator
My role
Lead engineer
Team
3 engineers
hours of downtime
0
incremental migration
9 mo
coverage on critical paths
70%+

The challenge

A ten-year-old Yii 1 portal ran daily operations for hundreds of B2B clients. It sat on an unsupported framework and an EOL PHP version, had no test coverage, and business logic lived inside controllers and view templates. A rewrite-and-switch was not an option — the portal could not stop working for a single day.

The solution

I used a strangler-fig approach: a routing layer in front of both applications sent migrated paths to the new Laravel app and everything else to the legacy one, with a shared session so users never saw a second login.

Module by module, I extracted business logic out of legacy controllers into tested service classes, starting with the highest-traffic screens. Each slice shipped to production behind a feature flag with the old path still available as a fallback. Once a module's traffic had fully moved, the legacy code was deleted.

The outcome

The portal reached a supported PHP and framework version with no downtime and no feature freeze, and arrived with test coverage on the paths that matter.

Technical highlights

  • Strangler-fig routing with a shared session across both apps
  • Feature-flagged, reversible cutover per module
  • Business logic extracted into tested services

Stack

PHP Laravel Yii 2 Yii 1 JavaScript MySQL

More work

Read the Partner Portal for an Enterprise SaaS Vendor case study
B2B SaaS / 2025

Partner Portal for an Enterprise SaaS Vendor

A multi-tenant portal where 600+ resellers register deals, track commission and pull co-marketing assets — with every deal mirrored into Salesforce in...

PHP Laravel REST APIs Vue 3 MySQL +2
Read case study
Read the Multi-Touch Attribution Dashboard case study
Manufacturing / 2025

Multi-Touch Attribution Dashboard

Campaign reporting across Marketo, Salesforce and web analytics — 40M+ touchpoints rendered as funnel, cohort and attribution views that load in under...

PHP Laravel Vue 3 MySQL Salesforce +1
Read case study

Facing a similar problem?

Tell me where it hurts — integrations dropping records, a dashboard nobody trusts, or a legacy portal you cannot safely touch.

Start a conversation