Multi Source Inventory (MSI) was introduced in Magento 2.3.0. This is actually a huge leap for the Magento community as it dramatically improves Inventory Management by allowing the merchants to control inventory for single or multiple sources and sales channels.
Before Magento 2.3.0, the system used only one stock source. The current version allows the merchants to manage the inventory regardless of the customer and warehouse location, the type of the product or sales channel.
The core of the Multi Source Inventory is the Source Selection Algorithm. This algorithm analyzes and determines the best match for the sources. In Magento 2.3.0, the developers have implemented the priority algorithm and allowed third-party support. Additionally, they’ve introduced the custom algorithms for recommending cost-effective shipments.
To better understand the fundamental features of the new inventory, let’s define several MSI terms and mechanisms.
This is the primary element of the new inventory. A source is a place where a product is physically located: brick-and-mortar stores, warehouses, huge distribution centers, etc. Once the sources are added, the merchant may set the quantity of the available products per any single source.
To add or edit the sources, log into the backend and go to STORES ⟶ Inventory ⟶ Sources.
Note that during the initial setup this grid will have only the default source. This source cannot be disabled. All the products get assigned to it by default. This setup is called Single Source mode.
If the merchant has several locations, it is necessary to Add New Source to enter the Multi Source mode.
This first tab includes the internal information available only for the merchant, such as the source name, it’s code name (it is not possible to change it after saving the source). The description of the source is visible only in the backend and the exact GPS location.
Sources may not be deleted. This is done to ensure that all the old data remains correct. However, you have the possibility to temporary disable a source. A disabled source will not be accessed for inventory and orders. The current inventory implementation doesn’t allow disabling the Default Source.
From here, you are able to specify the contact information and the geographical location of the source. This may be crucial when the Magento developers implement the new geopositioning-based source selection algorithm in the upcoming MSI release.
The country and the postcodes boxes are the required fields.
When everything is ready, click the ‘Save’ button.
After adding the sources, you may need to create stocks and assign the products.
Stocks stand for a virtual group of the sources that are mapped to your sales channels. In Magento 2.3.0, only Magento Websites can be used as the sales channels. Depending on the site configurations, the stock may be connected to one or more sales channels. Any stock may be assigned to multiple websites, while each sales channel may have only one stock connected to it.
In the stock configuration, the store owner can modify the priority of the sources used during the shipping by means of the Source Selection Algorithm. We’ll talk about it later in this article.
To add or edit stocks, go to STORES ⟶ Inventory ⟶ Stocks.
Note that during the initial setup, this grid will have only the default stock. This stock cannot be disabled and is assigned with the Default Source and your website. Such setup is called Single Source mode. If the merchant has several locations, it is necessary to Add New Stock to enter the Multi Source mode.
From here, you can link the sources to the sales channels with the possibility to change the sort order of the sources by drag-and-drop. Note that the attached sources will be accessible only on the chosen store. The sorting functionality certainly eases the source selection algorithm and helps determine the most suitable source during shipping.
Product Inventory Configuration
The brand-new inventory system implements a totally new section, which allows attaching sources to a product. To add or edit the sources, open the product and click the Assigned Sources button. When the sources are selected, they get displayed below.
From here, you can determine the qty, the stock status and modify the default admin threshold for the low stock notifications.
Let’s take a look at our sample website. The Philadelphia warehouse (8 products in stock) and New York (6 products in stock) are connected to the US East stock. The Chicago one (8 products in stock as well) and the Minnesota Warehouse (1 product in stock) are in the US North Stock, the New Orleans Warehouse (this product is out of stock here) is in the US South.
When you click the save button, you can observe that two cells have been populated. The first one, Quantity Per Source, shows all the sources enabled for this product and the appropriate quantity for these sources. The Salable Quantity sums up the sources to the stocks.
When a new order is placed, the Inventory mechanism checks whether there are products in stock available in the Salable Quantity cell for the current website. The customer won’t be able to purchase a product from the website where only the US South stock is matched as the qty for the product in the US South stock is 0 (the product is out of stock in the New Orleans warehouse). Thus, the order will be placed on those Magento Websites that are connected to the stocks and have the mentioned product available, i.e., on the US East or US North stocks. Please note that for the merchant, the number of products in the Salable Quantity cell will be deducted while the same number will be still displayed in the Quantity Per Source. This is done because we select the desired warehouse to be used during the shipping procedure in the order workflow.
Updating the stock for numerous sources manually is the hard work. For mass updates, you have the following options:
- Import and Export Tool – Export a CSV of MSI product data, updating information per source and SKU, and importing to update.
- Mass Action Tools – Bulk assign sources to products and transfer inventory. This can be done either manually or via API.
Search Selection Algorithm
As I’ve previously mentioned, the system doesn’t change the Quantity per Source values automatically after the order is created. This happens because the extension runs during the stage of shipment creation using the so-called source selection algorithm.
During order shipment, the algorithm provides a recommended list of sources, available quantities, and amounts to deduct according to the selected algorithm. Magento 2.3.0 includes only one source selection algorithm based on the source priority that should be specified manually. However, the Magento user guide already includes the configuration for the upcoming distance priority algorithm.
You can run the algorithm to get recommendations on the best sources for shipping the product. Inventory Management comes with the SSA Priority algorithm out-of-the-box. The position of the sources on the Shipping page depends on the sorting order of the sources set in the stock configuration (take a look at the upper right image on the screenshot below):
When the source is finally selected and the shipment is placed, the value in the Quantity Per Source cell will be changed.
The MSI, in general, provides a huge improvement to the Magento 2 architecture. It introduces the ability to link separate sources to the store and use the algorithm of selection that chooses a source depending on various conditions. This makes delivery as efficient as possible.
Currently, there are dozens of third-party extensions providing alike functionality. Yet, after the release of the new out-of-the-box feature, it may be redundant to use them. Magento has always had a strong community and in case of some issues that occur with the default functionality, it is always easy to find the solution, while using any third-party extensions may lead to the compatibility issues.
Currently, the MSI doesn’t have all the extended features but they are working hard to implement their ambitious plans, which are likely to include B2B integration for the drop shipping, the configuration of the Shipping Options per source and much more.
Should you have any questions, feel free to leave a comment below, or contact us at firstname.lastname@example.org.