Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Migration Legacy Symfony ​ in Production​

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Migration Legacy Symfony ​ in Production​

When inheriting an unmaintained legacy Symfony application, the real question is not “how to migrate”, but rather “where to start without breaking everything”.

In this talk, I share an honest retrospective of a Symfony migration carried out in production, on an aging application with limited documentation, few tests, and dependencies on components that are now obsolete.

Through this journey, I offer a reading of the battlefield: risk areas, false good ideas, and decisions that seem obvious on paper… but turn out to be dangerous once confronted with real-world constraints.

In particular, we will cover:
- How to step back from an unmaintained legacy codebase and identify the real problems
- The false good ideas we encountered during Symfony legacy migrations
- Common mistakes observed in the field, and how to avoid or mitigate them
- Small levers that make a big difference (order of actions, scope, tools, trade-offs)
- Key lessons learned from this migration: what we would do again, and what we would clearly avoid

This talk is aimed at developers working with inherited Symfony applications, often business-critical, who must move forward with limited visibility and very little room for error.

The goal is not to promote a perfect or universal method, but to share a real, lived experience, and provide attendees with concrete reference points, clarity, and practical tips they can apply to their own migrations.

Avatar for Arnaud Oltra

Arnaud Oltra

June 05, 2026

Other Decks in Programming

Transcript

  1. No tests No documentation Test on critical flows Testing effort

    PAIN Assumptions instead of verification LESSON
  2. Branch war PAIN 5 1 v s Five devs shipping

    features One dev migrating
  3. Each day = conflicts 5 devs vs 1 dev Deliver

    small pieces as early as possible Branch war PAIN LESSON
  4. Plan the rest for later Take a decision PAIN LESSON

    Can't change everything at once Making choices takes courage
  5. What I wish I had known TAKEAWAYS Clean code before

    migration Spend time before not after
  6. What I wish I had known Clean code before migration

    Test on critical flows Spend time before not after Know what cannot break TAKEAWAYS
  7. What I wish I had known Clean code before migration

    Test on critical flows Deliver small pieces early Spend time before not after Merge often, conflict less Know what cannot break TAKEAWAYS
  8. What I wish I had known Clean code before migration

    Test on critical flows Deliver small pieces early Don’t chase perfection Spend time before not after Merge often, conflict less Stay focused on the goal Know what cannot break TAKEAWAYS
  9. Clean code before migration Test on critical flows Deliver small

    pieces early Don’t chase perfection Spend time before not after Merge often, conflict less Stay focused on the goal Know what cannot break Use their language Frame risks, not code What I wish I had known TAKEAWAYS