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)

Fields

24 fields · 2 key

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 InventSumon 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
-- ============================================================
-- 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;

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

Relationships

1-hop neighbors — click a table to navigate there. 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

Data Entities That Expose This Table

Only aggregate on-hand export entities exist — for the transaction-level ledger, land InventSum (and InventTrans) as raw tables.