Inventory stockout and excess management - IBM/intelligence-suite-supply-chain-solutions GitHub Wiki
As a supply chain inventory manager, I need a dashboard where I can see inbound supply and inventory metrics so I can sense, analyze, and act on inventory problems to ensure continuity of my business operations.
The inventory dashboard is a tab enabled in SCIS by default, and it is documented here for a better understanding of the technical design and specifications of all the UI components and calculations which are used in it. These samples are provided for SCIS implementers to select from a menu of sample functionality which can be customized for your own use cases.
The inventory tab presents a user with a set of relatively simple yet valuable metrics around inventory excess and underage, delayed shipments, aggregated days of supply, and more. As you will see in the following steps, this dashboard has a rich variety of UI graphical elements, view-all lists, and detail pages which can all be customized for specific use cases.
See more screen shots in the Inventory stockout and excess management gallery
This use case assumes you are familiar with implementing solutions in SCIS. You can find relevant tutorials for all of the instructions here in the User interface, Data platform, and Data import-export wikis.
Note - these tutorials are provided as-is for educational purposes only. We do our best to make them fully useable, however there will be gaps as published. If you have suggestions for improvements please submit an issue.
The inventory dashboard contains two donut chart, one meter, four summary, and three list widgets. For description purposes, we will describe a metric indicating an exception or problem as a "KPI" a metric indicating something informational a "measurement". These are the main KPIs and measurements on the inventory dashboard:
KPIs
- Inventory approaching out of stock (list) - inventory with an on-hand quantity that is less than the configured threshold
- Out of stock inventory (list) - inventory with an on-hand quantity of less than 1
- Inventory with excess quantity (list) - inventory which has an on-hand quantity higher than a pre-configured threshold
- Inventory with excess days of supply - inventory where the calculated days of supply is greater than the configured threshold. Only inventory with outbound orders in the last 7 days is considered in this metric
- Shipments with a past delivery (donut) - inbound shipments that are currently past their committed delivery date
- Shipments with a late estimated delivery (donut) - inbound shipments that are estimated to arrive later than their committed delivery date
- Order lines with late planned delivery (summary) - inbound order lines that are planned to be delivered later than requested in the order
Measurements
- Inbound shipments (meter) - all inbound orders by status
- Open inbound orders (summary) - supply (inbound) orders which have not shipped yet
- Open outbound orders (summary) - all outbound orders that have not shipped yet
- Average days of supply (summary) - the estimated number of days that the inventory will be available before stockout based on the filters you selected. Only inventory with outbound orders in the last 7 days is considered in this metric.
- Inventory approaching out of stock - inventory with an on-hand quantity that is less than the configured threshold
- Out of stock inventory - inventory with an on-hand quantity of less than 1
- Inventory with predicted out of stock dates - inventory with one or more predicted out of stock events in the next 30 days
- **Shipments with a late estimated delivery ** - inbound shipments that are estimated to arrive later than their committed delivery date
The business concepts in the inventory dashboard are driven by the Inventory
, Order
, Order Line
, and Shipment
business objects. Supporting information exists in master data objects Product
and Location
. All attributes and thresholds are part of the standard data model, and do not require any registration of custom attributes.
KPI concepts are pre-calculated for the purposes of query performance and to allow additional functionality such as sorting. These calculations are derived data rules which are included as part of the standard SCIS data model.
See the Order and shipment KPI calculations page for details on those KPIs.
Inventory calculations are as follows:
quantityAboveUpperThreshold = quantity - quantityUpperThreshold
quantityBelowLowerThreshold = quantityLowerThreshold - quantity
daysOfSupplyAboveUpperThreshold = daysOfSupply - daysOfSupplyUpperThreshold
daysOfSupplyBelowLowerThreshold = daysOfSupplyLowerThreshold - daysOfSupply
All json registration content is available in this zip file. Please note - you will need to change the tenantId in all json files to your tenant ID
- Register rules
- Load sample data
- Register work queues
- Create dashboard widgets
- Create view-all page widgets
- Create view-all pages
- Create detail pages
- Create dashboard
- Test on https://www.supply-chain.ibm.com/
POST https://api.ibm.com/infohub/run/metadata/api/v1/na/derived/rules
- Register data import rules to pick up files from object storage (if your tenant does not already have CSV import rules registered)
- Load sample data to your COS bucket
POST https://api.ibm.com/infohub/run/metadata/api/v1/na/workqueues
POST https://api.ibm.com/infohub/run/metadata/api/v1/na/
POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/widget_definitions
POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/subscriptions/subscribe
-
Filter widgets
- Active filters widget: widget-inventoryDashboardActiveFilterWidget.json
- Filter widget: widget-inventoryDashboardFilterWidget.json
-
Donut widgets
- Past due shipments delivery: widget-pastDueShipmentDeliveryDonutWidget.json
- Shipments with a late estimated delivery: widget-estimatedLateShipmentDeliveryDonutWidget.json
-
Meter widget
- Inbound shipments: widget-supplyShipmentsMeterChartWidget.json
-
Summary widgets
- Days of supply: widget-dashboardMetricsSummaryWidget.json
- Order lines with late planned delivery: widget-inventoryLatePlannedDeliverySummaryWidget.json
- Open inbound orders: widget-openSalesOrdersKpiSummaryWidget.json
- Open outbound orders: widget-openSupplyOrdersKpiSummaryWidget.json
- Inbound number open order lines: widget-inventoryInboundNumberOpenOrderLinesKpiSummaryWidget.json
- Inbound number open orders: widget-inventoryInboundNumberOpenOrdersKpiSummaryWidget.json
- Inbound quantity purchased last 30 days: widget-inventoryInboundQuantityPurchasedLastThirtyKpiSummaryWidget.json
- Inbound total quantity in transit: widget-inventoryInboundTotalQuantityInTransitKpiSummaryWidget.json
- Inbound total quantity open orders: widget-inventoryInboundTotalQuantityOpenOrdersKpiSummaryWidget.json
- Inbound total quantity open orders: widget-inventoryInboundTotalQuantityOpenOrdersKpiSummaryWidget.json
- Number of customers kpi: widget-inventoryNumberCustomersKpiSummaryWidget.json
- Outbound open order lines: widget-inventoryOutboundNumberOpenOrderLinesKpiSummaryWidget.json
- Outbound open orders: widget-inventoryOutboundNumberOpenOrdersKpiSummaryWidget.json
- Outbound quantity purchased last 30 days: widget-inventoryOutboundQuantityPurchasedLastThirtyDaysKpiSummaryWidget.json
- Outbound total quantity in transit: widget-inventoryOutboundTotalQuantityInTransitKpiSummaryWidget.json
- Outbound total quantity open order: widget-inventoryOutboundTotalQuantityOpenOrderKpiSummaryWidget.json
- Shipment metrics inbound: widget-shipmentMetricsInboundSummaryWidget.json
- Inbound total order lines metrics: widget-orderInboundTotalOrderLinesMetricsSummaryWidget.json
- Inbound total shipments metrics: widget-orderInboundTotalShipmentsMetricsSummaryWidget.json
- Outbound product metrics: widget-orderOutboundProductsMetricsSummaryWidget.json
- Outbound total order lines metrics: widget-orderOutboundTotalOrderLinesMetricsSummaryWidget.json
- Outbound total shipments metrics: widget-orderOutboundTotalShipmentMetricsSummaryWidget.json
- Inbound products metrics summary: widget-orderInboundProductsMetricsSummaryWidget.json
-
List widgets
- Inventory approaching out of stock: widget-inventoryApproachingOosListWidget.json
- Out of stock inventory: widget-inventoryOutOfStockListWidget.json
- Inventory with excess quantity: widget-inventoryWithExcessQuantityListWidget.json
-
Header widgets
- Inventory details title widget: widget-inventoryDetailsTitleHeaderWidget.json
- Order details title widget: widget-orderDetailTitleHeaderWidget.json
- Shipment details title widget: widget-shipmentTitleHeaderWidget.json
-
Tab panel widgets
- Inventory details tab panel widget: widget-inventoryDetailsTabsTabPanelWidget.json
- Order inbound tab panel widget: widget-orderInboundTabsTabPanelWidget.json
- Order outbound tab panel widget: widget-orderOutboundTabsTabPanelWidget.json
-
Accordion widgets
- Inventory details accordion widget: widget-inventoryDetailsAccordionWidget.json
- Order details inbound accordion widget: widget-orderDetailInboundAccordionWidget.json
- Order details outbound accordion widget: widget-orderOutboundAccordionWidget.json
- Shipment details accordion widget: widget-shipmentDetailsAccordionInboundGridDetailsWidget.json
-
Processor widgets
- Inventory detail processor widget: widget-inventoryDetailProcessorWidget.json
-
Time series
- Inventory time series widget: widget-inventoryTimeSeriesWidget.json
-
Grid details
- Inventory time series widget: widget-shipmentDetailsAccordionInboundGridDetailsWidget.json
POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/widget_definitions
POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/subscriptions/subscribe
- Total shipments view all: widget-inventoryTotalShipmentsViewAllListWidget.json
- Past due shipments view all: widget-inventoryPastDueShipmentsViewAllListWidget.json
- Estimated late shipments view all: widget-inventoryEstimatedLateShipmentsViewAllListWidget.json
- Excess days of supply view all: widget-inventoryWithExcessDaysOfSupplyViewAllListWidget.json
- Average days of supply view all: widget-averageDaysOfSupplyViewAllListWidget.json
- Inventory approaching out of stock view all: widget-inventoryApproachingOosViewAllListWidget.json
- Inventory out of stock view all: widget-inventoryOutOfStockViewAllListWidget.json
- Inventory with excess quantity view all: widget-inventoryWithExcessQuantityViewAllListWidget.json
- Inventory with late planned delivery view all: widget-inventoryLatePlannedDeliveryViewAllListWidget.json
- Open supply order kpi view all: widget-openSupplyOrderKpiViewAllListWidget.json
- Open sales order kpi view all: widget-openSalesOrderKpiViewAllListWidget.json
POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/layout_templates
- Meter chart view all: template-inventoryTotalShipmentsViewAllLayoutTemplate.json
- View all for past due shipments donut chart Layout template: template-inventoryPastDueShipmentsViewAllLayoutTemplate.json
- View all for estimated late shipment delivery donut: template-inventoryEstimatedLateShipmentsViewAllLayoutTemplate.json
- Excess days of supply link: template-excessDaysOfSupplyLayoutTemplate.json
- Average days of supply link: template-averageDaysOfSupplyLayoutTemplate.json
- Inventory approaching out of stock: template-inventoryApproachingOosViewAllLayoutTemplate.json
- inventory out of stock: template-inventoryOutOfStockLayoutTemplate.json
- inventory with excess quantity: template-inventoryWithExcessQuantityViewAllLayoutTemplate.json
- inventory late planned delivery: template-inventoryLatePlannedDeliveryViewAllLayoutTemplate.json
- open supply orders: template-openSupplyOrderKpiViewAllLayoutTemplate.json
- open sales orders: template-openSalesOrderKpiViewAllLayoutTemplate.json
POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/widget_definitions
POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/subscriptions/subscribe
- Inbound shipment: See SCIS default detail pages
- Inventory: See SCIS default detail pages
- Inbound order: See SCIS default detail pages
- Outbound order: See SCIS default detail pages
POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/layout_templates
then POST https://api.ibm.com/supplychainui/run/na/api/v1/wms/subscriptions/subscribe
Subscription body should be of the form:
{
"id": "<TEMPLATE_ID>_subscription",
"offeringId": "SCO",
"state": "ACTIVE",
"subscriptionConfig": [],
"tenantId": "<tenant_id>",
"templateId": "<TEMPLATE_ID>"
}
Inventory dashboard tab: template-defaultInventoryLayoutTemplate.json