Skip to content
D365 Reference

InventSum

transaction

Aggregated on-hand quantities by item and inventory dimension — physical, available, and posted balances

Module: InventoryCompany-partitioned (DataAreaId)
What the badges mean
main
Table group: how F&O categorizes the table's role — main entity, group/header, transaction, worksheet header, worksheet line, reference, parameter, or framework.
Shared across companies
The table carries no DataAreaId— rows aren’t partitioned per company, so a query never needs (and can’t use) a company filter here (see the quirks guide).
Date-effective
The table carries a ValidFrom/ValidTo effectivity window — a join without a date filter multiplies every key by its history (see the quirks guide).
In field listings, K marks a key field.

Fields

24 fields · 2 key

24 fields.

Table fields: key flag, field name, extended data type, description, data type, length, and quirk flags. 24 fields.
KeyFieldEDTDescriptionTypeLengthFlags
KeyItemIdItemIdItem the on-hand balance is forstring20
KeyInventDimIdInventDimIdInventory-dimension combination the balance is aggregated at; join to InventDim to resolve site / warehouse / locationstring25
PhysicalInventPhysically on-hand quantity for the item and dimensionreal
AvailPhysicalPhysically available quantity (on-hand less physical reservations)real
PostedQtyFinancially posted quantity for the item and dimensionreal
ClosedWhether the on-hand row is closed (zero balance) and excluded from active on-handenum
PhysicalValueValue of the physically posted quantity for the item and dimensionreal
PostedValueFinancially posted value for the item and dimensionreal
AvailOrderedTotal available quantity including ordered receipts, less ordered reservationsreal
OrderedQuantity on ordered receipts (purchase orders and other inbound supply)real
OnOrderQuantity on open issue demand (sales orders and other outbound demand)real
ArrivedQuantity arrived but not yet received into on-handreal
ReceivedQuantity physically received (product receipt posted, not yet invoiced)real
RegisteredQuantity registered at receipt but not yet postedreal
PickedQuantity picked for outbound orders but not yet deductedreal
DeductedQuantity deducted (packing slip posted, not yet invoiced)real
ReservPhysicalQuantity reserved against physical on-handreal
ReservOrderedQuantity reserved against ordered (not yet received) supplyreal
QuotationIssueQuantity tied up on open sales quotationsreal
QuotationReceiptQuantity expected from open purchase quotations (RFQs)real
ClosedQtyWhether the quantity side of the record is fully settled by inventory closingenum
IsExcludedFromInventoryValueWhether the record is excluded from inventory value reportingenum
LastUpdDateExpectedDate the expected (ordered/on-order) buckets last changed; unset rows carry the 1900-01-01 sentineldate
LastUpdDatePhysicalDate the physical buckets last changed; unset rows carry the 1900-01-01 sentineldate

Field provenance: hand-curated.

Boilerplate SQL

Starting point for reading InventSum on Databricks — enums are decoded, 1900-01-01 dates are wrapped to NULL, and the DataAreaId anchor is in place. Set your Unity Catalog location, company, and filter values below; they’re substituted into the SQL and the copy button.

Query parameters

4 parameters not filled: <catalog>, <schema>, <company>, <ItemId>

-- ============================================================
-- Table  : InventSum Aggregated on-hand quantities by item and inventory dimension — physical, available, and posted balances
-- Purpose: Column-selected read of InventSum — auto-generated from field metadata
-- Grain  : One row per company (dataareaid) + ItemId + InventDimId
-- Notes  : Auto-generated skeleton for Synapse Link / Fabric Link-landed F&O data (lowercase column names). Enums decoded inline where verified; datetimes stored in UTC; 1900-01-01 dates are sentinels mapped to NULL. System/audit columns omitted — see the quirks guide.
-- ============================================================
SELECT
  s.itemid AS "Item the on-hand balance is for",
  s.inventdimid AS "Inventory-dimension combination the balance is aggregated at; join to InventDim to resolve site / warehouse / location",
  s.physicalinvent AS "Physically on-hand quantity for the item and dimension",
  s.availphysical AS "Physically available quantity (on-hand less physical reservations)",
  s.postedqty AS "Financially posted quantity for the item and dimension",
  s.closed AS "Whether the on-hand row is closed (zero balance) and excluded from active on-hand",  -- enum: decode s.closed via GlobalOptionsetMetadata join — see quirks guide #enums
  s.physicalvalue AS "Value of the physically posted quantity for the item and dimension",
  s.postedvalue AS "Financially posted value for the item and dimension",
  s.availordered AS "Total available quantity including ordered receipts, less ordered reservations",
  s.ordered AS "Quantity on ordered receipts (purchase orders and other inbound supply)",
  s.onorder AS "Quantity on open issue demand (sales orders and other outbound demand)",
  s.arrived AS "Quantity arrived but not yet received into on-hand",
  s.received AS "Quantity physically received (product receipt posted, not yet invoiced)",
  s.registered AS "Quantity registered at receipt but not yet posted",
  s.picked AS "Quantity picked for outbound orders but not yet deducted",
  s.deducted AS "Quantity deducted (packing slip posted, not yet invoiced)",
  s.reservphysical AS "Quantity reserved against physical on-hand",
  s.reservordered AS "Quantity reserved against ordered (not yet received) supply",
  s.quotationissue AS "Quantity tied up on open sales quotations",
  s.quotationreceipt AS "Quantity expected from open purchase quotations (RFQs)",
  s.closedqty AS "Whether the quantity side of the record is fully settled by inventory closing",  -- enum: decode s.closedqty via GlobalOptionsetMetadata join — see quirks guide #enums
  s.isexcludedfrominventoryvalue AS "Whether the record is excluded from inventory value reporting",  -- enum: decode s.isexcludedfrominventoryvalue via GlobalOptionsetMetadata join — see quirks guide #enums
  CASE WHEN CAST(s.lastupddateexpected AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(s.lastupddateexpected AS DATE) END AS "Date the expected (ordered/on-order) buckets last changed; unset rows carry the 1900-01-01 sentinel",  -- 1900-01-01 sentinel → NULL
  CASE WHEN CAST(s.lastupddatephysical AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(s.lastupddatephysical AS DATE) END AS "Date the physical buckets last changed; unset rows carry the 1900-01-01 sentinel"  -- 1900-01-01 sentinel → NULL
FROM <catalog>.<schema>.inventsum s
-- Dimension expansion: uncomment to resolve site / warehouse / location / batch
-- LEFT JOIN <catalog>.<schema>.inventdim id ON id.inventdimid = s.inventdimid AND id.dataareaid = s.dataareaid
WHERE
  s.dataareaid = '<company>'
  -- AND s.itemid = '<ItemId>'
ORDER BY s.itemid;

Verified September 2026

Relationships

Diagram of 1-hop neighbors — join details below. RecId and InventDim edges are highlighted; they’re the joins newcomers most often get wrong.

Join details

  • InventSumInventDimInventDim · N:1
    ON inventsum.inventdimid = inventdim.inventdimid AND inventsum.dataareaid = inventdim.dataareaid

Data Entities That Expose This Table

More Inventory tables

Maintained by Summit Analytics, a supply chain analytics practice. The tools and references are free — the consulting is selective.

Part of the Summit Analytics reference library.

Work with the practice

Not affiliated with or endorsed by Microsoft. Microsoft, Dynamics 365, and Microsoft Fabric are trademarks of the Microsoft group of companies.