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.

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.

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.

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.