You steward supplier data for a living, which means you know a truth most traceability pitches skate past: the hard part of any shared record is not the events — it is agreeing on who is who. Every network-model visibility vendor solves party identity the same way: join our platform, map your partners into our directory, and our directory becomes the authority. The authority, in other words, is the membership.
This post is about the alternative you already operate. The party identifiers a custody record needs are riding, today, in the trading documents your company already exchanges — the GLNs in your purchase orders, your suppliers' ASNs, the party records behind them in your data pool. Both sides of every trade already agreed to those identifiers, contractually, before any traceability conversation started. The record does not need a new authority. It needs to keep the one the paperwork already carries.
The three party types, quoted
The Core Business Vocabulary — CBV 2.0, the companion vocabulary to EPCIS 2.0 — defines in §7.4 exactly three source/destination types for an event, and the first is the load-bearing one:
owning_party — "the party who owns (or is intended to own) the objects at the originating/ terminating endpoint of the business transfer."
The other two are possessing_party — who holds the goods at each endpoint, which is not always who owns them, a distinction your DSD doors demonstrate daily — and location, the physical place itself. Three types, and §8.7 gives their identifier syntax: party GLNs and location GLNs — the same GS1 identifiers your item master and trading-partner records already govern (the GS1 identification machinery is worked engineer-literal at barcoding.dev, by visibility.cloud).
Now look at any supplier's despatch advice in your EDI archive. Its party loops name ship-from, ship-to, buyer and seller — GLN-qualified, per standard retail practice, in the very documents your compliance team already tests suppliers on. Every field a receiving event's party context needs is sitting in the document that announced the delivery.
The worked mapping: one receiving event, before and after
Before. A receiving event as most systems capture it: a case of GTIN A, lot L4471, scanned at your DC door, timestamped. Party context: whatever the capture system knows about itself — usually your own facility and nothing else. Who sold these goods, who owned them at origin, which supplier site despatched them: all of it lives one system away, joined later, by a person, if an investigation makes it worth the hour.
After. The same event, with the document's party loops mapped onto the standard's party fields — a conformant fixture, illustrative identifiers, real grammar:
{ "type": "ObjectEvent", "action": "OBSERVE", "bizStep": "receiving", "eventTime": "2026-07-31T06:12:00.000Z", "eventTimeZoneOffset": "-06:00", "epcList": ["urn:epc:id:sgtin:0614141.107346.2019"], "readPoint": { "id": "urn:epc:id:sgln:0614142.07346.0" }, "bizTransactionList": [ { "type": "desadv", "bizTransaction": "urn:epc:id:gdti:0614141.06012.5501" }, { "type": "po", "bizTransaction": "urn:epc:id:gdti:0614142.06012.8812" } ], "sourceList": [ { "type": "owning_party", "source": "urn:epc:id:pgln:0614141.00001" }, { "type": "location", "source": "urn:epc:id:sgln:0614141.00777.0" } ], "destinationList": [ { "type": "owning_party", "destination": "urn:epc:id:pgln:0614142.00001" }, { "type": "location", "destination": "urn:epc:id:sgln:0614142.07346.0" } ] }
The mapping that produced it reads like a steward's crosswalk, because it is one: the document's seller party → source owning_party; buyer party → destination owning_party; ship-from → source location; ship-to → destination location — each as the GLN the document already carried. The ASN and PO references ride the same event's bizTransactionList (that half of the join is worked in po and desadv Are Core CBV). Core fields, zero extensions, and the event validates against GS1's official pinned EPCIS 2.0 schema exactly as shown. What the record adds beyond the standard — the attested observer at the door, who, always distinct from capturedBy, the warrantor account — rides alongside as a conformant superset, never in place of the standard's own fields.
Why paperwork beats membership
State the architectural difference plainly, because it decides who holds authority over your record. In the network model, party identity is assigned by the platform: the vendor's directory says who your counterparties are, the mapping is the vendor's asset, and the record's party context is only as authoritative as everyone's continued subscription. In the document model, party identity is already bilateral law: the GLNs came from the trading documents both sides exchange under contract, agreed before the record existed, verifiable by either side against their own archive — no platform's directory in the chain of authority at all. A counterparty, an auditor, or a regulator reading the event above can check every party identifier against paperwork they already hold. That is party context that survives any vendor, including this one — and it is one instance of this record's general rule: verifiable without joining anything.
For your own tooling, note what this is not: it is not a GDSN replacement, and it does not touch your attribute pipes. Your data pool governs class-grain product truth; the event record captures occurrence-grain custody truth; the GLN is the identifier they share. The full grain-by-grain comparison is worked in GDSN vs. EPCIS, and the document layer's executive read is the ASN/PO context brief.
The steward's audit
The practical question this leaves you is one you can answer from your own archive this week: how many of your trading partners' documents carry qualified GLNs today — and at which levels? Party loops complete on the big suppliers and blank on the long tail? Location GLNs present but buyer/seller parties free-texted? That audit — supplier by supplier, loop by loop — is the true readiness measure for document-sourced party context, and it belongs on the next supplier scorecard revision regardless of any vendor decision: every gap it finds is a gap in your trading data today, not just in a future record. The suppliers already clean on it cost nothing to join. The rest were always going to need the conversation.
The door here is the get-started interview: your email first, then a short interview that branches on your answers — the retail branch asks about the last traceability request you received and what you sent, who physically receives a DSD delivery at a store and whether that person is recorded anywhere, and when your next POS refresh lands.