Odoo consultants for manufacturers and distributors

Life sciences · Odoo guide

How do 503B outsourcing facilities meet 21 CFR Part 210/211 cGMP batch record requirements in Odoo?

In short: A registered 503B outsourcing facility is not exempt from current good manufacturing practice. Section 501(a)(2)(B) of the FD&C Act still applies. FDA's revised draft guidance from December 2018 describes 21 CFR parts 210 and 211 for these facilities until FDA issues specific rules. That guidance is still a draft. In Odoo, keep the formula on a bill of materials (mrp.bom), one batch on a manufacturing order (mrp.production), and the expiration date on the lot (stock.lot). Stock Odoo does not provide the secure audit trail in 21 CFR 11.10(e). Keep the batch record for at least 1 year after the batch expiration date (21 CFR 211.180(a)). The facility still files its own product report each June and each December (section 503B(b)(2)).

See also: How do 503A and 503B compounding pharmacies manage master formulation records (MFRs) and beyond-use dates (BUDs) in Odoo?; How do I make Odoo compliant with FDA 21 CFR Part 11 audit trails?.

The ERP Firm · Last updated October 27, 2026

Steps

  1. Confirm the site is a registered 503B outsourcing facility, or is registering as one. Do not copy a 503A pharmacy setup. Patient-specific master formulation records and beyond-use dates are a different guide.
  2. Write the master production and control record before you build the bill of materials. Include the product name, strength, dosage form, every component in one weight system, any calculated excess, the theoretical yield, and the minimum and maximum percent of theoretical yield that requires an investigation under 211.192 (211.186(b)(7)).
  3. Create the formula as a bill of materials (mrp.bom). Version it with a PLM engineering change order (mrp.eco) so a manufacturing order cannot start on a draft revision.
  4. Turn on lot tracking and expiration dates. Receive components into a quarantine location. Store the expiration date on the lot (stock.lot). Keep the stability-study reference with the product. The date field is not the study.
  5. Open one manufacturing order (mrp.production) per batch. Reserve each component lot on the move lines (stock.move.line). Record major equipment on the work order. Compare the quantity produced with the theoretical yield and record the percentage (210.3 defines theoretical yield, actual yield, and the percentage).
  6. Capture identity, strength, and in-process results on quality checks tied to that manufacturing order and the finished lot. Block the delivery operation type until the check passes. That hold is the 211.165 release gate. It is not a laboratory system.
  7. Send the finished batch record to the quality unit before any shipment (211.192). Use a state on the batch that blocks the lot. A standalone Approvals request that does not lock stock is not a release.
  8. For Part 11, do not treat chatter as the audit trail. Use the Part 11 guide for the control design. Plan a custom module, or an OCA audit module, that records create, modify, and delete without hiding the previous value (11.10(e)). Put the signature on the batch record: printed name, date and time, and meaning (11.50), stored so it cannot be moved to another record (11.70). Stock Odoo does not do this.
  9. Keep the batch record, the quality checks, and the audit trail for at least 1 year after the batch expiration date (211.180(a)). For the OTC products 211.137 lets go without an expiration date, keep the records 3 years after distribution. Backups have to survive an administrator deleting chatter.
  10. Build the June and December product report from manufacturing orders and lots: active ingredient, source, strength per unit, dosage form and route, package description, and number of units produced (503B(b)(2)). June covers December 1 through May 31. December covers June 1 through November 30. Odoo does not file the report. The facility still submits it to FDA.

Common mistakes

  • Running 503B office-stock batches on a 503A workflow and skipping the CGMP batch record.
  • Treating the bill of materials as the whole master production and control record.
  • Releasing a lot from an Approvals request while the delivery can still be validated.
  • Calling field tracking a Part 11 audit trail. Stock Odoo does not provide one.
  • Deleting a failed quality check instead of writing the 211.192 investigation.
  • Building the semiannual product report in a spreadsheet that does not match the lots on the manufacturing orders.

Odoo version notes

Manufacturing and expiration dates are in Community and Enterprise on Odoo 16, 17, and 18. Quality, PLM engineering change orders, Approvals, and Sign are Enterprise apps. On Community, quality checks and audit logs come from OCA or custom modules. None of those add a Part 11 mode. FDA's revised draft guidance from December 2018 is how the agency describes 21 CFR parts 210 and 211 for outsourcing facilities until it issues specific regulations. The ERP Firm builds the missing batch-record pieces as a module in your Git repository and tests them on staging before production.

CFR mapping and 503A versus 503B

Stock Odoo does not provide a full 21 CFR Part 11 audit trail. Chatter and field tracking are not a substitute for 11.10(e). Sections below are the finished-drug CGMP rules in 21 CFR part 211, plus the Part 11 signature rules FDA's draft outsourcing-facility guidance points at parts 210 and 211 until specific regulations exist.

21 CFR sections mapped to Odoo

SectionWhat the rule requiresWhat Odoo coversGap
21 CFR 211.100Written production and process control procedures, approved by the quality control unit. Deviations are recorded and justified when the work is done.The Documents app can store a PDF. A PLM engineering change order (mrp.eco) approves a bill of materials, not every procedure.No controlled procedure with quality-unit approval, and no deviation record on the batch. Custom module or an external QMS.
21 CFR 211.186A master production and control record for each drug product and batch size. One person signs it and a second person checks it. 211.186(b)(7) requires the theoretical yield and the minimum and maximum percent that triggers a 211.192 investigation. 211.186(a) still says full handwritten signature.The bill of materials (mrp.bom) holds components and quantities. PLM versions that BOM.A BOM is not the master record. It has no second check, no yield limits, and no signed labeling specimens.
21 CFR 211.188A batch production and control record for each batch: an accurate copy of the master, dated and signed, plus dates, major equipment, component lots, weights, in-process results, actual yield, and the percent of theoretical yield (211.188(b)(7)).The manufacturing order (mrp.production), work orders, and move lines (stock.move.line) record dates, lots, and quantities. Quality checks can store in-process results.No signed copy of the master on the batch, no equipment identity on each step, and no yield percent against the limits in the master record.
21 CFR 211.192The quality control unit reviews and approves production and control records before release or distribution. Unexplained discrepancies and specification failures are investigated in writing, including other batches that may be associated.Enterprise Quality alerts and checks. The Approvals app can route a request.An approval that does not lock the lot is not a release. Nothing extends an investigation to other batches.
21 CFR 211.165Laboratory determination that the batch meets final specifications, including identity and strength of each active ingredient, before release. Product that fails is rejected.A quarantine location and quality checks (pass or fail, measure, or picture).Not a laboratory system. No sampling plan and no identity result for each active ingredient.
21 CFR 211.137An expiration date from stability testing under 211.166, tied to the storage conditions on the label.Expiration date on the lot (stock.lot), from the product expiry settings.The date is stored. The stability study that set it is not.
21 CFR 211.180Batch production, control, and distribution records are kept at least 1 year after the batch expiration date. For certain OTC drugs that have no expiration date under 211.137, 3 years after distribution.PostgreSQL keeps the rows until someone deletes them.No retention rule and no block on deletion.
21 CFR 211.68Computers may be used. Calibrate or check equipment on a written program. Only authorized people change master records. Check input and output. Keep a backup that operators cannot alter. 211.68(c) lets automated equipment replace a second-person check on specific steps only if someone confirms the equipment did the step.Access rights on the BOM. The Maintenance app can schedule a check. Backups are a hosting task.No calibration record on the batch. An administrator can still edit master data. A normal backup is not a tamper-resistant copy.
21 CFR 11.10(e)A secure, computer-generated, time-stamped audit trail of entries that create, modify, or delete electronic records. Changes must not hide the previous value. Keep the trail at least as long as the record.Field tracking writes some edits to chatter, and only on fields where tracking is turned on.Stock Odoo does not provide a full Part 11 audit trail. Most fields are not tracked, deletes are easy to miss, and an administrator can delete chatter.
21 CFR 11.50A signed electronic record shows the printed name of the signer, the date and time, and the meaning (review, approval, responsibility, or authorship), on screen and on a printout.Approvals stores an approver. Sign stores a signer on a separate PDF.Neither writes the meaning onto the batch record.
21 CFR 11.70The signature stays linked to its record so ordinary use cannot copy it onto a different record.The signature sits on a Sign request or an Approvals request, not on the manufacturing order.Not linked the way 11.70 describes. The signature has to live on the batch record.

503A versus 503B

TopicFD&C Act section 503AFD&C Act section 503B
Who compoundsA licensed pharmacist in a state-licensed pharmacy or federal facility, or a licensed physician. The section applies to compounders that are not registered as outsourcing facilities.An outsourcing facility. Compounding is by, or under the direct supervision of, a licensed pharmacist. The facility does not have to be a licensed pharmacy.
PrescriptionsA valid prescription for an identified individual patient. Limited quantities may be compounded before that prescription is received (503A(a)). That is not non-patient-specific office stock.The facility may or may not obtain prescriptions for identified individual patients (503B(d)(4)(C)). That is the office-stock path.
CGMPExempt from FD&C Act section 501(a)(2)(B) when every 503A condition is met.Not exempt from section 501(a)(2)(B). Subject to CGMP. FDA's revised draft guidance (December 2018) describes 21 CFR parts 210 and 211 for outsourcing facilities until FDA issues specific regulations. The guidance is still a draft.
FDA registrationDoes not register as an outsourcing facility.Registers with FDA. The annual re-registration window is October 1 through December 31. The facility pays the annual establishment fee published in the Federal Register. Registration is not a finding that the site meets CGMP.
Product reportingNo semiannual product report under section 503B.A report at initial registration, then during June and during December, for the previous 6 months (503B(b)(2)). June reports cover December 1 through May 31. December reports cover June 1 through November 30.

FAQ

Follow-up questions

Does stock Odoo satisfy 21 CFR 11.10(e)?
No. Stock Odoo does not provide a full Part 11 audit trail. Chatter records only the fields you mark for tracking, and an administrator can delete those messages. The Part 11 guide covers the control design. This guide stays on the batch record.
Is a bill of materials enough for 21 CFR 211.186?
No. Use it for the component list and quantities. The master production and control record still needs an independent second check, theoretical yield limits, manufacturing instructions, and labeling specimens. 211.186(a) calls for a full handwritten signature on that master record. PLM versions the BOM. It does not create the record.
Do 503A beyond-use dates belong here?
No. Master formulation records and beyond-use dates are in the 503A and 503B MFR guide. A pharmacy that meets every 503A condition is exempt from CGMP under section 501(a)(2)(B). A registered outsourcing facility is not, even when it also fills patient-specific prescriptions.
Who files the June and December report?
The outsourcing facility does. Section 503B(b)(2) requires a report at registration and then each June and December for the previous 6 months. Odoo can supply the batch quantities. It does not transmit the report to FDA.

Talk to us about your Odoo system

Bring your Odoo version, user count and the workflow that is causing problems.

Book a scoping call