<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pierre-Arthur DEMENGEL</title>
    <description>The latest articles on DEV Community by Pierre-Arthur DEMENGEL (@pierrearthurdemengel).</description>
    <link>https://dev.to/pierrearthurdemengel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3863227%2Fb0fcf750-59c4-4eab-ad3c-a8df536eb2e4.png</url>
      <title>DEV Community: Pierre-Arthur DEMENGEL</title>
      <link>https://dev.to/pierrearthurdemengel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pierrearthurdemengel"/>
    <language>en</language>
    <item>
      <title>Sylius 1.x end of support is coming, so I built a CLI to audit your migration to 2.x</title>
      <dc:creator>Pierre-Arthur DEMENGEL</dc:creator>
      <pubDate>Mon, 06 Apr 2026 06:04:36 +0000</pubDate>
      <link>https://dev.to/pierrearthurdemengel/sylius-1x-end-of-support-is-coming-so-i-built-a-cli-to-audit-your-migration-to-2x-2nii</link>
      <guid>https://dev.to/pierrearthurdemengel/sylius-1x-end-of-support-is-coming-so-i-built-a-cli-to-audit-your-migration-to-2x-2nii</guid>
      <description>&lt;p&gt;If you maintain a Sylius 1.x project in production, you already know what's coming. The end of support is approaching, and every site still running on 1.x will have to migrate to 2.x. &lt;/p&gt;

&lt;p&gt;The official migration guide is still tagged "WIP/experimental" on docs.sylius.com, and the scope of the upgrade is massive: Bootstrap + Symfony UX replacing Semantic UI + jQuery, Twig Hooks replacing template overrides, Symfony Workflow replacing winzou, symfony/mailer replacing SwiftMailer, Payment Requests replacing Payum, API Platform 4 replacing API Platform 3, and a long list of removed classes, renamed services and dropped routes.&lt;/p&gt;

&lt;p&gt;Every agency, every lead developer facing this migration does the same thing: open the project, manually dig through every overridden Twig template, check composer.json plugins one by one against the Marketplace, grep for jQuery calls, count Semantic UI classes, read through UPGRADE-2.0.md line by line. It takes days and the result is an approximate spreadsheet at best.&lt;/p&gt;

&lt;p&gt;I found that unacceptable, so I built the tool that was missing.&lt;/p&gt;

&lt;p&gt;What is Sylius Upgrade Analyzer&lt;br&gt;
Sylius Upgrade Analyzer is an open source CLI tool that installs via Composer, scans a Sylius 1.x project and produces a full migration diagnostic in about 30 seconds.&lt;/p&gt;

&lt;p&gt;composer require --dev pierre-arthur/sylius-upgrade-analyzer&lt;/p&gt;

&lt;p&gt;vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze&lt;/p&gt;

&lt;p&gt;That's it. No configuration needed. It detects your Sylius version from composer.lock and runs every analyzer against your codebase.&lt;/p&gt;

&lt;p&gt;What it covers&lt;br&gt;
The tool ships with 47 analyzers built from the official UPGRADE-2.0.md, UPGRADE-API-2.0.md and CHANGELOG-2.0.md. Nothing is guessed, everything is sourced.&lt;/p&gt;

&lt;p&gt;On the template and frontend side, it detects overridden Sylius templates that need to migrate to Twig Hooks, sonata_block_render_event and sylius_template_event calls to replace with hook(), Semantic UI CSS classes still present in templates, jQuery and Semantic UI JS usage in assets, and webpack.config.js with @symfony/webpack-encore.&lt;/p&gt;

&lt;p&gt;On the deprecation and breaking change side, it covers winzou state machine to Symfony Workflow, SwiftMailer to symfony/mailer, legacy user encoders to password_hashers, Payum to Payment Requests, message bus renames, command handler namespace changes, removed email managers, removed payment gateways from core, service decorator targets, order processor priorities, form type extension priorities, deprecated Behat contexts, admin menu event changes, translation key renames, Doctrine XML mapping to PHP attributes, fixture system changes, multi-store channel deprecations, bundle configuration changes, sylius/calendar to symfony/clock, security firewall renames, removed user model fields, over 150 removed classes, 21 renamed service IDs, 43 removed routes, LiipImagine config changes, 24 changed constructor signatures, grid filter syntax changes, removed use_webpack config, PHP and Node version requirements, moved classes between bundles, service visibility changes, missing payment request env vars, and 7 removed packages like FOSRest and JMSSerializer.&lt;/p&gt;

&lt;p&gt;It also checks every Sylius plugin in your composer.json against the Addons Marketplace and Packagist to determine compatibility with 2.x, analyzes grid and resource bundle customizations, and covers API Platform migration including namespace changes, serialization group prefixes, endpoint restructuring and query extension signature changes.&lt;br&gt;
Each issue is classified as BREAKING, WARNING or SUGGESTION, with a time estimate in hours and a direct link to the relevant Sylius documentation.&lt;/p&gt;

&lt;p&gt;Auto-fix&lt;br&gt;
Detection is useful but fixing is better. The tool includes 41 fixers that can apply the most common corrections automatically.&lt;/p&gt;

&lt;p&gt;vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --fix --dry-run&lt;/p&gt;

&lt;p&gt;The --dry-run flag generates a unified diff patch showing what would change without touching any files. When you're confident, drop the flag and let it apply.&lt;/p&gt;

&lt;p&gt;Each fixer has a confidence level. HIGH means safe to apply without review, like renaming security.encoders to security.password_hashers or updating removed service IDs. MEDIUM means likely correct but worth a manual check, like workflow migration or Sonata block event replacement.&lt;br&gt;
Among the 41 fixers: Twig Hook YAML generation, winzou to Symfony Workflow conversion, SwiftMailer to symfony/mailer rewrite, renamed service IDs, security firewall renames, LiipImagine config, Sonata block events to hook(), grid filter entity syntax, calendar to clock replacement, bundle config updates, deprecated package removal, routing import fixes, removed config keys, translation key prefixes, API namespace updates, and many more.&lt;/p&gt;

&lt;p&gt;Output formats&lt;br&gt;
The CLI supports six output formats depending on your workflow.&lt;br&gt;
Console output is the default, with a colored ASCII gauge, severity breakdown and category table. JSON gives you a machine-readable report for CI/CD integration. CSV produces an Excel-compatible export with UTF-8 BOM and semicolon separator. SARIF generates a report compatible with GitHub Code Scanning. Markdown produces a human-readable report suitable for PRs and wikis.&lt;/p&gt;

&lt;p&gt;vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --format=json --output=report.json&lt;/p&gt;

&lt;p&gt;vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --format=sarif --output=report.sarif&lt;/p&gt;

&lt;p&gt;vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --format=csv --output=report.csv&lt;/p&gt;

&lt;p&gt;GitHub Action&lt;br&gt;
The analyzer runs in CI too. Add it to your workflow and it can fail on breaking issues, upload SARIF to GitHub Code Scanning, and post a summary comment on pull requests.&lt;/p&gt;

&lt;p&gt;yaml- uses: pierrearthurdemengel/sylius-upgrade-analyzer@v1&lt;br&gt;
  with:&lt;br&gt;
    project-path: '.'&lt;br&gt;
    target-version: '2.2'&lt;br&gt;
    fail-on-breaking: 'true'&lt;br&gt;
    upload-sarif: 'true'&lt;br&gt;
    post-pr-comment: 'true'&lt;/p&gt;

&lt;p&gt;Additional features&lt;br&gt;
The CLI also supports custom rules via a .sylius-upgrade-rules.yaml file at the root of your project, baseline management to save and diff results across runs, sprint planning with configurable team velocity, multi-project analysis for agencies managing several Sylius sites, report comparison to track migration progress, and webhook notifications.&lt;/p&gt;

&lt;p&gt;PDF reports&lt;br&gt;
The sixth output format is PDF, generated via a web service at sylius-upgrade-analyzer.dev. This is the only paid part. Your source code never leaves your machine: the CLI sends the JSON report only, the service generates a professional PDF with migration roadmap and time estimates, and sends it back. No source code transits.&lt;/p&gt;

&lt;p&gt;vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --format=json --output=report.json&lt;/p&gt;

&lt;p&gt;vendor/bin/sylius-upgrade-analyzer sylius-upgrade:upload report.json --api-key=sua_xxx --output=report.pdf&lt;/p&gt;

&lt;p&gt;Three plans are available: Report at 59 EUR for a single PDF, Studio at 299 EUR per year for unlimited white-label reports with your agency's branding, and Agency at 799 EUR per year adding multi-seat keys and consolidated multi-project reports.&lt;/p&gt;

&lt;p&gt;Links&lt;br&gt;
The repo GitHub: github.com/pierrearthurdemengel/sylius-upgrade-analyzer&lt;br&gt;
The web service: sylius-upgrade-analyzer.dev&lt;/p&gt;

&lt;p&gt;The end of Sylius 1.x support is not a question of if but when. If you have projects to migrate, give it a try and let me know what's missing.&lt;/p&gt;

</description>
      <category>php</category>
      <category>symfony</category>
      <category>sylius</category>
    </item>
  </channel>
</rss>
