KwikTech Symfony · API Platform · Doctrine upgrades
Symfony · API Platform · Doctrine

Upgrades for Symfony applications with API Platform and Doctrine, at a fixed price

Symfony 5.4 or 6.4 to 7.4, API Platform 2 or 3 to 4, Doctrine ORM 2 to 3, annotations to attributes. Every step is a separate pull request that can go live on its own. You keep your repository, we work through PRs.

Request an assessment (€750) Run the free scan first

Also in Deutsch Nederlands

Why the upgrade keeps getting postponed

Upgrading Symfony itself is rarely the problem: 7.4 to 8 is mostly fixing deprecations. The work is in the layer around it. API Platform 2 and 3 to 4 means rewriting data providers into state providers and processors. Doctrine ORM 2 to 3 and annotations to attributes touch every entity. Abandoned bundles such as SensioFrameworkExtra, security-guard, Swiftmailer and FOSRest have no upgrade path, only a replacement. That is architecture work, not something Rector fixes for you. It is exactly the work we do.

What is on the clock

Symfony 6.4

Bug fixes end November 2026. Security fixes continue until November 2027.

PHP 8.2

Security support ends December 2026. PHP 8.1 is already end of life.

Doctrine ORM 2

End of life February 2027. ORM 3 is required by current bundles.

API Platform 3.x

No longer maintained. Only 4.x receives fixes.

Symfony 5.4 still receives security fixes until 2029, but no bug fixes, and the bundles around it have moved on. Running it on PHP 8.3 or 8.4 gets harder every release.

How we work

1. Free scan

Upload your composer.lock. You see your upgrade path, blocking packages, cliffs and a readiness score. No account, no source code.

2. Assessment, €750

Read access to your repository. Rector dry run, deprecation inventory, bundle replacement plan, step plan with PHP versions, and a fixed quote. Includes a one-hour call. Credited in full against the upgrade.

3. Upgrade, fixed price

One major version per stage, each stage a mergeable PR, tests green before we move on. Where coverage is missing we add characterization tests first. No downtime.

4. Upgrade Care

Monthly composer update PR, deprecation count kept at zero, security advisories handled, one minor upgrade per year. Cancel monthly.

Prices

All prices ex VAT. Fixed prices are set in the assessment; ranges below are what most projects land on. Payment per stage: 40% at start, 60% at merge of the final step.

Upgrade assessment

€750

Credited in full against the upgrade.

  • Rector dry run and PHPUnit deprecation inventory
  • Bundle replacement plan
  • Step plan with required PHP version per step
  • Fixed quote and a one-hour call

Request assessment

Symfony 6.4 → 7.4

€3,500 – 6,000

Clean codebase, attributes already in use.

  • Deprecations to zero on 6.4 first
  • Composer, configuration, CI
  • PHP 8.3 or 8.4

FOSRestBundle → API Platform

from €5,000

Priced per resource set.

  • Controllers become resources
  • Serialization groups preserved
  • Existing clients keep working

Add-ons

€500 – 3,500
  • Doctrine ORM 2 → 3: €1,500 – 3,500
  • PHPUnit → 12/13: €750 – 1,500
  • PHP version jump: €500 – 1,500
  • EasyAdmin, Sonata: on quote

Upgrade Care

€250 – 500 per app per month

Keeps the upgrade from being needed again.

  • Monthly composer update PR
  • Deprecation count kept at zero
  • Security advisories handled same week
  • One minor upgrade per year included

Several services or codebases?

LandscapeModel
One serviceAssessment €750, then a fixed price per stage.
Two to five servicesLandscape assessment: €750 plus €250 per extra service, max €1,750. Dependency graph, order, one target stack for everything. Then fixed price per service, 10% off from the third. Shared internal packages go first, as an add-on.
More than five, or many unknownsUpgrade programme: fixed monthly fee of €4,000 – 6,000 for fixed capacity, milestone per service, minimum three months, cancel monthly after that.
After deliveryUpgrade Care per service, tiered from three services.

Environments (dev, staging, production) do not count: one codebase is one unit. Only the deploy pipeline is tested per environment.

Runtime and tooling around the app

Many Symfony applications depend on sidecars that are stuck for the same reason: Python scripts for PDF generation, wkhtmltopdf, headless Chrome, a Node build chain, Docker base images, database versions. Nobody touches them because the output might look different. We take these along as a separate layer, with a visual regression harness: golden-master PDFs from production, rendered before and after, diffed per page. That is how we prove the PDFs still look the same.

Add-onWhatPrice per component
SVersion bump with existing tests (Node, Docker image, DB client, PHP extension)€500 – 1,000
MBump with visual regression harness (PDF, reporting, Python plugin)€1,500 – 3,000
LReplacing a dead tool, harness includedfrom €4,000

What we do not do

Greenfield builds, ongoing feature development, frontend migrations (Encore to AssetMapper only as an add-on), Laravel, Drupal. We upgrade runtimes and tooling; we do not redesign templates.

Questions

Why not just use Rector?

We do use Rector, for everything it can do. It handles syntax and known deprecations. It does not turn a data provider into a state provider, replace Guard with authenticators, or decide which bundle replaces an abandoned one. The assessment tells you exactly how much of your upgrade is Rector work and how much is not.

Do you need production access?

No. Read access to the repository for the assessment, and a branch to open pull requests against for the upgrade. Your team reviews and deploys.

What if test coverage is low?

We add characterization tests around the parts we change before we change them. That is part of the fixed price, not a surprise later.

Can we do only part of it?

Yes. Every stage is priced and delivered separately. Doing Symfony 5.4 to 6.4 now and API Platform later is a normal order.

Where are you based?

The Netherlands. We work remotely with teams in the EU, in English, German and Dutch.

Start with the assessment

€750, ex VAT, credited in full against the upgrade. Within one business day you hear back with a proposed time for the call.

Request the assessment or e-mail info@kwiktech.nl