Migrating from Magento 1 to Magento 2 – a guide

Got a Magento 1 shop and are migrating to Magento 2 (or thinking about it) and want to make sure you got everything covered? Look no further, I got you.
Even if you don’t have a Magento 1 shop, a lot of the things mentioned below still applies.

Get an overview

First step is getting an overview of your current shop. You can’t migrate what you don’t know you have. Document all the things and remember to write down any questions that pops up. It’s easy to get overwhelmed and forget things in this phase. You’ll thank yourself later.

Modules

Modules plays a vital part in any Magento shop. They provide you with custom functionality, new features, integrations and a lot more. Missing an essential module can have a huge impact on your site, so remember to go through them all.

I have listed the core questions you need to go through:

  • Are all installed modules identified (not counting core Magento modules)?
    • Any custom modules made just for your webshop?
    • Any modules with customization?
  • Does there exist an equivalent Magento 2 version of your Magento 1 module?
    • Does it have the same features?
      • If not, is it a deal-breaker?
    • Does it work the same way as you’re used to?
      • If not, you might have to factor in time for training.
    • How much does the Magento 2 version cost? Please note that Magento 2 modules are often more expensive than their Magento 1 counterpart.
  • Do you have any integrations to 3rd party systems such as ERP, feeds, shipping, warehouse, etc.?
    • Are the integrations plug and play or does it require a new module / integration due to the architectural differences between Magento 1 and Magento 2?
      • How much does a new integration cost?
      • How long does it take to implement?
      • Can it do the same as your old integration?

I recommend gathering all your information in a document, where you can get an overview and information can be shared.

Data

Data is king, as the saying goes. Therefore you need to decide on the amount of data you want to migrate to your new shop (if any). I usually recommend to migrate products at a minimum, unless you have an integration to handle those. It simply takes an ungodly amount of time to create the products manually, especially if you have more than 100 products. Time you can better spend elsewhere.

At the minimum you have to decide on whether you want to migrate the following or not:

  • Products
  • Categories
  • Customers
  • Orders
  • Custom attributes (might be related to some custom functionality, so keep that in mind)
  • CMS-pages (optional, can be created manually, depending on the number of pages).

Be aware that due to how data is structured in Magento 2, some of the data is harder to migrate than others. Especially orders comes to mind, due to the internal relations between orders, customers and products. That means you can only get the basic order-information migrated, not the relations between products, customers and orders.

Magento got an official migration tool, but in my experience it only works the best if you don’t have a lot of custom attributes / data. In other words, if you got a basic shop, by all means – use the migration tool. If you got a customized shop, be prepared to spend some additional time massaging data to ensure it’s migrated properly.

Theme

Due to the architectural references between Magento 1 and Magento 2, you can’t migrate your theme and expect it to work. The differences are simply too big code-wise.

What does this mean for you?

It means you have to either pony up for a new Magento 2 theme by buying either a pre-made theme or getting a custom-made one.
If you’re using a pre-made theme such as Porto, you can find a Magento 2 version of it. However that is not a possibility for all themes, as the developer might now have made one for various reasons. In such situations you either have to find a new theme or make one from scratch.

I personally recommend custom-made themes – they perform better, are simpler to maintain, easier to make changes to and doesn’t come with a ton of extra modules adding unneeded complexity to your shop.

Now is also the time to decide whether you want the same design as you already have, or if you are ready to switch things up. Do you keep it as it is, do a facelift or a complete makeover?

Miscellaneous

Besides the stuff mentioned above, there are some other parts that are important to remember.

SEO

This is a big one. If you’re not aware, your site can take a big hit which can take a long time to recover from. You don’t want that.
Make sure you know which pages drive your traffic and focus on those first. That means creating new CMS-pages and making sure they have the same URL-key. That also goes for your categories. Surprisingly, some people forget to move their landing-pages and then wonder why they lost the majority of their traffic.

Make sure you spend enough time on this point, especially if you got a large shop with lots of visitors.

Redirects

Speaking of SEO, your redirects are very important. They can either be handled by Magento itself or in your .htaccess file. Remember to migrate those too, otherwise you risk your visitors end up the wrong places if they follow old or dead links.

Emails

This is another one that is easy to forget. If you’re using Magento’s standard email functionality, you have to design your emails again and make sure they are sent from the right domain. If you’re using a 3rd party to handle your email, you have to make sure the integration connects to the new shop.

Test your emails with mail tester to ensure they don’t go directly to spam.

Robots.txt

Remember your robots.txt. It’s vital for bots, as they rely on it to know which parts of your site to crawl. Without a proper robots.txt, an over-eager bot can slow your site to a halt. I’ve seen it happen numerous times and it’s something that can be easily avoided.

Sitemap

This one is also important for the bots out there, as it tells them which pages to crawl on your site and how important they are. Don’t forget it, otherwise you risk the bots missing out parts of your site as they crawl it.

Decide on an approach

Now that you have an overview, it’s time do decide on what approach you are going to take. It’s important to remember that your new Magento 2 shop doesn’t have to be an exact 1:1 copy of your existing website.

There are basically two ways of doing it. A “lift and shift” where you migrate your site as it is with the same design and functionality (broadly speaking) or you build a new shop from scratch, focusing on the essentials and building it out from there.

The first approach is by far the fastest, though it won’t solve any underlying issues with your shop, nor will you take fully advantage of the new features Magento 2 has to offer.
Building a new shop takes longer, but it also gives you an opportunity to rethink your business model, cut off any dead weight and get that new sexy integration you always had been thinking off.

Which approach is the right for me?

Selecting the right approach for a Magento 2 migration depends on a lot of factors. I have listed some of them below:

  • Number of modules installed.
  • Custom functionality and / or attributes.
  • Amount of data to be migrated.
  • Number of integrations to 3rd party systems.
  • Overall size / complexity of shop.
  • Time-frame.
  • Economy.

If you have done your due diligence, you should by now have an overview of your complete setup, which makes this part far easier.

For simple and / or small shops where you don’t want to change anything, the “shift and lift” approach is the way to go. These shops typically don’t have a lot of modules installed and limited custom functionality, which makes it easier to get up and running. However you lose an opportunity to fix any underlying issues from the beginning and might end up paying your developers double for the same work (i.e. implementing the original design and then deciding a couple of months later that you want a new design after all).

If you have a highly customized shop with lots of modules and integrations, you can do a lift and ship, but it will be harder and you have to factor in time spent on unforeseen issues – provided your shop is well-maintained. If it’s a huge clusterfuck, it is often easier (read: cheaper) to start from scratch, which will also save you (and your developers) a lot of headaches and frustrations.

If you want to make several changes to your shop (design is a good example), de-clutter and not drag any technical debt over to your new shop, then I recommend building it from the bottom and up. It is the easiest and fastest way to get what you want, while avoiding any technical pitfalls and you won’t have that stupid integration holding you back.

Planning

Don’t just jump into it and make up plans as you go. That is a recipe for disaster. Talk with your developers (they are the ones who have to do the work after all) and come up with a plan together for your migration.

A plan typically needs to cover the following:

  • Setting up server-environments (development, staging and production)
  • Backup of Magento 1 shop.
  • Installing Magento 2.
  • Configuring the basic settings (currency, timezone, VAT, etc.)
  • Installing 3rd party modules and configuring those (including any integrations).
  • Implementing the theme.
  • Migrating data.
  • Testing.
  • Launch.
  • Celebration – pop the champagne!

Remember to account for any risks associated with the project and unforeseen issues that might crop up. What assumptions are you working with? How confident are your developers on the various things?

Get the plan in writing and have it signed off by both yourself and the development team. That way responsibility is shared and you both acknowledge the plan laid out.

Keep in mind, that even the best plan might change. Be flexible, it’s not the end of the world if you decide to change the order of something or include / remove things from scope. Just adjust accordingly.

Development

Now that you have decided on an approach, it is time to start developing your new Magento 2 shop.

For that I recommend you set up the following (or rather, let your developers do it):

  • Development environment.
  • Staging environment.
  • Production environment.
  • Version control system.

Your developers work on the development environment. Changes are pushed to the staging environment, where you can test and verify if it works as intended. If everything works, then it is pushed to production. If not, it goes back to development again.
That way you follow best practice and greatly minimizes the chances of breaking anything in production. Sure, things take a little longer, but you get so much more peace of mind (both you and your developers), knowing that things can be easily rolled back with the version control system if something goes wrong.
If your developers are worth their salt, they should already be doing this and it shouldn’t come as a surprise to them.

Oh, and remember to take a backup of your current Magento 1 shop. But you’re already doing that, right?

Testing

Make sure you set aside enough time for testing. Test your shop thoroughly and then test it some more. Seriously, the more time you spend on this, the better.

Here are some typical test-cases to get you started:

  • Create a product and have it show up on the front-end. Does it have the right information, price and pictures?
  • Create various price rules and see if they work as expected.
  • The entire order-flow, from putting a product in your basket, buying it and handling the entire order (I’m constantly surprised by how many that forgets this and then discover they can’t place an order after the shop have gone live).
  • Try all the shipping and payment methods – do they work as expected?
  • Do you receive all the various emails (order, invoice, shipping, etc.) and do they look as expected? Are they sent from the right email-address?
  • Test all your integrations, especially those that handle products and orders.

Take a structured approach to this, outlining the various testcases and the results from them. Are you able to reproduce the same error consistently or does it only occur when it’s full-moon on a Thursday?
The more information you have, the better. Your developers can’t work miracles if you just send them an email saying “it doesn’t work”. Describe the steps you went through, what you expected as a result and which result you got instead. All the better if you can provide pictures of the error when it occurred. Your developers will thank you. Seriously.

3, 2, 1… Liftoff

Are you done testing?

Really?

Alright then.

Then it’s time for launching your new shop.

Typically it goes something like this:

  • The production environment is up and running, properly configured and purged of any test / dummy data.
  • Redirects, robot.txt and sitemap are set up.
  • Migrated data is up to date.
  • TTL on the DNS have been lowered to the lowest value possible (important!).
  • DNS is changed to the new production server.
  • As soon as DNS is changed, you place a test-order to ensure everything works as intended.
  • Test other vital integrations.
  • It’s champagne time, baby.

Typically your develops will monitor the shop closely for some time, to ensure it runs smoothly. If you have done your job testing it thoroughly, there shouldn’t be any nasty surprises hiding.

Congratulations, you are now done with your Magento 2 migration.

Feeling overwhelmed?

I know it’s a lot of stuff to remember. If you don’t feel confident doing it all by yourself, I’m more than happy to help you. Just follow the link, shoot me an email and I will get in touch with you.