MSI Roadmap - magento/inventory GitHub Wiki

Backlog which describes the deliverable state of Multi-Source Inventory project.

See current status on the Project Board

As Magento Inventory considered as a community-driven project - all the work implemented along the project will belong to Magento Open Source edition (former Magento CE).

There are 3 Milestones where we started investigation/design/coding:

Table of Contents

MLS1

Milestone 1: MSI MVP (Minimal Viable Product) 1st of June, 2017 - 19th of June, 2018

Story Size Estimation: S=1, M=3, L=10, XL=20

Status Estimate Story PR(s) Open Tickets
βœ… 1 Introduce new API for Source Management 28
βœ… 1 Provide Web API for Source Management 26
βœ… 3 Manage multiple sources admin UI 28, 37, 32
βœ… 3 Introduce APIs for products assignment to sources. SourceItem interface and its Repository. Cover source item management scenarios with Web API tests 38, 36
βœ… 1 Read API. Stock interface and its management 35
βœ… 3 Source assignment per each product Admin UI
βœ… 1 Sources to Stock assignment API 39
βœ… 1 Admin UI for Sources to Stock assignment 39
βœ… 1 Cover with WEB API all existing scenarios for SourceItem and Source to Stock linkage 53
βœ… 3 New indexing of Inventory and creating Virtual Aggregated Stock Items based on linkage rules 49
βœ… 10 Introduce Reservation API. Append only reservations 64
βœ… 3 Implement runtime calculation of Stock Quantity taking into account the reservations happened 94
βœ… 3 Implement Reservation Clean-Up 94
βœ… 3 Default Source and Stock. Creation of Default Source and Stock for it. Including admin UI 113, 121, 118, 122, 126
βœ… 10 Import/Export of Sources (new functionality + admin UI) 147, 116
βœ… 3 Add Drop Shipping support
βœ… 3 Make Stock calculation and check availability services to support Backorders functionality 156
βœ… 3 Multi Dimensional Index for Stock Inventory. Add support to invalidate all dimensions/some dimensions/partial update 141
βœ… 1 Stock to Website mapping (with possibility of mapping to custom Sales Channels)
βœ… 3 Add Stock/Website mapping UI 168, 173
βœ… 1 Stock Removal. Throw an exception and allow to delete just unassigned stocks 171
βœ… 1 Website creation. We should assign Default stock to newly created website. 165
βœ… 3 Add new index on Reservation which will update both OLD StockItem::Qty and StockStatus::Qty 170
βœ… 3 Migration M1.X, M2.1.X -> MSI 198
βœ… 1 Import/Export of products aware of Sources 211
βœ… 3 Adapt OLD Cataloginventory StockItem to work through new Inventory interfaces 198
βœ… 3 Adapt OLD Cataloginventory StockStatus to work through new Inventory interfaces 198
βœ… 3 Checkout adaptation. Adapt CatalogInventory\StockItem configuration for Multi-Source purposes
βœ… 3 Substitute stock deduction on current checkout flow with Reservation placement. Async stock deduction 295
βœ… 3 Admin part (order in admin panel). Substitute stock deduction in admin panel with Reservation placement
βœ… 3 Introduce Source Selection Algorithm extension point
βœ… 3 Add Source Code attribute, to provide an ability not to depend on internal Magento surrogate identity (SourceId). Fix Product and SourceItem import/export functionality, which currently use SourceId (Added to MVP backlog by request of Mark) 307, 298
βœ… 3 Add Source Delivery awareness to Order page 315 Tickets
βœ… 1 Run Source Selection Algo by request on Order page Tickets
βœ… 3 Adapt Returns (SalesInventory). All returns should happen on Default Source Tickets
βœ… 3 Low Stock Notifications to Merchant on the level of source. 321 Tickets
βœ… 1 Product Alert for Customers on the level of stock Product Alert). Tickets
βœ… 1 Update Low Stock Report
βœ… 5 Adapt OLD CatalogInventory all other APIs 269, 304 Tickets
βœ… 5 Inventory Catalog Search Tickets
βœ… 5 Shopping Cart Update Tickets
βœ… 3 Simplest β€œBy Priority” Algorithm implementation Tickets
βœ… 1 Processing of different order statuses. Reorder (close Reservation, create new Reservation)
βœ… 1 Processing of different order statuses. Cancel Order, Partial cancel Tickets
βœ… 1 Change qty on Invoice step of Order page Tickets
βœ… 1 Adapt All cache invalidation taking into account new extension points (new Inventory APIs)
βœ… 3 Make Source Selection Algorithm to be compatible with: Configurable product
βœ… 3 Update/Change source assignment in the existing orders
βœ… 10 Add MSI content to Merchant documentation
βœ… 10 Basic MFTF Test Coverage
MLS2

Milestone 2: Preparation for 2.3.0 Magento release, Group product type support, Mass Inventory re-assignment. Stabilization. 13th of July, 2018 - 16th of November, 2018.

Story Size Estimation: S=1, M=3, L=10, XL=20

Status Estimate Story PR(s) Open Tickets
βœ… L Add Support of Multi-Sourcing for Grouped product
βœ… L Mass Inventory action (re-assign Source Items from/to different sources)
βœ… S Support Negative Threshold for Backorder functionality
βœ… L Prepare MSI for 2.3 Magento Release
MLS3

Milestone 3: Full B2B support, Elasticsearch support, Distance Based Algorithm

Status Estimate Story PR(s) Open Tickets
βœ… M Full support of Multi-Sourcing in B2B edition
βœ… M Full support of Multi-Sourcing for Elasticsearch adapter
πŸ”ƒ XL Add Support of Multi-Sourcing for Bundle product
βœ… L β€œMinimal delivery cost” Algorithm (Geo Positioning Based source selection) (Using ZIP addresses open database) 1866
βœ… XL MFTF Test Coverage of S0/S1 scenarios Filter By Label
πŸ”ƒ XL Store pickup support for Multi-Source Inventory
βœ… L Performance Improvements 1937
βœ… L CLI tools for fixing corrupted reservations which affect Salable Quantity calculation
βœ… S MSI + Product GraphQL API integration
βœ… M Export aggregated stock data (Salable quantities and Stock status)
MLS4

Milestone 4: Remove dependencies to CatalogInventory module

Status Estimate Story PR(s) Open Tickets
M Add an ability to assign additional sources to Default Stock (has dependencies on Bundle product support)
M Make Default Source/Stock switchable (has dependencies on Bundle product support)
M Drop existing CatalogInventory index and fully substitute it with new one provided by Inventory (has dependencies on Bundle product support)
M Performance improvements, cover MSI with PAT scenarious
M Assign Source Selector for Processing of Returns/Credit Memo

Product Backlog (Further Milestones)

Story Size Estimation: S=1, M=3, L=10, XL=20

Status Estimate Story PR(s) Open Tickets
S Add ability to specify that Source has some type (aka Dropshipper) to apply it for source selection
XL Stock Item Configuration API 1553
M Reservation on the level of Source
M Stock Reservation by time (Shopping Cart reservation by time)
  • Eliminate EE functionality of ScalableInventory (S) (moved from MLS1)
  • Configuration of the Shipping Options per source (M) (moved from MLS1)
  • Product assignment per each source Admin UI (M) (Postponed)
  • Improve modularity of Inventory. Make it agnostic to Sales, Checkout, Quote. (M)
  • Integrate Source Selection Algorithm to Checkout process (XL)