Skip to main content

Receive with the supplier's EPCIS file

Core module For: Compliance manager, Warehouse staff Checked on 18.0.0.2.0

When the supplier sends its EPCIS (Electronic Product Code Information Services) file for a shipment, import it on the receipt before you scan anything. The file tells Rx Tracking which units to expect, so a sealed case is received with one scan, and validating the receipt keeps the file as the inbound DSCSA document. Abbreviations: SSCC: Serial Shipping Container Code (see the glossary).

Import the supplier's EPCIS file on the receipt​

Import the file the supplier sent: it becomes a Supplier EPCIS File record, and every unit it announces becomes an Expected package on the receipt. Nothing is received yet. Background: the modules follow the reading that a buyer may not accept ownership unless the seller provides the transaction information and Transaction Statement, and that FDA recommends GS1 EPCIS for them (FD&C Act § 582(c)(1)(A)(i), § 582(g)(1); FDA interoperable exchange guidance (September 2023); see Compliance background).

Who: Rx Tracking User or Manager

Requires: Rx Tracking (DSCSA). Works in Odoo Community and Enterprise.

Before you start:

  1. Go to Inventory ‣ Operations ‣ Receipts and open the receipt, for example WH/IN/00008 (source document P10002, 24 Demoprazole).

  2. Select Import EPCIS.

    Result: the Import Supplier EPCIS File dialog opens, with the receipt in Receipt.

    Screenshot of the Import Supplier EPCIS File dialog opened from a receipt, with the Receipt field and the Upload your file button.

  3. Select Upload your file and choose the file, for example bluepeak_P10002_DEMO-DPZ-20_24ea.xml.

  4. Select Import.

    Result: the new Supplier EPCIS File opens, named after the file, in the Awaiting Receipt state. Its Received / Expected smart button shows 0 / 24, and its Packages list shows each serial with its product, lot, expiration date, SSCC and the state Expected.

  5. In the breadcrumb at the top, select the receipt's name, for example WH/IN/00008.

    Result: the receipt has the smart buttons EPCIS Files (1) and Expected (24), and a new Expected (EPCIS) tab listing the announced serials. Supplier Document shows the file's despatch advice number, for example BP-ASN-20260924-0419.

    Screenshot of the receipt after the import: the EPCIS Files and Expected smart buttons and the Expected (EPCIS) tab listing serials.

Result: the receipt expects the units the supplier announced. Records: the Supplier EPCIS File (Awaiting Receipt) holding the supplier's XML, its file hash and the parties' GLNs; one Expected package per announced serial; the lot, created with the file's expiry date if it is new (for example BPDPZ2509A, 06/30/2028); the receipt's Supplier Document, if it was empty; and a chatter note on the receipt, "24 package(s) expected from EPCIS file bluepeak_P10002_DEMO-DPZ-20_24ea.xml (24 inferred from sealed cases).".

From the purchase order​

A user who has both a Purchase right and an Rx Tracking right sees Import EPCIS on the purchase order too. The dialog then shows the Purchase Order and lets you choose the Receipt when the order has more than one open receipt (for example a backorder). The rest is the same. The button is shown on every confirmed order that has a receipt, even one with no DSCSA product; importing there is refused with "… has no DSCSA products to receive, so there is nothing to import." (PF-W05-01). It also stays on an order whose receipts are all Done, where selecting it shows "… has no open receipt to import a supplier EPCIS file on." (PF-F03-01).

When the file has warnings​

Some problems don't stop the import: a missing GLN in the file or in Odoo, a purchase order number that isn't yours, a different number of units than the receipt expects, a Transaction Statement the seller hasn't affirmed. The file is imported, the receipt's chatter says "N warning(s): see the import.", and the file lists them on its Warnings tab. See Read the warnings of an imported supplier EPCIS file.

When the goods arrived before the file​

If units were already scanned on the open receipt (IN-08), import the file as above. The scanned units are matched to the file: its Received / Expected button shows, for example, 12 / 0, and nothing is left to scan.

If it doesn't work

A refused file is not imported at all; one dialog, "FILE-NAME was not imported:", lists every problem found.

Known issue

Known issue (PF-A02-05): the unknown-GTIN message says to set the GTIN on the product's "Rx Tracking tab". The tab is called DSCSA on the product form.

Next: Receive a sealed case by scanning its SSCC label, or scan the units one by one: Scan units onto a receipt with Scan Serials, and undo a scan

Receive a sealed case by scanning its SSCC label​

When a case arrives with its seal intact, scan its SSCC (Serial Shipping Container Code) label once: every unit the supplier's file puts in that case is received. The software can't see the seal; your procedure decides how staff check it. Background: the modules follow the reading that unit serials may be inferred from the case data only while the case seal is intact, and that a broken seal means the product is treated as suspect (FD&C Act § 582(c)(1)(A)(i), § 582(g)(1); FDA interoperable exchange guidance (September 2023); see Compliance background). Scan the units of an opened case one by one (IN-08).

Who: Rx Tracking User or Manager

Requires: Rx Tracking (DSCSA). Works in Odoo Community and Enterprise.

Before you start:

  1. Open the receipt, for example WH/IN/00008.

  2. Select Scan Serials.

    Result: the Scan DSCSA Serials dialog opens.

  3. In the scan box ("Scan here..."), scan the case label on its own line, for example 00003999900000004199 (the label's text is (00)003999900000004199).

    Screenshot of the Scan DSCSA Serials dialog with one case label line, 00003999900000004199, typed in the scan box.

  4. Select Register.

    Result: the dialog closes. The Expected smart button and the Expected (EPCIS) tab are gone; the DSCSA Packages tab lists the 24 serials of the case in the state Received; the Operations tab shows a Quantity of 24.00.

    Screenshot of the DSCSA Packages tab after the case scan: Demoprazole units of lot BPDPZ2509A in the Received state, each with a remove icon.

Result: the units in the case are received on the receipt, not yet in stock. Records: each package Received, with the case's SSCC; one picked receipt line per lot; the receipt's chatter note "24 DSCSA package(s) scanned.".

Several cases, or a pallet​

Scan each case label on its own line, in one batch or several. A pallet label receives every case the file puts on that pallet. A case label followed by unit lines is not a case receipt: it only records the case of the units after it.

If it doesn't work

Next: Validate a DSCSA receipt

Validate a DSCSA receipt​

Validate the receipt once every unit that arrived is scanned. The units go into stock and, when the supplier's file was imported, Rx Tracking compares what arrived with the file and keeps the file as the inbound DSCSA document.

Who: Rx Tracking User or Manager. An Inventory User without an Rx Tracking right can also validate, once the units are scanned.

Requires: Rx Tracking (DSCSA). Works in Odoo Community and Enterprise.

Before you start:

  1. Open the receipt and check the DSCSA Packages tab: one row per unit that arrived. On the Operations tab, Quantity equals the number of scanned units.

  2. Select Validate.

    Result: the receipt is Done. The DSCSA Packages tab shows the units In Stock. With a supplier file, a DSCSA Documents smart button (1) appears, and the chatter says "EPCIS reconciliation: 24 package(s) received." followed by "Everything matches the supplier's file.".

  3. To see the document, select DSCSA Documents.

    Result: the inbound document opens, for example DSCSA/IN/2026/00007, in the Posted state, with Direction Inbound (received) and the receipt in Transfer.

Result: the units are in stock. Records: the receipt Done; its packages In Stock; with a file, the inbound DSCSA document DSCSA/IN/YYYY/NNNNN (Posted, holding the supplier's XML as it was received) and the Supplier EPCIS File in the Received state. Without a file, no DSCSA document is created (IN-10).

When fewer units arrived​

If you scanned fewer units than ordered, Odoo asks Create Backorder? after step 2. See Receive part of a shipment.

When something doesn't match the file​

If a scanned unit wasn't in the file, a unit is scanned with another lot or expiry, or a serial is already known, the receipt still becomes Done. The chatter then says "N discrepancy(ies): … Their lots are quarantined; resolve by DATE.", the receipt gets a Discrepancies smart button, and the lots can't be sold until the discrepancies are resolved. See Work a receiving discrepancy to resolution. A file without an affirmed Transaction Statement also holds the lots: see Record the supplier's Transaction Statement before validating.

Receipts with products that are not DSCSA products​

Lines of products that are not DSCSA products (for example Adhesive Bandages) need no scan and validate as in standard Odoo, on their own receipt or next to DSCSA lines.

If it doesn't work

Known issue

Known issue (PF-W05-02): if you type the Quantity of a scanned DSCSA line on the Operations tab and then type it back, Validate is refused with Odoo's "You need to supply a Lot/Serial number for products …", and registering the same scans again doesn't repair it. Remove one scan with the ✖ (Remove this scan) icon, scan that unit again, then validate. Let the scans set the Quantity.

Next: Review supplier EPCIS files and the inbound DSCSA document

Receive part of a shipment​

When fewer units arrive than the receipt expects, validate what arrived and tell Odoo whether the rest is still coming.

Who: Rx Tracking User or Manager

Requires: Rx Tracking (DSCSA). Works in Odoo Community and Enterprise.

Before you start:

  1. Open the receipt and select Validate.

    Result: the Create Backorder? dialog opens: "You have processed less products than the initial demand."

  2. Choose one:

    IfSelectThen
    the rest is still comingCreate Backorderthe receipt is Done for what arrived, and a new receipt WH/IN/NNNNN (its Back Order of field names the first one) waits for the rest
    nothing more is comingNo Backorderthe receipt is Done, and the units the file announced but that didn't arrive become Missing discrepancies
    you want to scan more firstDiscardnothing changes

    Result (Create Backorder): the chatter says "EPCIS reconciliation: 23 package(s) received.", "1 announced package(s) are still expected on the backorder." and "Everything matches the supplier's file.". The inbound DSCSA document is posted now, for the units received. The backorder's Expected (EPCIS) tab lists the missing serial, for example 500000015024.

    Result (No Backorder): the chatter says "EPCIS reconciliation: 23 package(s) received." and "1 discrepancy(ies): 1 missing. Their lots are quarantined; resolve by DATE." The receipt gets a Discrepancies smart button, and the lot is quarantined.

Result: the receipt is Done for the units that arrived. Records: the inbound DSCSA document for the units received (with a file); with Create Backorder, the backorder receipt and its still-expected packages; with No Backorder, one Missing discrepancy per missing serial (DISC/YYYY/NNNNN) and the lot on hold.

Receive the backorder later​

When the rest arrives, open the backorder from Inventory ‣ Operations ‣ Receipts, scan the units (IN-08) and validate it (IN-05).

Cancel a backorder that won't arrive​

If the supplier confirms the rest won't come, open the backorder, select Cancel, then Ok in the "Are you sure you want to cancel this transfer?" dialog. The backorder is Cancelled, and each serial it still expected becomes a Missing discrepancy, with the chatter note "EPCIS reconciliation: 0 package(s) received." and "1 discrepancy(ies): 1 missing. …".

Without a supplier file​

Without a file there is nothing expected: the backorder only needs serials for its own units when you validate it, and no discrepancy is created.

If it doesn't work

Next: Work a receiving discrepancy to resolution