Skip to content

One inventory system for Magento

msi-core makes Multi-Source Inventory the only inventory system in Magento Open Source and Mage-OS. The Default Stock becomes a stock like any other, and the legacy cataloginventory tables stop being a second source of truth.

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.

Terminal window
composer config repositories.msi-core vcs https://github.com/jeanmarcos-dev/msi-core
composer require "jeanmarcos/msi-core:^1.0"
Full installation steps