Headless Sylius Migration. A Technological Transformation Case Study for Katalog Marzeń

How do you successfully migrate a 15-year-old legacy e-commerce system to an API-first architecture? Katalog Marzeń (one of Poland’s top 3 gift experience platforms), supported by Commerce Weavers, executed a comprehensive digital transformation using Sylius and Symfony 6.4.

Cover image for the Katalog Marzeń headless Sylius migration case study
13.04
2026
Author:
Kevin Kaniaburka
Categories:

How do you successfully migrate a 15-year-old legacy e-commerce system to an API-first architecture? Katalog Marzeń (one of Poland’s top 3 gift experience platforms), supported by Commerce Weavers, executed a comprehensive digital transformation using Sylius and Symfony 6.4. The implementation of a headless architecture with Elasticsearch, asynchronous RabbitMQ communication, and a custom migration engine based on Flow PHP resulted in a 70% increase in back–office performance and seamless handling of complex legacy processes.

Katalog Marzeń – 17 Years of Driving Desires and E-commerce Evolution

Katalog Marzeń is a leader in the Polish experience gifts market, redefining gift-giving for nearly two decades. Their operational scale is best illustrated by the numbers: 50 employees, over 600,000 completed orders, and a network of 1,000+ partners offering 15,000 products. Their impact extends beyond e-commerce; the brand fosters a vibrant community through the "Driven by Dreams" (Napędzani Marzeniami) podcast and various social initiatives. Katalog Marzeń actively initiates programs such as the #ChcęToPrzeżyć campaign, the Dream and Do scholarship, and the Marathon of Dreams (Maraton Marzeń). These activities, combined with a recent rebranding, address a growing market of shared experiences and mark a new chapter in the brand’s digital and social strategy.

The Challenge: 15 Years of Technical Debt

Katalog Marzeń faced the necessity of replacing a legacy engine that, after 15 years of development, had become a bottleneck. Accumulating technical debt prevented secure PHP and library updates, while the lack of domain separation hindered further scaling.

System Topology: Sylius as the Commerce Engine and Next.js Frontend

The brand opted for an API–first approach. Sylius serves as the stateless transactional engine, communicating via API with the Next.js frontend.

  • Ecosystem: The architecture relies on strict separation of concerns. Communication with the frontend is synchronous via HTTP API. Data exchange with other backend services is dual–track: synchronous via RPC and asynchronous through Symfony Messenger and RabbitMQ, ensuring high performance and consistency.

  • Infrastructure: Redirects configured in Sylius are passed directly to the infrastructure level, allowing traffic handling at the server level.

  • Integrations: The system is integrated with Keycloak (Auth), Fakturownia (Invoicing), User.com (Marketing Automation), and Admitad (Affiliate). Logistics and payments include InPost, DHL, and Przelewy24.

Reimagining Product Domain. Product Groups over Variants

Due to the unique nature of experience products, Katalog Marzeń moved away from the standard product–variant relationship in favor of Simple Products. Every attraction (e.g., a paragliding flight) is an independent entity.

  • Dynamic Product Groups: This approach allows for total independence of offers (e.g., VIP vs. Standard tickets). To present them on a single product page, we implemented a Product Grouping mechanism that loosely links autonomous products. Customers see available options as selection parameters, while in the backend, each remains a standalone catalog item.

Product card with experience configuration in Katalog Marzeń

Unit–Level Personalization and Advanced Upselling

We implemented a checkout process allowing for the personalization of every single unit in the cart (Order Item Unit level):

  • Adding unique wishes and choosing add–ons (e.g., decorative gift boxes) assigned to a specific item.

Voucher personalization and gift add-ons screen
  • Hybrid Add-on Model: The system supports both unit–level personalization and separate "add-on" products offered dynamically during checkout.

  • Voucher File Generator: We developed a dedicated microservice for PDF generation, which Sylius integrates with independently to offload the main application.

High–Performance Search with Elasticsearch

To offload the database, we implemented an Elasticsearch–based search engine where ES indices serve as Read Models. This integration ensures that complex listings and searches do not tax the DB, drastically reducing system latency.

We also built a dedicated API endpoint for advanced filtering that returns real-time dynamic result counts (e.g., "X offers available in Łódź"). This custom integration was built without third-party plugins to fully optimize the data structure.

Experience listing with filtering and search in Katalog Marzeń

Efficient Legacy Data Migration: Flow PHP and Memory Safety

Customer dashboard of the Dreamers Club loyalty program

Migrating from a 17-year-old legacy system was a core part of the service. We built a dedicated CLI Migrator designed for continuous data synchronization.

  • Stateless Processor & No N+1 Queries. The processor performs zero queries to the legacy database. It receives all necessary data "at the gates," eliminating N+1 issues and protecting databases from overload.

  • Batch Processing & Flow PHP.Using Flow PHP allowed for efficient data streaming without memory overhead, completely eliminating memory leaks when processing hundreds of thousands of records.

  • ValidationErrorFixer & Blacklisting: If a model contains errors, the fixer automatically resolves specific inconsistencies. If an attribute is manually corrected in Sylius, it is "blacklisted" from further syncs, making Sylius the Single Source of Truth.

Retention and Loyalty. The Dreamer’s Club

We migrated and expanded sophisticated loyalty mechanisms:

  • Complex Point Logic. We implemented a system with a strict division between "Pending" and "Active" points. Active points are treated as immutables – they cannot be deleted or edited. Any balance change (e.g., expiration) is handled by adding new entries with negative values. Pending and Active points use separate data models for full auditability.

  • Points-based Discounts. Seamless integration with the cart allows customers to reduce their order total by applying accumulated points. Implementing this required a deep customization of the Sylius Price Calculation Engine to ensure accurate, real-time price adjustments across all currency and tax scenarios.

  • The Dreamer’s Discount. A mechanism rewarding frequent buyers. The system dynamically calculates a user's total lifetime spend and assigns them to a permanent discount tier (e.g., 10%) applied at the cart level.

Loyalty discount selection in the Katalog Marzeń checkout

Flexible Promotion Mechanisms and Coupon Codes

We extended the standard Sylius Promotion Engine to handle the specific marketing requirements of Katalog Marzeń. The key innovation is the decentralization of discount values within a single campaign:

  • Multi-value coupons. We overhauled the coupon code mechanism so that within a single promotion, each individual code can hold a unique, independent value. This allows for generating coupon batches where one code grants –10%, another –15%, and yet another a fixed amount (e.g., 20 PLN) – all without creating hundreds of separate promotion rules. This drastically simplifies campaign management in the administration panel.

  • Gift Vouchers. The coupon code engine was further extended to accept Gift Voucher codes. Recipients can redeem their gift vouchers in the exact same flow as standard discount codes, ensuring a frictionless user experience.

Discount code or gift voucher input in the Katalog Marzeń checkout

Testing and Zero Regression. Behat & Gherkin

Functionality migration was based on recreating legacy business logic through tests. We wrote scenarios in Gherkin, covered them with Behat tests, and only then proceeded with the Sylius implementation. This allowed for a secure rewrite of over a decade of logic without regression bugs.

Results and Transparent Metrics

Transformacja przyniosła konkretne zmiany w wydajności, ale też świadome trade-offy:

  • Back–office Performance. The administration panel is 70% faster (order management and listing handling).

  • Security. Eliminated vulnerabilities by moving to a modern stack (PHP 8.x, Symfony 6.4).

  • Strategic Trade-off. Product entry speed decreased – Sylius is not a PIM, which remains an area for future optimization in upcoming sprints.

Client’s Voice. Why Commerce Weavers?

We met at SyliusCon 2023 in Poznań. Following workshops, we realized that Commerce Weavers possesses deep Sylius expertise combined with a rare balance of technical and business perspectives.

We really appreciated how well they aligned with our organizational culture and how they approached both the project and the collaboration in a comprehensive, substantive way, without separating business and technology into silos.

What convinced us was their courage to take full responsibility for the valuation and their reasoned belief in their estimates – a rarity in this industry. CW wasn't just an external vendor; they seamlessly became part of our team, scaling resources flexibly and working shoulder–to–shoulder on the most critical system components.
Dawid Penkala, IT Manager, Katalog Marzeń
← Back to Blog

Related Posts