Skip to main content

Set up the company and warehouses for DSCSA

Core module For: Administrator Checked on 18.0.0.2.0

Give each company the identifiers that its DSCSA transaction documents use, before anyone receives or ships a DSCSA product. You do this once per company, and again only when an identifier changes.

Open the DSCSA settings of a company​

Every company-level Rx Tracking option is in one block of the Inventory settings, DSCSA (Rx Tracking). Each option applies to the company you are working in; the building icon next to a setting's name (tooltip "Values set here are company-specific.") says so.

Who: Administrator with Administration: Settings, who is also Inventory Administrator and Rx Tracking Manager

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

Before you start:

  1. Go to Inventory ‣ Configuration ‣ Settings.

    Result: the Inventory settings open, with Save and Discard at the top left.

  2. In the Search... box at the top, enter DSCSA.

    Result: the page shows the DSCSA (Rx Tracking) block, with the settings Company GLN, Wholesalers/3PLs need a 503(e) report, Small-dispenser exemption, EPCIS legal notice, Transaction Statement, Off-site write-once archive (S3) and DSCSA files in delivery emails.

    Screenshot of the Inventory settings filtered on DSCSA, showing the top of the DSCSA (Rx Tracking) block.

  3. Change the settings you need. The procedures below and on Set up DSCSA documents and delivery emails explain each one.

    Result: "Unsaved changes" appears next to Settings at the top.

  4. Select Save.

    Result: the page reloads and shows the saved values. To leave without saving, select Discard instead.

Result: the values are stored on the company you are working in. Records: the company (the Company GLN is stored on the company's contact).

From the Rx Tracking menu​

Go to Inventory ‣ Rx Tracking ‣ Settings (in the Configuration section) instead of step 1. The same settings page opens at the top; continue with step 2.

For another company​

If your user works in several companies, select the company name at the top right of the screen (the company switcher), then select the other company. Repeat steps 1–4: the block now shows and saves that company's values. See Set up and work in a multi-company database.

If it doesn't work

Known issue

Known issue (PF-W02-01): a user who is Rx Tracking Manager with Administration: Settings but not Inventory Administrator sees Inventory ‣ Rx Tracking ‣ Settings (in the Configuration section), but the page it opens has no Inventory settings and no DSCSA block, and no message says why. Give the user the Inventory Administrator right as well, or have an administrator change the DSCSA settings.

Set the company's address, GLN and GS1 prefix length​

The company's name, address and GLN (Global Location Number, see the glossary) identify your company as the seller in every outbound DSCSA document: the T3 report prints them, and the EPCIS file carries them. Background: GLNs identify the seller, buyer and locations in EPCIS files; the modules follow the reading that FDA doesn't require them, but the large wholesalers do (FD&C Act § 582(c)(1)(A)(ii)–(iii), § 582(g)(1)(A)–(B); § 581(22), (24), (26), (27); see Compliance background).

Who: Administrator with Administration: Settings, who is also Inventory Administrator and Rx Tracking Manager

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

Before you start:

  • Your company's 13-digit GLN, as GS1 US assigned it, and the length of your GS1 Company Prefix if it is not 7 digits.
  • The company's legal name and postal address: street, city, state, ZIP and country. Enter them in the part Complete the company's name and address below, before the first DSCSA delivery.
  1. Open the DSCSA settings: Open the DSCSA settings of a company, steps 1–2.

  2. Under Company GLN, in GLN, enter the 13-digit GLN, for example 0614141000012. You may type it with spaces; they are removed when you save.

    Result: the GS1 prefix length field shows under GLN. On a company that had no GLN it appears now, showing 0.

  3. In GS1 prefix length, leave 0 to use the default of 7 digits, or enter the length of your GS1 Company Prefix (6 to 12).

  4. Select Save.

    Result: the page reloads; GLN shows the 13 digits without spaces.

Result: the company has its GLN. Records: the company's contact (GLN, GS1 Prefix Length). The same values show on the company form (Settings ‣ Users & Companies ‣ Companies). DSCSA documents created from now on name the company by this GLN; in outbound EPCIS files it appears as an SGLN, for example urn:epc:id:sgln:0614141.00001.0 for 0614141000012 with the default prefix length.

Complete the company's name and address​

The EPCIS file of every outbound document needs the company's street, city, ZIP and country, and for a US company its state. If one of them is missing, the delivery still validates and its document posts with the T3 report only, without its EPCIS file, and nothing warns you before. A new database's company has no street, city, state or ZIP.

  1. Go to Settings ‣ Users & Companies ‣ Companies and open the company.

    Result: the company form opens on its General Information tab. On a new database the company is called My Company, and Address shows only the grey placeholders Street, Street 2, City, State and ZIP (the country may be filled in).

  2. In Company Name, enter the company's legal name, for example Demo Rx Distribution LLC.

  3. Under Address, fill in:

    • Street: for example 1450 Park Avenue (and Street 2 if the address has a second line)
    • City: Chico
    • Country: United States
    • State: California (US)
    • ZIP: 95928
  4. Select the ☁ (Save manually) icon next to the company name at the top.

    Result: the form shows the saved name and address, and the chatter logs the change of Company Name.

Result: the company has its name and address. Records: the company and its contact (Contacts, then open the company: the same name and address, and the chatter logs the change). DSCSA documents created from now on print this name and address for the seller on the T3 report and carry them in the EPCIS file; documents created before keep the address they were created with.

Known issue

Known issue (PF-A03-01): the warning before shipping (the yellow banner on an open delivery and the GLN missing activity) checks only the GLNs. An incomplete company address isn't warned about: the delivery's document posts without its EPCIS file, and the file can't be added afterwards. Complete the address before the first DSCSA delivery.

On the company form​

  1. Go to Settings ‣ Users & Companies ‣ Companies and open the company.

  2. In GLN, enter the 13-digit GLN.

    Result: GS1 Prefix Length appears under it.

  3. Set GS1 Prefix Length as in step 3 above.

  4. Select the ☁ (Save manually) icon next to the company name at the top.

    Result: the company is saved; the DSCSA settings show the same GLN.

If it doesn't work

  • "GLN 'DIGITS' has an invalid check digit: the last digit should be N, not M. Check for a typing or scanning error.": the last digit doesn't match the other twelve, which is usually a typing error. Enter the GLN again from your GS1 US record. The same entry covers "must have 13 digits" and "must contain digits only". See Error: "GLN '…' has an invalid check digit".

    Screenshot of the Validation Error dialog saying the GLN 0614141000013 has an invalid check digit.

  • "The GS1 company prefix length must be between 6 and 12 (it is N). Leave it empty to use the default of 7.": enter a number from 6 to 12, or 0. See Error: "The GS1 company prefix length must be between 6 and 12".

  • After you select Close on either message, the wrong value stays on the screen and nothing is saved. Correct it and select Save, or select Discard to keep the saved value. On the company form the same messages open an "Oh snap!" dialog: select Stay here to correct the value, or Discard changes to keep the saved one.

  • A delivery's DSCSA document shows the yellow banner "No EPCIS file was generated: sender.street is required." (or sender.city, sender.zip, sender.state, sender.country): the company's address was incomplete when the delivery was done. Complete it (Complete the company's name and address); that document stays without its EPCIS file, and the next deliveries get theirs. See Warning: "No EPCIS file was generated: …".

Next: Give a warehouse its own GLN

Give a warehouse its own GLN​

A warehouse without its own GLN uses the company GLN as its location in outbound EPCIS files. Give a warehouse its own GLN when the site has one, for example a second site.

Who: Inventory Administrator; no Rx Tracking right needed

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

Before you start:

  1. Go to Inventory ‣ Configuration ‣ Warehouses and open the warehouse.

    Result: the warehouse form shows GLN under Address; when it is empty it shows "Company GLN when empty".

  2. In GLN, enter the warehouse's 13-digit GLN, for example 0614141000913.

    Screenshot of the Albany Annex warehouse form. The GLN field, which holds 0614141002016, is outlined.

  3. Select the ☁ (Save manually) icon next to the warehouse name at the top.

    Result: the warehouse is saved with its GLN.

Result: outbound EPCIS files of deliveries from this warehouse name it as the shipping location, as an SGLN split with the company's GS1 prefix length (urn:epc:id:sgln:0614141.00091.0 for 0614141000913). Records: the warehouse. To go back to the company GLN, clear GLN and save.

If it doesn't work

  • A dialog shows "GLN 'DIGITS' has an invalid check digit: …", "must have 13 digits" or "must contain digits only": correct the GLN. In the dialog, select Stay here to correct it, or Discard changes to keep the saved value. See Error: "GLN '…' has an invalid check digit".
  • Inventory ‣ Configuration isn't in the menu: your user is not Inventory Administrator. Ask an administrator.
Note

A duplicated warehouse doesn't copy the GLN: enter the new warehouse's own GLN, or leave it empty to use the company GLN.

Set the company time zone used for lot expiry dates​

Rx Tracking stores a lot's expiry date as noon of that day in the company's time zone, so every user and every job sees the same date. Without a time zone the company uses UTC, which gives the right calendar date in every US time zone: a company in the US has nothing to do here. A company elsewhere, or one that wants the time zone recorded, sets the Timezone of the company's contact, which no form shows (known issue below), by exporting and importing that contact. The first company of a database has no time zone; a company added later in Settings ‣ Users & Companies ‣ Companies gets the time zone of the user who created it. The export below also shows which one a company has.

Who: Administrator (Administration: Settings)

Requires: Rx Tracking (DSCSA), and the Contacts app. Works in Odoo Community and Enterprise.

Before you start:

  • The time zone name you want, as Odoo lists it (for example America/Los_Angeles or America/New_York).
  • A spreadsheet program or a text editor.

Export the company's contact​

  1. Go to Contacts, enter the company's name (for example Demo Rx Distribution LLC) in Search..., and press Enter.

  2. Select the List view button at the top right, then select the checkbox of the company's own line (the one that shows only the company name, with nothing after a comma).

    Result: "1 selected" and an Actions button appear at the top.

  3. Select Actions, then Export.

    Result: the Export Data dialog opens.

  4. Fill in:

    • I want to update data (import-compatible export): selected
    • Export Format: CSV
  5. In the Available fields search box, enter Timezone, then select the + next to Timezone.

    Result: Timezone is added to Fields to export.

  6. Select Export.

    Result: the browser downloads a CSV file with the columns id, …, tz. The id column holds the contact's external ID (for our own company, base.main_partner).

Import the time zone​

  1. Open the file, delete every column except id and tz, enter the time zone name in the tz column (for example America/Los_Angeles), and save it as CSV.

  2. Go back to Contacts in the list view, select the ⚙ (Actions) icon next to Contacts, then select Import records.

    Result: the Import a File screen opens.

  3. Select Upload Data File and choose the file.

    Result: the columns are matched: id to External ID and tz to Timezone.

  4. Select Test.

    Result: "Everything seems valid."

  5. Select Import.

    Result: the contact list opens with the message "1 records successfully imported".

Result: the company's contact has the time zone. Records: the company's contact (Timezone). Lots that get an expiry date from now on use it; dates already stored keep the day they show.

If it doesn't work

  • Test reports "The file contains blocking errors" and "Value 'NAME' not found in selection field 'Timezone'": the time zone name is not one of Odoo's names. Select See possible values in the message, or copy the name from the Timezone field of your own Preferences, and upload the corrected file.
  • Test reports an error on the id column: the id value was changed. Export the contact again and keep its id exactly as exported.
Known issue

Known issue (PF-A01-06): no form shows the company's time zone, so the only way to set or check it is the export and import above. A company in the US can leave it empty.