Re-platforming is not an easy decision. Before you make it, you need to think about the benefits and possible losses. When you have already done it, there are some steps to migrate from Magento 1 (or any eCommerce platform) to Sylius. Let’s take a closer look at them!

1. Think about the scope

Your current customers are choosing you for some reason. Your online sales strategy is often an integral part of your brand. If users are used to buying and browsing products in a certain way, unjustified change in these habits can have a negative influence on your conversion.

At the same time, migration to a new platform (e.g. migrate from Magento to Sylius) is an opportunity to improve the weaknesses of your existing system and thus increase conversion. Consider whether elements such as headless software, progressive web app (e.g. VueStorefront), single page checkout, recurring payments, mobile-first approach, content personalization may boost your business.

It is worthwhile to conduct a functional audit and analyze the target group, business purposes, economic indicators (e.g. ROI) before you decide to start working on individual parts of your new platform.

In this case, working with a consultant and/or an analyst is inestimable. They will help you to compare current system functions to Sylius platform abilities and initially decide what should be created from scratch, what should be extended, and what is the approximate workload of the whole process. An experienced consultant will be able to advise whether your business is ready for Sylius Plus or the MIT version. He will also select plugins, which you can use for free or for a small fee.

2. Prepare the data

Another essential step in migration is data transfer. Make sure that information about products, customers, and orders are adequately prepared. In this case, it is necessary to take care of extreme circumstances – what if a product photo is missing? How should they be sorted on the website? In which way migrate the links correctly, so as not to lose the position in Google, and at the same time raise it. How are user passwords stored, and how do I make it as easy as possible for them to log in?

It is also good at this stage to ensure that the source of data is not an SQL file containing the structure of the database and its content. Much better if it is a well-thought-out XML, XLS, CSV or JSON file, whose content you can quickly check and facilitate the mapping to objects in Sylius to the developer responsible for the migration.

When you migrate from Magento to Sylius, it is good to take care of current data testing (e.g., automating an attempt to purchase an imported product or logging in as an imported user) to avoid critical errors related to data incompatibility. For instance, if there is only one defective product on a page that contains 100 products, it can theoretically stop the entire information listing by triggering “Internal Server Error.”

The case is much simpler if you are using a PIM system, and the data is already normalized. Maybe it would be a good idea to consider implementing this mechanism as well. Akeneo or Pimcore are some of the many options that are worth mentioning in Sylius. For the migration, you can use FriendsOfSylius/ImportExportPlugin package. You can also can easily create your script using the mechanism of ResourceBundle Sylius and validators.

Personally, we use our internal private bundle. It allows us to easily read different sources of data, optimally import and synchronize large amounts of data, and use the queuing mechanisms of AMQP protocol.

3. Prepare the setup

Install your Sylius instance, configure plugins, and basic data using the fixtures mechanism. Consider dividing channels, preparing languages, payment methods, shipping, zones, and tax rates.

Think also about permanent promotions, based on which you will enforce specific business logic. It’s great if you even think about dynamic elements and consider whether an external CMS system will be required or the basic Sylius CMS Plugin is enough for your needs.

Radosław Żurawski - CSO at BitBag
Not sure if Sylius is right for you? I can help you find the best solution for your eCommerce during a FREE consultation.

4. Choose your hosting

When you have set the basic system, think carefully about the hosting. It is worth to work on the target hosting from the very beginning. It may facilitate many further steps.

Sylius hosts the same way as Symfony, so the range of hosts is wide. You can use simple Cloud hosting such as a, Symfony Cloud, Digital Ocean, or more advanced solutions such as dedicated OVH, AWS, or Google Cloud hosting.

5. Customize

At that point, all the fun and the most significant advantage of Sylius over Magento or other eCommerce solutions begins. Sylius is perfect for expansion.

Thanks to its intuitive and straightforward SDK, you can quickly implement new API endpoints, CRUD operations, extend the administrator interface without writing a line of HTML code, or design advanced business processes using the state machine mechanism. It will help you easily implement a ticketing system, marketplace, reservation system, VOD, virtual product sales, or SaaS with recurring payments. The spectrum of possibilities is vast, and the Symfony framework drives some of the most advanced web applications. It is worth mentioning that all Symfony bundles are fully compatible with Sylius, which extends the scope of its capabilities.

If you want your application to last as long as possible in Sylius, and the platform itself to be reliable and simple in development without regression, take interest in Behaviour-Driven Development methodology, that Sylius is famous for. The topic is so deep that it will be difficult to describe it in one blog. Look at this podcast – it will explain to you a lot.

6. Integrate

In the times of complex IT infrastructures and the cloud era, the ability to integrate determines how efficiently seemingly independent units of enterprise operations, such as logistics, marketing, or sales department.

Fortunately, after you migrate from Magento to Sylius, you can easily integrate with an ERP system using an API interface. Thanks to state machine mechanism transitions, you can easily export order information to ERP or accounting systems. Event-listeners will be used for integration with marketing automation or synchronization of information about prices, promotions, or loyalty programs. Think also about integration with payment gateways before implementing the suppliers you use.

7. Spend time on Q&A

While the software development is finished, make sure that people using the system had checked it thoroughly. Also important is learning how to manage it, for instance – how to add and edit information. It is the only way to ensure if the team is ready to change. It may let you avoid surprises while switching the system to production.

Also, spend some time on testing the system under high load with stress tests and A/B tests. It will help you to scale the parameters of the server accurately and optimize the application bottlenecks. It is worth considering at this point using Blackfire – an official tool for Symfony framework developers to test the performance of web applications. Thanks to it, you will optimize large database queries, unnecessary memory overloads, and contribute to the protection against global warming.

8. Go live!

If your system is ready, don’t forget to change system parameters to production parameters for all API connections (payments, integration with suppliers, marketing automation). Delete test users of Sylius (sylius: sylius and api: sylius-api are not secure login data).

It is also worth checking if the website map is generated correctly, and the links have been properly migrated to keep their position in search engines. Don’t forget about SSL overvoltage, redirecting from HTTP to HTTPs, and changing your data policy, especially if your country is subject to GDPR.

We know that in some cases you may need professional help. Feel free to use our contact page or a contact form below. We will set up a free consultation, you will tell us about your issue and we will find a proper solution!