Smart Warehouse Digital Twin and Restocking Intelligence

A smart warehouse command center that turns the AdventureWorks warehouse into a 3D digital twin. Every aisle, level and bin can be explored in real time while tracking occupancy, inventory value and stock levels, giving operations a spatial view of the warehouse instead of static tables.

On top of the 3D experience, the solution implements a demand-driven restocking engine and an alerting system. Using the last six months of sales, it classifies each product into stock categories (New, Unsaleable, Safety, Unsafe, Critical), calculates an estimated reorder date and automatically sends email & in-app notifications when critical thresholds are reached or occupancy exceeds defined limits.

  • Data Domain Warehouse Operations Inventory Optimization Procurement
  • Technique 3D Digital Twin Restocking Intelligence Alerts & Notifications
  • Tech Stack Power BI DAX 3D Custom Visuals

Smart Warehouse Digital Twin Dashboard

Live Report

Case Study: Smart Warehouse Digital Twin & Restocking Intelligence

1,380

Total Bins

93.33%

Occupancy Rate

$29.2M

Inventory Value

842K

Inventory Stock Quantity

Warehouse operations and procurement teams needed more than a table of stock numbers. They wanted to see how full the warehouse really is, where products physically live, and which items require attention before they become a problem. Previous reports showed totals, but gave no spatial context and no restocking guidance.

The Smart Warehouse Digital Twin and Restocking Intelligence solution delivers a 3D, bin-level view of the warehouse combined with a replenishment engine. Users can zoom into aisles and levels, inspect individual bins, and instantly understand occupancy and inventory value. At the same time, DAX-based measures compute safety stock, stock categories and estimated reorder dates, while an alerting layer sends email and in-app notifications when critical thresholds are breached.

The Challenge

  • No spatial visibility: Ops teams could not answer simple questions such as “Where is this product located?” or “Which aisles are under- or over-utilized?”
  • Manual restocking decisions: Reorder timing was driven by gut feel and occasional Excel extracts rather than recent demand and safety stock calculations.
  • Late reaction to risk: There were no automatic alerts when inventory dropped into critical zones or when warehouse occupancy exceeded safe limits.

The Solution & Architecture

  • 3D warehouse digital twin: A custom 3D visual renders the warehouse with aisles, levels and bins. Filters allow narrowing down to specific product categories, products, aisles and levels while all KPIs recalculate in real time.
  • Bin-level inventory measures: DAX measures such as Inventory Stock Quantity, Occupancy Rate and Inventory Value are computed at bin, aisle and level granularity, providing a clear picture of how space and capital are used.
  • Demand-driven restocking engine: Using the last 6 months of sales, the model calculates safety stock ratios, classifies items into stock categories (New, Unsaleable, Safety, Unsafe, Critical) and derives an Estimated Reorder Date per product.
  • Alerting system: When products fall into Critical or Unsafe stock categories, or when overall occupancy crosses configured thresholds, the system triggers email and notification alerts so warehouse and procurement teams can react immediately.

Core Restocking & Reorder Logic (DAX)

The following DAX pattern powers the stock categorisation and estimated reorder date logic used in the restocking dashboard and alerting rules.

RestockingLogic.dax
// 1- Total inventory units currently stored in bins
Inventory Stock Quantity =
SUM ( Inventory[UnitsPlaced] )

// 2- Total product quantity sold in the last 6 months
Last 6M Product Count =
VAR Last6MonthsDate =
    [Last 6 Month Date]      // e.g. 30 June 2013
VAR TodayDate =
    [Today]                  // e.g. 31 December 2013
RETURN
CALCULATE (
    [Product Count],         // total units sold for the product
    vFactSales[OrderDate] >= Last6MonthsDate,
    vFactSales[OrderDate] <= TodayDate
)

// 3- Safety stock ratio: how many 6-month demand periods
// are currently sitting in inventory
Safety Stock =
DIVIDE ( [Inventory Stock Quantity], [Last 6M Product Count], BLANK () )

// 4- Stock segmentation used for restocking decisions
Stock Category =
SWITCH (
    TRUE (),
    ISBLANK ( Bin[Last Order Date] )
        && ISBLANK ( Bin[Safety Stock] ), "New Product",
    ISBLANK ( Bin[Safety Stock] ),          "Unsaleable Product",
    Bin[Safety Stock] > 1,                  "Safety Stock",
    Bin[Safety Stock] >= 0.5
        && Bin[Safety Stock] <= 1,          "Unsafe Stock",
    Bin[Safety Stock] < 0.5,                "Critical Stock Item",
    "Unknown"
)

// 5- Average daily demand in the last 6 months
Average Daily Demand 6M =
DIVIDE ( [Last 6M Product Count], 180 )

// 6- How many days the current inventory will last
// at the recent demand rate
Additional Day =
DIVIDE ( [Inventory Stock Quantity], [Average Daily Demand 6M], BLANK () )

// 7- Estimated reorder date based on current stock and demand.
// If we cannot compute additional days, show the stock category instead.
Estimated Reorder Date =
IF (
    ISBLANK ( [Additional Day] ),
    MAX ( 'vDimProduct'[Stock Category] ),
    [Today] + [Additional Day]
)

These measures feed both the restocking table view and the alerting rules. Critical and Unsafe stock categories, combined with near-term reorder dates, are used to drive targeted notifications to warehouse supervisors and buyers.