DataContainers and DataTopics - DS
This page explains the key structure of IMDE data schemas: how reusable DataTopics are included into DataContainers and constrained by Profiles, so that the same schema can be reused at every level of the trade and packaging hierarchy and across the supply chain. The Measurements topic is used as the worked example throughout.
Key concepts
| Term | Meaning | Status |
|---|---|---|
| DataContainer | The entity or host that includes DataTopics and carries identity and role. | exists (extend) |
| Container Type | What the container is: Item (Trade Item / Product), Packaging Assembly Unit, Packaging Element, Packaging Material, Composite Material, Party, Person. | new code list |
| DataTopic Measurements | The single reusable measurement topic, included per container. | exists (extend) |
| Measurement Block | The includable parts inside the topic: Dimensions, Weights, Contents, Capacity, Thickness, AlternativeMeasurements. | partly exists |
| Measurement (atomic type) | A value plus a unit, reused everywhere. | exists |
| Profile | The rule set saying which blocks are valid or required for a given Container Type and supply chain position. | new |
| Object level vs component level | Measurement on the container itself versus on its child containers. | terminology |
DataContainer
A DataContainer is the entity or host that includes one or more DataTopics. It carries identity, such as a GTIN, and a role. A DataContainer can contain child DataContainers, which forms both the trade item hierarchy (for example a case that contains bottles) and the packaging decomposition (a Packaging Assembly Unit that contains Packaging Elements, Materials and Composite Materials).
The Container Type states what the container is. It is a new code list (CONTAINER_TYPE).
| Container Type | Typical role |
|---|---|
| Item | Trade Item (Sales, Grouped or Transport Unit) or Product |
| Packaging Assembly Unit | A physical packaging component or SKU item in a Bill of Materials |
| Packaging Element | Lowest functional packaging part |
| Packaging Material | One or more materials that make up an element |
| Composite Material | An individual layer within a composite material |
| Party | An organisation (uncommon for measurements, supported for reuse) |
| Person | An individual (uncommon for measurements, supported for reuse) |
A single physical object can appear as more than one container depending on its role in the supply chain. An empty bottle is a Packaging Assembly Unit inside a filled product, and at the same time a Trade Item when the bottle supplier sells it. It is one object that is described by two container roles, reusing the same topic.
DataTopic
A DataTopic is a modular, reusable block of structure that is modelled once and expressed across the IMDE layers. A topic is included per container. Depending on the position in the supply chain, topics are included or excluded, and the same topic can be reused across different Container Types. Measurements is one DataTopic; other topics (for example composition or compliance) are included alongside it on the same container.
Measurement Block
Within a topic, blocks are the includable parts. For Measurements the blocks are Dimensions, Weights, Contents, Capacity, Thickness and AlternativeMeasurements. All blocks are optional in the base schema. A Profile decides which blocks apply for a given container.
Measurement (atomic type)
The atomic Measurement is a value plus a unit of measure, drawn from the Unit of Measure code list. Every block reuses this one type, which keeps Trade Item, Product, Packaging and Material Thickness measurements consistent and makes schema generation in XLS, XML and JSON straightforward.
Profile
A Profile is the rule set that says which blocks are valid or required for a given Container Type and supply chain position. The base schema stays permissive so one schema validates everywhere; the Profile enforces what is allowed and required.
| Profile | Container Type | Blocks typically populated |
|---|---|---|
| TradeItem | Item (Sales / Grouped / Transport Unit) | Dimensions, Weights (gross) |
| Product | Item (Product) | Weights (net, drained), Contents, AlternativeMeasurements |
| Packaging | Packaging Assembly Unit, Packaging Element | Dimensions (shape aware), Weights (packaging), Capacity |
| MaterialThickness | Packaging Material, Composite Material | Thickness |
Object level and component level
Object level is a measurement on the container itself. Component level is a measurement on its child containers. A Packaging Assembly Unit carries object level packaging measurements (shape, dimensions, packaging weight, and capacity for rigid containers), and component level measurements on its Packaging Elements, Packaging Materials and Composite Materials, where material thickness lives.
Reuse across the supply chain
Because topics are included or excluded per container, the position in the supply chain decides what travels in a message. The structure does not change; only the included topics and populated blocks change.
| Position | Container in focus | Measurements included |
|---|---|---|
| Primary material or converter | Packaging Material, Composite Material | MaterialThickness; packaging weight |
| Component supplier (SIM intake) | Packaging Assembly Unit | Packaging at object level plus the decomposition to material thickness |
| Brand owner (PIM) | Sales, Grouped and Transport Units | Trade Item and Product; Packaging via the Bill of Materials |
| Retailer (PPWR manufacturer, EPR producer) | Sales Unit | Trade Item and Product |
Examples
The two examples below reuse the same Measurements topic. Namespaces are illustrative.
Television in a box (nested containers)
One Sales Unit (Item) holds the Trade Item measurements, a Product (the television) in the Bill of Materials, and a Packaging Unit with three Packaging Assembly Units. The outer box is decomposed down to composite material layers.
<Item Type="Item" Role="TradeItem" GTIN="08712345000018">
<m:Measurements Profile="TradeItem"><!-- outer box dimensions + gross weight --></m:Measurements>
<BillOfMaterials>
<Product Type="Item" Role="Product" GTIN="08712345111016">
<m:Measurements Profile="Product">
<!-- net weight, content, and alternative measurements: -->
<!-- AlternativeMeasurement WITHOUT_STAND / WITH_STAND -->
</m:Measurements>
</Product>
<PackagingUnit>
<PackagingAssemblyUnit PackagingTypeFamily="RIGID_BOX"><!-- outer box -->
<m:Measurements Profile="Packaging"><!-- Box: L,W,H + packaging weight --></m:Measurements>
<PackagingElement>
<PackagingMaterial MaterialType="CorrugatedBoard" Composite="true">
<m:Measurements Profile="MaterialThickness"><!-- total caliper 4 mm --></m:Measurements>
<CompositeMaterial Layer="OuterLiner">
<m:Measurements Profile="MaterialThickness"><!-- 200 um --></m:Measurements>
</CompositeMaterial>
<!-- Fluting, InnerLiner layers -->
</PackagingMaterial>
</PackagingElement>
</PackagingAssemblyUnit>
<PackagingAssemblyUnit PackagingTypeFamily="MOULDED_FIBRE"><!-- inlay --></PackagingAssemblyUnit>
<PackagingAssemblyUnit PackagingTypeFamily="FLEXIBLE"><!-- protective bag, LDPE film --></PackagingAssemblyUnit>
</PackagingUnit>
</BillOfMaterials>
</Item>Bottle as a standalone Packaging Assembly Unit
The same topic, on a different root container, as received from a bottle supplier. No Sales Unit and no Bill of Materials. A bottle is a Rigid Containers family, so the object level carries Nominal Capacity.
<PackagingAssemblyUnit Type="PackagingAssemblyUnit" GTIN="08712345555014"
PackagingTypeFamily="RIGID_CONTAINER">
<m:Measurements Profile="Packaging">
<m:Outershape>Cylinder</m:Outershape>
<m:Dimensions>
<m:Diameter Value="65"><m:Units><m:Unit Type="DataReceiver">Mm</m:Unit></m:Units></m:Diameter>
<m:Height Value="223"><m:Units><m:Unit Type="DataReceiver">Mm</m:Unit></m:Units></m:Height>
</m:Dimensions>
<m:Weights>
<m:PackagingWeight Value="22"><m:Units><m:Unit Type="DataReceiver">Gr</m:Unit></m:Units></m:PackagingWeight>
</m:Weights>
<m:Capacity>
<m:NominalCapacity Value="500"><m:Units><m:Unit Type="DataReceiver">Ml</m:Unit></m:Units></m:NominalCapacity>
</m:Capacity>
</m:Measurements>
<PackagingElement>
<PackagingMaterial MaterialType="rPET">
<m:Measurements Profile="MaterialThickness">
<m:Thickness>
<m:Nominal Value="0.30"><m:Units><m:Unit Type="DataReceiver">Mm</m:Unit></m:Units></m:Nominal>
</m:Thickness>
</m:Measurements>
</PackagingMaterial>
</PackagingElement>
</PackagingAssemblyUnit>The empty bottle, when sold by the supplier, is also a Trade Item, so the same container can include the Measurements topic a second time with the TradeItem profile. This is the reuse principle: one topic, many containers, selected by Profile and by supply chain position.