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.
Inhaltsverzeichnis
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:
Feature | MSI | MOM |
---|---|---|
Inventory Management | ||
Multiple locations | Ja | Ja |
Segmented inventory | Auf Roadmap | |
Future inventory | Auf Roadmap | |
Multiple inventory disposition | Auf Roadmap | |
Safety stock management | Ja | Ja |
Export of physical inventory | Ja | Ja |
Export of aggregated inventory | Ja | |
Simple stock aggregate calculation | Ja | Ja |
Advanced stock aggregate features | Ja | Ja |
Sourcing | ||
Real-time sourcing | Ja | Ja |
Smart batch optimization | Ja | |
Location prioritization | Ja | Ja |
Geo-proximity prioritization | Ja | Ja |
Limit number of shipments | Ja | |
Earliest delivery date calculation | Auf Roadmap | |
Sourcing simulation | Ja | |
Exceptions | ||
Manual re-sourcing | Ja | Ja |
Automatic re-sourcing | Ja | |
Automatic cancellation | Ja | |
Store execution | Ja | |
Post-sales | Ja |
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).
Wichtige Links
Häufige Fragen und Antworten
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.
Ja, man kann das Multi Source Inventory (MSI) Feature kostenlos in Magento Open Source und Adobe Commerce verwenden.
Nein. MSI ist eine Gruppe von Modulen, die standardmäßig mit dem normalen Magento 2 ausgeliefert wird.
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.
Natürlich. Wenn Sie nur einen Lagerstand im Webshop haben, müssen Sie nichts weiter tun. Das ist die Standard-Einstellung.
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.
Sie können für jedes Produkt einen Lagerstand („Stock“) pro Website definieren. Jeder Stock kann sich aus einem oder mehreren Lagern („Sources“) zusammensetzen.
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“).
Ja, das ist möglich. Sie finden im Web auch einige (kostenpflichtige) Extensions dafür.
Ja, seit Magento 2.3.1.
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„).