---
title: "openepcis_connector_events_mrp: manufacturing events"
description: "The bridge to Manufacturing. A finished manufacturing order is reported as the one TransformationEvent it is — components in, goods out, and the claim that the second came from the first, which is the only thing in EPCIS that carries a chain of custody across a production step."
canonical_url: "https://openepcis.io/docs/connectors/odoo/manufacturing-events"
last_updated: "2026-10-09T10:21:43.049Z"
---

A movement says where goods are. A transformation says that some goods stopped existing and others began, and that the second came from the first — and that link is the only thing in EPCIS that carries a claim across a production step. Without it a chain of custody ends at the factory door: the flour arrived, the bread left, and no query connects them.

Odoo knows both halves of a manufacturing order, the components consumed and the goods produced. This bridge reports them as the one `TransformationEvent` they are.

<table>
<thead>
  <tr>
    <th>
      
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Module
      </strong>
    </td>
    
    <td>
      <code>
        openepcis_connector_events_mrp
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Depends on
      </strong>
    </td>
    
    <td>
      <code>
        openepcis_connector_events
      </code>
      
      , <code>
        mrp
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Installs
      </strong>
    </td>
    
    <td>
      Automatically, once the events addon and Manufacturing are both present
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Settings
      </strong>
    </td>
    
    <td>
      None of its own — the operation type's business step (<code>
        commissioning
      </code>
      
       by default) and the location's GLN, as for every event
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Source
      </strong>
    </td>
    
    <td>
      <a href="https://github.com/openepcis/openepcis-odoo/tree/18.0/openepcis_connector_events_mrp" rel="nofollow">
        openepcis-odoo
      </a>
      
       · LGPL-3
    </td>
  </tr>
</tbody>
</table>

## One event per order

The event is queued when the order is marked done, and *after* Odoo has finished with it — before that the moves are not done and the output's lots may not exist yet. One event carries the whole order, not one per component:

![A completed manufacturing order | Figure 1: The order that produced forty bags of ground coffee from ten kilos of beans](/img/16.Connectors/odoo-manufacturing.png)

```json
{
  "type": "TransformationEvent",
  "inputQuantityList": [
    { "epcClass": "https://id.gs1.org/01/09520001100000/10/ROAST-2609", "quantity": 10.0 }
  ],
  "outputQuantityList": [
    { "epcClass": "https://id.gs1.org/01/09520001100017/10/GROUND-2609", "quantity": 40.0 }
  ],
  "bizStep": "commissioning",
  "disposition": "active",
  "readPoint": { "id": "https://id.gs1.org/414/9520001000010" },
  "bizLocation": { "id": "https://id.gs1.org/414/9520001000010" }
}
```

Components and output are read the same way a transfer's lines are — a lot comes out as the same `epcClass` whether it arrived on a lorry or off a production line — so an input of a transformation and the output of the receipt before it name the same thing.

Two things are deliberate:

- **It carries no action.** The one event type that has none, because "these came into being" and "these ceased to be" are both true at once and the field could only say one of them.
- **A half transformation is refused rather than sent.** Inputs with no outputs would assert that goods vanished; outputs with no inputs that they came from nowhere. Neither is a claim this bridge will make on your behalf.

As everywhere in the connector, a report never breaks the operation: a plant does not stop producing because a repository is unreachable. The event waits in the [outbox](/docs/connectors/odoo/visibility-events#the-outbox) like every other.
