D365 Reference
EcoResProduct
mainShared across companiesThe shared product master — one row per product across all companies; released products in InventTable point back to it by RecId
Module: Product InformationNo company partition
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/ValidToeffectivity 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
9 fields · 1 key
9 fields.
| Key | Field | EDT | Description | Type | Length | Flags |
|---|---|---|---|---|---|---|
| Key | DisplayProductNumber | ProductNumber | The product number shown to users; the natural key of the shared product | string | 20 | |
| ProductType | Whether the product is an item or a service | enum | ||||
| SearchName | Searchable short name for the product | string | 60 | |||
| RecId | RecId | The 64-bit surrogate key released products reference by Product | int64 | |||
| InstanceRelationType | Subtype discriminator of the shared product supertype — tells you whether the row is a distinct product or a product master with variants | int64 | ||||
| ServiceType | For service products, whether the service is a plain service or a rights/subscription type | enum | ||||
| PdsCWProduct | Whether the product is catch-weight — quantities then carry both a nominal and an actual weight unit | enum | ||||
| EngChgProductOwnerId | Engineering product owner responsible for change management on the product | string | ||||
| EngChgProductType | RecId reference to the engineering product type controlling versioning rules for the product | int64 |
Field provenance: hand-curated.
Boilerplate SQL
Starting point for reading EcoResProduct 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
2 parameters not filled: <catalog>, <schema>
-- ============================================================
-- Table : EcoResProduct The shared product master — one row per product across all companies; released products in InventTable point back to it by RecId
-- Purpose: Column-selected read of EcoResProduct — auto-generated from field metadata
-- Grain : One row per DisplayProductNumber
-- 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
p.displayproductnumber AS "The product number shown to users; the natural key of the shared product",
p.producttype AS "Whether the product is an item or a service", -- enum: decode p.producttype via GlobalOptionsetMetadata join — see quirks guide #enums
p.searchname AS "Searchable short name for the product",
p.recid AS "The 64-bit surrogate key released products reference by Product",
p.instancerelationtype AS "Subtype discriminator of the shared product supertype — tells you whether the row is a distinct product or a product master with variants",
p.servicetype AS "For service products, whether the service is a plain service or a rights/subscription type", -- enum: decode p.servicetype via GlobalOptionsetMetadata join — see quirks guide #enums
p.pdscwproduct AS "Whether the product is catch-weight — quantities then carry both a nominal and an actual weight unit", -- enum: decode p.pdscwproduct via GlobalOptionsetMetadata join — see quirks guide #enums
p.engchgproductownerid AS "Engineering product owner responsible for change management on the product",
p.engchgproducttype AS "RecId reference to the engineering product type controlling versioning rules for the product"
FROM <catalog>.<schema>.ecoresproduct p
ORDER BY p.displayproductnumber;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
ON inventtable.product = ecoresproduct.recidON ecoresproducttranslation.product = ecoresproduct.recidON unitofmeasureconversion.product = ecoresproduct.recid
Data Entities That Expose This Table
- EcoResProductTranslationEntity — Product translations — one record per product and language with the localized name and description, keyed by product number
- EcoResProductV2Entity — Products — the shared product master export (displayed as 'Products V2'), carrying product type, dimension-group assignments, and translated name and descriptionPrimary source
- EcoResReleasedProductV2Entity — Released products — the item master joined to its shared product, the standard export for item attributesReleasedProductsV2
More Product Information tables
- EcoResProductTranslationLanguage-specific product names and descriptions — one row per shared product and language, joined back to EcoResProduct by RecId; the table product names actually live in
- EcoResStorageDimensionGroupStorage dimension group master — shared setup that decides which storage dimensions (site, warehouse, location) are active and mandatory for the products assigned to it, including whether advanced warehousing applies
- EcoResTrackingDimensionGroupTracking dimension group master — shared setup that decides whether batch and serial tracking are active for the products assigned to it, and where serials are captured
- InventItemGroupItem group master — one row per company and item group, the reporting and posting bucket items are assigned to via InventItemGroupItem
- InventItemGroupItemThe link table that assigns each released item to its item group — in D365 the item group is NOT a column on InventTable; this table is where the assignment lives. Cross-company: it carries explicit ItemDataAreaId / ItemGroupDataAreaId columns instead of a DataAreaId partition
- InventModelGroupItem model group master — one row per company and model group, controlling inventory policy for its items: costing model, negative-stock rules, and whether the product is stocked at all