Mit dem Migrations-Plugin bietet Shopware diverse Möglichkeiten einen bereits bestehenden Shop eines Fremdherstellers auf Basis von Shopware 4 bzw. 5 zu migrieren.
Das Migrations-Whitepaper mit hilfreichen Tipps & Informationen findest Du übrigens hier: Migration Whitepaper
Folgende Shopsysteme werden zurzeit unterstützt:
Durch unsere flexible Import-Schnittstelle kannst Du jederzeit nicht migrierbare Daten bequem nachpflegen.
Du setzt ein Shopsystem ein, was noch nicht über unser Migration-Tool unterstützt wird, dann findest Du über unsere Shopware-Partner kompetente Unterstützung bei Deiner Shop-Migration zu Shopware.
Hier ein Übersicht über die migrierbaren Felder:
Magento | OXID | VEYTON | Gambio | XTC/XTM | Prestashop | WooCommerce | |
---|---|---|---|---|---|---|---|
Shopeigenschaften | |||||||
Bestellstatus | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Zahlungsarten | Ja | Ja | Ja | Ja | Ja | Ja | Nein** |
Steuersätze | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Kategoriestruktur | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Bewertungen | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Hersteller | Ja | Ja | Ja | Ja | Ja | Ja | Nein** |
Kundendaten | |||||||
Adressdaten | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Kunden-Passwörter | Ja | Ja | Ja | Ja | Ja | Ja | |
Kunden-Nummern | Ja | Ja | Ja | Ja | Ja | Ja | Nein** |
Bestellungen | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Kundengruppen | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Artikel | |||||||
Artikel-Nummern | Ja | Ja | Ja | Ja | Ja | Ja | |
Artikelstammdaten | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
eindimensionale Varianten | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
mehrdimensionale Varianten | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Eigenschaften | Ja | Ja | Nein* | Ja | Ja | Ja | Ja |
Artikelbilder | Ja*** | Ja*** | Ja*** | Ja*** | Ja*** | Ja*** | Ja*** |
Lagerbestand | Ja | Ja | Ja | Ja | Ja | Ja | |
Kundengruppen-Preise | Ja | Ja | Ja | Ja | Ja | Ja | Nein** |
Staffelpreise | Ja | Ja | Ja | Ja | Ja | Ja | Nein** |
Suchbegriffe | Ja | Ja | Ja | Ja | Ja | Ja |
* wird bei der aktuellen Version des Migration-Plugin nur bedingt unterstützt
** Diese Daten liegen im Quellsystem nicht vor, können daher auch nicht importiert werden *** nach der Migration müssen im Medienmanager im Backend von Shopware die Thumbnails neu generiert werden
Benutze immer die aktuelle Version des Migration-Plugin. Die aktuelle Version des Plugin kannst Du hier downloaden.
Diese Erweiterung findest Du in unserem Shopware Store, der einfachste Weg, ein bestimmtes Plugin zu finden, ist die Suchleiste.
Nachdem Du den Bestellvorgang abgeschlossen hast, logge Dich in das Backend Deines Shops ein. Jetzt gehst du zu Konfiguration > Plugin-Manager > Meine Einkäufe. Du musst dich einloggen und auf die Schaltfläche Aktualisieren klicken. Die neue Erweiterung ist nun aufgelistet und kann installiert werden. Nach der Installation der Erweiterung gehst Du auf den Menüpunkt Installiert und aktualisierst die Übersicht. Jetzt kannst Du die Erweiterung aktivieren. Abschließend löscht Du unter Einstellungen > Cache/Performance > Shop-Cache löschen den Cache und aktualisierst das Backend.
Bevor Du mit der Migration startest, solltest Du immer ein aktuelles File- und Datenbankbackup Deiner Shopware 5-Installation anlegen.
Während des Migrations-Vorgangs werden Dir die zu verknüpfenden Eigenschaften Deines Shops angezeigt. Hierbei wird zwischen Mapping Erfolgreich (1), Mapping Optional (2) und Mapping zwingend erforderlich (3).
Im ersten Schritt wähle vorab den zu migrierenden Shop (1) aus.
Stelle nun eine Verbindung zur mySql-Datenbank des zu migrierenden Shop her. Du benötigst hierfür zuerst den Benutzernamen (2) und das Passwort (3) für den mySql-Server.
Hinterlege nun die Adresse (4) und den Standard-Port (5) des mySql-Servers. Wenn sich die Datenbanken des zu migrierenden Servers und der Shopware 5-Installation auf dem gleichen Server befinden, so trage hier "localhost" ein. Andernfalls muss hier die abweichende Server-Adresse hinterlegt werden.
Gebe nun den Prefix der zu importierenden Datenbanktabellen (6). Wenn Du keinen abweichenden Prefix in Deinem alten Shop benutzt, kannst Du diese Einstellung auf "default" stehen lassen.
Im abschließenden Schritt kannst Du nun die zu migrierende Datenbank auswählen (7). Sofern die Zugangsdaten im oberen Teil alle fehlerfrei hinterlegt wurden, werden nun alle Tabellen des Servers ausgelesen und stehen nun zur Auswahl. Falls Dir hier keine Datenbanken zur Auswahl steht, so überprüfe die zuvor hinterlegten Zugangsdaten zum mySql-Server
Am Ende des Formulars findest Du den Button Den aktuellen Shopware-Shop zurücksetzen (8). Diese optionale Funktion ist u.U. erforderlich, da das Migrations-Plugin bestehende Kategorien oder Artikel weder aktualisiert noch ersetzt. Wurden bereits bestehende Kategorien oder Artikel gefunden, wird die Migration mit einer entsprechenden Fehlermeldung abgebrochen.
Artikel, Artikelbilder, Kundendaten, Hersteller, Bestellungen und Kategorien innerhalb von Shopware werden in diesem Schritt sofort und unwiderruflich gelöscht.
Falls Du die Zugangsdaten der Installation Deines alten Shops nicht vorliegen hast, so kannst Du diese im Administrationsbereich Deines Hostingpaketes einsehen. Alternativ besteht die Option sich dort mit dem Hoster in Verbindung zu setzen. Wenn Du lediglich den MySQL Dump Vorliegen hast, importiere die Datenbank in Deine Struktur und spreche diese dann lokal an.
Nachdem abgeschlossenen ersten Schritt, geht es im zweiten Schritt vor allem um die Übernahme wichtiger Shopeinstellungen. Durch einen Doppelklick in das Mapping-Feld öffnest Du das Dropdown-Feld mit den entsprechenden Einstellungen.
Hier hast Du die Möglichkeit, Attribute/Eigenschaften, Sprachen, Bestellstatus, Zahlungsarten oder gar Preisgruppen in Deinem neuen Shop zu importieren.
Das Magic-Mapping unterstützt Dich bei dieser Arbeit und wählt gleichlautende Shopware-Felder automatisch zu den passenden Feldern aus. Diese Vorauswahl funktioniert im gesamten Mapping. Jede Vorauswahl kann natürlich auch manuell verändert werden.
Achte beim Mappen von Preis- und Kundengruppen darauf, dass Du jede Gruppe aus dem Quellshop immer nur einmalig auf die jeweilige Gruppe von Shopware mappst. Beim mehrfachen Mapping kann es sein, dass die Shopware-Gruppen von den Gruppen aus dem Quellshop immer wieder überschrieben werden.
Im letzten Schritt der Migration kannst Du anhand der Selektierung die gewünschten Einstellungen im Rahmen der Migration auswählen.
Da beim Anlegen eines Artikels der Hersteller ein Pflichtfeld ist, musst Du hier einen Standard-Hersteller aus der Liste hinterlegen.
Im Feld "Shop-Path zu den Artikel-Bildern (z.B. http://domain.de/shop):" gib den Pfad des alten Shops an.
Das Feld "Default-Hersteller" ist nur relevant für Artikel, die aus dem anderen Shopsystem keine Zuordnung eines Herstellers besitzen! Nach Abschluss der Migration hast Du ebenso die Möglichkeit, den Hersteller für die jeweiligen Artikel zu modifizieren.
Falls die Artikel aus dem anderen Shopsystem bereits mit einem Hersteller geführt werden, so wird dieser automatisch in der Herstellerverwaltung hinzugefügt.
Das Migrations-Plugin bietet einen kleinen Debug-Modus. Dieser lässt sich in der Plugin-Konfiguration (zu finden im Plugin-Manager) des Migrations-Skriptes aktivieren (1):
Ist die Debug-Ausgabe aktiv, werden die Queries zum Auslesen der Quell-Datenbank in die Datei /files/migration.log geschrieben. Hier werden u.a. die zuletzt ausgeführten Methoden festgehalten, der ausgeführte Query und ein SQL EXPLAIN für den Query, das angibt, wie der SQL-Server den Query abgearbeitet hat (langsame filesorts oder schnelle Index-Zugriffe). Zudem wird gemessen, wie lange der Query gedauert hat.
Die Angaben sind hilfreich, um nicht optimierte Queries zu identifizieren. Beachte hierzu auch die nachfolgende Liste mit Indizes welche gesetzt werden können um die Queries zu beschleunigen.
Durch das Aktivieren der Debug-Ausgabe wird die Performance des Migrations-Skriptes negativ beeinflusst!
Für eine anständige Performance ist eine korrekte Konfiguration des Mysql-Servers erforderlich.
Aus Konsistenz-Gründen müssen die zu importierenden Daten an verschiedenen Stellen sortiert werden. Beispielsweise um zu verhindern, dass Kind-Entities vor Vater-Entities importiert werden. Das ist in aller Regel bei Kategorien der Fall, ggf. auch bei Artikeln und Preisen. Wenn es hier zu Problemen kommt, können bei Bedarf zusätzliche Indizes (s.u.) gesetzt oder die Sortiert-Buffer des SQL-Servers erhöht werden.
Die MySQL-Doku empfiehlt hier:
Für den vollständigen Daten-Import sind teilweise Joins erforderlich, für die in der Quell-Datenbank keine Indizes existieren. Diese werden nicht automatisch durch das Skript gesetzt.
Lege vorab ein Backup an, bevor Du Indizes in Deiner Quelldatenbank setzt.
Nachfolgend eine Auflistung möglicher zusätzlicher Indizes:
Oxid
Produkt-Import:
ALTER TABLE `oxarticles` ADD INDEX `oxid_oxparentid` (`OXID`, `OXPARENTID`)
Kunden-Import:
ALTER TABLE `oxobject2group` ADD INDEX `oxobjectid_oxgroupsid` (`OXOBJECTID`, `OXGROUPSID`)
Veyton
Bild-Import:
ALTER TABLE `xt_media_link` ADD INDEX ( `m_id` );
ALTER TABLE `xt_products` ADD INDEX ( `products_image` );
Produkt-Import:
ALTER TABLE `xt_products` ADD INDEX ( `products_model`)
XTC, Gambio
Import der Bestell-Details:
ALTER TABLE `orders_products_attributes` ADD INDEX ( `orders_products_id` )
Nach dem Import kann es zu abweichenden Datenbeständen kommen. Das hängt damit zusammen, dass die verschiedenen Shopsysteme unterschiedliche Mindestanforderungen an die jeweiligen Datensätze stellen. Hier einige Beispiele:
OXID eShop
Prestashop
Wenn die Kunden sich nach der Migration mit ihrem alten Password einloggen können sollen, darf das Migrationstool nicht deinstalliert werden, da es den Passwort-Encoder für die migrierten Kunden bereitstellt. Nachdem sich ein Kunde einmal eingeloggt hat, wird sein Passwort auf Shopware-Basis portiert und ist nicht mehr von dieser Einschränkung betroffen.
xtModified & xt:Commerce
Gambio bis GX
Magento
Veyton
WooCommerce
Artikel werden den falschen Kategorien zugeordnet
Falls nach der Migration die Artikel nicht den richtigen Kategorien zugeordnet werden, muss der Kategoriebaum im Performance-Modul von Shopware neu aufgebaut werden.
Pro request wird immer nur 1 Datensatz migriert
Falls pro request immer nur ein Datensatz (z.B. 1 Bestellung pro Import-Schritt) importiert wird, so liegt wahrscheinlich ein Performance-Problem seitens des Servers vor. Erhöhe die max_execution_time in den PHP-Einstellungen Deines Servers um ein vielfaches. Das Auslesen der Datensätze ist sehr langsam - und es kann sein, dass das Migrations-Plugin beim Vorbereiten der Daten schon keine Zeit mehr "übrig" hat. In diesem Fall importiert das Migrations-Plugin noch eine Bestellung und fordert dann einen neuen Request an.
Magento: SQLSTATE(HY000): General error: 1116 Too many tables; MySQL can only use 61 tables in a join
Das Problem tritt auf, wenn zu viele Magento-Attribut-Tabellen gejoint werden. Auf Grund technischer Limitierungen von MySQL steigt in disem Fall irgendwann der Server aus.
Möglicher Lösunsgansatz:
Anpassung von \Shopware_Components_Migration_Profile_Magento::getProductSelect:#
Dort werden am Anfang mit der Methode getAttributes() die zu selektierenden Attribute gejoint und dann später mit der Methode createTableSelect() an den Produkt-Query gejoint.
Den Rückgabewert der Methode getAttributes() könnte der Kunde so anpassen, dass nur benötigte Attribute geladen werden.
Alternativ werden die zu ladenden Attribute anhand folgender Kriterien identifiziert:
AND et.entity_type_code='catalog_product'
AND ea.frontend_input!=''
AND (ea.is_user_defined=1 OR ea.attribute_code IN ('visibility', 'meta_description', 'meta_title', 'url_key'))
AND ea.attribute_code NOT IN ('cost', 'manufacturer')
Würde beispielsweise Feld "frontend_input" für nicht-benötigte Attribute auf "" gesetzt, so sollten diese ebenfalls nicht selektiert werden.
XTC/Gambio: Artikel werden ohne Beschreibung migriert
Werden die Artikel ohne Beschreibung und Name migriert, hängt dies in aller Regel mit Sprachshops zusammen. Ist in Gambio/XTC der englische Sprachshop der Hauptshop, geht die Migration davon aus, dass dies auch in Shopware so konfiguriert wurde. Ist dies nicht der Fall, werden die Beschreibungstexte der Artikel nicht korrekt zugeordnet und als "Übersetzung" angelegt.
Hier gibt es im Wesentlichen zwei mögliche Lösungen:
oder:
Nach dieser Anpassung werden die Artikel korrekt zugeordnet.