Magento – Kunden Konten von Magento 1 in Magento 2 migrieren und Passwort übernehmen

Für ein Projekt wollten wir die Kundenkonten aus einem Magento 1 Shop in einen neuen Magento 2 (2.4.2) Shop importieren. Bei beiden Shops sind jeweils zwei Webseiten angelegt und somit stammen die Benutzerdaten auch von zwei Webseiten. Im neuen Shop sollen sie also auch wieder auf die beiden Webseiten verteilt werden.

Im ersten Schritt wurden über die normale Export-Funktion von Magento 1 alle Kundenkonten exportiert. Hier sehen wir in der Export-Datei bereits die Passwort-Hashes.

Im zweiten Schritt exportieren wir die im neuen Shop bereits testweise angelegten Benutzerkonten (jeweils mind. eines pro Webseite), um die korrekten Feldbezeichnungen sowie Werte für Webseite, Storeview etc. zu sehen – also die Werte die Magento 2 beim Import erwartet.

Ich habe nun die CSV-Datei, die ich als Export durch Magento 2 erhalten habe in Open Office Calc (oder Excel) geöffnet. In einem weiteren Fenster die Export-Datei aus Magento 1. Nun habe ich den Magento 2-Export noch ein wenig angepasst, denn es werden nicht alle Felder bzw. Spalten benötigt. Bei mir waren dann noch folgende Spalten übrig:

email,_website,_store,created_in,disable_auto_group_change,firstname,group_id,lastname,password_hash,store_id,taxvat,website_id

Nun habe ich die Werte aus der M1-Datei spaltenweise in die M2-Datei kopiert. Als alle Spalten gefüllt waren, habe ich die Datei als neue CSV-Datei für den Import in M2 abgespeichert.

Wichtig – generell immer auf das Format UTF-8 achten! Der Import in M2 funktionierte dann problemlos. Die Konten waren alle angelegt und sahen korrekt aus. Versuchte man sich nun aber im Frontend mit Benutzername / E-Mail und Passwort anzumelden, erhielt man immer den Hinweis

The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later.

Ärgerlich! Es hätte doch so einfach sein können.

Einige Suchanfragen bei Google später stellte sich heraus, dass beim Wechsel von Magento 1 auf Magento 2 die Verschlüsselung der Passwörter vom MD5- auf den SHA256-Standard verändert wurde. Daher sind die Passwort-Hashes im Export aus M1 auch deutlich kürzer als die von M2.

Entgegen einzelner Stellen im Netz bringt es NICHTS durch den SSH-Befehl

php -f bin/magento customer:hash:upgrade

die importierten MD5 verschlüsselten Passwörter in SHA256 zu ändern, da Magento 2 zu MD5 abwärtskompatibel ist. Schaden kann es aber auch nicht – nur wird anschließend der Login weiterhin nicht möglich sein.

Oben SHA256 unten MD5

Es gibt nun verschiedene Anbieter, die eine Software oder Extension anbieten, um den Transfer der Kundendaten vorzunehmen. Auch gibt es Nutzer, die von Anpassungen am Code der Magento 2 – Installation schreiben. Jedoch fand ich eine Randnotiz, die zu unglaublich war als dass ich sie nicht ausprobieren musste. Der Nutzer “Jack” schreibt auf Stackexchange (Quelle), dass er einfach ein “:0” an die MD5-Hashes angehängt hat….

Nach Anhängen von “:0” und Import aber vor erstem Einloggen.
Nach dem ersten Einloggen.

Es ist unglaublich aber wahr – man muss nur “:0″ an jeden MD5-Passwort-Hash anhängen und der Login in den Magento 2 – Shop funktioniert mit dem alten Passwort. Kleiner Tipp für alle Excel- / Calc-Anfänger: Eine Hilfsspalte mit der Formel =I2&”:0″ wirkt Wunder (“I2” steht natürlich für das Feld mit dem MD5-Hash). Man zieht die Formel dann einfach nach unten durch. Anschließend Spalte kopieren und Werte in die Hash-Spalte einfügen. Die Hilfsspalte kann dann wieder weg.

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

Leave a Reply

Your email address will not be published. Required fields are marked *