On one hand, you “crave” improved site performance, improved checkout process, improved scalability and all the other improvements that Magento 2 “seduces” you with. On the other hand, just the thought of risking to compromise your data, your Magento extensions or the various customizations in your store simply... paralyzes you. It's obvious: you need a bulletproof, actionable and 101% safe plan for migrating from Magento 1 to Magento 2...
A step-by-step guide to:
- reduce some of the intimidating complexity of the process
- secure each one of its phases (from the preparation phase to the data migration phase... all the way to deployment)
- streamline it
Well, here it is: the 7-step migration roadmap that you need to safely and efficiently structure your Magento 2 migration process.
1. Evaluate Your Current Implementation and Try to Estimate Your Migration Effort
The first step to take in the preliminary part of your plan is to review your Magento 1 implementation.
- PHP: 7.0.13+ or 7.1.x
- +2G of Ram
- MariaDB 10.0,10.1,10.2 or Percona 5.7 or MySQL: 5.6, 5.7
- PHP extensions: soap, curl, mcrypt, gd, iconv, PDO/MySQL, openssl, intl, ctype, bc-math, libxml etc.
Next, take some time to analyze your current e-commerce store's provided user experience, extensions, configurations...
Then, reflect on the following key questions:
- How many storefronts and domains are included in your Magento 1 architecture? Needless to add that moving a highly customized multi-site infrastructure is going to be a lot more challenging than migrating a single store...
- How large is your current store (run an inventory of all your products, users, attributes, orders, categories)?
- How bulky is your ecosystem of third-party extensions, Magento core customizations, custom themes, various integrations (CRM, ERPs)?
It's only after you've performed an in-depth analysis of your current online store (or multi-store) that you can roughly estimate the migration complexity.
Word of caution: remember to backup your Magento 1 online store (secure your folders, database, and files) and to always migrate data from your cloned database instead of transferring it straight from your live online store...
2. Make an Inventory of Your Extensions: Search for Similar Versions in Magento 2
And this step makes a perfect opportunity to... declutter:
Run an inventory of all the extensions on your current e-store and decide which ones are to be kept and which of them you should let go of...
Next, divide your “pile” of extensions into 3 categories:
- Magento 1 extensions with corresponding versions in Magento 2
- Magento 1 extensions with third-party alternatives instead
- Magento 1 extensions that were custom-built for your current store, that you now need to rebuild
Run a 1:1 analysis and identify the extensions, themes and custom code on your e-commerce store that are compatible with Magento 2...
3. Migrating from Magento 1 to Magento 2: Choose the Right Migration Tool
In this respect, the Magento 2 data migration tool is a highly reputed one. It will greatly streamline the whole process, but do keep in mind that:
- you'll still need to write custom code to seamlessly merge data into the new platform
- you'll need to adjust your custom code to fit in; for instance, tables and columns aren't considered standard dataset in Magento 2
Note: now it's the best time to reconsider your third-party extensions. Do they really compensate for all those data entries and product parameters that they injected into your Magento 1 store?
If you still consider them relevant and valuable enough to be moved over to your new Magento 2 store, you might want to consider the Magento 1 to Magento 2 code migration tool for this.
4. Migrate Your Theme
And this will be possible only if:
- your current Magento 1 theme is compatible with Magento 2
- there is a version of your current theme available in Magento 2
If not, if you've been running your e-commerce website on a custom theme, let's say, then you can either:
- create a whole new theme from the ground up
- purchase a Magento 2 theme
Note: this is also that step of your “migrating from Magento 1 to Magento 2” roadmap where you integrate your new online store with your key corporate systems.
5. Migrate Your Extensions
As already mentioned, there are 3 possible actions that you can take regarding your current load of extensions:
- check whether they have Magento 2 counterparts
- if so, incorporate those Magento 2 versions into your new store
- if not, integrate some brand new extensions, that provide the same or similar functionality
6. Migrate Your Code Customizations
Rely on the Code Migration toolkit for this and let it do all the heavy lifting that the code migration process involves.
Word of caution: after you've let it perform its function, remember to go back and focus on all those files that need manual editing.
7. Migrate Your Data
As already mentioned, the Magento 2 Data Migration Tool is one of your most reliable “allies” in migrating from Magento 1 to Magento 2.
And I'm referring here to the orders stored in your store, products, settings and configurations, categories and so on...
How do you use it?
It's no more than a 5-step process:
- Use Composer to install the tool
- Enter your authentication keys (Magento Marketplace > Sign in > Click on My Access Keys) or generate a new pair
- configure your tool
- migrate your Magento 1 store's settings (system/store configurations, shipping, tax settings...)
- Migrate your data by entering this command: php bin/magento migration:data --reset <path to your config.xml>
Next, it's testing time: test, test, test, then... test some more! Check whether your new Magento 2 store works properly.
Make sure you run your performance analysis and optimization process on real data. This way, you can check whether the actual Magento 2 store is capable to withstand real-life loads of data...
Also, do keep in mind to update the existing data with the newly added one before deploying your Magento 2 store. And that because at this point you might end up with identical data: identical products, users, categories...
Once you've fixed this issue, you only need to pick the right time — preferably not the “peak traffic” hours on your website — to launch it...