Saturday, December 17, 2016

Migration to Magento 2 — Case Study

Moving a M1 store from to Magento 2 is quite a complicated process that consists of several stages.
Magento offers a special Data Migration Tool to ease the pain of transferring store, customers and orders data.
However, any theme or code customizations (including 3rd party extensions) are non-transferable. They have to be completely redone to fit the new version of the platform.
This is the list of the key aspects one needs to implement during Magento 2 migration:

1. Moving store database.

As said above, this stage is implemented with the help of the official Magento Migration Tool. It includes:
  • moving websites and stores
  • transferring config settings for each store
  • migrating product data (e.g.product attributes, categories, ratings and reviews, manufacturers etc.)
  • moving customer base and its setup
  • transferring sales data (orders, payments, invoices, etc.)
  • CMS content
  • basic SEO setup (titles, descriptions, meta data, redirects, etc.)
  • moving tax data
  • and transferring some other important store data

2. Migrating custom-built functionality   

Due to the difference in the platforms architecture, Magento 1 third-party extensions and custom-built features won’t work on Magento 2. It means that they have to be  redeveloped from scratch.
3. Migrating store theme. 
Since Magento 1 themes are not transferable to the 2d version of the platform, a store owner has to either find a new, ready-to-install theme, or develop a new or similar design from scratch.

The Process

1. Transferring Store Data

First, we installed Magento 2 on the client’s server.
Next, we installed and configured the Magento Data Migration tool. The tool was installed on an empty Magento2 installation with the help of Composer.
Basically, the Tool is designed to transfer data from M1 to M2 database according to the set of rules defined in an xml file. So, in this file, we configured connections setup for the defined source (the client’s Magento 1 installation) and the destination (a Magento 2 website) connections.
At the next step, we migrated:
  • all settings,
  • websites and stores,
  • categories,
  • products,
  • customers,
  • orders
  • and CMS data.
Additionally, we also moved media files and ACLs.

Challenges Faced

Upon the whole, everything went smooth. However, there were some difficulties we had to overcome in the process.
Due to the facts that M2 and M1 stores were located on the different servers and M1 database was working via a socket, the Data Migration Tool couldn’t access the necessary data.
Since it was impossible to solve this with the client’s hosting provider, we decided to make a copy of the database and move it from the old server to a new one.
Thus, we gained access to the data and migrated it to a new Magento 2 installation.
* * * * *
Also, at a later migration stage, the client discovered that it was impossible to change the delivery date of the migrated products.
We investigated the issue and found a similar case described by other Magento developers on StackOverFlow.
At the moment, Magento 2 doesn’t save the “delivery_date” attribute in the table “catalog_product_entity_text” providing the attribute already exists in the migrated “catalog_product_entity_varchar” table.
However, if a record is added manually to the “catalog_product_entity_text” table, display/save options work fine.
To fix this issue for our client, we created a custom Magento script.

2. Moving Custom-Built Functionality

There were 7 third-party extensions installed on the client’s Magento 1 store. These were:
  • Tracking Number Import and Order Module Export by Xtento
  • Data Feed Manager by Wyoming
  • SEO Suite Ultimate, Search Suite and Advanced Product Options by MageWorx
  • German Store module by Symmetrics
Almost all of the above-mentioned extensions had more or less functional Magento versions. The only exception was the German Store module by Symmetrics.
Our task was to install those modules on the client’s Magento 2 installation and configure them according to the client’s requirements.

3. Migrating Store Theme

The client decided to purchase a ready-to-use Magento 2 theme by Pronto.
To let the client test the theme effects for a live store, we installed it on a dev site that was a plain Magento site with no data.
While testing the theme, we spotted an issue with the price pop-up — for some reasons, it was displayed incorrectly. The client contacted the theme developer and according to what they said the problem was triggered by the bug of the default Magento Luma theme. The theme developer provided a hot-fix custom solution for this issue.

The Result

Migration to Magento 2 results in:
  • improved site speed
  • reduced TTFB (time to first byte) – *the store also changed the former server hosting to a more optimized cloud solution
  • overall improved website performance for desktop and mobile
  • better, more advanced backend functionality
  • improved and faster checkout process
Read More »