{"id":132254,"date":"2018-07-09T08:57:36","date_gmt":"2018-07-09T08:57:36","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=132254"},"modified":"2023-04-05T08:30:28","modified_gmt":"2023-04-05T08:30:28","slug":"introduction-to-magento2-multi-source-inventory","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/","title":{"rendered":"Introduction to Magento 2 Multi Source Inventory (MSI)"},"content":{"rendered":"\n<p><strong>Introduction to Magento 2 Multi Source Inventory (MSI)<\/strong><\/p>\n\n\n\n<p><b>What is MSI<\/b><span style=\"font-weight: 400\"> &#8211; <a href=\"https:\/\/github.com\/magento-engcom\/msi\/wiki\/Overview\" target=\"_blank\" rel=\"noreferrer noopener\">Magento 2 Multi Source Inventory (MSI)<\/a> is newly introduced in Magento 2.3 version(upcoming release) which is used to manage inventory by source (location).<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Till now, Magento manages a single inventory system and due to this it&#8217;s really hard to manage multi-channel inventories from a single website, but using MSI extension, inventory will be managed by each channel. Also in<\/span>\u00a0<a href=\"https:\/\/store.webkul.com\/Magento2-Dropship.html\">dropship\u00a0extension<\/a> really hard to manage inventory for each <a href=\"https:\/\/webkul.com\/blog\/magento2-warehouse-management-system-app\/\" target=\"_blank\" rel=\"noreferrer noopener\">Magento 2 warehouse<\/a> but using MSI we can manage inventory for each warehouse.<\/p>\n\n\n\n<p>You can get the Magento&nbsp;2.3&nbsp;Multi Source Inventory (MSI) version from&nbsp;<a href=\"https:\/\/github.com\/magento-engcom\/msi\">https:\/\/github.com\/magento-engcom\/msi<\/a>.<\/p>\n\n\n\n<p><b>How to use Multi Source Inventory (MSI) in Magento 2 &#8211; <\/b><span style=\"font-weight: 400\">For managing inventory in Magento 2.3 we will need to follow given below steps-<\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><b>Manage Sources &#8211; <\/b><span style=\"font-weight: 400\">If we are selling products from multi-location like Florida US, California US etc then we will need to create sources for each inventory location.<img decoding=\"async\" class=\"alignnone size-full wp-image-132257\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png\" alt=\"image\" width=\"760\" height=\"328\" loading=\"lazy\"><\/span><\/li>\n\n\n\n<li><b>Manage Stocks &#8211; <\/b><span style=\"font-weight: 400\">Here we will need to create stock for each channel (Magento Websites, if there are multi websites configure in your Magento) so that we can assign sources(from where we are selling our products) for each channel.<img decoding=\"async\" class=\"alignnone size-full wp-image-132258\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image5-e1531125197793.png\" alt=\"image\" width=\"760\" height=\"267\" loading=\"lazy\"><img decoding=\"async\" class=\"alignnone size-full wp-image-132259\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image3-e1531125225253.png\" alt=\"image\" width=\"760\" height=\"412\" loading=\"lazy\"><\/span><\/li>\n\n\n\n<li><b>Manage Catalog Product Inventory &#8211;<\/b><span style=\"font-weight: 400\"> When adding or editing a product we will need to assign sources to that product and for the source will need to add product available quantity for that source.<img decoding=\"async\" class=\"alignnone size-full wp-image-132260\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image4-e1531125146216.png\" alt=\"image\" width=\"760\" height=\"399\" loading=\"lazy\"><\/span><\/li>\n\n\n\n<li><b>Order Management &#8211; <span style=\"font-weight: 400\">When an order is placed for a product than using the <a href=\"https:\/\/github.com\/magento-engcom\/msi\/wiki\/Source-Selection-Algorithm\">source selection algorithm<\/a>, ordered qty is reserved for available source inventory after shipment with available source ordered qty is deducted from that source.<img decoding=\"async\" class=\"alignnone size-full wp-image-132261\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image2-e1531125062170.png\" alt=\"image\" width=\"760\" height=\"418\" loading=\"lazy\"><\/span><\/b><\/li>\n<\/ol>\n\n\n\n<p><b>How to programmatically create source and assign to stock in Magento 2 &#8211;<\/b><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/**\n * Webkul Software.\n *\n * @category  Webkul\n * @package   Webkul_CustomMsi\n * @author    Webkul\n * @copyright Copyright (c) Webkul Software Private Limited (https:\/\/webkul.com)\n * @license   https:\/\/store.webkul.com\/license.html\n *\/\nnamespace Webkul\\CustomMsi\\Helper;\n\nuse Magento\\InventoryApi\\Api\\Data\\SourceInterface;\nuse Magento\\InventoryApi\\Api\\Data\\SourceInterfaceFactory;\nuse Magento\\InventoryApi\\Api\\SourceRepositoryInterface;\nuse Magento\\InventoryAdminUi\\Model\\Source\\SourceHydrator as InventorySourceHydrator;\nuse Magento\\InventoryApi\\Api\\Data\\StockSourceLinkInterface;\nuse Magento\\Framework\\Message\\ManagerInterface;\nuse Magento\\Store\\Model\\StoreManagerInterface;\nuse Magento\\Framework\\Api\\SearchCriteriaBuilder;\nuse Magento\\InventoryApi\\Api\\GetStockSourceLinksInterface;\nuse Magento\\InventoryApi\\Api\\Data\\StockSourceLinkInterfaceFactory;\nuse Magento\\Framework\\Api\\DataObjectHelper;\nuse Magento\\InventoryApi\\Api\\StockSourceLinksSaveInterface;\n\nclass InventorySource extends \\Magento\\Framework\\App\\Helper\\AbstractHelper\n{\n    \/**\n     * @var SourceInterfaceFactory\n     *\/\n    private $sourceInterfaceFactory;\n\n    \/**\n     * @var SourceRepositoryInterface\n     *\/\n    private $sourceRepositoryInterface;\n\n    \/**\n     * @var InventorySourceHydrator\n     *\/\n    private $inventorySourceHydrator;\n\n    \/**\n     * @var ManagerInterface\n     *\/\n    private $messageManager;\n\n    \/**\n     * @var StoreManagerInterface\n     *\/\n    private $storeManager;\n\n\n    \/**\n     * @var SearchCriteriaBuilder\n     *\/\n    private $searchCriteriaBuilder;\n\n    \/**\n     * @var GetStockSourceLinksInterface\n     *\/\n    private $getStockSourceLinks;\n\n    \/**\n     * @var StockSourceLinkInterfaceFactory\n     *\/\n    private $stockSourceLink;\n\n    \/**\n     * @var DataObjectHelper\n     *\/\n    private $dataObject;\n\n    \/**\n     * @var StockSourceLinksSaveInterface\n     *\/\n    private $stockSourceLinksSave;\n\n    \/**\n     * @param \\Magento\\Framework\\App\\Helper\\Context $context\n     * @param SourceInterfaceFactory                $sourceInterfaceFactory\n     * @param SourceRepositoryInterface             $sourceRepositoryInterface\n     * @param InventorySourceHydrator               $inventorySourceHydrator\n     * @param ManagerInterface                      $messageManager\n     * @param \\Magento\\Framework\\Event\\Manager      $eventManager\n     * @param StoreManagerInterface                 $storeManager\n     * @param SearchCriteriaBuilder                 $searchCriteriaBuilder\n     * @param GetStockSourceLinksInterface          $getStockSourceLinks\n     * @param StockSourceLinkInterfaceFactory       $stockSourceLink\n     * @param DataObjectHelper                      $dataObject\n     * @param StockSourceLinksSaveInterface         $stockSourceLinksSave\n     *\/\n    public function __construct(\n        \\Magento\\Framework\\App\\Helper\\Context $context,\n        SourceInterfaceFactory $sourceInterfaceFactory,\n        SourceRepositoryInterface $sourceRepositoryInterface,\n        InventorySourceHydrator $inventorySourceHydrator,\n        ManagerInterface $messageManager,\n        StoreManagerInterface $storeManager,\n        SearchCriteriaBuilder $searchCriteriaBuilder,\n        GetStockSourceLinksInterface $getStockSourceLinks,\n        StockSourceLinkInterfaceFactory $stockSourceLink,\n        DataObjectHelper $dataObject,\n        StockSourceLinksSaveInterface $stockSourceLinksSave\n    ) {\n        $this-&gt;_request = $context-&gt;getRequest();\n        $this-&gt;sourceInterfaceFactory = $sourceInterfaceFactory;\n        $this-&gt;sourceRepositoryInterface = $sourceRepositoryInterface;\n        $this-&gt;inventorySourceHydrator = $inventorySourceHydrator;\n        $this-&gt;messageManager = $messageManager;\n        $this-&gt;storeManager = $storeManager;\n        $this-&gt;searchCriteriaBuilder = $searchCriteriaBuilder;\n        $this-&gt;getStockSourceLinks = $getStockSourceLinks;\n        $this-&gt;stockSourceLink = $stockSourceLink;\n        $this-&gt;dataObject = $dataObject;\n        $this-&gt;stockSourceLinksSave = $stockSourceLinksSave;\n        parent::__construct($context);\n    }\n\n    public function prepareSourceRequestData()\n    {\n        $sourceCode = null;\n        $request = $this-&gt;_request;\n        $sourceData = [];\n        $sourceData['id_field_name'] = 'source_code';\n        $sourceData['source_code'] = 'us-florida';\n        $sourceData['name'] = 'US Florida';\n        $sourceData['email'] = '';\n        $sourceData['contact_name'] = '';\n        $sourceData['enabled'] = 1;\n        $sourceData['description'] = '';\n        $sourceData['latitude'] = '';\n        $sourceData['longitude'] = '';\n        $sourceData['country_id'] = 'US';\n        $sourceData['region_id'] = 12;\n        $sourceData['city'] = '';\n        $sourceData['postcode'] = '95004';\n        $sourceData['use_default_carrier_config'] = 1;\n        $sourceData['carrier_codes'] = '';\n        $sourceData['disable_source_code'] = true;\n        $sourceData['phone'] = '';\n        $sourceData['fax'] = '';\n        $sourceData['region'] = '';\n        $sourceData['street'] = '';\n        $request-&gt;setPostValue('general', $sourceData);\n        $request-&gt;setPostValue('form_key', 'or1eYs7K4PBsLbO1');\n    }\n\n    public function processSource()\n    {\n        \/\/ prepare source request data\n        $this-&gt;prepareSourceRequestData();\n        $sourceCode = null;\n        $newSourceData = [];\n        $request = $this-&gt;_request;\n        $requestData = $request-&gt;getPost()-&gt;toArray();\n        $sourceCodeQueryParam = $request-&gt;getQuery(SourceInterface::SOURCE_CODE);\n        try {\n            $inventorySource = (null !== $sourceCodeQueryParam)\n                ? $this-&gt;sourceRepositoryInterface-&gt;get($sourceCodeQueryParam)\n                : $this-&gt;sourceInterfaceFactory-&gt;create();\n\n            $inventorySource = $this-&gt;inventorySourceHydrator-&gt;hydrate($inventorySource, $requestData);\n\n            $this-&gt;_eventManager-&gt;dispatch(\n                'controller_action_inventory_populate_source_with_data',\n                [\n                    'request' =&gt; $request,\n                    'source' =&gt; $inventorySource,\n                ]\n            );\n\n            $this-&gt;sourceRepositoryInterface-&gt;save($inventorySource);\n\n            $this-&gt;_eventManager-&gt;dispatch(\n                'controller_action_inventory_source_save_after',\n                [\n                    'request' =&gt; $request,\n                    'source' =&gt; $inventorySource,\n                ]\n            );\n            $sourceCode = $requestData['general']['source_code'];\n            $newSourceData['source_code'] = $sourceCode;\n            $newSourceData['name'] = $requestData['general']['name'];\n            $newSourceData['position'] = 1;\n            $newSourceData['record_id'] = $sourceCode;\n            $newSourceData['priority'] = 1;\n\n            $this-&gt;messageManager-&gt;addSuccessMessage(__('The Source has been saved.'));\n        } catch (\\Magento\\Framework\\Exception\\NoSuchEntityException $e) {\n            $sourceCode = 0;\n            $this-&gt;messageManager-&gt;addErrorMessage(__('The Source does not exist.'));\n        } catch (\\Magento\\Framework\\Validation\\ValidationException $e) {\n            $sourceCode = 0;\n            foreach ($e-&gt;getErrors() as $localizedError) {\n                $this-&gt;messageManager-&gt;addErrorMessage($localizedError-&gt;getMessage());\n            }\n        } catch (\\Magento\\Framework\\Exception\\CouldNotSaveException $e) {\n            $sourceCode = 0;\n            $this-&gt;messageManager-&gt;addErrorMessage($e-&gt;getMessage());\n        } catch (\\Exception $e) {\n            $sourceCode = 0;\n            $this-&gt;messageManager-&gt;addErrorMessage(__('Could not save Source.'));\n        }\n\n        $this-&gt;assignSourceToStocks($sourceCode, $newSourceData);\n    }\n\n    public function assignSourceToStocks($sourceCode, $newSourceData)\n    {\n        try {\n            if ($sourceCode) {\n                $allWebsites = $this-&gt;storeManager-&gt;getWebsites();\n                foreach ($allWebsites as $website) {\n                    $websiteCode = $website-&gt;getCode();\n                    $stockId = $this-&gt;getAssignedStockIdForWebsite-&gt;execute($websiteCode);\n\n                    $searchCriteria = $this-&gt;searchCriteriaBuilder-&gt;addFilter(\n                        StockSourceLinkInterface::STOCK_ID,\n                        $stockId\n                    )-&gt;create();\n\n                    $result = [];\n                    foreach ($this-&gt;getStockSourceLinks-&gt;execute($searchCriteria)-&gt;getItems() as $link) {\n                        $result[$link-&gt;getSourceCode()] = $link;\n                    }\n\n                    if (isset($result[$sourceCode])) {\n                        $link = $result[$sourceCode];\n                    } else {\n                        \/** @var StockSourceLinkInterface $link *\/\n                        $link = $this-&gt;stockSourceLink-&gt;create();\n                    }\n\n                    $newSourceData[StockSourceLinkInterface::STOCK_ID] = $stockId;\n                    $this-&gt;dataObject-&gt;populateWithArray($link, $newSourceData, StockSourceLinkInterface::class);\n\n                    $result[] = $link;\n\n                    if (!empty($result)) {\n                        $this-&gt;stockSourceLinksSave-&gt;execute($result);\n                    }\n                }\n            }\n        } catch (\\Exception $e) {\n            $this-&gt;messageManager-&gt;addErrorMessage(__('Could not save Source to Stock.'));\n        }\n    }\n}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Introduction to Magento 2 Multi Source Inventory (MSI) What is MSI &#8211; Magento 2 Multi Source Inventory (MSI) is newly introduced in Magento 2.3 version(upcoming release) which is used to manage inventory by source (location). Till now, Magento manages a single inventory system and due to this it&#8217;s really hard to manage multi-channel inventories from <a href=\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":489,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,302],"tags":[7032,7035,7033],"class_list":["post-132254","post","type-post","status-publish","format-standard","hentry","category-magento","category-magento2","tag-msi","tag-multi-channel-inventory","tag-multi-source-inventory"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introduction to Magento2 Multi Source Inventory (MSI)<\/title>\n<meta name=\"description\" content=\"Introduction to Magento2 Multi Source Inventory (MSI) - Magento manages a single inventory system and due to this it&#039;s really hard to manage multi-channel inventories from a single website, but using MSI extension, inventory will be managed by each channel.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introduction to Magento2 Multi Source Inventory (MSI)\" \/>\n<meta property=\"og:description\" content=\"Introduction to Magento2 Multi Source Inventory (MSI) - Magento manages a single inventory system and due to this it&#039;s really hard to manage multi-channel inventories from a single website, but using MSI extension, inventory will be managed by each channel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-09T08:57:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-05T08:30:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png\" \/>\n<meta name=\"author\" content=\"Harshil Yadav\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Harshil Yadav\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/\"},\"author\":{\"name\":\"Harshil Yadav\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/0c5d750fe734b5832fcc51e1bbf048ec\"},\"headline\":\"Introduction to Magento 2 Multi Source Inventory (MSI)\",\"datePublished\":\"2018-07-09T08:57:36+00:00\",\"dateModified\":\"2023-04-05T08:30:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/\"},\"wordCount\":288,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png\",\"keywords\":[\"msi\",\"multi channel inventory\",\"Multi Source Inventory\"],\"articleSection\":[\"magento\",\"Magento2\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/\",\"url\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/\",\"name\":\"Introduction to Magento2 Multi Source Inventory (MSI)\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png\",\"datePublished\":\"2018-07-09T08:57:36+00:00\",\"dateModified\":\"2023-04-05T08:30:28+00:00\",\"description\":\"Introduction to Magento2 Multi Source Inventory (MSI) - Magento manages a single inventory system and due to this it's really hard to manage multi-channel inventories from a single website, but using MSI extension, inventory will be managed by each channel.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png\",\"width\":760,\"height\":328},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction to Magento 2 Multi Source Inventory (MSI)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/0c5d750fe734b5832fcc51e1bbf048ec\",\"name\":\"Harshil Yadav\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7863fed46f8fc343beb54d6b548a88f986cfb20ff6b830ce3808d4698fa7b461?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7863fed46f8fc343beb54d6b548a88f986cfb20ff6b830ce3808d4698fa7b461?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Harshil Yadav\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/harshil-yadav223\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introduction to Magento2 Multi Source Inventory (MSI)","description":"Introduction to Magento2 Multi Source Inventory (MSI) - Magento manages a single inventory system and due to this it's really hard to manage multi-channel inventories from a single website, but using MSI extension, inventory will be managed by each channel.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/","og_locale":"en_US","og_type":"article","og_title":"Introduction to Magento2 Multi Source Inventory (MSI)","og_description":"Introduction to Magento2 Multi Source Inventory (MSI) - Magento manages a single inventory system and due to this it's really hard to manage multi-channel inventories from a single website, but using MSI extension, inventory will be managed by each channel.","og_url":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2018-07-09T08:57:36+00:00","article_modified_time":"2023-04-05T08:30:28+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png","type":"","width":"","height":""}],"author":"Harshil Yadav","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Harshil Yadav","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/"},"author":{"name":"Harshil Yadav","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/0c5d750fe734b5832fcc51e1bbf048ec"},"headline":"Introduction to Magento 2 Multi Source Inventory (MSI)","datePublished":"2018-07-09T08:57:36+00:00","dateModified":"2023-04-05T08:30:28+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/"},"wordCount":288,"commentCount":2,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png","keywords":["msi","multi channel inventory","Multi Source Inventory"],"articleSection":["magento","Magento2"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/","url":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/","name":"Introduction to Magento2 Multi Source Inventory (MSI)","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png","datePublished":"2018-07-09T08:57:36+00:00","dateModified":"2023-04-05T08:30:28+00:00","description":"Introduction to Magento2 Multi Source Inventory (MSI) - Magento manages a single inventory system and due to this it's really hard to manage multi-channel inventories from a single website, but using MSI extension, inventory will be managed by each channel.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/07\/image1-e1531125269936.png","width":760,"height":328},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/introduction-to-magento2-multi-source-inventory\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introduction to Magento 2 Multi Source Inventory (MSI)"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/0c5d750fe734b5832fcc51e1bbf048ec","name":"Harshil Yadav","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7863fed46f8fc343beb54d6b548a88f986cfb20ff6b830ce3808d4698fa7b461?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7863fed46f8fc343beb54d6b548a88f986cfb20ff6b830ce3808d4698fa7b461?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Harshil Yadav"},"url":"https:\/\/webkul.com\/blog\/author\/harshil-yadav223\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/132254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/489"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=132254"}],"version-history":[{"count":12,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/132254\/revisions"}],"predecessor-version":[{"id":375633,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/132254\/revisions\/375633"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=132254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=132254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=132254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}