OFBIZ-13241 - Getting issue details... STATUS

Introduction

Creating a production job (“Production Run” in Apache OFBiz) may seem overwhelming at first, but with the right steps, it becomes a smooth process. This guide is here to walk you through it.

In earlier guides, we explored how to create a Bill of Materials (BOM) and how to set up Routing Tasks in Apache OFBiz. Now, building on that foundation, we’ll learn how to create production runs to manufacture final goods and produce inventory to meet demand.

In this guide you will learn - what is a ‘standard product’ and further, how to initiate a production run using an existing BOM, allocate materials, complete the production job, and finally close the run, with real-world examples and annotated screenshots to guide you at every step.



What is a Standard Product?

In Apache OFBiz, a Standard Product refers to a fully defined, standalone item that is directly sold, purchased or manufactured without any associated variations or configurations. It exists independently in the system and does not rely on a virtual or variant structure. This means the product is fixed in its attributes such as size, color, or material; and is treated as a complete unit. When it comes to manufacturing, if a standard product requires a Bill of Materials (BOM), it has its own unique BOM defined specifically for it. Inventory, pricing and transactions are all managed at the individual product level. Standard products are typically used when the item being dealt with does not require any customization or feature-based differentiation, making them ideal for simple goods, procurement items or components that don't vary in form or function.

Note - An ad-hoc production run can also be initiated for any product, regardless of whether it is a standard product or not, depending on operational requirements.



Understanding the Bill of Materials (BOM), Routing and Routing Task

Before we dive into running a production job, it’s important to first understand the foundation it’s built on - the Bill of Materials (BOM). A BOM is like a detailed recipe for manufacturing: it lists every raw material, part and sub-assembly needed to create a finished product.

But ingredients alone aren’t enough, you also need clear instructions on how to use them. That’s where Routing comes in. Routing refers to the sequence of operations or work centres a product must go through during the manufacturing process. Each step in this sequence is called a routing task, and it defines the specific action, machine or process needed at that stage 

Together, the BOM and routing tasks form your complete production blueprint. At its core the BOM defines what is needed to be used, while routing tasks define how to build thus ensuring every material is accounted for, every process is followed and every product is assembled without confusion or delay.

How a BOM Looks in Action: The Skateboard Example

To make this concept even clearer, let’s use the skateboard setup:

  • Finished Good: Complete Skateboard
  • Components:
    • Deck
    • Transfer
    • Warranty Card
    • Sticker

Now, let’s go one level deeper. The Deck itself isn’t a simple part, it’s an intermediate product (also known as a sub-assembly).

It’s made up of four sub-components:

  • Face (defines colour variations)
  • Ply
  • Glue
  • Core

When a production run begins in Apache OFBiz, the system refers to the defined routing for the product being manufactured. 

For example, when producing a skateboard, the main production job is created for the final product,  the skateboard itself. As part of this job, Apache OFBiz automatically generates a child production run for the Deck, since it's a critical sub-assembly. The Deck requires its own routing and routing tasks like shaping and lamination, using components such as Glue, Face Ply and Core. Only once the Deck is completed can the main production run proceed - combining it with items like the Sticker, Warranty Card and Transfer to assemble the final skateboard. Fundamentally, you can’t build the skateboard until the Deck is built first and Apache OFBiz handles that dependency seamlessly.

This layered structure is crucial because in real-world production, not all items come ready-made. Some need to be built from smaller parts first.

By defining BOM, Routing and Routing Tasks properly:

  • Procurement can be automated.
  • The production workflow proceeds in the intended logical order.

Manufacturing flow for the Skateboard.

Why Does BOM and Routing Setup Matter for Creating a Production Run?

When you create a Production Run in Apache OFBiz, the system refers to both the Bill of Materials (BOM), the defined Routing and the Routing Tasks further linked to it, to execute production smoothly.

The BOM enables the system to:

  • Automatically pull the right raw materials and component requirements.
  • Identify exactly what goes into building the product.

 At the same time, routing tasks tell the system:

  • Which operations need to be performed, like shaping, laminating, assembling or packaging.
  • In what order these operations should occur, based on the defined routing for the product.

Without a BOM and routing tasks, production would become a manual, error-prone exercise.
With both in place, the process becomes organized, predictable and scalable, ensuring everything runs like clockwork from raw material to finished product.



Step-by-Step Guide for Creating a Production Run in Apache OFBiz


Step 1: Setting up the production run for the main finished product along with its dependent production run

Once the BOM and Routing Task are ready, the first action in Apache OFBiz is to create a production run.

In the next few screens, we’ll walk you through setting up your production run.

1.1 Go to Manufacturing > New Production Run.

1.2 In the Product ID field, enter the ID of the product you want to manufacture. We’ll continue using the skateboard (STC1005) example to keep things consistent across the beginner’s guide for easy reference.

1.3 Just below the Product ID is the field Quantity, enter the amount of units you wish to manufacture.

1.4  In case you have multiple facilities, then choose the facility you wish to manufacture in by selecting the ID of the facility in Facility ID.

1.5 If you have sub-assemblies while manufacturing your final product and you want to automatically create the production runs for them, then, choose Yes from the drop down list for the field Create Dependent Production Runs. 

1.6 Keep in mind that the routing is already linked to the product, so there's no need to manually enter the Routing ID. Apache OFBiz will automatically fetch it during the production run setup. However, if needed, you can use this field to specify an alternative routing in case you want to follow a different process for this particular run.

1.7 Once all the required fields are filled, click on the Submit button to create the production job in the system along with its dependent sub-assembly runs too. Like in this case, the deck will have its own child or dependent production run linked to the parent production run for the Skateboard.

1.8 After clicking on Submit, you’ll reach the screen above. On the Deck Production Run Details page, edit fields such as Facility ID, Quantity, Start Date, Production Run Name and Description if required and click on Confirm.

1.9 Once done, you’ll see a message like the one below confirming that the production run has been successfully updated.

1.10 Scroll down and you should see a screen like the one below.

1.11 The tasks listed under the section “Manufacturing Mandatory Work Efforts” are essentially those child production runs that must be completed before the main production run can begin. In our case, it is the deck; made of multiple sub-components that  needs to be built first before assembling the skateboard. And as we had set up in the previous routing document, here you have the Deck Sub-Assembly task.

1.12 Click on the Production Run ID for the Deck as marked in the screenshot above. After this you will have a screen as shown below.

1.13 As shown above, click on Confirm to approve the child production run for any dependent jobs that might be present as per the final product. In our case it’s for the deck.

What We’ve Done So Far

In our example, we have two production jobs:

  • One for the skateboard (the finished product),
  • And another for the deck (a sub-assembly required to build the skateboard). (Routing ID 10150 in our example)

First, we created both jobs in one go, setting up the entire structure.
Then, we individually confirmed each job:

  • First, we confirmed the production job for the skateboard.
  • Then, we confirmed the job for the deck because without the deck, the skateboard itself can’t be completed.

In simple terms:

  • Setup = Raising a ticket in the system saying "this needs to be built."
  • Confirm = Approving that ticket so production can actually begin.



Step 2: Running Deck Sub-assembly Job (Child Production Job)

Before we can build the final product, we need to take care of its key building blocks. This step focuses on running the production for a sub-assembly; in our case, the deck of the skateboard. Since the deck is going to be used to make the skateboard therefore it must be produced first. Once it’s ready, we can move on to assembling the full skateboard.

2.1 After confirming the production job for the deck (step 1.12) you will see a screen as shown below.

2.2 Scroll down to the Tasks section.

2.3 As seen above, press on the Start button in the Tasks section to begin the production process of the deck. After that, you will see a screen like the one below.

2.4 Scroll down to the Tasks section again and you will be presented the following screen.

2.5 Click on Issue Components (ATP) button, if you want Apache OFBiz to respect actual inventory availability as per system’s records before issuing components to a production run. This ensures that the system performs an Available-to-Promise (ATP) inventory check, verifying whether the required quantity exists in stock before proceeding.

However, if you don’t need to validate stock, such as in cases where inventory is managed externally or the production is outsourced; you can use the regular Issue Components button. This method bypasses inventory availability validation and simply assumes the components are available.

In essence:

  • Issue Components (ATP) performs a stock check based on real-time inventory.
  • Issue Components skips the check and assumes the components are available.

Choose the appropriate method based on whether Apache OFBiz is actively managing components' inventory or not.

2.6 After having issued the components, the same screen will reload again. Scroll down again to this same section and you will find 2 new buttons.

2.7 Click on Complete to mark the child production run as finished once all tasks are done.

Alongside, you’ll find the Declare button, which is used to record execution details while the production run is still in progress. This includes updating actual time spent, recording produced quantities (including WIP or by-products) and logging other task-specific data.

Use this option after Start and before Complete to capture what’s actually happening on the shop floor in real time. Below is how the screen for the Declare option looks like.

2.8 Once all are done, you’ll see the confirmation message.

2.8 With all tasks completed, we’re now ready to add the deck to inventory. Once added, the system will automatically pick it up during the skateboard assembly process. To do this, scroll down to the Production Run Produce section and click the Add button.

What We’ve Done So Far

So far, we've completed the production job for the sub-assembly; in this case, the deck. Without this step, assembling the final skateboard wouldn’t be possible.

In Step 1, we confirmed the production job for the deck. Step 2 builds on that by actually initiating and completing the deck’s production. This involves issuing the required components. Once the components are issued, the job is marked as complete and the finished deck is added to inventory.



Step 3: Running Skateboard Assembly (Main Production Job)

3.1 Now that the deck has been added to inventory and its production is complete, scroll down to the section Manufacturing Dependent Work Efforts and click on the Production Run ID of the Skateboard to go back to the main production run’s window to begin the production process for the skateboards.

3.2 Clicking on the main production run’s ID will take you to the screen below.

3.3 Scroll down to the Tasks section as shown in the screen below.

3.4 As highlighted in the window above, click on Start in the Tasks section to begin the final assembly process. Once you do, a message will appear, as shown below.

3.5 Scroll down to the Tasks section. Click on Issue Components (ATP) to issue the components required to assemble the skateboards.

3.6 After clicking on Issue Components (ATP) you will see the screen reload again looking like below.

3.7 Scroll down to the Tasks section again and click on the Complete button to mark the production process as complete.

3.8 Once you do the above step, you’ll be presented with the screen below.

3.9 Scroll down to find the Production Run Produce section and add the manufactured skateboard to the inventory for further processing and selling as per your internal process.

3.10 Once you’ve added the product to inventory, scroll down to the Inventory Items section. To review the details or attributes of the newly created inventory, simply click on the Inventory ID listed to the left of the section, as highlighted in the screenshot below.

3.11 After clicking on this section you’ll be taken to the following screen:

3.12 Here as you can see the Product ID displayed is that of our main product skateboard.

Note: As you can observe from the screen, just above the Update button, there are 2 quantities corresponding with 2 different field names to their left : 

  • Available to Promise (ATP): The quantity of a product that is available for new customer orders, factoring in current inventory and existing reservations.
  • Quantity on Hand (QOH): The actual physical stock currently available in inventory, without considering reservations.

As seen in the screenshot, both QOH and ATP are shown as 100, reflecting that the 100 skateboard units just produced are now stocked in inventory.

What We’ve Done So Far

When the sub-assembly (the deck) was completed and available in inventory, we moved on to the main act: assembling the final product  —  the complete skateboard.

In the previous steps, we confirmed and completed the deck’s production job. With that done, it’s time to bring everything together. This step involves issuing the sub-assembly (deck) along with any other required components like the transfer, warranty card, and sticker. Once these are issued and assembled together, we mark the main production job as complete and the final product  —  the skateboard  —  is added to inventory.



Quick Tips

Quick tip #1: If you physically inspect inventory and say, you find some damaged skateboards then you can update the system by entering the actual available quantity and ATP (Available To Promise) in the screen shown in Step 3.11. Just scroll down further until you find the section Physical Inventory Variances as shown below and enter the respective details. This keeps your inventory accurate and operations smooth.

Quick tip #2: In the process of manufacturing, there is a possibility for leftover raw materials. These excess materials must be properly returned to the warehouse. Since raw materials contribute directly to costs, it's important to track and manage it accurately.

To return unused materials, simply scroll down to the designated section in the screen shown in step 3.7. The return process is demonstrated below for your reference. 

  • Scroll down to the section titled Return Unused Materials To Warehouse on the main production run’s page.
  • Find the material you want to return.
  • In the blank field on the right, enter the quantity to be returned.
  • The field on the left is for the Lot ID, in case you want to return it to a specific lot.
  • Once you've entered the quantity, check the box next to the material.
  • Click the Submit button.
  • The page will reload, and you’ll see the confirmation window as shown below:

Additionally, keep in mind that this process can be performed at any point of time during or after the production run is complete.

What We’ve Done So Far

Once the final skateboard is added to inventory, you can physically verify stock at your storehouse or warehouse. For instance, if a search for skateboards reveals broken or damaged units, you can update those quantities directly in the system. 

Additionally, if any materials remain unused, you can return them to the warehouse, keeping all stock numbers properly aligned.



Creating production run for variant products

Now that we’ve wrapped up a production run for a standard product, it’s time to move towards a more scalable and efficient approach - the Virtual-Variant Product Model. This model is particularly valuable when you manufacture multiple versions of the same base item, such as products that differ only by color, size or material. Instead of duplicating the entire Bill of Materials (BOM) for each variant, Apache OFBiz allows you to define a single BOM at the virtual (template) product level, and associate only the variable components with each variant. This setup not only reduces redundancy but also saves significant time for engineering, production, and planning teams.

If you're new to the idea of virtual and variant products and want to understand why this model matters from both a system and business standpoint, you can check the conceptual guide on virtual & variant products.

If you want to understand and learn the configuration, the following document - step-by-step guide on setting up virtual and variant products in Apache OFBiz walks you through the entire process.

This current section is the third piece in that journey. It walks you through what happens when you initiate a Production Run for a Variant Product - highlighting what’s different from the standard process and how the system dynamically resolves variant-specific materials based on BOM configuration.

With that foundation in place, we’ll now explore how the actual production run for a variant product works - how Apache OFBiz intelligently links the virtual BOM and routing to each physical variant, and how you can manage this process without breaking your records or duplicating effort.

Important Note Before You Begin
When creating a production run for a variant product, make sure to enter the Product ID of the specific variant, not the virtual product. Although Apache OFBiz technically allows you to start a run with the virtual product ID (since it exists in the system), doing so will corrupt your production records and inventory tracking. The virtual product is only a logical parent - it’s never produced, purchased, or sold directly. Always use the variant’s ID to ensure accuracy in your production and stock data.

Additionally, In Apache OFBiz, routing should always be linked to the virtual product rather than to individual variant products. This approach allows you to define the manufacturing process centrally, ensuring consistency and eliminating redundancy. Since the virtual product acts as a master template for all its variants, associating routing with it ensures that every variant inherits the same core production steps. And in case you missed out on how to set-up routing tasks, we’ve got you covered there as well.

The rest of the process remains the same as with standard products. We’ll show you how Apache OFBiz dynamically pulls in the correct components for the chosen variant - thanks to the virtual-level BOM and product-feature associations.

What Happens During a Production Run for a Variant Product?

Now that you’ve set up your virtual and variant products along with their BOMs, Apache OFBiz automatically simulates and explodes the BOM when you create a production run. It intelligently pulls the right components, even if the BOM is defined only at the virtual product level.

Let’s now look at how this plays out with a variant product in action.

Example: Producing a Red Skateboard

The production planner initiates a production run for the variant product Red Skateboard. Although this variant doesn’t have its own BOM, Apache OFBiz performs the following steps automatically:

1.Resolves the Virtual BOM
Apache OFBiz identifies that Red Skateboard is a variant of Skateboard, and fetches the BOM defined at the virtual product level.

[Component substitution logic in action]

2. Determines Feature-Based Substitutions
When it reaches the Deck component, Apache OFBiz identifies that the Face (Virtual Face) sub-component must vary based on the selected variant. For Red Skateboard, it substitutes Red Face in the material list.

[Sub-component substitution logic in action]

3. Populates the Issue List
The system automatically generates the list of raw materials that must be issued — pulling from both common components (like Ply, Core, Glue) and variant-specific ones (like Red Face).

[Materials to be issued for production run]

4. Maintains Traceability
The production run record retains full traceability: it shows that the production was for Red Skateboard, and clearly displays which parts came from the virtual BOM and which were variant-driven.

[Complete BOM of the Product]

[1st level ‘Actual Material’ Breakdown of the produced skateboard]

[2nd level ‘Actual Material’ Breakdown of the produced skateboard’s Deck]

Note - Here, products with IDs starting with VTC are standard products, while those starting with XTC are variant products — along with their unique components.

As seen in the screenshots above, all the shared components; like the Warranty Card - are labeled with product IDs starting with ‘VTC’, indicating that they originate from the virtual product. Meanwhile, the components that define the variant - such as the red face - carry different IDs, representing the variant-specific elements with product IDs starting with ‘XTC’.

The Key Takeaways are:

  • You only need to define one BOM (at the virtual level), and Apache OFBiz reuses it across all variants.
  • Sub-component differences (like deck face color) are handled dynamically using product features.
  • This leads to cleaner data, faster setup, and less maintenance, without losing flexibility in manufacturing.

Apache OFBiz takes care of the complexity behind the scenes, giving manufacturers the power to scale their product lines without scaling their data management burden.



Wrapping It Up

By now, you’ve walked through the full cycle of running a production run in Apache OFBiz - from setting up the main and sub-assembly jobs, issuing components, confirming production runs along with their respective routing tasks, and finally assembling the product and updating inventory.

This structured approach ensures that every product built reflects the real-world flow of materials, approvals, and inventory handling. Whether you’re making a skateboard or managing a more complex product line, this guide equips you with the foundational knowledge needed to manage production confidently.