How to Map Product IDs Across ERP, PIM, Ecommerce and a DPP
GTIN, SKU, ERP material IDs, PIM IDs, lots and serials are not synonyms. Build a typed crosswalk that preserves scope, granularity and cardinality.

Jump around this page
- In 60 seconds
- Why identifier strings are not synonyms
- Start with namespace and entity level
- Cardinality: one-to-one is not the default
- What a good crosswalk can explain
- Matching, confidence, conflict and review
- How mapping changes across model, variant, SKU, lot and item
- Where mappings live and how they version
- Examples across ERP, PIM, ecommerce, EPCIS and DPP
- Identity mapping is not the same as runtime integration
- Implementation checklist
- What to do now
- Keep exploring
- Sources and evidence boundary
In 60 seconds
Do not map product IDs as bare key = value pairs. Build a crosswalk that records what each identifier identifies, who owns it and at what product level, so every match can be explained and reviewed later.
- GTIN, ERP material ID, PIM record ID and ecommerce SKU can point at the same product while describing different scopes. They are not synonyms.
- Every identifier needs a namespace and an entity level before a match is accepted.
- One-to-one is not the default. Mappings can be one-to-many, many-to-one, time-bounded or have no safe match.
- Keep four states: confirmed, conflict, unknown and review. Do not auto-merge ambiguity away.
A GTIN, retailer SKU, ERP material number and PIM record ID can all point towards "the same product" while describing different scopes. Mapping fails when an integration treats those identifiers as interchangeable strings instead of typed references with ownership, entity level and cardinality.
The goal is not to find one ID and replace the rest. It is to create a crosswalk that can explain what each identifier identifies, who owns it, how records were matched and when that match stops being valid.
A GTIN can be an excellent cross-system join key without becoming the master record itself. And where a match is ambiguous, preserve conflict, unknown or review state rather than auto-merging records.
Why identifier strings are not synonyms
Enterprise systems use identifiers for different jobs.
A GTIN is allocated within the GS1 identification system. An ERP material ID is typically native to an enterprise system. A PIM record ID identifies an object inside the PIM. An ecommerce SKU may be merchant- or channel-specific. Lot and serial identifiers can push identity to a finer operational level.
The accepted evidence shows these identifiers can coexist in ordinary product architectures. SAP product master APIs expose product entities that can include GTINs alongside system-native product records. GS1 Digital Link can represent GS1 identifiers as resolvable Web identifiers. Neither source says those identifiers are synonyms. (SAP Product Master APIs, GS1 Digital Link URI Syntax 1.7.0)
For the underlying identifier vocabulary and allocation rules, use the canonical identifier page. This article owns the mapping problem after those identifiers exist.
The dangerous shortcut is:
GTIN = SKU = ERP ID = PIM ID
That may appear to work in a small catalogue where records happen to align one-to-one. It fails as soon as the systems represent different product levels, market scopes, packs, lots, items or channel constructs.
Start with namespace and entity level
Every identifier in a crosswalk should answer two questions before any match is accepted:
- What namespace does this value belong to?
- What entity level does it identify?
The string 12345 is meaningless without its namespace. It could be an ERP material number, a PIM row ID, a merchant SKU or part of another identifier scheme.
Entity level matters just as much. A model-level record is not automatically interchangeable with a sellable variant, a SKU, a lot or an individual serialised item.
The rules for which facts belong at model, variant and SKU level are owned elsewhere. The decision about lot, serial or item operational identity belongs to the granularity guide. The mapping layer should carry those distinctions rather than redefine them.
It also helps to know who controls each namespace and where each identifier is valid.
Cardinality: one-to-one is not the default
One of the most common mapping errors is assuming every system has exactly one record for exactly one record in every other system.
Real product systems can produce:
- one-to-one mappings, where one source record corresponds to one target record;
- one-to-many mappings, where one upstream product maps to multiple channel SKUs or regional records;
- many-to-one mappings, where several system records intentionally roll up to one broader product representation;
- time-bounded mappings, where the relationship changes after a reclassification, migration or correction;
- no safe mapping, where evidence is insufficient and the record must remain unresolved.
GS1's EPCIS model reinforces why granularity matters. Event data can refer to identified objects while remaining distinct from product master data. In the GS1 US Culinary Collaborations case, GTIN/product master data and EPCIS traceability events coexist across processors, logistics providers and downstream customers. So the join between event identity and product identity is part of the architecture, not a reason to flatten everything into one record. (GS1 EPCIS 2.0, GS1 US Culinary Collaborations case study)
For the deeper event context, use what EPCIS events add to product master data.
What a good crosswalk can explain
Keep identifier mappings explicit, reviewable and tied to the right product level. The test is whether you can answer a simple operational question later: why did we decide these two records represented the same thing?
Matching, confidence, conflict and review
A production mapping process needs more than "matched" and "not matched".
At minimum, preserve four useful states:
- confirmed: the relationship is supported by an accepted deterministic or authoritative mapping;
- conflict: two credible mappings disagree;
- unknown: there is not enough evidence to establish a mapping;
- review: a person or controlled process must decide before the join is published.
ServiceNow's Identification and Reconciliation Engine provides a useful enterprise analogy. IntegrationHub ETL imports and transforms third-party data, then uses identification and reconciliation processing to avoid duplicate and inconsistent configuration items. This is a CMDB pattern, not a product-ID standard, but it illustrates the value of treating reconciliation as a first-class process. (ServiceNow IntegrationHub ETL)
The critical rule is do not auto-merge ambiguity away.
Retries and replay are another reason not to rely on arrival order. Debezium's outbox pattern and Apache Kafka's idempotence work both show that duplicate-safe processing is a deliberate reliability concern. So a mapping engine should distinguish "we saw this assertion again" from "a new relationship exists". (Debezium Outbox Event Router, Apache Kafka idempotent producer rationale)
How mapping changes across model, variant, SKU, lot and item
The mapping problem changes as identity becomes more granular.
| Entity level | Typical mapping question | Common failure |
|---|---|---|
| Model | Do several market or sellable records roll up to the same design family? | Using model identity for variant-specific facts |
| Variant | Does colour/size/configuration have its own globally or locally recognised identity? | Joining to a broader model record |
| SKU | Which sellable or channel-specific record corresponds to the variant? | Assuming one SKU exists across all channels |
| Lot / batch | Which production grouping does an event or compliance record refer to? | Attaching batch state to every unit indiscriminately |
| Serial / item | Which individual physical item is involved? | Pushing item history back into a product-class master |
So the mapping layer should retain entity level on both sides of the relationship. If two identifiers refer to different levels, the crosswalk may still be valid, but the cardinality and intended use must be explicit.
So a model-level record should not automatically absorb lot or serial state. The relationship is a join, not a licence to collapse the levels.
Where mappings live and how they version
There is no requirement that every mapping live inside the DPP database.
A crosswalk may live in a dedicated identity service, MDM capability, integration layer, PIM extension, DPP publication layer or another governed store. Some data can also remain virtualised. Microsoft Dataverse virtual tables, for example, can expose externally stored data without replication, subject to product constraints. (Microsoft Power Platform virtual tables)
What matters is that the mapping is:
- addressable by namespace and entity level;
- versioned or time-bounded when relationships change;
- available to the systems that need to reconcile records;
- auditable enough to explain the match method and state;
- removable or supersedable without destroying history.
A stable global identifier can be a powerful join key without carrying the full product record. GS1 Resolver allows an identified entity to link to multiple resources, and GS1 Digital Link makes GS1 identifiers usable in resolvable Web identifiers. That is routing and linking capability, not a requirement to aggregate all product data into the identifier itself. (GS1-Conformant Resolver 1.2.1, GS1 Digital Link URI Syntax 1.7.0)
Examples across ERP, PIM, ecommerce, EPCIS and DPP
A simplified cross-system example:
| System | Identifier | Entity level | Relationship |
|---|---|---|---|
| GS1 | GTIN A | Variant | Global join key for the sellable variant |
| ERP | Material 4711 | Variant | Authoritative enterprise product record |
| PIM | Product 8842 | Variant | Content/enrichment representation of the same variant |
| Ecommerce | SKU BLUE-M | SKU | Channel sellable record mapped to GTIN A |
| EPCIS | GTIN A + lot L27 | Lot/event context | Event identity linked to the variant and lot |
| DPP | Passport record P991 | Publication projection | Resolves the governed view using the crosswalk |
The example is intentionally generic. It demonstrates the mapping structure, not a universal identifier allocation rule.
Reference architectures also show multiple identifiers coexisting in distributed systems. Eclipse Tractus-X EcoPass uses a Digital Twin Registry for discovery, submodel servers for data and connectors for controlled access. That demonstrates coexistence of registry, asset and data-service identities, but it is not evidence of universal Catena-X adoption. (Eclipse Tractus-X EcoPass operation view)
Vendor cases from Akeneo similarly show real ERP-PIM-commerce mapping work. GSM55 connected Akeneo PIM to ERP and Magento, while the DELFINGEN case describes API movement between ERP, PIM and downstream channels across more than 95,000 products. The vendor-reported productivity outcomes in those cases are not independent evidence and should not be treated as general ROI. (Akeneo GSM55, Akeneo DELFINGEN)
One product does not require one internal ID everywhere
A useful architecture can keep each system's own identifier while governing the relationship between them:
Shopify SKU ↔ GTIN ↔ ERP ID ↔ PIM ID ↔ retailer article ID
The crosswalk says that these records refer to the same product at a stated level. It does not pretend that the strings are synonyms. Use GS1 Application Identifiers when a GS1 key or qualifier needs to be expressed in GS1 syntax, and what happens when somebody scans the code for runtime resolution.
If no shared identifier has been established, return to the first product identifier decision.
A crosswalk connects the product inside your operating stack. The next question is how the same identity becomes useful to systems and people outside it. Continue to GS1 Digital Link.
Identity mapping is not the same as runtime integration
These two problems are tightly connected, but they are not the same.
Identity mapping asks: which records refer to the same real entity, at what level and with what confidence?
Runtime integration asks: how should changes move between the systems, with what replay, validation, failure and publication controls?
Once the crosswalk is trustworthy, hand the transport question to how to connect a DPP to ERP, PIM and PLM without creating a second product master.
Keeping the two problems separate prevents a common architectural mistake: treating a successful API call as proof that the correct records were joined.
Implementation checklist
Before putting a cross-system product mapping into production, check that you can answer all of these:
- [ ] Is every identifier stored with its namespace rather than as a bare string?
- [ ] Is entity level explicit on both sides of the mapping?
- [ ] Is the namespace owner or allocator clear?
- [ ] Is scope clear: global, enterprise, retailer, marketplace, market or another bounded context?
- [ ] Is cardinality explicit rather than assumed to be one-to-one?
- [ ] Is the match method recorded?
- [ ] Can ambiguous joins remain unknown, conflict or review instead of being auto-merged?
- [ ] Is the mapping time-bounded or versioned when relationships change?
- [ ] Can event identities join to the correct product and operational level without flattening event history into master data?
- [ ] Can a person or machine explain why two records were joined?
- [ ] Is the runtime movement of updates delegated to the enterprise DPP integration architecture rather than hidden inside the crosswalk?
Before the mapping step, validate the GTIN before you map it to anything: a wrong check digit is cheaper to find here than three systems later.
What to do now
Create the crosswalk before you automate synchronisation. Start with namespace and entity level, then record how each match was made, when it applies and whether it's confirmed.
The strongest rule is also the simplest: do not make an ambiguous match irreversible. A good crosswalk can explain why two records were joined and what evidence would invalidate that join.
Keep exploring
The questions this page usually raises next.
- Related questionNext questionLot, Serial or Item: Which Identity Level Does an Operational Use Case Need?Choose lot, serial or item-level identity from the operational action and evidence needed, not from an assumption that every…
- Related questionNext questionWhat Do EPCIS Events Add to Product Master Data?See what EPCIS event data adds to product master data: what happened, where, when, business step, disposition and transformation…
Sources and evidence boundary
The core evidence for this article comes from GS1 EPCIS, GS1 Resolver and GS1 Digital Link; SAP product master documentation; ServiceNow identification/reconciliation patterns; Microsoft virtualisation; Debezium and Kafka reliability patterns; and Eclipse Tractus-X EcoPass architecture. Together they establish that multiple identifier types, event identities and distributed data sources can coexist without being treated as synonyms.
Akeneo customer cases show ERP-PIM-commerce mapping in real deployments. They are useful implementation examples, but their vendor-reported productivity claims are not independent ROI evidence and are not used here as such.
-
Standards body
-
Standards body
What would change this answer: a new mandatory DPP identity model that prescribes different cross-system mapping semantics, or authoritative standards that materially change the treatment of identifier namespace, granularity or distributed joins.
Does this reach your products?
Give ActivateDigital one product and it works out which obligations apply from the product's own character, and says which it cannot decide.