Outsourcing part or all of a company's manufacturing needs is not easy. To make it work properly, you must:
- Manage raw material inventory at subcontractors;
- Transport new materials to subcontractors according to your forecast demand;
- Track manufacturing operations performed at subcontractor locations;
- Control the quality of incoming goods;
- Control subcontractor billing.
This is an example of subcontracted manufacturing of "C" produced from raw materials "A" and "B".

With its subcontracting feature, Odoo helps you easily handle this process.
Configuration
To use the subcontracting feature, go to and check theSubcontracting box.

To define whether a product must be subcontracted, use a Bill of Materials (BoM) of the subcontracting type.
To create a newBill of Materials, go to and then click Create. Then, list the components required by the subcontractor to manufacture the product. For cost purposes, you may want to register all components, even those purchased directly from the subcontractor.
After setting theBill of Materials Type toSubcontracting, specify one or more subcontractors.

Basic Subcontracting Process
To let your subcontractor know how many products you need, create and send them a purchase order (PO).To do this, open the "Purchase" app and create a new one.Make sure to send the purchase order to the supplier defined as a subcontractor on theBill of Materials.

Once the purchase order (1) is validated, a pending receipt is created. After receiving the product, verify the receipt (2) with the actual quantity received. Then, Odoo automatically creates several inventory moves:
- According toBill of Materials(3), components are consumed at the subcontractor's location (3);
- Produce finished products at subcontractor's location (4);
- Transfer products from subcontractor location to YourCompany via valid receipt (5).
Of course, Odoo will automatically complete all transactions for you.Simply control supplier bills through the regular matching process with purchase orders.
Notes
ThePO is optional.If you manually create receipts using the correct subcontractor, Odoo will still execute all moves.This is useful if the subcontractor is not billed at a fixed price per item, but rather on a time and materials basis.
Inventory Valuation
The cost of finished product "C" is defined as:
C = A + B + s
and:
- Answer: Your company's raw material costs;
- B: Directly from
- Subcontractor
- s: Cost of subcontracting services.
Sending raw materials to a subcontractor (A) does not affect inventory valuation; these components still belong to your company. To manage this, configure the "Subcontracting Location" as a "Internal Location" so that the components are still valued in the inventory.
Then, the seller price set on the Product C form must be the price the subcontractor must pay for its parts and service time: B + s. The product cost must be: A + B + s, which is the value of the product in accounting.
Finally, the subcontractor invoice is matched with the purchase order, and the suggested price comes from finished product C.
Notes
If managing the replenishment of raw materials B at your subcontractor's location is not required, simply include the cost of B in the subcontractor's price S and remove product B from the Bill of Materials.
Traceability
If the product received from the subcontractor contains tracked components, its serial number or batch number must be specified during receipt.
When receiving subcontracted products, the "Record Components" button will appear if necessary.Click it to open a dialog box and record the serial number/lot number of the components.If finished products are also tracked, their serial numbers/lot numbers can also be registered here.

For audit purposes, the batch numbers recorded on the receipt can be checked using the icon on the right side of the finished product:

Auto-complete subcontractor
To manage subcontractor replenishment, activate Multi-Locations in . Then, inventory at the subcontractor location can be tracked.
Subcontractors can be resupplied by shipping products from the company location or by having products from other suppliers shipped to the subcontractor.
Warehouse Replenishment
Manually re-supplying subcontractors is the simplest method.To do this, create a delivery order that sets the subcontractor as the delivery address, and fill in the components to be delivered.
To automate the subcontractor's replenishment claims, there are two methods:
- Reordering rules;
- Supplementary order process.
For the first one, simply define a reorder rule with minimum and maximum stock levels at the subcontracting location.When the reorder rule is triggered, a delivery order will be created to ship the components to the subcontractor.

The second method is to use a "pull" flow. Here, the demand for the finished product (actual demand or demand forecasted through the master production schedule) triggers replenishment from the subcontractor. To do this, select the "Reallocate subcontractor on order" route on the required component.

Replenishment from another supplier
When purchasing items from other suppliers, you can request them to deliver directly to the subcontractor.To do this, activate the "Direct Delivery" function in "Purchases"‣"Configuration"‣"Settings".
Now, in the "Other Information" tab, set the "Deliver to" field to "Delivery" option. Then, provide the address of the subcontractor handling the transportation.

In this way, the supplier can ship directly, and you only need to receive the goods and make payment.However, receipt of goods by the subcontractor still needs to be verified.

Quality Control
With the Odoo Quality app, you can control the quality of products manufactured by subcontractors.Quality checks can be performed during manufacturing steps, but since the manufacturing process is handled by an external party, quality checks can be defined at product receipt.

To create a quality check on a receipt, open the Qualityapp, then on the receipt create a new control point.

In this way, a quality check is automatically created each time a finished product is received.
