-
Notifications
You must be signed in to change notification settings - Fork 248
MSI FAQs
This section provides quick answers with links to additional content for MSI questions we receive.
Have a question? Ask in the MSI Slack channel or during demos and presentations. If you are interested in joining Slack, or a specific channel, send us a request at [email protected] or self signup.
For MSI 1.1.0 and earlier, we do not recommend using MSI import features or mass transfer options for bundled products. These products must be assigned to the Default Source and Default Stock, and not supported to custom source and stock.
We have stories in the MSI Roadmap to solve this issue and support bundled products for custom source and stock.
In MSI, the indexation logic is a bit tricky because we have several scenarios which should invalidate the Inventory index. These scenarios include:
- Changes in
SourceItem
(product on source) quantity. Typically occurs when a shipment is created.Magento\InventoryIndexer\Indexer\SourceItem\*
is responsible for that logic. - Changes in Source status, for example, when a merchant disables an existing source. We need to recalculate the whole stock with an assigned, disabled source.
Magento\InventoryIndexer\Indexer\Stock
is responsible for this logic. - Changes in Source to Stock linkage. Any time we introduce or drop a relationship between Source and Stock, we need to re-calculate the index for the whole Stock.
Q: Is there a reason that there is not possible to assign multiple sources to the Default Stock? Trying to use MSI to accumulate the stock QTY from all of our sources in one sellable total.
As of MSI 1.1.0 and earlier, MSI reuses the legacy inventory index (created by CatalogInventory module) for the Default Stock. We do so, because MSI index is not capable to calculate Salable Qty for Bundle products yet. That's why the Single Stock mode is Default stock wit only Default Source assigned to it. If we will assign more sources now to Default Stock - the legacy index would not be able to build aggregation then.
We have stories in the MSI Roadmap to solve this tech debt:
- Add an ability to assign additional sources to Default Stock (has dependencies on Bundle and Grouped product support)
- Make Default Source/Stock configurable on custom sources and stocks (has dependencies on Bundle and Grouped product support)
Q: I want to use a drop shipper with freight calculations for sources, but it's picking up the wrong zip code (from shipping details)?
Currently, MSI does not support freight calculations for sources. We may include support for drop shipment freight calculations at a later time. (MSI Issue)
Q: I use online carriers (UPS, FedEx, etc) for shipping methods. What Zip code will it pull from for carriers? Does MSI support SSA at checkout?
We recommend using offline shipping carriers for MSI. When using an online carrier with MSI, it will pull the address of the Default Source, not custom sources. Currently MSI is designed to not provide the system any Single/Multi stock information at the time of order.
We did keep an extension point on the level of code if you want to extend and add functionality for supporting shipping carriers on the level of Source.
Adding Source Selection Algorithm checks during checkout to support online carriers is possible with extended code. To review Inventory Management REST calls, start here. For information on SSAs, see this page.
We use natural not surrogate identities (or keys) purposefully to be microservice friendly. Using the natural ID keeps MSI from being dependent on internal ID at the data storage access layer.
Not a bug, but a feature! We have a business case for negative quantities. Drop shipping can be set up for MSI, perhaps using a specific custom source for the drop shipper. The drop shipper source can enter negative inventory quantities to alert how much of a product they need to order from manufacturers. In this scenario, we recommend enabling Backorders for this product with an Out-of-Stock Threshold of 0 for infinite backorders, or set to a specific negative amount.
This functionality is also supported in core Magento.
What about decimals? We support it on the stock level using the Qty Uses Decimals.
Yes, always make sure to check and update the parent Configurable Product status when changing and updating child products! This status affects the display of child products on your storefront. If the parent is Out of Stock, all In Stock child products cannot be added to shopping carts. If the products can be purchased, set the parent and child products to In Stock.
This is by design to allow customers to see the product even if not available to purchase yet. You could use disable/enable product option to hide/show the products. But you may want to have the Out of Stock products display on your storefront to add to wishlists and to let customers watch for updates.
For example, if you wanted to hide the Configurable Product while creating and updating child products, you would set it to Out of Stock. This updates the Salable Quantity for this parent and all children, not accepting purchases until you are ready. The products may still display in your storefront if you enabled “Including Out of Stock” for your Stores > Configurations > Search option. When ready to sell, change to In Stock.
Q: I just installed/upgraded to MSI and having issues with my multisite implementation seeing all stock. What did I do wrong?
Example from Rob Conings in SLACK: I have the issue that even though my virtualhost passes MAGE_RUN_CODE and MAGE_RUN_TYPE it does not work on the default url. Only if you go to an url with a store specified it goes to the secondary website. If not it is redirect to the primary website.
When you first install/upgrade, all of your products have the Default Source added, associating all quantities to that source. But you may need to add all of your websites in a multisite implementation to the Default Stock. Until you do, additional websites beyond the default/main may not properly see stock.
MSI provides the aggregated salable quantities (or availability) and on-hand inventory quantities through the stock. It maps your websites as sales channels with sources (or locations).
To add your websites as Sales Channels to the Stock, see the Stock section of the wiki/user guide!
Yes, MSI does support it. When a customer completes checkout using the option Check Out with Multiple Addresses, Magento automatically generates a separate order for each addresses selected. MSI handles these orders like all other orders.
For more information on supported order types and how it works, see Shipment and Order Management.
You have many options for maintaining stock and not overselling products in MSI. The entire system is built to ensure your staff, stocks, and customers always see the status of product inventory.
Concurrent Checkout works in the background to keep incoming orders from overwhelming your inventory. Keep reading for the basics!
Inventory thresholds are important. MSI leverages global and per product thresholds to keep from overselling:
- Only X left Threshold - Set the stock quantity to send a notification that the product stock is nearing out of stock. The system default is 0.
- Out-of-Stock Threshold - Sets the stock quantity to consider a product as out of stock. In MSI, if backorders is enabled, we recommend setting a negative value. This sets a maximum threshold for all orders. For details, see Configure MSI backorders.
- Notify for Quantity Below - Typically, this option and value sets the stock quantity to send a notification of low stock for a product. In MSI, it also deducts from the Salable Quantity to ensure you do not oversell a product based on on-hand inventory. You can override this amount per product through Assigned Sources.
MSI keeps you stocked through alerts, backorders, and updates to your aggregated product quantity (or salable quantity) for all sources on a stock. Customers can only purchase the Salable Quantity. To go below these thresholds, you must enable and configure backorders.
Learn more about product thresholds and settings globally and per product.
Reservations keep your physical stock current. As checkout completes, MSI sets aside product quantities with reservations. These reserved amounts are deducted from the Salable Quantity of products. Think of your product inventory per Sales Channel/Stock like this:
When an order is processed and shipped, the reservation quantity is deducted from the product quantity per source you select. If you ship partial amounts, each shipment deducts that amount from your product quantity while the remaining reservations stay in place.
Learn more about reservations.
Sources are part of product inventories, orders, shipment data and much more. You can remove a source from a product, transferring the inventory or dropping the product from all shipments at a location. But removing a source entirely can cause issues with order data.
If you need to manage a source, removing it from SSA calculations and MSI order processing as a location, you can disable the source. Disabled sources retain all data, assigned products and inventory quantities, and may be re-enabled any time to begin shipping again.
The code is vital for connecting the source to orders. This is a unique ID for the source and is disabled from editing.
Learn more about managing sources.
When importing products to your Magento instance, they are automatically assigned to the Default Source. If you import products with a custom source assigned, the Default Source will still be added with a quantity of 0.
To update sources and quantities, use the Import/Export feature, Mass Action Tools, and/or directly through the product.
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