Default Stock as a regular stock
Stock 1 is indexed, configured, edited and deleted like any other. Stock item configuration moves into MSI. Read more
In upstream MSI the Default Stock is not a stock: inventory_stock_1 is a MySQL view over a legacy
table, the MSI indexer skips it, and composite salability for it comes from the old CatalogInventory
indexer. Around fifty if (default stock) branches across twenty modules keep the two worlds apart,
so a defect fixed on one side stays open on the other.
msi-core removes the split. Every stock, stock 1 included, goes through the same MSI code path.
Default Stock as a regular stock
Stock 1 is indexed, configured, edited and deleted like any other. Stock item configuration moves into MSI. Read more
Source-level reservations
Reservations held per source close the cross-stock oversell gap, with locks per source and sweeps that repair a drifted ledger. Read more
Adjustment history
Every change to a source item is recorded with who made it, why and the document behind it, readable over REST and in the admin. Read more
Salable quantity by source
The product form and grid break the salable quantity down per source, so a gap can be traced to the source holding it. Read more
Storefront stock visualizer
An opt-in Availability panel on the product page: a traffic light or the exact quantity, per source and per composite type. Read more
Legacy write detection
Triggers count third-party writes that still target the frozen legacy tables, so a silent failure becomes a report. Read more
| Adobe’s MSI | msi-core | |
|---|---|---|
| Default Stock | a view over cataloginventory_stock_status |
a real index table built by MSI |
| Composite salability in stock 1 | legacy CatalogInventory indexer | MSI composite indexers |
| Stock item configuration | cataloginventory_stock_item |
inventory_stock_item_configuration |
| Reservations | per stock | per source, opt-in |
| Place-order lock | per stock, around place-order | per source, only while the reservation is written |
| Stock change history | none | every source item change |
| Upgrade | — | schema migration with downtime, no downgrade |
| Breaks | — | raw SQL reads of cataloginventory_stock_item and _stock_status |
The module names, namespaces and service contracts stay the same, so code that goes through the MSI and CatalogInventory APIs keeps working. Differences from upstream lists everything that changes.
| Magento Open Source | Mage-OS | PHP |
|---|---|---|
| 2.4.9 | 3.x | 8.3 – 8.5 |
Composer only installs msi-core on the Magento version it was built for.
composer config repositories.msi-core vcs https://github.com/jeanmarcos-dev/msi-corecomposer require "jeanmarcos/msi-core:^1.0"