Owner exports and the owner column
3PL add-on For: Compliance manager Checked on 18.0.0.2.0, 18.0.1.0.0
What an owner export's zip file contains and how to check that a copy is complete and unchanged; and the owner column that 3PL adds to the
package-ledger files. To make an export, see Export everything we keep about one owner as one zip.
What the owner export zip contains, and how to verify it
An owner export's zip holds the records of one owner in one company: the export's company, never another. The examples below are from an export of Summit Specialty Pharma Inc. without a period.
The files
| File | What it holds | Limited by the export's period |
|---|---|---|
documents.csv | one row per DSCSA document whose Owner is the owner, in any state: outbound documents issued in its name, inbound documents received for it, its side of a title transfer in place | yes, by document date |
documents/NUMBER/… | the files frozen when each document was posted, byte for byte: T3-NUMBER.pdf and EPCIS-NUMBER.xml for an outbound document, the supplier's EPCIS file under its own name for an inbound one. The folder is the document number with - for /, for example documents/DSCSA-SSP-OUT-2026-00001/ | yes |
ledger.csv | the package-ledger rows of the owner's movements: the columns of the monthly retention export, with the owner column (below) | yes, by movement date |
packages.csv | every package held for the owner, and every package shipped with the owner as seller of record, with its state now | no: always the complete, current list |
stock.csv | the owner's quantities on hand now, in internal and transit locations | no: always current |
instructions.csv, instructions/ID/… | the owner's instructions, and their files when they have some | yes, by date received |
gate_log.csv | the trading-partner and facility checks made for the owner: the columns of the Gate Log CSV | yes, by date |
discrepancies.csv | the discrepancies of the owner's receipts, with every stored field | yes, by date detected |
notices.csv, holds.csv, owner_orders.csv, title_transfers.csv | the owner's notices, owner holds, owner orders, and the title transfers it sold or bought in, with every stored field and the files attached to them. A file with no record has its header row only | yes, by creation date |
index.csv | every file above with its size and SHA-256: file, bytes, sha256 | |
export.txt | who exported what and when (below) |
In the CSV files, linked records are written by name, and dates and times are UTC.
Columns of the main files:
documents.csv:document,direction,state,date,transaction_date,ship_date,partner,partner_gln,transfer,order_ref,invoice_ref,issue_mode,in_place,buyer_visible,posted_on,document_hash,files,sha256.filesnames the document's files in the zip andsha256their hashes;document_hashis the document's own hash in the company's document chain, not a file hash.packages.csv:product,ndc,gtin14,serial,sgtin,lot,expiry_date,sscc,state,held_for_owner(truewhen the package is held for the owner),seller_of_record,received_date,shipped_date,shipped_to.stock.csv:product,ndc,gtin14,lot,expiry_date,location,odoo_package,quantity,reserved_quantity,uom.gate_log.csv:date_utc,user,company,record_model,record_id,reference,owner,owner_gln,party,party_gln,party_role,facility,result,detail.
export.txt reads, for example:
DSCSA owner records export
Company: Demo Rx Distribution LLC
Owner: Summit Specialty Pharma Inc. (GLN 0614141000067)
Period: first record to the export (UTC days, both included)
Generated by Morgan Lee on 2026-09-27 22:16:58 UTC
Reason: Summit asked for a copy of its records (email of 2026-09-27).
Documents: 5; ledger rows: 26; packages: 20
Files (SHA-256):
documents/DSCSA-SSP-IN-2026-00003/3pl_ssp_jit-albany_DEMO-PTM-25_2ea.xml 8681 bytes SHA-256
…
With a period, the Period line gives its first and last day. The counts are those of the export form.
What is not in it
- Other owners' records and your own records.
- The in-place documents that another seller addressed to the owner as buyer: only documents whose Owner is this owner are exported.
- Chatter messages and activities.
Known issue (PF-W23-02): a unit the owner sold to you in a title transfer is not in packages.csv (it is now your package, and the
owner isn't its seller of record). Its title_out row in ledger.csv, the title transfer in title_transfers.csv and the owner's
seller-side document show the sale.
Verify a copy
-
Compute the SHA-256 of the zip and compare it with the export's SHA-256 field in Odoo. For example, on Linux
sha256sum owner_export_SSP_20000101_20260927.zip, on macOSshasum -a 256 …, in Windows PowerShellGet-FileHash … -Algorithm SHA256.Result: the two hashes are equal: the zip is the one that was generated.
-
Unzip it and compute the SHA-256 of any file, for example
documents/DSCSA-SSP-OUT-2026-00001/T3-DSCSA-SSP-OUT-2026-00001.pdf.Result: it equals the file's
sha256inindex.csv, its line inexport.txtand in the export's Contents list; for a document file, also thesha256column ofdocuments.csv.
The export and its zip are kept for good in Odoo and can't be changed or deleted, so the hash stored with the export stays the reference. See 3PL records that are kept.
The owner column of the retention export and of packages.csv
Once your company has its first owner profile, the package-ledger CSV files get a last column, owner. It says, for each row, whose units
moved: the owner's name for units held (or shipped) for an owner, empty for your own stock.
Background: the monthly retention export has an owner column so that the package ledger also works as a possession ledger: which facility received or shipped which owner's units, and when (FD&C Act § 582, record-keeping provisions; see Compliance background). This is how the modules read the law; it has not been reviewed by counsel. See the disclaimer.
Where it appears:
- the
package_ledger_….csvfile of each monthly or on-demand retention export (Get the monthly retention export, or export on demand); - the
packages.csvfile of a trace request's response (What an owner-scoped trace response contains); - the
ledger.csvfile of an owner export (above).
What it holds:
- the owner of the movement (the owner the units moved for), so after a title transfer the earlier rows of a unit keep the earlier owner; a package that never moved shows its package's owner;
- for a title transfer in place, two rows with the
movementvaluestitle_out(the units leave the seller owner, into the company's "DSCSA Title Transfer" location) andtitle_in(they enter the buyer's stock).
For example, rows of the examples' on-demand retention export (other columns left out):
date_utc | movement | reference | serial | owner |
|---|---|---|---|---|
| 2026-09-07 17:00:00 | receipt | WH2/IN/00001 | 600000024001 | Summit Specialty Pharma Inc. |
| 2026-09-27 17:59:50 | title_out | WH/TT/00001 | 600000023001 | Summit Specialty Pharma Inc. |
| 2026-09-27 17:59:50 | title_in | WH/TT/00002 | 600000023001 |
Known issue (PF-A04-04): these files share the core package ledger's labels: a scrap and a count loss both show movement
removal, a count gain inventory_to_internal, and package_state is the package's state when the file was made, not after that move.
See Get the monthly retention export, or export on demand.
The column comes with the company's first owner profile, archived profiles included. A company that never had an owner profile gets files without it, exactly as without 3PL. Once there, the column stays, also after 3PL is switched off.