Capítulo 4: AggregationEvent — Packing y Unpacking

Por: Artiko
epcisaggregationeventpackingunpackingpalletssccjerarquiatrazabilidad

Qué es un AggregationEvent

El AggregationEvent registra relaciones jerárquicas entre objetos: cuando items se agrupan en un contenedor (packing) o se separan de él (unpacking). Es el evento que permite responder preguntas como “¿qué hay dentro de este pallet?” o “¿en qué caja fue empacado este producto?”.

Relación padre-hijo

La estructura fundamental es:

Padre (parentID)          →  Contenedor físico
  ├── Hijo 1 (childEPCs)  →  Item o sub-contenedor
  ├── Hijo 2
  └── Hijo N

Ejemplos concretos:

PadreHijosEscenario
Pallet (SSCC)Cajas (SGTIN)Palletización en almacén
Caja (SGTIN)Items individuales (SGTIN)Empaque de productos
Contenedor (GRAI)Pallets (SSCC)Carga de contenedor marítimo

Campos específicos del AggregationEvent

CampoTipoDescripción
parentIDstringEPC del contenedor padre (SSCC o SGTIN)
childEPCsstring[]Lista de EPCs hijos serializados
childQuantityListobject[]Hijos no serializados (por cantidad)
actionstringADD, DELETE u OBSERVE

El resto de campos (eventTime, bizStep, disposition, readPoint, etc.) son iguales que en ObjectEvent.

Las 3 acciones

AcciónbizStep típicoSignificado
ADDpackingSe agregan hijos al padre. Se crea o se amplía la jerarquía.
DELETEunpackingSe quitan hijos del padre. Se deshace la jerarquía.
OBSERVEinspectingSe constata la jerarquía existente sin modificarla.

Ejemplo: Packing (ADD)

Un operario empaca 3 productos serializados en un pallet identificado por SSCC:

{
  "type": "AggregationEvent",
  "eventTime": "2026-03-21T08:00:00Z",
  "eventTimeZoneOffset": "-03:00",
  "parentID": "urn:epc:id:sscc:0614141.1234567890",
  "childEPCs": [
    "urn:epc:id:sgtin:0614141.107340.2026001",
    "urn:epc:id:sgtin:0614141.107340.2026002",
    "urn:epc:id:sgtin:0614141.107340.2026003"
  ],
  "action": "ADD",
  "bizStep": "packing",
  "disposition": "in_progress",
  "readPoint": { "id": "urn:epc:id:sgln:0614141.07346.LINEA1" }
}

Desglose del SSCC

urn:epc:id:sscc:0614141.1234567890
                ───────  ──────────
                   │         │
                   │         └─ Referencia serial (único por unidad logística)
                   └────────── Company Prefix

El SSCC (Serial Shipping Container Code) identifica de forma única una unidad logística: un pallet, una caja de transporte, un roll container.

Ejemplo: Unpacking (DELETE)

En destino, el receptor abre el pallet y separa los productos:

{
  "type": "AggregationEvent",
  "eventTime": "2026-03-22T15:00:00Z",
  "eventTimeZoneOffset": "-05:00",
  "parentID": "urn:epc:id:sscc:0614141.1234567890",
  "childEPCs": [
    "urn:epc:id:sgtin:0614141.107340.2026001",
    "urn:epc:id:sgtin:0614141.107340.2026002",
    "urn:epc:id:sgtin:0614141.107340.2026003"
  ],
  "action": "DELETE",
  "bizStep": "unpacking",
  "disposition": "in_progress",
  "readPoint": { "id": "urn:epc:id:sgln:0693750.12345.RECEP1" }
}

Después de este evento, los hijos ya no están asociados al padre. El pallet queda “vacío” lógicamente.

Jerarquías multi-nivel

EPCIS soporta jerarquías anidadas mediante múltiples AggregationEvents:

Contenedor marítimo (GRAI)
  ├── Pallet A (SSCC)          ← AggregationEvent #1 (padre: contenedor)
  │     ├── Caja A1 (SGTIN)    ← AggregationEvent #2 (padre: pallet A)
  │     │     ├── Item 1
  │     │     └── Item 2
  │     └── Caja A2 (SGTIN)
  │           ├── Item 3
  │           └── Item 4
  └── Pallet B (SSCC)
        └── Caja B1 (SGTIN)
              ├── Item 5
              └── Item 6

Cada nivel de agrupación es un AggregationEvent separado. Para reconstruir la jerarquía completa, se consultan todos los AggregationEvents que tienen como padre cada contenedor.

Ejemplo del nivel más bajo (items en caja):

{
  "type": "AggregationEvent",
  "eventTime": "2026-03-21T07:30:00Z",
  "eventTimeZoneOffset": "-03:00",
  "parentID": "urn:epc:id:sgtin:0614141.207340.CAJA-A1",
  "childEPCs": [
    "urn:epc:id:sgtin:0614141.107340.2026001",
    "urn:epc:id:sgtin:0614141.107340.2026002"
  ],
  "action": "ADD",
  "bizStep": "packing",
  "disposition": "in_progress",
  "readPoint": { "id": "urn:epc:id:sgln:0614141.07346.LINEA1" }
}

Ejemplo del nivel intermedio (cajas en pallet):

{
  "type": "AggregationEvent",
  "eventTime": "2026-03-21T07:45:00Z",
  "eventTimeZoneOffset": "-03:00",
  "parentID": "urn:epc:id:sscc:0614141.1234567890",
  "childEPCs": [
    "urn:epc:id:sgtin:0614141.207340.CAJA-A1",
    "urn:epc:id:sgtin:0614141.207340.CAJA-A2"
  ],
  "action": "ADD",
  "bizStep": "packing",
  "disposition": "in_progress",
  "readPoint": { "id": "urn:epc:id:sgln:0614141.07346.LINEA1" }
}

childQuantityList: productos sin serializar

No todos los productos tienen número de serie individual. Para granel o productos por lote, se usa childQuantityList:

{
  "type": "AggregationEvent",
  "eventTime": "2026-03-21T09:00:00Z",
  "eventTimeZoneOffset": "-03:00",
  "parentID": "urn:epc:id:sscc:0614141.9876543210",
  "childQuantityList": [
    {
      "epcClass": "urn:epc:class:lgtin:0614141.107340.LOTE2026A",
      "quantity": 500.0,
      "uom": "KGM"
    },
    {
      "epcClass": "urn:epc:class:lgtin:0614141.107341.LOTE2026B",
      "quantity": 200.0,
      "uom": "KGM"
    }
  ],
  "action": "ADD",
  "bizStep": "packing",
  "disposition": "in_progress",
  "readPoint": { "id": "urn:epc:id:sgln:0614141.07346.SILO3" }
}

Se puede mezclar childEPCs y childQuantityList en el mismo evento si algunos hijos están serializados y otros no.

Flujo completo

Un flujo típico de packing → transporte → unpacking:

1. Fabricante: AggregationEvent ADD (packing items en pallet)
2. Fabricante: ObjectEvent OBSERVE (shipping del pallet)
3. [Tránsito]
4. Distribuidor: ObjectEvent OBSERVE (receiving del pallet)
5. Distribuidor: AggregationEvent DELETE (unpacking items del pallet)

El pallet viaja como una sola unidad (un SSCC en los eventos de shipping/receiving), pero gracias al AggregationEvent sabemos exactamente qué items contiene.

Próximo capítulo

En el capítulo 5 veremos TransactionEvent (vincular productos con documentos comerciales) y TransformationEvent (registrar procesos de manufactura).