RAIN RFID and EPCIS 2.0 Traceability Architecture: Item-Level Tracking from Reader to Event Repository (2026)

RAIN RFID and EPCIS 2.0 Traceability Architecture: Item-Level Tracking from Reader to Event Repository (2026)

RAIN RFID and EPCIS 2.0 Traceability Architecture: Item-Level Tracking from Reader to Event Repository

A single dock-door RFID portal can report thousands of raw tag reads per minute, yet a trading partner needs exactly one fact from it: these 48 serialised items, packed on this pallet, left this dock at 14:02 at 4.1 °C. Everything between those two numbers is architecture. A RAIN RFID EPCIS system is the pipeline that turns noisy radio observations from UHF Gen2 tags into a small number of business events that another company can trust and query.

It matters now because the pressure moved from pilots to regulation and retailer mandates. The US FDA food traceability rule now has a July 2028 compliance date, the EU Digital Product Passport is being phased in through product-specific delegated acts, and GS1 has refreshed both the Gen2 air interface and the EPCIS event model.

You will leave with a layer-by-layer reference architecture, the radio physics that limit read rates, an edge-filtering design, a fully worked EPCIS 2.0 JSON-LD event, and the failure modes that sink real deployments.

What this covers: UHF RFID Gen2 and its regional bands, tag memory and SGTIN-96 encoding, reader protocols, edge filtering, EPCIS 2.0 and CBV 2.0 event modelling, REST capture and query, GS1 Digital Link, privacy and the Digital Product Passport link.

Context and Background

RAIN RFID is the industry brand for passive UHF RFID that follows the GS1 EPC UHF Gen2 air interface, which ISO incorporated as ISO/IEC 18000-63. A passive tag has no battery. It harvests energy from the reader’s carrier, then answers by modulating its antenna’s reflection, a technique called backscatter. Tags cost cents, need no line of sight, and can be read in bulk, which is why apparel retail, logistics and aviation baggage adopted them first.

The radio standard has a long lineage. GS1’s reference site lists Gen2 2.0.0 in October 2013, 2.0.1 in April 2015, 2.1 in July 2018 (harmonised with ISO/IEC 18000-63), version 3.0 in 2023, and the current release 3.0.1, ratified in February 2026 as an errata fix (GS1 Gen2 standard). Practitioners still say “Gen2v2” for the 2013 security features and “Gen2v3” for the 2023 additions.

Radio data alone is not traceability. The second half of the stack is EPCIS, the Electronic Product Code Information Services standard. EPCIS defines what a visibility event looks like and how systems capture and query it. Version 1.0 appeared in 2007, 1.1 in May 2014 and 1.2 in September 2016. EPCIS 2.0, ratified in June 2022 together with the Core Business Vocabulary (CBV) 2.0, added JSON and JSON-LD syntax, a REST binding, sensor data and a new AssociationEvent (GS1 EPCIS reference). ISO published the same content as ISO/IEC 19987:2024 in March 2024, and the GS1 reference site now serves EPCIS 2.0.1 artefacts alongside CBV 2.0.0.

The incumbents are clear. Reader and tag-chip vendors such as Impinj, Zebra, NXP and others dominate the edge. Middleware once came as bespoke “RFID middleware” products; today it is increasingly a container on a gateway publishing to MQTT or Kafka. Event repositories range from open-source EPCIS servers to cloud traceability platforms used by large retailers.

This post sits next to our Digital Product Passport data model built on GS1 and AAS, which covers what a passport contains. Here the angle is the event pipeline that feeds it. My thesis for RAIN RFID EPCIS systems: traceability quality is decided at the edge filter and in the event model, not at the antenna. Teams over-invest in read range and under-invest in deciding which reads become business facts.

RAIN RFID EPCIS Reference Architecture: Six Layers from Tag to Query

Direct answer: A RAIN RFID EPCIS architecture has six layers. Serialised UHF Gen2 tags carry an EPC. Readers and antennas inventory them. An edge agent filters, deduplicates and infers direction. An event builder emits EPCIS 2.0 events with CBV vocabulary. A repository captures them over REST. Partners query or subscribe, resolving identifiers through GS1 Digital Link.

RAIN RFID EPCIS reference architecture from UHF Gen2 tags through edge filtering to an EPCIS 2.0 event repository

Figure 1: Reference RAIN RFID EPCIS architecture. Radio reads stay local; only business events cross the network boundary into the repository, where partners query them and resolve identifiers via GS1 Digital Link.

Read the figure left to right. Tags on items, cases and pallets answer readers through antennas mounted at dock doors, conveyors, shelves or handhelds. Each reader streams raw tag reports to an edge agent on the same site network. The edge agent applies time windows, signal-strength thresholds and zone logic, then hands clean observations to an event builder that knows the business context: which dock, which shipment, which purchase order. The builder posts EPCIS documents to a capture interface. The repository stores immutable events and exposes query and subscription interfaces. Master data, such as product descriptions and location names, lives beside the repository rather than inside each event.

The key boundary is the dotted line between site and cloud. Raw reads are high-volume, low-value and noisy. Business events are low-volume, high-value and contractual. Moving the boundary is the single most consequential design decision.

Layer 1: the tag is a tiny addressable memory

A Gen2 tag exposes four logical memory banks. Bank 00, Reserved, holds the 32-bit kill password and 32-bit access password. Bank 01, EPC, holds a stored CRC, the Protocol Control (PC) word and the Electronic Product Code itself, usually 96 or 128 bits. Bank 10, TID, holds the chip manufacturer and model identifier, and on most modern chips a factory-locked unique serial. Bank 11, User, is optional extra memory that many low-cost retail chips omit.

The EPC bank carries the identity your business cares about. For a trade item that is normally an SGTIN, a serialised Global Trade Item Number. The 96-bit SGTIN-96 encoding, defined in the GS1 EPC Tag Data Standard, packs six fields:

Field Bits Meaning
Header 8 0x30 identifies SGTIN-96
Filter 3 Packaging level hint, e.g. 1 = point-of-sale item
Partition 3 Splits the next 44 bits between company prefix and item reference
GS1 Company Prefix 20–40 Brand owner’s prefix
Item reference 24–4 Indicator digit plus product reference
Serial 38 Numeric serial, up to 274,877,906,943

The TID matters for security, not identity. Because the TID serial is written and locked at the chip factory, a backend can bind EPC and TID at commissioning and later flag a tag whose EPC appears with a different TID, a cheap clone detector. It is not cryptographic authentication; that requires the Gen2v2 Authenticate command with a crypto suite from the ISO/IEC 29167 family, which only some chips support.

Layer 2: readers and the protocol to the host

Readers implement the air interface and expose tag reports to software. For over a decade the vendor-neutral host protocol has been LLRP, the Low Level Reader Protocol, whose version 1.1 GS1 published in October 2010. LLRP is a binary message protocol over TCP, conventionally on port 5084. It configures ROSpecs (reader operation specifications) and AccessSpecs, and streams tag reports with antenna ID, peak RSSI (received signal strength indicator), phase angle on capable readers, and timestamps.

LLRP is powerful but awkward for modern teams: binary encoding, stateful connections and verbose specs. Vendors therefore added higher-level interfaces. Impinj’s IoT Device Interface, for example, offers a REST configuration API and streams events over HTTP streaming, MQTT or Kafka, reporting each read as a TagInventoryEvent with EPC, antenna port and peak RSSI (Impinj IoT Device Interface). Other vendors offer comparable MQTT-first connectors. The practical consequence is that your edge agent should normalise vendor payloads into one internal “read” schema before any logic runs.

Layer 3: the edge agent decides what happened

Raw reads say “tag X was heard by antenna 3 at −58 dBm”. Business needs “item X passed outbound through dock 3”. The edge agent bridges that gap with smoothing windows, deduplication, RSSI and phase heuristics, and zone state machines. It also buffers events when the uplink is down, the same pattern we cover for MQTT store-and-forward edge gateways. Figure 3 below details this pipeline.

Layer 4 to 6: event builder, repository, query

The event builder joins clean observations with business context: open shipments from the warehouse management system, the purchase order, the destination. It emits EPCIS events that answer five questions. What objects, by EPC list, class-level quantity or parent container. When, as event time and time-zone offset. Where, as a read point and business location. Why, as business step, disposition and business transactions. And, new in EPCIS 2.0, how: sensor data and certification information.

The repository stores those events append-only. It exposes the EPCIS 2.0 REST binding, whose OpenAPI definition includes resources such as /capture, /events, /eventTypes, /epcs/{epc}/events, /bizSteps and /bizLocations, plus named queries and WebSocket subscriptions. Partners never see raw reads. They see events, filtered by access policy.

Two properties of this RAIN RFID EPCIS layering justify it. First, it isolates volatility. Reader firmware, antenna placement and filtering thresholds change monthly; the EPCIS event contract with partners should change rarely. Second, it isolates trust. Events are the unit that gets signed, hashed, shared and audited, so they must be few, meaningful and stable.

Walk-through: From Radio Inventory to a Worked EPCIS 2.0 Event

This section follows one pallet out of a distribution centre. We start at the air interface, move through the edge filter, encode the identifiers, and finish with a complete EPCIS 2.0 JSON-LD document and the REST calls that capture and query it.

Step 1: how a Gen2 inventory round actually works

UHF RFID Gen2 is a reader-talks-first protocol. The reader powers the field, optionally issues Select commands to narrow which tags participate, then starts an inventory round with a Query command carrying a parameter Q. Each tag loads a random number in the range 0 to 2^Q − 1 into a slot counter. Tags whose counter hits zero reply with a 16-bit random number, RN16. If exactly one tag replies, the reader acknowledges it with ACK and the tag backscatters its PC word, EPC and CRC. QueryRep advances the slot for everyone else.

UHF RFID Gen2 inventory sequence with Select, Query, RN16, ACK and EPC reply between reader and tag

Figure 2: A simplified Gen2 inventory and access exchange. Collisions and empty slots are handled by adjusting Q; reading the TID requires a further Req_RN handle and a Read command.

The figure shows why bulk reading has a ceiling. With Q set to 4 there are 16 slots per round. Too few slots for the tag population means collisions; too many means wasted empty slots. Readers adapt Q dynamically, and the Gen2 specification gives an example algorithm. Reading anything beyond the EPC, such as the TID for clone checks, costs extra commands per tag and lowers throughput noticeably.

Sessions are the other mechanism worth understanding. Each tag keeps an inventoried flag, A or B, for each of four sessions, S0 to S3. After a tag is read in a session its flag flips, and it stays quiet until the flag decays back or the reader targets the other value. Session S0 flags persist only while the tag is powered, S1 decays within seconds even when powered, and S2 and S3 persist for a period after the tag loses power. The design consequence is direct: use S0 or S1 when you want repeated reads of the same tag, for direction finding at a portal; use S2 or S3 when you want to count a large static population once, such as a stock take of 10,000 garments, so already-read tags stop shouting over unread ones.

Gen2v3 added features aimed at crowded environments. GS1’s fact sheet lists reducing “tag clutter” so only intended tags reply, letting readers skip replies from tags that would brown out before finishing, smoother multi-reader operation, and simpler access to User and TID data (GS1 Gen2v3 fact sheet). Benefits depend on both chip and reader support, so check the specific silicon before designing around them.

Step 2: regional bands and the physics of read range

RAIN RFID operates in sub-GHz UHF, but each region allocates a different slice and power limit. The figures below come from GS1’s November 2024 overview of UHF allocations and the RAIN Alliance spectrum chart; regulations change, so confirm with the national regulator before deployment.

Region Band (MHz) Max power Access
USA, Canada 902–928 4 W EIRP Frequency hopping
EU lower band 865–868 2 W ERP Fixed channels with transmit-time limits
EU upper band 915–921 4 W ERP Restricted, interrogate only when tags expected
India 865–867 4 W ERP —
China 920.5–924.5 2 W ERP Frequency hopping
Japan, licensed 916.7–920.9 4 W EIRP LBT or LBT-free
Brazil 902–907.5 and 915–928 4 W EIRP Frequency hopping

Two architectural consequences follow. First, a tag antenna tuned for 915 MHz loses some sensitivity at 866 MHz, so global supply chains choose broadband inlays and test in both bands. Second, readers shipped to the wrong region either break the law or perform poorly, so device provisioning must pin the regulatory region.

Read range in passive UHF is usually limited by the forward link: the tag must harvest enough power to turn on. A free-space link budget makes the mechanism concrete. The following numbers are illustrative, not a benchmark. Assume 36 dBm EIRP (4 W, the US limit), 915 MHz (wavelength about 0.328 m), a tag antenna gain of 2 dBi, and a chip turn-on sensitivity of −20 dBm. Free-space path loss is 20·log10(4πd/λ). At 5 m that is about 45.6 dB, so the tag receives roughly 36 − 45.6 + 2 = −7.6 dBm, a 12 dB margin. Solving for zero margin gives a free-space limit near 20 m.

Real deployments rarely approach that. Circularly polarised reader antennas reading linear tags lose about 3 dB. Liquids absorb UHF energy, and metal detunes tag antennas unless you use on-metal designs. Multipath creates nulls where reads vanish centimetres from strong spots. Body shadowing at checkout and densely packed cartons each subtract several more decibels. The architectural lesson is that read reliability is statistical, which is why the edge layer must reason over windows of reads rather than single observations.

Step 3: edge filtering turns reads into observations

The edge agent’s job is to convert a stream of raw reads into a much smaller set of trustworthy observations. Figure 3 shows a pipeline that works for dock-door portals and conveyor tunnels.

Edge filtering pipeline for RAIN RFID reads with RSSI threshold, deduplication, direction inference and EPCIS event emission

Figure 3: Edge filtering pipeline. Raw reads are normalised, gated by RSSI and antenna, smoothed in time windows, assigned a direction, then aggregated into EPCIS events and buffered locally until the repository acknowledges capture.

The stages, in order:

  1. Normalise. Convert vendor payloads into one schema: EPC hex, TID if read, reader ID, antenna port, RSSI, phase, frequency channel and a monotonic timestamp. Decode the EPC to a pure-identity URI here, once.
  2. Gate. Drop reads below an RSSI floor configured per antenna. Stray reads from the next dock door are the classic false positive, and they are usually weaker. Also drop EPCs whose header or company prefix is not one you expect, which removes noise from foreign tags.
  3. Smooth. Group reads per EPC into a sliding window, typically one to a few seconds for portals. A tag counts as present when it is seen a minimum number of times in the window, and absent only after a hold-off period with no reads. This hysteresis suppresses flicker caused by multipath nulls.
  4. Infer direction. With two antenna fields, inside and outside, the order of first strong read gives direction. More advanced systems use RSSI slope or phase change over time. Direction is what separates “shipped” from “a forklift drove past the door”.
  5. Aggregate. Join tags read together with a pallet tag or a known shipment. Emit one EPCIS ObjectEvent for the items and, where packing happens, an AggregationEvent linking items to the pallet’s serial shipping container code.
  6. Buffer and forward. Persist events locally with a sequence number and retry capture until the repository acknowledges them.

A worked capacity example shows why this matters. Illustrative numbers: a pallet of 48 tagged cases passing a four-antenna portal over four seconds might generate on the order of 20 reads per tag, nearly 1,000 raw reads. After filtering, the output is one ObjectEvent and perhaps one AggregationEvent, a reduction of roughly three orders of magnitude. A warehouse with 30 doors and similar traffic produces a few events per minute per door, which any repository handles easily. Shipping the raw reads to the cloud instead multiplies bandwidth, storage and query cost by the same factor and pushes noisy decisions to a place with less context.

Step 4: encode the identifiers once and correctly

Take a trade item with GTIN 09520123456788, using a 7-digit company prefix 9520123 from GS1’s example range, and serial 12345. The SGTIN-96 fields are header 0x30, filter 1 (point-of-sale item), partition 5 (24-bit company prefix, 20-bit item reference), company prefix 9520123, item reference 045678 (indicator digit 0 plus 45678), and serial 12345. Packing those bits yields the EPC bank hex value 3036450FEC2C9B8000003039.

The same item has three textual forms you will meet:

  • Tag URI: urn:epc:tag:sgtin-96:1.9520123.045678.12345, which keeps the filter value and encoding scheme.
  • Pure identity URI: urn:epc:id:sgtin:9520123.045678.12345, which EPCIS has used since version 1.
  • GS1 Digital Link URI: https://id.gs1.org/01/09520123456788/21/12345, where AI 01 is the GTIN and AI 21 the serial.

The pallet uses an SSCC, the serial shipping container code. With extension digit 0, our company prefix and serial reference 012345678, the SSCC is 095201230123456788, or urn:epc:id:sscc:9520123.0012345678 as an EPC URI. Locations use GLNs: dock 3 at GLN 9520123000011 becomes the SGLN urn:epc:id:sgln:9520123.00001.dock3.

GS1 Digital Link, now at URI Syntax release 1.7.0 ratified in August 2026, makes identifiers web-resolvable (GS1 Digital Link URI syntax). EPCIS 2.0 accepts Digital Link URIs for identifiers, restricted to forms that correspond to EPC pure-identity schemes, and the REST binding lets clients request either format with the GS1-EPC-Format header. My recommendation is to store URNs internally for compactness and stable joins, and render Digital Link at the edges where humans or consumer apps resolve them.

Step 5: a worked EPCIS 2.0 JSON-LD document

Here is the outbound shipment as an EPCIS 2.0 document. It contains two events: an AggregationEvent recording that two cases were packed onto the pallet, and an ObjectEvent recording that the pallet and its contents left dock 3, with a temperature reading from a logger on the pallet. The structure follows the EPCIS 2.0 JSON schema published by GS1. Identifiers use GS1’s documented example prefix; timestamps and readings are illustrative.

{
  "@context": [
    "https://ref.gs1.org/standards/epcis/epcis-context.jsonld",
    { "ex": "https://ns.example.com/epcis/" }
  ],
  "type": "EPCISDocument",
  "schemaVersion": "2.0",
  "creationDate": "2026-11-13T08:32:10.000Z",
  "epcisBody": {
    "eventList": [
      {
        "type": "AggregationEvent",
        "eventID": "urn:uuid:5f0c2a7e-3b1d-4c8e-9a51-2d7f6e1b9c40",
        "eventTime": "2026-11-13T08:21:47.200Z",
        "eventTimeZoneOffset": "+05:30",
        "parentID": "urn:epc:id:sscc:9520123.0012345678",
        "childEPCs": [
          "urn:epc:id:sgtin:9520123.045678.12345",
          "urn:epc:id:sgtin:9520123.045678.12346"
        ],
        "action": "ADD",
        "bizStep": "packing",
        "disposition": "in_progress",
        "readPoint": { "id": "urn:epc:id:sgln:9520123.00001.pack2" },
        "bizLocation": { "id": "urn:epc:id:sgln:9520123.00001" }
      },
      {
        "type": "ObjectEvent",
        "eventID": "urn:uuid:9b3e7d14-0a62-4f1c-8e27-6c5a1f0d3b88",
        "eventTime": "2026-11-13T08:32:02.450Z",
        "eventTimeZoneOffset": "+05:30",
        "epcList": [
          "urn:epc:id:sscc:9520123.0012345678",
          "urn:epc:id:sgtin:9520123.045678.12345",
          "urn:epc:id:sgtin:9520123.045678.12346"
        ],
        "action": "OBSERVE",
        "bizStep": "shipping",
        "disposition": "in_transit",
        "readPoint": { "id": "urn:epc:id:sgln:9520123.00001.dock3" },
        "bizTransactionList": [
          { "type": "po", "bizTransaction": "urn:epcglobal:cbv:bt:9520123000028:PO-88412" },
          { "type": "desadv", "bizTransaction": "urn:epcglobal:cbv:bt:9520123000011:ASN-20261113-07" }
        ],
        "sourceList": [
          { "type": "owning_party", "source": "urn:epc:id:pgln:9520123.00001" }
        ],
        "destinationList": [
          { "type": "owning_party", "destination": "urn:epc:id:pgln:9520123.00002" }
        ],
        "sensorElementList": [
          {
            "sensorMetadata": {
              "time": "2026-11-13T08:31:55.000Z",
              "deviceID": "urn:epc:id:giai:9520123.LOGGER-0042"
            },
            "sensorReport": [
              { "type": "gs1:MT-Temperature", "value": 4.1, "uom": "CEL" }
            ]
          }
        ],
        "ex:portalDirection": "outbound",
        "ex:readCount": 912
      }
    ]
  }
}

This is where RAIN RFID EPCIS design becomes concrete. Walk through the decisions encoded here, because each one is a modelling choice rather than syntax.

The @context array makes the document JSON-LD. The first entry is GS1’s published context, which maps short terms such as bizStep and values such as shipping to full CBV URIs. The second entry declares a namespace prefix for company extensions. Without a declared prefix, the extension fields ex:portalDirection and ex:readCount would be meaningless to a JSON-LD processor. Plain JSON consumers can ignore the context entirely, which is why EPCIS 2.0 JSON works for teams that never touch linked data.

The AggregationEvent comes first and uses action ADD. It establishes the parent-child relationship between the SSCC and two SGTINs at the packing station. EPCIS is cumulative: a later query for “what is on pallet 0012345678” replays ADD and DELETE aggregation events. Getting this right is what lets a retailer receive one pallet read and infer 48 case identities without reading every case.

The ObjectEvent uses OBSERVE, not ADD. ADD in an ObjectEvent means commissioning, the moment an EPC first comes into existence in a business process. Shipping observes objects that already exist. Mixing these up corrupts lifecycle queries, and it is one of the most common errors in early implementations.

Readpoint versus business location. The read point is the specific dock door where the observation happened. There is no bizLocation on the shipping event, deliberately. In CBV practice, objects in transit have no business location; the receiving event at the destination will set one. Setting the origin warehouse as bizLocation on a shipping event would tell queries the goods are still there.

Why, encoded as transactions. The purchase order and the despatch advice link this physical event to the commercial documents. That join is what lets accounts payable or a recall team move from “which shipments contained serial 12345” to “which customer received it”.

How, the sensor element. sensorElementList is the EPCIS 2.0 addition that carries condition data. sensorMetadata identifies the device and time; each sensorReport names a measurement type, value and unit of measure using UN/CEFACT codes such as CEL for degrees Celsius. The schema also permits minValue, maxValue, meanValue, standard deviation and percentile fields, which is the right way to summarise a logger’s trip rather than stuffing hundreds of samples into one event.

Event identity. Each event carries an eventID. A UUID URN works. CBV 2.0 also describes a hash-based event identifier derived from a canonical serialisation of the event, which lets two parties independently compute the same ID for the same event. Either way, an ID is what lets a later errorDeclaration retract or correct a specific event without deleting history.

Step 6: capture and query over the REST binding

Capture is asynchronous in the EPCIS 2.0 REST binding. A client posts a document to /capture; the server accepts it and returns a capture job location that the client polls at /capture/{captureID}. Servers advertise their maximum batch size through the GS1-EPCIS-Capture-Limit header, and the GS1-Capture-Error-Behaviour header lets clients choose whether a batch is all-or-nothing. The following sketch uses a hypothetical repository host and token:

# Capture: submit the document; expect 202 Accepted plus a Location header
curl -sS -X POST "https://epcis.example.com/capture" \
  -H "Content-Type: application/ld+json" \
  -H "GS1-EPCIS-Version: 2.0.0" \
  -H "Authorization: Bearer $TOKEN" \
  --data-binary @shipment-0012345678.jsonld -D -

# Poll the capture job returned in the Location header
curl -sS "https://epcis.example.com/capture/<captureID>" \
  -H "Authorization: Bearer $TOKEN"

# Query: all shipping events for one serialised item
curl -sS "https://epcis.example.com/events?EQ_bizStep=shipping&MATCH_anyEPC=urn:epc:id:sgtin:9520123.045678.12345" \
  -H "Accept: application/ld+json" \
  -H "GS1-EPC-Format: Always_GS1_Digital_Link" \
  -H "Authorization: Bearer $TOKEN"

The query parameters mirror the EPCIS SimpleEventQuery, with prefixes such as EQ_, GE_, LT_ and MATCH_. For continuous feeds, a client registers a named query and subscribes over WebSocket or an HTTPS callback, so a retailer can receive every shipping event addressed to its GLN as it is captured. Consult the GS1 OpenAPI file for the authoritative list of parameters and header values; implementations vary in how completely they support them.

A capacity note keeps expectations sane. Illustrative sizing: if a site emits 5,000 events per day at roughly 1.5 kB each, that is about 7.5 MB per day or under 3 GB per year per site before compression. Storage is not the constraint. Query patterns are: traceability queries walk aggregation hierarchies and EPC histories, so index by EPC, parent ID, event time and business step from day one.

The walk-through fixed a single pallet. Production programmes face three larger decisions: which data carrier to use at each packaging level, how to arrange repositories between trading partners, and how events feed a Digital Product Passport or digital twin.

Choosing the data carrier per packaging level

RAIN RFID is not always the right carrier. The table below compares the main options for item level traceability. It reflects general characteristics, not measured benchmarks.

Criterion RAIN RFID (UHF Gen2) 2D barcode with Digital Link NFC (HF, ISO/IEC 14443/15693) BLE beacon or UWB tag
Typical read range Metres Line of sight, centimetres to a metre Centimetres Tens of metres
Bulk reading without line of sight Yes No No Yes, but battery-powered
Unit cost Cents Near zero, printed Higher than RAIN inlays Dollars
Consumer phone readable No Yes, camera Yes Partly
Location precision Zone level Scan point Touch point Sub-metre with UWB
Best fit Cases, pallets, apparel items, returnable assets Consumer-facing item identity Authentication, consumer tap High-value assets, real-time location

The pattern most mature programmes converge on is dual-carrier: a RAIN inlay for supply-chain automation and a QR code carrying the same GTIN and serial as a GS1 Digital Link for consumers and regulators. Both resolve to the same EPC, so EPCIS events from the RFID side and scan events from the barcode side join cleanly. For high-value assets needing continuous position, combine with real-time location; our comparison of UWB real-time location systems in factories covers that layer. NFC’s strength is tap-to-authenticate, similar in spirit to the credential flows in our Aliro digital key explainer.

Repository topology between trading partners

EPCIS was designed for a world where each company keeps its own repository and shares selectively. In practice three topologies coexist.

Federated EPCIS 2.0 repository topology linking manufacturer, logistics provider and retailer through GS1 Digital Link resolution and a Digital Product Passport

Figure 4: Multi-party traceability. Each party captures into its own EPCIS repository; a GS1 Digital Link resolver points from an identifier to the right repositories and passport, and a query broker assembles a chain of custody on demand.

Federated. Each party runs its own repository and grants partners query access. Data sovereignty is strong, but answering “where has serial 12345 been” requires knowing which repositories to ask. GS1 Digital Link resolvers help here: a resolver can return links of different types for one identifier, so an application can follow a link to the brand’s traceability service rather than guessing.

Hub. A dominant retailer or a platform operator runs a shared repository that suppliers push events to. Onboarding is simpler and queries are fast, but the hub owner sees everyone’s data and sets the rules. Many retail RFID mandates operate close to this model.

Push-to-partner. The shipper sends events directly to the receiver alongside the despatch advice, often as an EPCIS document attached to the advance ship notice. It is the lowest-friction model and works well for one-hop visibility, but it does not give end-to-end chain of custody without additional sharing.

None is universally right. A useful rule: choose federated or push-to-partner when partners compete with each other, and a hub when one party carries the regulatory obligation and the others accept its governance.

Feeding the Digital Product Passport and the digital twin

The EU Ecodesign for Sustainable Products Regulation, (EU) 2024/1781, introduces Digital Product Passports that are being specified per product group through delegated acts. A passport is mostly static: materials, carbon footprint, repair information, compliance documents. EPCIS events are dynamic: where the item went and what happened to it. The architecture connects them through the identifier. The GS1 Digital Link URI on the product resolves to the passport, and the same EPC keys the event history. Our Digital Product Passport architecture post covers the passport side in detail.

The same events can drive an operational digital twin of inventory. Each ObjectEvent updates the twin’s state for an EPC; each AggregationEvent updates containment. Because EPCIS history is immutable and ordered by event time, the twin can be rebuilt at any point in time, which is exactly what a recall investigation needs.

Trade-offs, Gotchas, and What Goes Wrong

Most failed RAIN RFID EPCIS programmes do not fail at the antenna. They fail in the gaps between layers. These are the failure modes I see most often, with the mechanism behind each.

Stray reads become false events. A portal antenna reads tags on a pallet staged next to the door, so the system records a shipment that never left. The cause is a filter tuned only for read rate. The fix is per-antenna RSSI floors, two-zone direction logic, RF shielding or absorbers between adjacent doors, and a business rule that a shipping event requires an open shipment for that door.

Missed reads become missing events. A pallet of liquid-filled bottles or metal tins passes the portal and half the cases never respond. If the event builder emits only what it saw, downstream systems believe cases are lost. Use the aggregation hierarchy: one strong pallet read plus a valid prior AggregationEvent is better evidence than a partial case count. Report observed and expected counts separately, as an extension field if needed.

Encoding drift. Different suppliers encode the same GTIN with different partition values, filter values or even legacy non-GS1 schemes. Decode to pure-identity URIs at the edge using a tested Tag Data Standard library, and reject what you cannot decode rather than storing raw hex that nobody can join later.

Wrong action semantics. Using ADD for observation, DELETE for receiving, or setting bizLocation on in-transit goods silently corrupts every downstream query. Validate events against the EPCIS JSON schema and SHACL shapes in CI, and add business-rule tests for CBV semantics, which schema validation alone does not catch.

Clock skew. Readers with drifting clocks produce events whose eventTime disagrees with reality by minutes, which breaks ordering and dwell-time analytics. Run NTP or PTP on every reader and gateway, and record both event time and capture time.

Duplicate capture after outages. Store-and-forward retries can capture the same event twice. Deterministic event IDs, either hash-based or assigned at the edge before buffering, let the repository deduplicate idempotently.

Correction by deletion. Teams delete wrong events from the repository, destroying audit history that partners may have already consumed. EPCIS provides errorDeclaration for exactly this case; use it and emit corrective events.

Privacy. A tagged garment that leaves the store can still be read by anyone with a reader. Serialised identifiers can link a person to a purchase. Mitigations include killing or partially masking tags at point of sale, Gen2v2 Untraceable features that hide parts of memory, and, on the data side, sharing EPCIS events with partners only on a need-to-know basis. Item-level events about consumer-facing goods may be personal data in some jurisdictions once linked to a customer record, so involve privacy counsel early.

Over-collection. Sending every raw read to the cloud “for analytics later” multiplies cost by roughly the edge reduction factor and rarely yields insight. Keep raw reads locally for a short diagnostic window and publish events.

Practical Recommendations

In any RAIN RFID EPCIS programme, start from the business event, not the reader. Write down the five to ten events your partners actually need, with their bizStep, disposition, read point and expected EPC types. Then design the edge filter and antenna layout to produce those events with measurable accuracy. Treat the event contract as an API, versioned and tested, and treat everything upstream of it as replaceable.

Pilot with ground truth. Before go-live, run test pallets with known contents through each portal many times and measure event-level accuracy, not tag read rate. A portal that reads 99 percent of tags but emits a wrong direction on 5 percent of passes is worse than one with lower raw read rates and correct events.

Plan for two identifier formats. Keep EPC URNs as the internal join key, emit GS1 Digital Link where consumers or regulators meet the product, and make the conversion a single shared library.

Checklist:

  • [ ] Encode tags with SGTIN, SSCC or GRAI per the current GS1 Tag Data Standard; bind EPC to TID at commissioning.
  • [ ] Pin each reader to its regulatory region and test inlays in every band you ship through.
  • [ ] Normalise vendor reader payloads into one read schema at the edge.
  • [ ] Implement RSSI gating, windowed smoothing, direction inference and aggregation before emitting events.
  • [ ] Emit EPCIS 2.0 events with CBV 2.0 vocabulary; validate with GS1 JSON schema and SHACL in CI.
  • [ ] Assign deterministic event IDs and use errorDeclaration for corrections.
  • [ ] Buffer locally and capture over the REST binding with retries and job polling.
  • [ ] Index the repository by EPC, parent ID, event time and bizStep.
  • [ ] Define partner access policy and a privacy plan for item-level data.
  • [ ] Measure event-level accuracy against ground truth, per portal, every quarter.

Frequently Asked Questions

What is the difference between RAIN RFID and EPCIS?

RAIN RFID is the radio layer: passive UHF tags and readers that follow the GS1 EPC UHF Gen2 air interface, also published as ISO/IEC 18000-63. EPCIS is the data layer: a GS1 and ISO/IEC 19987 standard that defines visibility events and the interfaces to capture and query them. RFID produces raw observations of tag identifiers; EPCIS records business facts such as shipped, received or packed, with what, when, where, why and how. You can use EPCIS with barcodes alone, and RFID without EPCIS, but together they automate traceability.

What changed in EPCIS 2.0 compared with EPCIS 1.2?

EPCIS 2.0, ratified by GS1 in June 2022 together with CBV 2.0, added a JSON and JSON-LD syntax alongside XML, a REST binding with an OpenAPI definition, and WebSocket subscriptions. It introduced the “how” dimension, carrying sensor data through sensorElementList and certificationInfo, plus persistentDisposition for lasting states. It also added the AssociationEvent for linking assets such as sensors to objects, and accepts GS1 Digital Link URIs as identifiers. Version 1.2 events remain expressible, so migration is mostly a syntax and interface change.

How far can a UHF RFID Gen2 tag be read?

It depends on power limits, tag sensitivity, antennas and materials. Under illustrative free-space assumptions, a 4 W EIRP reader at 915 MHz and a tag with −20 dBm sensitivity can in principle power the tag at about 20 metres. Real deployments see far less. Polarisation mismatch, liquids, metal, body shadowing and multipath nulls each remove several decibels. Most dock portals and conveyor tunnels are designed for reliable reads within a few metres, and handheld readers for shorter ranges still.

Not for the RFID side, but usually yes for the programme. The SGTIN on the tag and a GS1 Digital Link URI encode the same GTIN and serial, so they identify the same object. Digital Link adds web resolvability: a phone scanning a QR code reaches product information, a Digital Product Passport or traceability services. EPCIS 2.0 accepts Digital Link URIs for identifiers, and its REST binding can return either format. Keep EPC URNs internally and present Digital Link to consumers and regulators.

Should raw RFID reads be sent to the cloud?

Generally no. A single portal pass can generate around a thousand raw reads that collapse into one or two business events after filtering. Sending raw reads multiplies bandwidth, storage and processing cost by that ratio, and moves noisy decisions away from the site context that resolves them, such as which door is active and which shipment is open. Keep a short local buffer of raw reads for troubleshooting and tuning, and publish EPCIS events. Send raw samples only for targeted diagnostics or model training.

How does EPCIS handle a wrong event that partners have already received?

EPCIS events are meant to be immutable. Instead of deleting or editing, you capture an error declaration referencing the original event’s eventID, stating when the error was declared and why, and optionally pointing to corrective event IDs. Queries can then include or exclude retracted events. This preserves the audit trail partners rely on. It is also why every event needs a stable eventID assigned before capture, ideally deterministic, so corrections and deduplication work across systems and outages.

Further Reading

By Riju — about

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *