Sales Orders held by inventory shortage or credit hold in Business Central, ranked by revenue at stake. The morning unblocking queue.
At a glance
Alert table of Sales Orders blocked from progressing in Business Central, ranked by revenue at stake. Each row is a stuck SO with a reason code: Credit Hold, Inventory Shortage, Pending Approval (>72hrs), or Item Tracking Missing.
| What it counts | Open Sales Orders where ANY of: Customer.Blocked = 'All' or 'Ship' (credit hold), Sales Line.Outstanding Quantity > Item.Inventory (insufficient stock), Status = 'Pending Approval' for > 72 hours, or Sales Line.Item Tracking required but missing. Each row carries the SO Number, Customer Name, Amount, Block Reason, Days Blocked, and a Vortex IQ-suggested action. |
| VAT / tax treatment | Net of VAT, parity with Open SO Value. |
| Inventory shortage check | Uses Item.Inventory minus Reservation Entry.Quantity (stock already promised to other Orders) vs Sales Line.Outstanding Quantity. Drop-Ship lines are excluded (no inventory commitment). |
| Credit Hold check | Customer.Blocked field, plus Customer.Credit Limit exceeded by sum of Sales Header.Amount + open Customer Ledger Entry balance. |
| Pending Approval threshold | 72 hours by default. Tunable per workspace via the field map. |
| Currency | Multi-Company: each SO converted to Reporting Currency for ranking. |
| Time window | RT (real-time snapshot) |
| Alert trigger | >0 high-value blocked (any SO above $10K stuck for >24 hours) |
| Sentiment key | blocked_so |
| Roles | owner, finance, operations |
Calculation
Calculated automatically from your Microsoft Dynamics 365 data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US wholesale electronics distributor on Business Central Online, $90M revenue. Snapshot 14 Apr 26.| SO Number | Customer | Amount (USD) | Block Reason | Days Blocked | Suggested Action |
|---|---|---|---|---|---|
| SO-208441 | Acme Tech Distribution | $184,200 | Credit Hold (Limit Exceeded) | 4 | Release on prepayment OR raise limit |
| SO-208533 | NorthEast Components Inc | $96,400 | Inventory Shortage (12 lines) | 6 | Substitute SKUs OR backorder |
| SO-208612 | TechHub Wholesale | $54,800 | Pending Approval >72hrs | 5 | Escalate to Finance Director |
| SO-208694 | DeltaCorp Industries | $48,200 | Credit Hold (Customer.Blocked = Ship) | 9 | Customer review meeting |
| SO-208702 | RegionalTechCo | $34,600 | Item Tracking Missing | 2 | Warehouse to assign Lot No. |
| Top 5 total | $418,200 |
- **The top stuck SO (90M / year merchant invoices roughly 184K Order is significant working-capital drag. The Controller’s morning routine starts here.
- Inventory shortage on SO-208533 ($96K) is upstream symptom of the OOS with SO Demand cross-connector finding. 12 lines short = a multi-SKU demand spike that purchasing did not see coming. The cross-connector card surfaces ad-spend on the same OOS SKUs (a double-loss: spending money to acquire customers for products you cannot ship).
- Pending Approval >72hrs ($54K) is process drag. BC’s approval workflow holds SOs above a threshold for Finance signoff. If approvers are out of office or notifications are misrouted via Microsoft Teams, SOs sit in queue. The Approval Workflow audit log shows who is the bottleneck.
- Customer.Blocked = Ship ($48K stuck 9 days) is a flag-day case. Some Customer relationship has gone sideways (overdue >90 days, or contract dispute). Until a senior person resolves with the customer, the SO sits. The 9-day age makes this card’s
>0 high-value blockedalert fire daily. - Total stuck: 640K total blocked. That is roughly 8.5% of Open SO Value. At Net-30 terms, every stuck day is 1/30th of monthly revenue lost in DSO drift. The Controller’s job is to drive this number to zero by Friday afternoon.
Sibling cards merchants should reference together
| Card | Why pair it with Sales Orders Blocked |
|---|---|
| Open Sales Order Value | The denominator. This card’s % is the share blocked. |
| Orders on Credit Hold | The Credit Hold subset as its own time series. |
| Customer Credit Utilisation | Predictive: customers approaching their limit will become Credit Hold tomorrow. |
| Low Stock Alerts | The Inventory Shortage subset as a forward warning. |
| OOS with SO Demand | Cross-connector: ties inventory shortages to live commerce demand and ad spend. |
| SO to Invoice Lead Time | Tells you whether blockages are systemic (slow lead times) vs episodic. |
| Revenue Gap vs Commerce | Blocked SOs feed directly into Released-Not-Invoiced on the gap card. |
Reconciling against the vendor’s own dashboard
Where to look in Business Central:Sales > Sales Orders > filtered view “Blocked Orders” (custom filter) Role Centre > Order Processor profile > Cues > Pending Approval, Inventory Issue tiles Customer Card > drill to Sales Orders > filter Blocked Power BI > Sales Insights > Blocked Orders tile (if installed)There is no single native “Blocked Orders” page; merchants typically build a saved filter combining
Customer.Blocked != ' ' OR a calculated insufficient-stock condition. The Order Processor Role Centre cues approximate this for one Company at a time.
Why our list may legitimately differ from a manual filter:
| Reason | Direction | Why |
|---|---|---|
| Reservation Entry handling | Card may show fewer | Some Sales Lines have stock reserved (Reservation Entry rows). The card subtracts reserved stock before flagging shortage; a naive Inventory < Outstanding Quantity filter does not. |
| Approval-age computation | Card uses 72hr threshold | BC’s standard view shows all Pending Approval, regardless of age. The card highlights only > 72hr (configurable). |
| Drop-Ship exclusion | Card may show fewer | Drop-Ship lines have no inventory commitment; the card excludes them from Inventory Shortage flagging. |
| Multi-Company aggregation | Card materially more | The card sums across all connected Companies; BC’s per-Company view shows one. |
| Customer.Blocked variants | Either | BC has Blocked = All (no transactions) and Blocked = Ship (post but do not ship). The card flags both; some manual filters look at one only. |
| Card | Direction | Notes |
|---|---|---|
| shopify.fulfillment_pending | Commerce side correlated | Shopify orders blocked at the warehouse layer correlate with BC SOs blocked on inventory. |
| stripe.payment_failed | Upstream signal | Failed Stripe payments often generate BC SOs on Credit Hold. |
Known limitations / merchant FAQs
What is the right ratio of blocked to total open SOs? < 5% is healthy. 5 to 10% suggests a process or staffing gap (slow approvers, tight credit limits, lean inventory buffer). > 10% is a firefighting situation; pair with Customer Credit Utilisation and Low Stock Alerts to see whether the cause is concentrated in customers or SKUs. How does BC’sCustomer.Blocked = Ship differ from Blocked = All?
Blocked = All halts every transaction with that customer (Order, Invoice, Payment receipt). Blocked = Ship lets the order be created and invoiced, but the warehouse cannot ship until released. Blocked = Invoice allows shipping but blocks invoicing. The card flags all three.
Are Pending Prepayment SOs counted?
Yes if the prepayment is overdue. BC’s Status = Pending Prepayment means the customer must pay an upfront percentage before the rest of the order ships. If that prepayment is overdue (Sales Header Prepmt. Payment Terms Code matured), the SO is effectively blocked.
My approval workflow uses Microsoft Power Automate. Does the card see it?
Yes via OData. The Sales Header’s Status = Pending Approval is set regardless of whether approvals route through native BC or Power Automate. The age timer starts at the status transition.
Does the card include orders blocked by AL Extension validation?
Yes if the extension sets the Sales Header Blocked field or pushes the Status into a recognised state. Custom blocking states added by extensions need to be registered in the field map.
How is “high-value” defined for the alert trigger?
Default: any SO above 50K) for low-noise alerts, some lower ($1K) for high-touch DTC.
Can I auto-resolve Credit Hold from this card?
Vortex IQ surfaces the action; the merchant clicks through to the BC Customer Card to release. We do not write to BC for high-risk actions like credit-limit overrides. See the AI OS Action Engine roadmap for safe auto-resolve workflows.
Multi-Company tenant: does the card prioritise across Companies?
Yes. The list is sorted by USD-equivalent Amount descending so the biggest stuck Order anywhere in the group floats to the top. Each row carries the Company Name as a column.
Does this card surface Returns Orders blocked?
Yes. A Return Order with Document Type = Return Order blocked on a Customer Block fires the alert. Most merchants want this because a stuck return delays the Sales Credit Memo.