Everything You Need to Know About Magento 2 MSI(Multi Source Inventory)

Magento took its inventory management system to the next level by introducing MSI in Magento 2.3.0 and above. Magento 2 MSI or Multi Source Inventory gives merchants complete control over their inventory whether it be single channel or multi channel. Stores can create multiple sources of inventory and interlink them with their sales channels. The entire concept of MSI revolves around three key principles i.e Sales channels, Sources, and stocks. It allows store merchants to create multiple sales channels, multiple sources, multiple stocks, and by linking them with each other they can create their desired inventory system. Let us look at different aspects of Magento 2 MSI and how you can use it to fulfill orders and ship products from various locations across your global market.

Sales Channels

Sales channels are the various platforms that you use to sell your products. It can be your physical stores/Brick-and-mortar stores, Amazon Marketplace, store websites etc. For instance, you have three Magento 2 websites selling products across the US, UK, and Australia then these three websites are your sales channels. In Magento 2 MSI you can have multiple sales channels and by creating sources and stocks, the inventory will be automatically managed to fulfill orders.

Sources

The physical location where your goods are located and shipped from is known as Sources in MSI. Any store can have different sources such as distribution centers, warehouses, retail shops, drop shippers, etc. Magento 2 MSI allows you to have single or multiple sources running on your store. Magento out of the box gives you a single source (named default source) but you can create multiple sources as per your requirement.  Depending upon the number of sources it is either called to be in single source mode or multi source mode

You can use the same source with multiple stocks for orders and shipping. For instance, suppose you have a UK warehouse, a US warehouse, and a distribution center in Germany. Now if someone orders a product from your Australia store then Magento determines which source to use for the shipping and fulfillment of this order considering the factors such as available stock, distance, priority, etc. Having multiple sources gives you various options to efficiently ship products to the customers depending upon their requirements.   

Managing Sources in Magento 2 MSI

Magento 2 out of the box gives you a default source and the option to create new sources. You are also allowed to add quantities to sources. Let us learn how you can create and manage sources in Magento 2. 

Step 1:- Login to your Magento 2 admin panel and navigate to Stores>Inventory>Sources.

Magento 2 Sources

Step 2:- Click on Add New Source to create a new source. 

Magento 2 Add New Source

Step 3:- Go to the General tab and add information such as name, code, description, and exact location(latitude/longitude). Also set Is Enabled to “yes” to enable the source.  Keep in mind to provide the exact location of the source so it can be used to determine the correct source by the source selection algorithm

Magento 2 General settings source

Step 4:- Next go to the Contact Info dropdown and add the contact information as shown in the image below:-

Magento 2 source add contact info

Step 5:- Lastly go to the Address Data dropdown and add the necessary information such as country, state, city, street, and postal code. After you have entered the information click on Save & Continue to create your new source.

Magento 2 source add Adress data

Stocks

Stocks are a virtual representation of the total number of products available for you to sell via your sales channels. Stocks are used to link sales channels with sources. You can link multiple sources and multiple sales channels using stocks. However, you can assign a single stock to multiple sources but one sales channel can only have one stock. 

Stocks utilize the Source Selection Algorithm to determine the suitable source for shipping and fulfillment of orders. Out of the box, Magento gives you a default stock allowing you to run Magento in Single Source Mode. You also have the option to create multiple stocks and map them to sales channels and sources. We will understand more about the sources, stocks, and sales channels mapping in the examples provided in the below section. 

Managing Stocks in Magento 2 MSI

Stocks can be easily Managed in Magento. Let us learn how you can create new stocks and assign sources to them. 

Step 1:- Login to your Magento 2 Admin panel and navigate to Stores>Inventory>Stocks.

Magento 2 stocks

Step 2:- Click on Add New Stock

Magento 2 add new stock

Step 3:- In the General dropdown enter the Name of the stock.  

Magento 2 stock name

Step 4:- Click on the Sales Channels dropdown and assign stock to one or more sales channels. For example, in the below stock we will assign it to our retail website. 

Magento 2 stock sales channels

Step 5:- Now click on Sources dropdown then click on Assign Sources. 

Magento 2 stock assign sources

Step 6:- A popup will open before you select sources and click Done. The selected source or sources will be assigned to the stock.

Magento 2 select stock sources

Step 7:- Lastly click Save to create the new stock.

Magento 2 stock save 

Quantities

Magento 2 MSI has three different concepts of quantities: Salable quantity, Quantity per source, and Reserved quantity. Quantities are used to manage inventory via sources and stocks. 

  • Salable Quantity:- Salable quantity is the total number of products that you can sell via your sales channels. Stocks have salable quantities. You can also configure a certain quantity to show that when my stock has this number of products left it shows Out of stock. So the Salable quantity is calculated from the total quantity of the stock minus the configured out-of-stock quantity. For example, we have a total quantity of stock as 100 and we have configured the Out of stock quantity to be 10. Now when my stock quantity reaches 100 it will show out of stock.  The salable quantity, in this case, would be:- Total quantity – Out of stock = 100-10 = 90.
  • Quantity Per Source:- When you have multiple sources in your Magento 2 store and sources are also assigned to stocks. Then for each source, the total number of quantities available is known as Quantity Per Source. You can also configure a quantity so when the quantity per source reaches that specific quantity you will get a notification.   
  • Reserved Quantity:- When an order is placed with a certain number of products on the store then that quantity is booked until shipping, which is known as Reserved Quantity. For example, suppose an order is placed with 10 quantities in the store and the total salable quantity is 100 then 10 quantities are booked before shipping which is the Reserved quantity. Until the shipping is done your salable quantity reduces to 90 so the customers can only place orders for the remaining quantity. Once shipping is done then finally quantity is also reduced from the main available stock or quantity per source. 

Magento 2 quantities

Managing Product Inventory

Magento 2 enables you to manage product inventory based on sources and quantities. You can manually assign sources to a product and also add desired quantities in them. Let us see how you can add sources to a product:-

Note:- No matter what quantity is specified with a source customers won’t be able to order more than the total quantity in the stock. The total source stock will be the limit. 

Step 1:- Login to your admin panel and navigate to Catalog>Products then select and product and click “edit” from the Action column.  

Magento 2 catalog products

Step 2:- Scroll down until you find Sources dropdown. Here click on Assign Sources

Magento 2 assign sources

Step 3:- A menu will pop up before you. Select one or more sources that you want to assign to the product and click Done.

Magento2 select sources

Step 4:- Lastly, enter the desired quantity for the source and click Save

Magento 2 source quantity

Step 5:- Once you have saved the product go to Catalog>Products and you should be able to see your newly added source. 

Magento 2 added source

Source Selection Algorithm

Source Selection Algorithm or SSA is one of the key features of Magento 2 MSI(Multi Source Inventory) which decides which source to select for fulfillment of a shipment. It includes two main algorithms known as Source Priority and Distance priority. Based on the algorithm selected the source is decided for a shipment.

  • Distance Priority Algorithm:- Distance priority algorithm utilizes Google Maps to calculate the shortest distance of the shipping address(associated with order) to a source and automatically selects the nearest source for shipment. Keep in mind you will have to use the Google Maps API key and also enable the API from Google. 
  • Source Priority Algorithm:- Source Priority Algorithm decides the source to fulfill a shipment based on the priority set in the stock. When you have created a custom stock and assigned multiple sources to it then the source listed on top has the highest priority and it reduces going downwards in the list.  

Some Examples of Magento 2 MSI

Example 1:- There’s a store having four different websites that simultaneously serve in four different locations US, UK, Canada, and Italy. Suppose they are selling a product “Bag”. This product is currently in inventory at four locations: a warehouse in the US, a distribution center in the UK, and a drop shipper. The order placed for this product on any of the websites needs to be shipped from one of these locations. So now using Magento 2 MSI we will create sources, stocks, sales channels and map them to create an efficient system. 

In the above image, you can see that we have created two stocks namely US stock UK stock. Both of these stocks have a salable quantity i.e the maximum quantity that is available in that stock. You can also configure a certain quantity of products so that when the stock reaches that level you are notified and can timely restock the product. We will use US stock to fulfill orders for Canada and US websites whereas we will use UK stock to fulfill orders for Italy and UK websites. I.e Canada and US websites are linked to US stock and Italy and UK websites are linked to UK stock. Furthermore, we have created three sources in our Magento 2 and assign them to the relevant stocks as shown in the above image. Now when an order comes on any of the websites, Magento 2 MSI will automatically select the best source for the shipment of that order using the Source Selection Algorithm.

How to Enable/Disable MSI in Magento 2?

You may come across situations that may require you to enable or disable MSI on your storefront. Knowing how to enable/disable MSI in Magento 2 can be quite handy for store owners. However, the commands are unique for each version after Magento 2.3.0.

Enable MSI in Magento 2.3.0 and Above

Magento 2.3.0

 php bin/magento module:enable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi 

Magento 2.3.1

 php bin/magento module:enable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryDistanceBasedSourceSelection Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventorySetupFixtureGenerator Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi 

Magento 2.3.2

 php bin/magento module:enable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryExportStockApi Magento_InventoryReservationCli Magento_InventoryExportStock Magento_CatalogInventoryGraphQl Magento_InventorySetupFixtureGenerator 

Magento 2.3.3/3.4/3.5

 php bin/magento module:enable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryExportStockApi Magento_InventoryReservationCli Magento_InventoryExportStock Magento_CatalogInventoryGraphQl Magento_InventorySetupFixtureGenerator Magento_InventoryAdvancedCheckout Magento_InventoryDistanceBasedSourceSelection Magento_InventoryRequisitionList Magento_InventoryGraphQl 

Magento 2.4

 php bin/magento module:enable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryExportStockApi Magento_InventoryReservationCli Magento_InventoryExportStock Magento_CatalogInventoryGraphQl Magento_InventorySetupFixtureGenerator Magento_InventoryAdvancedCheckout Magento_InventoryDistanceBasedSourceSelection Magento_InventoryRequisitionList Magento_InventoryGraphQl Magento_InventoryBundleImportExport Magento_InventoryBundleProductIndexer Magento_InventoryInStorePickupApi Magento_InventoryInStorePickupAdminUi Magento_InventoryInStorePickup Magento_InventoryInStorePickupGraphQl Magento_InventoryInStorePickupShippingApi Magento_InventoryInStorePickupQuoteGraphQl Magento_InventoryInStorePickupSales Magento_InventoryInStorePickupSalesApi Magento_InventoryInStorePickupQuote Magento_InventoryInStorePickupShipping Magento_InventoryInStorePickupShippingAdminUi Magento_InventoryInStorePickupFrontend Magento_InventoryInStorePickupMultishipping Magento_InventoryInStorePickupSalesAdminUi Magento_InventoryInStorePickupWebapiExtension 

Disable MSI in Magento 2.3.0 and Above

Magento 2.3.0

 php bin/magento module:disable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi 

Magento 2.3.1

 php bin/magento module:disable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryDistanceBasedSourceSelection Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventorySetupFixtureGenerator Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi 

Magento 2.3.2

 php bin/magento module:disable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryExportStockApi Magento_InventoryReservationCli Magento_InventoryExportStock Magento_CatalogInventoryGraphQl Magento_InventorySetupFixtureGenerator 

Magento 2.3.3/3.4/3.5

 php bin/magento module:disable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryExportStockApi Magento_InventoryReservationCli Magento_InventoryExportStock Magento_CatalogInventoryGraphQl Magento_InventorySetupFixtureGenerator Magento_InventoryAdvancedCheckout Magento_InventoryDistanceBasedSourceSelection Magento_InventoryRequisitionList Magento_InventoryGraphQl 

Magento 2.4

 php bin/magento module:disable -f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryExportStockApi Magento_InventoryReservationCli Magento_InventoryExportStock Magento_CatalogInventoryGraphQl Magento_InventorySetupFixtureGenerator Magento_InventoryAdvancedCheckout Magento_InventoryDistanceBasedSourceSelection Magento_InventoryRequisitionList Magento_InventoryGraphQl Magento_InventoryBundleImportExport Magento_InventoryBundleProductIndexer Magento_InventoryInStorePickupApi Magento_InventoryInStorePickupAdminUi Magento_InventoryInStorePickup Magento_InventoryInStorePickupGraphQl Magento_InventoryInStorePickupShippingApi Magento_InventoryInStorePickupQuoteGraphQl Magento_InventoryInStorePickupSales Magento_InventoryInStorePickupSalesApi Magento_InventoryInStorePickupQuote Magento_InventoryInStorePickupShipping Magento_InventoryInStorePickupShippingAdminUi Magento_InventoryInStorePickupFrontend Magento_InventoryInStorePickupMultishipping Magento_InventoryInStorePickupSalesAdminUi Magento_InventoryInStorePickupWebapiExtension 

Troubleshoot

We have provided some errors and solutions that frequently occur while handling MSI in Magento 2. 

1. “There are no source items with the stock status”:- You may get the following error message once you disable and re-enable MSI in Magento 2. To solve this error run the commands given below. 

INSERT INTO inventory_source_stock_link (link_id, stock_id, source_code, priority)
VALUES ('1', '1', 'default', '1');


INSERT into inventory_source_item (source_code, sku, quantity, status)
SELECT 'default', sku, qty, stock_status FROM
(cataloginventory_stock_status as lg
JOIN catalog_product_entity as prd on((lg.product_id = prd.entity_id)))

2. “Products are showing out of stock” If the products on store is showing out of stock then run the commands below to resolve the issue.


update cataloginventory_stock_status set qty=100, stock_status=1 where qty<=0;
update cataloginventory_stock_item set max_sale_qty=10000 where max_sale_qty=0;
update cataloginventory_stock_item set qty=100 where qty<=0


php bin/magento maintenance:enable
rm -rf generated/*
rm -rf var/cache/*
php bin/magento setup:upgrade
php bin/magento cache:flush
php bin/magento cache:clean
php bin/magento maintenance:disable

Few Words

Magento 2 MSI(Multi Source Inventory) is surely the latest advancement in the inventory management system by Magento. If utilized properly it has several perks that can enable store merchants to complete orders and shipment efficiently. We have also built a few extensions that can make your inventory even more advanced by adding certain features such as Magento 2 Associated or linked products stock update and Magento 2 product shelf life.

Discover more from WHO WILL CARE eCommerce

Subscribe now to keep reading and get access to the full archive.

Continue reading