Magento 2 Produkt Import
-
Neben der Steuerung von Prozessen ist ein zentraler Bestandteil von Pacemaker das Framework für den Import von Produkten. Einerseits ein Framework, andererseits eine fertige Lösung für den Import des gesamten Katalogs steht eigentlich immer der Produkt Import, immer noch sehr häufig auf Basis von CSV Dateien, im Vordergrund.
Schritte für den Produkt Import in Magento 2
Dieser Post zeigt Schritt für Schritt auf, wie Produkte in Form einer CSV Datei schnell und einfach in den Shop importiert werden können. Der Einfachheit halber verwenden wir hierfür die Magento Demodaten, die auch komplett im CSV Format über unser Github Repository heruntergeladen werden können. Dabei geht dieser Post davon aus, dass die Magento Instanz bereits entweder initial mit Demodaten installiert oder Diese aber mit bin/magento sampledata:deploy nachinstalliert wurden. Im Gegensatz zum Magento Standard Import geht Pacemaker davon aus, dass die Produktdaten im Standard CSV Format geliefert werden, Anpassungen können aber bei Bedarf über die Konfiguration vorgenommen werden.
Der Import von Produkten erfolgt in drei einfachen Schritten und stellt dabei zu jeder Zeit sicher, dass Dieser nicht mit anderen laufenden Prozessen kollidiert.
Schritt 1: Pipeline und Step konfigurieren
In Schritt 1 geht es darum den Produktimport an die aktuellen Gegebenheiten anzupassen und die CSV Dateien auf den Server zu laden. Mit aktuellen Gegebenheiten ist dabei gemeint, ob neue Produkte hinzugefügt, bestehende ersetzt oder gelöscht werden sollten. Ausserdem kann bei der Neuanlage von Produkten der zu verwendende Modus konfiguriert werden. So besteht neben dem Standardmodus zum Einen die Option beim Import auf Spaltenebene (Change-Set Detection) oder gar auf Zeilenebene (Timestamp Detection) zu prüfen, ob sich die Daten des Produktes überhaupt verändert haben und Diese nur dann in der DB zu aktualisieren. Beide beschleunigen den Import, abhängig von der Komplexität der Daten bis zum Faktor 4. Dabei setzt die Timestamp Detection voraus, dass das updated_at Datum in der CSV gesetzt und aktuell ist, was im Falle vieler PIM + ERP Systeme schlichtweg nicht möglich ist, da Diese selber keine Informationen über das letzte Änderungsdatum einer Entität mitführen.



- In der Hauptnavigation im Magento Admin den Menüpunkt Pacemaker > Import > Upload auswählen
- die Pipeline pacemaker_import_catalog auswählen um den Produkt Import zu konfigurieren
- Es erscheint ein neues Drop-Down mit dem zu konfigurierenden Step, hier den Eintrag product_import auswählen
- Wieder erscheint ein neuer Schritt, hier kann der Modus für den Import konfiguriert werden, der Wert Default kann übernommen werden
- Über die zusätzlichen Check-Boxen können Funktionen wie Artefakt- und Transaktions-Handling, Log-Level, Debug-Mode und Cache konfiguriert werden, die Standardwerte können übernommen werden
- Abschließend können die zu importierenden Dateien per Drag-n-Drop in das Upload-Bereich gezogen und der Upload durch einen Klick auf den Speichern-Button im rechten oberen Bereich abgeschlossen werden.
Step 2: Import starten (Erstellen der .OK Datei)
Den Import zu konfigurieren und die CSV Dateien mit den Produktdaten hochzuladen ist der erste Schritt. Nachdem dieser abgeschlossen wurde muss eine sogenannte .OK Datei erzeugt werden, die Pacemaker signalisiert, dass die CSV Datei vollständig auf den Server geladen wurde. Damit wird sichergestellt, dass der Import, der asynchron über eine Pipeline ausgeführt wird, nicht schon während des Upload startet. Für das Erzeugen der .OK Datei sind die folgende Schritte notwendig.



- In der Liste mit den Einträgen erscheint nun ein zusätzlicher Eintrag mit der in Schritt 1 vorgenommenen Konfiguration, wobei der Eintrag den Status Waiting hat
- Um die .OK Datei zu erzeugen reicht ein einfacher Klick auf dei OK Action. Der Eintrag hat ab diesem Zeitpunkt den Status Pending, was bedeutet, dass der Import auf die Verarbeitung durch einen Pipeline wartet
- Durch das Erstellen der .OK Datei wird Pacemaker signalisiert, dass die Pipeline, die den Importprozess ausführt, gestartet werden kann
- Ab dem Zeitpunkt, ab dem die Pipeline den Importprozess dann tatsächlich gestartet hat bekommt der Eintrag den Status Running
- Nachdem die Pipeline erfolgreich durchgelaufen ist wird der Status des des Uploads auf Success gesetzt
Schritt 3: Importprozess überwachen
Im Gegensatz zu Magento Standard und zu anderen Module wir der Importprozess asynchron über eine sogenannte Pipeline durchgeführt. Diese könnte, unterstützt durch verteilte Architektur von Pacemaker auch auf einem oder mehreren anderen Server ausgeführt werden. Dafür wird, nachdem die .OK Datei erfolgreich erzeugt wurde, automatisch eine neue Pipeline angelegt die aus mehreren Steps besteht. Diese stoppt in einem der ersten Schritte den Magento Indexer und stellt damit sicher, dass der Importprozess nicht mit dem Indexierungsprozess kollidiert, was zu einem der häufigsten Problemen langlaufender Importprozesse bei Magento gehört. Nach erfolgreichem Import, aber auch bei einem Abbruch wird der Indexer durch Pacemaker wieder aktiviert.




- Nachdem das .OK file im vorherigen Schritt erstellt wurde, in der Hauptnavigation im Magento Admin den Menüpunkt Pacemaker > Systems > Pipelines auswählen.
- In der Übersicht werden nun alle Pipelines, einschließlich der aktuell Laufenden angezeigt, dabei werden erfolgreich abgeschlossene Pipeline Steps grün, Steps die sich aktuell in der Verarbeitung befinden blau und Steps bei denen es während der Verarbeitung zu Problemen kam rot dargestellt
- Durch einen Klick auf den Pipeline Step, z. B. auf product_import wird eine Detailseite mit zusätzlichen Informationen zum jeweiligen Step geöffnet
- Im Fall des Datenimports wird die Konsolen-Ausgabe des jeweiligen Steps im Feld Log ausgegeben, sind hier Fehler aufgetreten, lässt sich schnell und einfach nachvollziehen, was das Problem war
Ergebnis
Durch den Import über die Pipelines stellt Pacemaker zu jeder Zeit sicher, dass keine anderen Prozesse wie z. B. der Indexer, mit dem Importprozess kollidieren. Der Post gezeigt zeigt dabei nur schematisch den Ablauf eines Produkt-Importes, da in der Realität, insbesondere bei größeren Systemen, niemand die Produktdaten im Magento Admin hochladen, sondern Diese vielmehr automatisiert durch ein PIM (Akeneo) oder ERP (SAP) System auf dem Server bereitgestellt und dann automatisiert durch Pacemaker verarbeitet werden.
Nachdem die Indexer, die nach dem Durchlauf des Imports wieder aktiviert werden, die importierten Produkte indiziert haben ist der Katalog im Shop wieder aktuell.