-
Notifications
You must be signed in to change notification settings - Fork 248
Get Started with MSI
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
- Single Source Merchant
- Multi Source Merchant
- Understanding Default Source and Default Stock
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 andScalableInventory
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 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:
- Configure global settings for your store's inventory as needed.
- Update the Default Source with information for your single inventory location. You don't need to create additional sources.
- 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.
- 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.
As your business grows, a Single Source merchant may add new stores, warehouses, drop shippers, and more. To become a Multi Source merchant:
- Add Custom Sources for each new shipment location. You will only use the Default Source for Bundle and Grouped products.
- 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.
- 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 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:
- Configure global settings for your store's inventory as needed.
- Add Customn Sources for your inventory locations: warehouses, stores, distribution centers, and drop shippers.
- Add Custom Stocks for your websites and other sales channels for one or more sources. Configure sources in priority from top-to-bottom.
- 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.
- Complete any further configurations per product for quantity thresholds, backorders, and so on to calculate accurate Salable Quantity.
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`))
)
Multi-Source Inventory developed by Magento 2 Community
- Technical Vision. Catalog Inventory
- Installation Guide
- List of Inventory APIs and their legacy analogs
- MSI Roadmap
- Known Issues in Order Lifecycle
- MSI User Guide
- 2.3 LIVE User Guide
- MSI Release Notes and Installation
- Overview
- Get Started with MSI
- MSI features and processes
- Global and Product Settings
- Configure Source Selection Algorithm
- Create Sources
- Create Stock
- Assign Inventory and Product Notifications
- Configure MSI backorders
- MSI Import and Export Product Data
- Mass Action Tool
- Shipment and Order Management
- CLI reference
- Reports and MSI
- MSI FAQs
- DevDocs Documentation
- Manage Inventory Management Modules (install/upgrade info)
- Inventory Management
- Reservations
- Inventory CLI reference
- Inventory API reference
- Inventory In-Store Pickup API reference
- Order Processing with Inventory Management
- Managing sources
- Managing stocks
- Link and unlink stocks and sources
- Manage source items
- Perform bulk actions
- Manage Low-Quantity Notifications
- Check salable quantities
- Manage source selection algorithms
- User Stories
- Support of Store Pickup for MSI
- Product list assignment per Source
- Source assignment per Product
- Stocks to Sales Channel Mapping
- Adapt Product Import/Export to support multi Sourcing
- Introduce SourceCode attribute for Source and SourceItem entities
- Assign Source Selector for Processing of Returns Credit Memo
- User Scenarios:
- Technical Designs:
- Module Structure in MSI
- When should an interface go into the Model directory and when should it go in the Api directory?
- Source and Stock Item configuration Design and DB structure
- Stock and Source Configuration design
- Open Technical Questions
- Inconsistent saving of Stock Data
- Source API
- Source WebAPI
- Sources to Sales Channels mapping
- Service Contracts MSI
- Salable Quantity Calculation and Mechanism of Reservations
- StockItem indexation
- Web API and How To cover them with Functional Testing
- Source Selection Algorithms
- Validation of Domain Entities
- PHP 7 Syntax usage for Magento contribution
- The first step towards pre generated IDs. And how this will improve your Integration tests
- The Concept of Default Source and Domain Driven Design
- Extension Point of Product Import/Export
- Source Selection Algorithm
- SourceItem Entity Extension
- Design Document for changing SerializerInterface
- Stock Management for Order Cancelation
- Admin UI
- MFTF Extension Tests
- Weekly MSI Demos
- Tutorials