Capítulo 2: Core Business Vocabulary (CBV)

Por: Artiko
epciscbvbizstepdispositionvocabulariotrazabilidadestandar

Qué es el CBV

El Core Business Vocabulary (CBV) es el compañero inseparable de EPCIS. Mientras EPCIS define la estructura de los eventos (campos, tipos, formatos), el CBV define el significado de los valores que van dentro de esos campos.

El CBV es un vocabulario controlado que estandariza términos para:

Sin CBV: el problema de interoperabilidad

Sin un vocabulario estándar, cada empresa inventaría sus propios términos:

Empresa AEmpresa BEmpresa CSignificado real
ENVIADOshippedDESP_001El producto fue despachado
RECIBIDOreceivedREC_OKEl producto fue recibido
EN_TRANSITOmovingTRANSEl producto está viajando

Es imposible integrar datos automáticamente cuando cada actor habla su propio idioma. El CBV resuelve esto definiendo un solo término para cada concepto.

CBV 2.0 como estándar ISO

El CBV 2.0 fue publicado como ISO/IEC 19988:2024, lo que le da el mismo peso normativo que EPCIS 2.0 (ISO/IEC 19987:2024). Ambos estándares se complementan y se deben implementar juntos.

Tabla de bizStep

El campo bizStep indica qué actividad de negocio ocurrió. Estos son los valores estándar más utilizados:

ValorURI completa (XML)Descripción
commissioningurn:epcglobal:cbv:bizstep:commissioningEl producto fue activado/serializado por primera vez
packingurn:epcglobal:cbv:bizstep:packingEl producto fue empacado en una unidad mayor
unpackingurn:epcglobal:cbv:bizstep:unpackingLa unidad fue desempacada
shippingurn:epcglobal:cbv:bizstep:shippingEl producto fue despachado
receivingurn:epcglobal:cbv:bizstep:receivingEl producto fue recibido
transportingurn:epcglobal:cbv:bizstep:transportingEl producto está en tránsito
holdingurn:epcglobal:cbv:bizstep:holdingEl producto está retenido (inspección, cuarentena)
inspectingurn:epcglobal:cbv:bizstep:inspectingEl producto está siendo inspeccionado
retail_sellingurn:epcglobal:cbv:bizstep:retail_sellingEl producto fue vendido al consumidor final
dispensingurn:epcglobal:cbv:bizstep:dispensingEl producto fue dispensado (farmacia)
decommissioningurn:epcglobal:cbv:bizstep:decommissioningEl producto fue dado de baja permanentemente
destroyingurn:epcglobal:cbv:bizstep:destroyingEl producto fue destruido
encodingurn:epcglobal:cbv:bizstep:encodingSe escribió el EPC en un tag RFID
arrivingurn:epcglobal:cbv:bizstep:arrivingEl producto llegó a una ubicación
departingurn:epcglobal:cbv:bizstep:departingEl producto salió de una ubicación
void_shippingurn:epcglobal:cbv:bizstep:void_shippingEl envío fue anulado (corrección de error)

Tabla de disposition

El campo disposition indica el estado del objeto después del evento:

ValorURI completa (XML)Descripción
activeurn:epcglobal:cbv:disp:activeActivo y disponible para uso/venta
in_transiturn:epcglobal:cbv:disp:in_transitEn tránsito hacia destino
in_progressurn:epcglobal:cbv:disp:in_progressEn proceso (packing, manufactura)
recalledurn:epcglobal:cbv:disp:recalledRetirado del mercado
destroyedurn:epcglobal:cbv:disp:destroyedDestruido permanentemente
dispensedurn:epcglobal:cbv:disp:dispensedDispensado al paciente (farmacia)
expiredurn:epcglobal:cbv:disp:expiredVencido
returnedurn:epcglobal:cbv:disp:returnedDevuelto al fabricante/distribuidor
damagedurn:epcglobal:cbv:disp:damagedDañado
stolenurn:epcglobal:cbv:disp:stolenRobado
container_closedurn:epcglobal:cbv:disp:container_closedContenedor cerrado y sellado
non_sellable_otherurn:epcglobal:cbv:disp:non_sellable_otherNo vendible por otra razón

Uso en JSON-LD vs XML

En EPCIS 2.0 JSON-LD, los valores se escriben de forma corta gracias al contexto JSON-LD que resuelve los prefijos automáticamente:

{
  "type": "ObjectEvent",
  "bizStep": "shipping",
  "disposition": "in_transit"
}

En EPCIS 1.x/2.0 XML, se usan las URIs completas:

<ObjectEvent>
  <bizStep>urn:epcglobal:cbv:bizstep:shipping</bizStep>
  <disposition>urn:epcglobal:cbv:disp:in_transit</disposition>
</ObjectEvent>

El contexto JSON-LD (@context) de EPCIS 2.0 contiene las reglas de mapeo. Cuando un sistema recibe "shipping" en JSON-LD, sabe que equivale a urn:epcglobal:cbv:bizstep:shipping.

Business Transaction Types

El campo bizTransactionList asocia eventos con documentos comerciales. El CBV define tipos estándar de transacciones:

TipoDescripciónEjemplo de uso
poPurchase Order (orden de compra)Shipping de mercadería comprada
invInvoice (factura)Receiving con factura asociada
desadvDespatch Advice (aviso de despacho)Shipping con ASN
receadvReceiving Advice (aviso de recepción)Confirmación de recepción
pedigreePedigree (historial de custodia)Farmacia (DSCSA)
bolBill of Lading (conocimiento de embarque)Transporte marítimo

Ejemplo en JSON-LD:

"bizTransactionList": [
  {
    "type": "po",
    "bizTransaction": "urn:epcglobal:cbv:bt:0614141073467:PO-2026-001"
  },
  {
    "type": "inv",
    "bizTransaction": "urn:epcglobal:cbv:bt:0614141073467:INV-2026-001"
  }
]

Source y Destination Types

Los campos sourceList y destinationList identifican quién envía y quién recibe. El CBV define los tipos:

TipoDescripción
owning_partyLa parte que posee la propiedad legal del producto
possessing_partyLa parte que tiene posesión física del producto
locationLa ubicación física de origen o destino

Ejemplo en JSON-LD:

"sourceList": [
  {
    "type": "owning_party",
    "source": "urn:epc:id:pgln:0614141.00000"
  }
],
"destinationList": [
  {
    "type": "owning_party",
    "destination": "urn:epc:id:pgln:0693750.00000"
  }
]

La distinción entre owning_party y possessing_party es importante en logística tercerizada: un 3PL tiene la posesión pero no la propiedad del producto.

Combinaciones comunes bizStep + disposition

No todas las combinaciones tienen sentido. Estas son las más frecuentes en implementaciones reales:

bizStepdispositionEscenario
commissioningactiveProducto serializado por primera vez
packingin_progressEmpacando items en caja/pallet
shippingin_transitDespachando mercadería
receivingin_progressRecibiendo mercadería
inspectingin_progressInspeccionando calidad
retail_sellingsoldVenta al consumidor
dispensingdispensedEntrega al paciente
decommissioningdestroyedDestrucción de producto
holdingrecalledProducto retirado en cuarentena

Próximo capítulo

En el capítulo 3 pondremos en práctica el CBV con el tipo de evento más común: el ObjectEvent.