1. Think about the scope

Your current customers are choosing you for some reasons. 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 is an opportunity to improve 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 functional audit and analyse the target group, business purposes, economic indicators (eg. 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 will decide initially what should be created from scratch, what should be extended and what are the approximate workload of the whole process. Experienced consultant will be able to advise whether your business is ready for Sylius Plus or the MIT version will be more appropriate. He will also select plugins, which you can use for free or for a small fee.

2. Prepare the data

Another important step in migration is data transfer. Make sure that information about products, customers and orders is properly prepared. In this case it is necessary to take care of extreme cases - what if a product photo is missing? How should they be sorted on the website? How to migrate the links properly, 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 easily check and facilitate the mapping to objects in Sylius to the developer responsible for the migration. During migration 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) in order to avoid critical errors related to data incompatibility. For instance, if there is only one defective product on page which contains of 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 definitely worth mentioning in Sylius. For the migration you can use FriendsOfSylius/ImportExportPlugin package, or you can easily create your own script using the mechanism of ResourceBundle Sylius and validators. Personally we use our internal private bundle, which 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 a specific business logic. It's great if you also 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.

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 platform.sh, 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 greatest advantage of Sylius over Magento or other eCommerce solutions begins. Sylius is perfect for expansion. Thanks to its simple and intuitive SDK you can easily 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. This 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 very wide and the Symfony framework drives some of the most advanced web applications. It is worth mentioning that all Symfony bundles (extensions) 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, be interested 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, but this podcast (https://www.spreaker.com/user/sylius/no-money-for-testing-ecommerce-project-p) will explain to you a lot.

6. Integrate

In the times of complex IT infrastructures and the cloud era, the ability to integration determines how efficiently seemingly independent units of an enterprise operate, such as logistics, marketing or sales department. Fortunately, Sylius can be easily integrated with an ERP system using an API interface. Thanks to state machine mechanism transistions, you can easily export order information to ERP or accounting system. 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 checked it well and learnt how to manage it, for instance - how to add and edit information. This is the only way to ensure if the team is ready to change, and this may let you avoid surprises during switching the system to production. Also spend some time on testing the system under high load with stress tests and A/B tests. This will help you to accurately scale the parameters of the server and optimize the application bottlenecks. It is definitely 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.

Seems interesting?

Estimate your project