Multi Stock Inventory (MSI) und Lagerverwaltung in Magento 2

Mit dem Multi Stock Inventory (MSI) bietet Magento seit Magento 2.3 umfangreiche Funktionalitäten für die Lagerstands-Verwaltung in Magento 2. In Magento 1 und älteren Magento 2 Versionen gab es zuvor nur einen globalen Lagerstand.

Bezeichnungen für das „alte“ und „neue“ Lagerstands-Feature

Beginnt man sich mit dem Thema zu beschäftigen, dann ist die Vielfalt an herumschwirrenden Namen verwirrend. Wann ist denn nun im Magento-Sprachgebrauch vom alten Feature (dem einen Lagerstand) und wann vom neuen Feature (multiple Lagerstände sind möglich) die Rede?

Ein paar Bezeichnungen, die ich im Laufe der Zeite gehört habe:

Altes Feature:

  • Catalog Inventory
  • CatalogInventory (als Modul-Name im Code)
  • Lagerstand

Neues Feature:

  • MSI
  • Multi Stock Inventory
  • Inventory Management (zunehmend seit Magento 2.3.1)
  • Inventory (zunehmend seit Magento 2.3.2)
  • InventoryCatalog (als Modul-Name im Code)
  • Multiple Lager
  • Multi-Lager

Wie ich das auf dieser Website handhabe:

Wann immer ich in Magento 2 vom Lagerstands-Feature spreche, meine ich das neue Feature, MSI. Wenn nicht, dann erwähne ich das explizit als alte Lagerstands-Funktionalität.

Besonderheiten von MSI

Einerseits ist die Entstehungsgeschichte eine besondere, weil es das erste große Feature war, welches das Community Engineering Team (CET) gemeinsam mit der Community entwickelt hat. Es umfasst mehr als zehn Prozent des gesamten PHP-Codes von Magento 2.

Andererseits wird es als extra Projekt mit eigenem Release-Zyklus gehandhabt. Das heißt, MSI wird zwar gemeinsam mit Magento 2 ausgeliefert, man kann es aber auch unabhängig davon updaten.

Haupt-Features von MSI

Das Multi Source Inventory bietet diese Features:

  • Multiple Lagerstände in einer Magento-Installation
  • Ein globaler Lagerstand oder Lagerstände auf Website-Ebene
  • Verschiedene Sourcing-Algorithmen, um anhand der Anforderungen des Händlers zu entscheiden, aus welchen Lagern Produkte für eine Bestellung gezogen werden sollen (zum Beispiel distanzbasiert oder anhand der Priorität des Lagers)
  • Hohe Bestellvolumen / viele gleichzeitige Bestellungen aufgrund der eingesetzten Code-Design-Patterns

MSI und Order Management System (OMS)

Für richtig große und komplexe Shops bietet Magento zusätzlich eine externe Fulfillment-Lösung, das Magento Order Management System (OMS).

Anforderungs-Profile MSI und OMS

Laut einer Präsentation bei der Magento Live Australia im Februar 2019 sind das die typischen Händler:innen-Profile für MSI und OMS:

MSI (Multi Source Inventory)

  • Kleine Anzahl von Locations (als Faustregel)
  • Einfacher prioritäts-basierter Versand reicht
  • Händler:in ist bereit, den Sourcing-Algorithmus laut eigenen Bedürfnissen anzupassen

OMS (Order Management System)

  • Große Anzahl von Locations, sowohl an Filialen als auch Distributionszentren
  • Multiple Vertriebskanäle und Bedarf für komplexe Regeln
  • Lagerstände pro Location sollen im Shop angezeigt werden
  • Bietet „Buy Online, Pick Up in Store“ an
  • Benötigt fortgeschrittene Features wie eine Sourcing-Simulation.

Anmerkung von mir: Features wie „Lagerstände pro Location sollen im Shop angezeigt werden“ und „Buy Online, Pick Up in Store“ können Programmierer:innen auch für MSI implementieren.

Unterschiede MSI und OMS

Ich habe im Web keinen offiziellen Vergleich zwischen MSI und OMS gefunden. Daher habe ich diesen Screenshot von der Konferenz Magento Live Australia im Februar 2019 abgetippt:

FeatureMSIMOM
Inventory Management
Multiple locationsJaJa
Segmented inventoryAuf Roadmap
Future inventoryAuf Roadmap
Multiple inventory dispositionAuf Roadmap
Safety stock managementJaJa
Export of physical inventoryJaJa
Export of aggregated inventoryJa
Simple stock aggregate calculationJaJa
Advanced stock aggregate featuresJaJa
Sourcing
Real-time sourcingJaJa
Smart batch optimizationJa
Location prioritizationJaJa
Geo-proximity prioritizationJaJa
Limit number of shipmentsJa
Earliest delivery date calculationAuf Roadmap
Sourcing simulationJa
Exceptions
Manual re-sourcingJaJa
Automatic re-sourcingJa
Automatic cancellationJa
Store executionJa
Post-salesJa

Achtung beim Ändern von SKUs existierender Produkte

Len warnt auf Twitter: Man muss aufpassen, wenn man die SKU (Artikelnummer) eines existierenden Produkts ändert und zugleich MSI verwendet.

Der Grund ist, dass MSI – um die Lagerverwaltung vom restlichen Magento zu entkoppeln – in der Datenbank nicht die unveränderlichen, automatisch vergebenen Produkt-IDs verwendet, sondern die SKU. Ändert man nun beim Produkt die SKU, dann wird das standardmäßig nicht in MSI berücksichtigt, und man bekommt Probleme mit der richtigen Verbuchung des Lagerstands (genauer gesagt: der „Reservierungen“).

Um dieses Problem zu reduzieren bzw. dem vorzubeugen, muss man das Setting „Synchronize with Catalog“ aktivieren (siehe Handbuch).

Häufige Fragen und Antworten

Was ist das „Multi Source Inventory“ oder „MSI“ in Magento 2?

Ein neues Feature ab Magento 2.3, mit dem in Magento einer oder mehrere Lagerstände verwaltet werden können. Dadurch kann man Versandkosten optimieren und z.B. für unterschiedliche Länder unterschiedliche Beständen anbieten.

Ist das MSI Feature in Magento 2 kostenlos?

Ja, man kann das Multi Source Inventory (MSI) Feature kostenlos in Magento Open Source und Adobe Commerce verwenden.

Ist Magento 2 MSI eine eigene Magento-2-Version?

Nein. MSI ist eine Gruppe von Modulen, die standardmäßig mit dem normalen Magento 2 ausgeliefert wird.

Was muss ich tun, um von der alten Magento 2 Lagerstands-Funktionalität zu MSI upzugraden?

Wenn Sie Ihren Shop von Magento 2.2 zu Magento 2.3 upgraden, macht Magento das automatisch. Sie müssen nichts dafür tun und starten automatisch mit einer „Source“ und einem „Stock“. Das entspricht einem globalen Lagerstand.

Kann man mit Magento 2 MSI auch einen einzelnen Lagerstand abbilden?

Natürlich. Wenn Sie nur einen Lagerstand im Webshop haben, müssen Sie nichts weiter tun. Das ist die Standard-Einstellung.

Kann ich später weitere Lagerstände in Magento 2 MSI hinzufügen oder entfernen?

Ja, das können Sie jederzeit. Die einzige Regel: der Standard-Lagerstand kann nie gelöscht werden. Sie können Magento 2 aber so konfigurieren, dass dieser nicht verwendet wird.

Auf welcher Ebene kann man Lagerstände in Magento 2 MIT abbilden?

Sie können für jedes Produkt einen Lagerstand („Stock“) pro Website definieren. Jeder Stock kann sich aus einem oder mehreren Lagern („Sources“) zusammensetzen.

Welche Sourcing-Algorithmen bietet Magento 2 MSI?

In Magento 2.3 gibt es zwei Algorithmen zur Auswahl, wie Produkte aus verschiedenen Lagern gezogen werden. Der erste Algorithmus leert Lager nach der von Ihnen vorgegebenen Priorisierung („Source Priority Algorithm“). Der zweite Algorithmus arbeitet distanzbasiert und kann entweder die zeitlich schnellste oder in Kilometern gerechnet kürzeste Route ausrechnen, zum Beispiel anhand von Google-Maps-Daten („Distance Priority Algorithm“).

Können eigene Sourcing-Algorithmen für Magento 2 MSI programmiert werden?

Ja, das ist möglich. Sie finden im Web auch einige (kostenpflichtige) Extensions dafür.

Ist Magento 2 MSI mit Elasticsearch kompatibel?

Ja, seit Magento 2.3.1.

Kann man dem Default Stock mehrere Source hinzufügen?

Nein, momentan ist das nicht möglich (Stand: Magento 2.4.1). Laut Roadmap soll das implementiert werden (Story: „Add an ability to assign additional sources to Default Stock„).