# EPCIS Traceability for Supply Chain

> Record what happened to which lot, where and why, in the GS1 EPCIS vocabulary your trading partners already read - and trace it end to end.

- **What it is:** Record what happened to which lot, where and why, in the GS1 EPCIS vocabulary your trading partners already read - and trace it end to end.
- **For:** Warehouse
- **Odoo versions:** 16.0, 17.0, 18.0, 19.0, 20.0 - Community and Enterprise
- **Runs on:** Odoo.sh or Odoo you host yourself - not Odoo Online, which accepts no third-party apps
- **Price:** 249 EUR, one-time, on the Odoo Apps Store
- **Technical name:** bambooforge_epcis
- **Not for:** Events are captured from transfers. Manufacturing (transformation events) and aggregation onto pallets are modelled but not captured automatically — the fields are there for a customisation or a manual record.; Identifiers are built from the product barcode or internal reference. A company with real GS1 company prefixes should map them properly before sending anything to a partner.; This produces and reads the events. It is not an EPCIS repository and does not answer EPCIS queries over HTTP.
- **Manual:** https://docs.bambooforge.dev/bambooforge_epcis/
- **Live demo:** https://demo20.bambooforge.dev/odoo/action-bambooforge_epcis.action_bf_epcis_event
- **Store page:** https://apps.odoo.com/apps/modules/20.0/bambooforge_epcis
- **Manual last updated:** 2026-09-21

---
# EPCIS Traceability for Supply Chain

## What this is for

Odoo records that stock moved. EPCIS is what a trading partner, a regulator or
a recall needs instead: the same movement expressed as **what** happened, to
**which** serialised items, **where**, and for what business **reason** — in a
vocabulary everybody else in the chain reads the same way.

## Capturing

A validated receipt or delivery becomes one event per lot moved, with the GS1
business step and disposition that match the transfer: receiving into stock,
shipping into transit.

A transfer without lots still produces one event for the transfer as a whole.
Quantity-level traceability is worth less than serialised traceability, but
refusing to record it is how a traceability project dies in month two.

Capture runs **hourly on a schedule**, not on validation. Traceability must not
sit on the hottest write path in the warehouse — a slow put-away costs more
every day than a one-hour delay in a record nobody reads until there is a
recall.

The button on the transfer captures immediately when somebody needs it now.

## Tracing

The **Trace** button on a lot lists every event that ever touched it, oldest
first. That is the query a recall runs, and the reason the events exist at all.

## Exporting

Select events and run *Export EPCIS 2.0*. The file is an EPCIS 2.0 JSON
document — the shape a partner's system imports — with the CBV vocabulary
spelled out in full (`urn:epcglobal:cbv:bizstep:shipping`) rather than in
Odoo's own words.

Serialised events carry an `epcList`; unserialised ones carry a
`quantityList` instead, which is what the standard expects.

## Known limits

- Events are captured from transfers. Manufacturing (transformation events) and
  aggregation onto pallets are modelled but not captured automatically — the
  fields are there for a customisation or a manual record.
- Identifiers are built from the product barcode or internal reference. A
  company with real GS1 company prefixes should map them properly before
  sending anything to a partner.
- This produces and reads the events. It is not an EPCIS repository and does
  not answer EPCIS queries over HTTP.

## How we make sure it works

Before every release, **11 automated checks** run against this app on Odoo 16, 17, 18, 19 and 20.
Among them:

- Capturing twice does not duplicate.
- Event of another company is not readable.
- Event of another company is not searchable.
- An event without lots still reports a quantity.
- An unvalidated transfer is refused.

The complete list is in the source you receive.

## Install

1. Copy `bambooforge_epcis` into your addons path and update the app list, or install the ZIP from the Odoo Apps Store.
2. Install **EPCIS Traceability for Supply Chain**.
3. Open **Traceability Events**.

## Questions people ask

****Which Odoo versions does it run on?****

Odoo 16.0, 17.0, 18.0, 19.0, 20.0, on the series you buy it for; each series is its own listing.

****Community or Enterprise?****

Both. It needs no Enterprise app.

****What does it need?****

The standard Inventory app. No extra Python package.

****Where does it show up?****

Under the **Traceability Events** menu.

****Does anything leave my server?****

No. It makes no call outside your Odoo server: no telemetry, no licence check, no third-party service.

****What happens if I uninstall it?****

Odoo drops the app's own tables and fields; the standard records it worked on (contacts, orders, products) stay as they are.
