Ein wichtiger Bestandteil der Migration von Magento 1 zu Magento 2 ist die Übernahme der Shop-Daten. Eine Möglichkeit dies zu bewerkstelligen ist das offizielle Daten-Migrations-Tool von Magento.
Dieser Artikel ist Teil der Serie „Migration von Magento 1 auf Magento 2„.
Wichtig zu wissen
Ich habe den Artikel ursprünglich im Oktober 2016 geschrieben. Die Inhalte sind aber auch 2020 größtenteils gültig. Falls Sie eine Agentur suchen, die Ihnen wegen des „End of Life“ von Magento 1 beim Relaunch hilft, freuen wir von LIMESODA uns über Ihre Nachricht!
Inhaltsverzeichnis
- Welche Daten werden vom Migrations-Tool übertragen?
- Was wird vom Migrations-Tool nicht übertragen?
- Installation
- Befehle des Installations-Tools
- Den Umstieg von Magento 1 zu Magento 2 mit möglichst kurzer Downtime bewerkstelligen
- Daten-Migration für eigene und 3rd-Party-Extensions konfigurieren
- Einige Hinweise zur Umsetzung
- Weitere Tools für die Daten-Migration
- Hilfe bei der Migration von Magento 1 zu Magento 2 gefällig?
Welche Daten werden vom Migrations-Tool übertragen?
Folgende Daten werden in das Magento-2-Format umgeschrieben:
- Produkte
- Kategorien
- Kunden
- Bestellungen
- Rechnungen
- Lieferungen
- Gutschriften
- Basis-Konfiguration
- Wunschlisten
- Bewertungen / Rezensionen
Was wird vom Migrations-Tool nicht übertragen?
Nicht alle Daten werden migriert:
- Von den oben genannten Punkten (Produkte, Kategorien, …) werden vereinzelte Datenfelder nicht übertragen, z.B. bei Produkten. Hier ist eine genaue Überprüfung nötig, ob alles wie erwartet übertragen wird. Der Issue-Tracker verrät mögliche Probleme.
- XML-Layout-Updates, die bei Produkt- oder Kategorieseiten hinterlegt sind und mit denen Layout-Anpassungen spezifisch für das Proukt / die Kategorie vorgenommen werden.
- Zugangsdaten für die Web-API
- Admin-Nutzer und -Privilegien
- Medien-Dateien
- Daten von 3rd-Party-Extensions und eigenen Erweiterungen
Installation
Die Installation des Tools ist einfach. Die einzige Anforderung die etwas Aufwand bedeutet ist, dass ein Magento-2-Shop aufgesetzt sein muss. Eine lauffähige Magento-1-Installation benötigt man hingegen nicht.
Im ersten Schritt fügen wir das Code-Repository für das Migrations-Tool in der composer.json-Datei des Projekts hinzu:
composer config repositories.data-migration-tool git https://github.com/magento/data-migration-tool
Nun installieren wir das Migrations-Tool in der Version ein, unter der unser Magento-2-Projekt läuft:
composer require magento/data-migration-tool:<version>
Nachdem das erledigt ist, nehmen wir uns die Basis-Konfiguration vor. Die Details finden Sie in der Dokumentation. Für den Anfang werden nur die Datenbank-Zugangsdaten für die Datenbanken von Magento 1 und Magento 2 benötigt.
Um die verschlüsselt abgespeicherten Daten zu übertragen geben Sie darüber hinaus in der Option „crypt_key“ den Key aus Ihrer Magento-1-Konfiguration an an. Falls Sie in Magento 1 einen Präfix für die Datenbank-Tabellen verwendet haben, definieren Sie diesen in der Option „source_prefix“.
Befehle des Installations-Tools
Für die Migration benötigt man nur drei Befehle:
php bin/magento migrate:settings /path/to/config.xml
Damit werden die Basis-Einstellungen migriert. Dabei handelt es sich um die Konfiguration, die in der Datenbanktabelle core_config_data gespeichert wird und zum größten Teil im Backend unter „System > Configuration“ zu finden ist.
php bin/magento migrate:data /path/to/config.xml
Dieser Befehl überträgt die restlichen Shop-Daten, also Produkte, Kategorien, Kunden, Bestellungen und viele mehr.
php bin/magento migrate:delta /path/to/config.xml
Hiermit können schließlich laufend neu entstandene Transaktions-Daten übertragen werden.
Der Clou: damit lässt sich die Migration des Shops schon starten, während der alte Shop noch online ist und auch größere Shops problemlos übertragen. Gehen wir kurz näher darauf ein.
Den Umstieg von Magento 1 zu Magento 2 mit möglichst kurzer Downtime bewerkstelligen
Das Daten-Migrations-Tool kennt also einen sogenannten Delta-Modus. Mit diesem soll die Umstellung wie folgt ablaufen und damit der Shop nur möglichst kurz nicht erreichbar sein:
- Vorbereitungen
- Der Magento-1-Shop läuft wie gewohnt und nimmt neue Kunden, Bestellungen etc. entgegen.
- Der Magento-2-Shop wird parallel dazu live gestellt, ist aber noch nicht für Kunden erreichbar.
- Beginn der Daten-Migration
- Mit den ersten zwei Befehlen des Migrations-Tools werden die Einstellungen und die bisherigen beweglichen Shop-Daten (Produkte, Kategorien, Kunden, Bestellungen etc.) übertragen. Dieser Prozess kann bei größeren Shops einige Zeit dauern.
- Der M1-Shop ist weiterhin der für die Kunden erreichbare Shops. Neue Bestellungen gehen ein.
- Überprüfung der migrierten Daten
- Der Händler und seine Dienstleister überprüfen, ob alles im M2-Shop wie gewünscht funktioniert.
- Der Delta-Modus des Migrations-Tools kann inzwischen seine Arbeit aufnehmen: in regelmäßigen Abständen werden Änderungen bei Kunden/Bestellungen/Produkten/… vom M1- in den M2-Shop übertragen.
- Umstellung auf den Magento-2-Shop
- Passt im M2-Shop alles, dann kann nun im M1-Shop die Wartungsseite vorgeschaltet werden. Die letzten Bestellungen gehen ein und die letzten Datenverarbeitungen laufen.
Jetzt erst ist der Shop vorübergehend nicht erreichbar. - Der Delta-Modus überträgt die letzten Änderungen im M1-Shop und kann deaktiviert werden.
- Nun wird das Setup so umgestellt, dass Kunden den M2-Shop erreichen können. Die automatischen Datenverarbeitungen (Cronjobs) werden aktiviert.
Nun ist der Shop auf Magento 2 online.
- Passt im M2-Shop alles, dann kann nun im M1-Shop die Wartungsseite vorgeschaltet werden. Die letzten Bestellungen gehen ein und die letzten Datenverarbeitungen laufen.
Daten-Migration für eigene und 3rd-Party-Extensions konfigurieren
Bis wir soweit sind, müssen allerdings noch einige Aufgaben erledigt werden.
Das Daten-Migrations-Tool kann in der Werkskonfiguration nur Standard-Daten welche der Magento-Standard selbst erzeugt übertragen.
Für Daten, die durch eigene Anpassungen oder Erweiterungen von Drittherstellern erzeugt werden muss für jede Datenbanktabelle und -spalte definiert werden, was damit passieren soll.
Für Tabellen muss eine Aktion definiert werden:
- Kopieren
- Ignorieren
- Umbenennen
Für die Spalten einer Tabelle muss ebenfalls definiert werden:
- Kopieren
- Ignorieren
- Umbenennen
- Daten transformieren
Für die Datentransformation können Handler definiert werden. Diese können die Daten beliebig „übersetzen“, was vom Ersetzen durch einen leeren Wert bis hin zu einer ausgeklügelten Logik alles bedeuten kann, je nachdem wie die Daten in Magento 2 benötigt werden.
Einige Hinweise zur Umsetzung
In der praktischen Auseinandersetzung mit dem Tool habe ich einige Erfahrungen gesammelt, die ich hier weitergeben möchte:
Zeitaufwand
Magento hat mit dem Tool prinzipiell einen guten Job gemacht, doch man darf nicht unterschätzen wieviel Aufwand eine Datenmigration allgemein bedeutet. Bei langjährigen Projekten kommen leicht hunderte Tabellen und Spalten zusammen, für die erst einmal das weitere Schicksal definiert und die Migration getestet werden muss. Man benötigt viele Testläufe, bis alles wie gewünscht klappt.
Außerdem kann es vereinzelt zu Bugs kommen, mit denen man sich erst einmal auseinandersetzen muss.
Insgesamt kann der Datenmigrationsaufwand bei nicht-trivialen Projekten durchaus einen Personenmonat oder mehr betragen.
Vorab Datenbereinigungen durchführen
Wenn man mit der Konfiguration der Datenmigration durchführt, sollte man mit einer Datenbereinigung starten:
- Benötige ich diese Daten überhaupt noch oder übernehme ich die Funktionalität gar nicht in die neue Version?
- Benötige ich wirklich noch diese 3 Jahre alten Daten (z.B. der zuletzt angesehenen Produkte)? Wenn nicht können alle älteren Daten entfernt werden. Je weniger Daten, desto schneller läuft die Migration ab und desto geringer ist die Gefahr, dass sich Daten mit Extremfällen oder fehlerhafte Datensätze in der Datenbank befinden um die man sich kümmern müss.
- Besteht Datenintegrität?
Ablaufautomatisierung
Der komplett Ablauf, auch schon das Testen der Migration sollte automatisiert werden. Wer jederzeit den Ablauf auf Knopfdruck neu starten kann, spart viel Zeit.
Dazu sollte z.B. direkt nach der Installation von Magento 2 ein Backup der Datenbank erstellt werden, das am Beginn eines Testlaufs erneut eingespielt wird. Das Tool erwartet eine frische Datenbank und es kann durch zuvor abgebrochene Testläufe leicht zu Dateninkonsistenzen kommen.
Skripte, welche die Migration ausführen und den Ursprungszustand wiederherstellen vereinfachen die Arbeit.
Erst Skript zum Durchlaufen bringen, dann alle Tabellen/Spalten konfigurieren
Für mich ist es wichtig, zuerst ein „stabilen“, durchlaufenden Befehl ohne Anpassungen zu haben. Dann weiß ich, dass der Prozess funktioniert.
Führt man den Befehl zum ersten Mal aus, dann erhält man viele Fehlermeldungen, für welche Tabellen/Spalten keine Definition vorhanden ist. Schritt eins ist daher, diese Meldungen zu sammeln und alle unbekannten Tabellen und Spalten im XML zu ignorieren. Läuft nun die Migration durch, kann man sich daran machen zu bestimmen was mit den Tabellen und Spalten passiert.
Konfigurationsdateien organisieren
Das Tool zeigt sich bei der Ablage der Konfigurationsdateien sehr flexibel. Man kann sie im Filesystem abspeichern, wo man will.
Was ich daher mache ist dass ich die Konfigurationsdateien in einem eigenen Repository verwalte, auch über mehrere Projekte hinweg. Der Vorteil ist, dass man sich einerseits nicht aus Versehen die eigenen Dateien überschreibt (wenn man sie innerhalb des Migrationstools abspeichert und dann das Tool updatet) und andererseits einen besseren Überblick und eine bessere Wiederverwendbarkeit von Code zwischen den Projekten erhält.
Darüber hinaus können die Konfigurationsdateien stärker aufgeteilt werden, als Magento es tut. Man könnte also z.B. für die verschiedenen Calls die Dateien weiter aufsplitten um so eine bessere Übersicht zu gewinnen.
Datenmigration für Extensions muss manuell konfiguriert werden
Ein Nachteil des Tools, welcher bisher noch existiert: angenommen Sie haben von einem Hersteller für die gleiche Extension sowohl den Magento-1- als auch den Magento-2-Code, dann reicht es nicht die Extension zu installieren und die Daten werden automatisch migriert. Sie müssen vom Hersteller die XML-Definition für die Daten dieser Extension erhalten und das XML manuell in die Konfigurationsdateien einbauen.
Delta-Migration ausführlich testen
Die Delta-Migration sollte ausführlich getestet werden um sicherzustellen, dass alles wie gewünscht funktioniert.
Weitere Tools für die Daten-Migration
Um Daten zwischen Magento 1 und Magento 2 zu migrieren, kann man auch auf andere Tools setzen, zum Beispiel:
- EcomDev/sync-magento-2-migration: ein Tool von Ivan Chepurnyi, einem der ersten Angestellten von Magento, für den Transfer von großen Datenmengen. Es migriert Produkte, Kategorien und Kundendaten und unterstützt Delta-Importe. Laut Ivan schafft es in einem Test eine Million Produkte mit 20 Stores in 45 Minuten.
- Alumio
- SyncSpider
Hilfe bei der Migration von Magento 1 zu Magento 2 gefällig?
Wir von LIMESODA arbeiten seit 2009 mit Magento und sind darauf spezialisiert, Shops auf Magento 2 zu relaunchen. Dank 40+ fix angestellten MitarbeiterInnen können wir auch größere Projekte mit mehreren Personenjahren Umfang stemmen.
Falls Sie eine Agentur suchen, die Ihren Shop auf Magento 2 bringt und laufend betreut, freuen wir uns über eine Ihre unverbindliche Nachricht!
Sehr informativ.
Ich habe die komplette Artikelserie “Migration von Magento 1 zu Magento 2” gelesen.
Da der Support bald ausläuft, beschäftigen sich natürlich immer mehr Unternehmen zu diesem Thema.
Bei kleineren Shops kann man so eine Upgrade sicherlich in wenigen Monaten schaffen, bei grösseren Installationen zirka ein Jahr. Wenn man das berücksichtigt, dann muss man natürlich frühzeitig mit so einer Umstellung anfangen.
Die in diesem Beitrag beschriebene Daten-Übertragung ist sicherlich ein wichtiger Schritt bei der Ganzen Umsetzung.
Auch hier ein paar ergänzende Informationen: http://www.yuhiro.de/magento-1-zu-magento-2-upgrade-migration-erfolgreich-durchfuehren/ (Ihren Beitrag habe dort natürlich auch erwähnt)
Vielen Danke erneut für die Artikelserie. Sehr hilfreich.
Viele Grüsse
Sascha Thattil