Skip to content

Get Started with MSI

Ievgen Shakhsuvarov edited this page Jul 16, 2019 · 24 revisions

DEVELOP User Guide - This guide provides MSI Develop Branch/Active Development merchant information on Magento Multi Source Inventory (MSI) features and project.


With MSI installed and enabled, all of your inventory and order management through MSI.

Typically, merchants fall into two categories: Single Source and Multi Source. The number of sources determines your first getting started steps with MSI. All merchants start with a Default Stock and Default Source with options to edit the details or add more stock and sources.

The following information details the initial changes with MSI installed and how to best get started:

Changes to inventory management and MSI

The MSI project includes features, enhancements, and APIs that replace existing Magento inventory management and add new features. As a result, in the final Magento Admin User Guide and DevDocs content will describe the project features as inventory management for single and multi source merchants. For this current guide, we still use the name MSI.

When first installing or upgrading to v2.3.x and MSI features, the following initial changes occur:

  • Manage Stock is set to Yes in Stores > Settings > Configuration > Catalog > Inventory. This enables all inventory management and MSI features in Magento.
  • A Default Source and Default Stock are added to the system. Do not disable or remove the defaults.
  • All existing products are added to the Default Source. You can create custom sources and assign quantities per location.
  • Your website is associated to the Default Stock. You can create custom stocks to connect sales channels (websites) and sources (locations). If you have a multisite configuration, you will need to also assign those websites as Sales Channels to the Default Stock or a custom stock.
  • Additional configuration options add to your products and store and some existing configurations options have updated options and behaviors.
  • New APIs are added for supporting single and multi source inventory management, including product management, order processing, and shipment.
  • New features are added for order shipments to support partial and multi source shipments.
  • New options are added for import/export features for modifying SKU associated sources, inventory quantities, and stock status (in/out of stock).
  • New Mass Action options are added for modifying multiple products with one action.
  • New APIs that completely replace and deprecate APIS for CatalogInventory module in Open Source and ScalableInventory in Commerce.

You are considered a Single Source merchant/mode until you start adding custom sources and stocks to your installation. Single Source merchants can expand and start Multi-Sourcing with a few additional steps. After adding custom sources per location, you automatically become a Multi Source merchant/mode.

All MSI features are available out-of-the-box including the Source Selection Algorithm and Concurrent Checkout to match order quantities to sources and order fulfillment. Depending on your websites, stores, and merchant type, you can create additional stock and sources, assigning inventory amounts, and more.

For full details on features, see MSI features and processes.

Single Source merchant

Single source merchants have a single location that manages on-hand inventory and fulfills orders. Typically, you have multiple websites (or sales channels) selling products from the same catalog, inventory, and location.

For example, you have one website or a multisite implementation with sites for the United States, Germany, France, and Brazil all pulling products from one large warehouse. This single source manages all inventory quantities, shipments, and returns regardless of which sales channel receives the order.

To get started, we recommend:

  1. Configure global settings for your store's inventory as needed.
  2. Update the Default Source with information for your single inventory location. You don't need to create additional sources.
  3. Update the Default Stock. Ensure all of your websites are selected as sales channels. As you add new websites, Magento automatically adds them to the Default Stock. You don't need to create additional sources.
  4. Complete any further configurations per product for quantity thresholds, backorders, and so on.

Note: If you add new locations to ship products, you can add sources and stocks anytime in Magento to begin Multi Sourcing. MSI scales with your expanding business out-of-the-box.

Becoming a Multi Source merchant

As your business grows, a Single Source merchant may add new stores, warehouses, drop shippers, and more. To become a Multi Source merchant:

  1. Add Custom Sources for each new shipment location. You will only use the Default Source for Bundle and Grouped products.
  2. Add and update Custom Stocks as needed for your new sources. You can assign sources to your custom stocks. You will only use the Default Stock for Bundle and Grouped products.
  3. Update source assignments and quantities for your products. You can also use the Mass Action Tools and Magento Import-Export feature to quickly add sources and product data.

Multi Source merchant

Multi source merchants have one website or a multisite implementation managing on-hand inventory and fulfilling orders through multiple locations. This is called multi sourcing.

For example, you have a multisite implementation with sites for the United States, Germany, France, and Brazil. Your business includes a number of warehouses and stores in these countries and drop shipper services that manage all inventory stock and fulfill orders. These locations and websites become sources and stocks in Magento. New stocks for the Americas and Europe would have websites and sources assigned based on locales, countries and services.

To get started, we recommend:

  1. Configure global settings for your store's inventory as needed.
  2. Add Customn Sources for your inventory locations: warehouses, stores, distribution centers, and drop shippers.
  3. Add Custom Stocks for your websites and other sales channels for one or more sources. Configure sources in priority from top-to-bottom.
  4. Assign sources to your products. You can also use the Mass Action Tools and Magento Import-Export feature to quickly add sources and product data.
  5. Complete any further configurations per product for quantity thresholds, backorders, and so on to calculate accurate Salable Quantity.

Understanding Default Source and Default Stock

Currently in the MSI Minimal Viable Product (MVP) release, there are limitations for Default Source and Default Stock to remember when configuring and using MSI.

The following information provides merchant and technical details. This information will be updated as we continue developing MSI.

  • The MSI MVP release does not have Bundle and Grouped products support. MSI supports these product types only when assigned to Default Source/Default Stock (which are pre-created by the system at the time of MSI installation). In future MSI releases, we will expand support for composite products.
  • You cannot unassign Default Source from Default Stock.
  • You cannot disable the Default Source.
  • You cannot assign Default Source to a Custom Stock. Currently when building an index for a custom Stock, the system would not be able to handle Grouped and Bundle products that could be potentially assigned to the Default Source.
  • You cannot assign Custom Sources to Default Stock. This is due to how the index for Default Stock is implemented. In the MSI MVP release, the system re-uses the Stock Status legacy index (cataloginventory_stock_status MySQL table) built by CatalogInventory module. MSI wraps it with MySQL View to make the index contract look the same as for other Multi Stock indexes created for custom stocks:
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `inventory_stock_1` AS select distinct `legacy_stock_status`.`product_id` AS `product_id`,
         `legacy_stock_status`.`website_id` AS `website_id`,
         `legacy_stock_status`.`stock_id` AS `stock_id`,
         `legacy_stock_status`.`qty` AS `quantity`,
         `legacy_stock_status`.`stock_status` AS `is_salable`,
         `product`.`sku` AS `sku`
         from
         (
         	`cataloginventory_stock_status` `legacy_stock_status`
         	join
         	`catalog_product_entity` `product`
         	on
         	((`legacy_stock_status`.`product_id` = `product`.`entity_id`))
     	 )

MSI Documentation:

  1. Technical Vision. Catalog Inventory
  2. Installation Guide
  3. List of Inventory APIs and their legacy analogs
  4. MSI Roadmap
  5. Known Issues in Order Lifecycle
  6. MSI User Guide
  7. DevDocs Documentation
  8. User Stories
  9. User Scenarios:
  10. Technical Designs:
  11. Admin UI
  12. MFTF Extension Tests
  13. Weekly MSI Demos
  14. Tutorials
Clone this wiki locally