<https://cwiki.apache.org/confluence/display/~yashwant.dhakad?src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e>
Yashwant Dhakad *created* a page
page icon
<https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=view>
Apache OFBiz Manufacturing – Parts Assembly Process
<https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=view>
This guide explains how to set up the data for assembling a part comprising
of multiple components and subsequently how to execute the assembly
process using Manufacturing module available in *Apache OFBiz suite. *
For understanding it better let us take an example of assembling a
*Skateboard Deck*by first defining its structure.
*Step 1: Defining Products and Components*
*1.1 Products List*
*Product ID*
*Name*
*Type*
*BoM Level*
1000
Skateboard Deck FG
FINISHED_GOOD
0
1001
Skateboard Deck Sub Assembly
FINISHED_GOOD
1
1002
Sticker
FINISHED_GOOD
1
1003
Warranty Card
FINISHED_GOOD
1
1004
Glue
FINISHED_GOOD
2
1005
Veneer Maple Face
FINISHED_GOOD
2
1006
Veneer Maple X Ply
FINISHED_GOOD
2
1007
Veneer Maple Core
FINISHED_GOOD
2
*1.2 Defining Products in XML*
<entity-engine-xml>
<Product productId="1000" productTypeId="FINISHED_GOOD"
internalName="Skateboard Deck FG"/>
<Product productId="1001" productTypeId="FINISHED_GOOD"
internalName="Skateboard Deck Sub Assembly"/>
<Product productId="1002" productTypeId="FINISHED_GOOD"
internalName="Sticker"/>
<Product productId="1003" productTypeId="FINISHED_GOOD" internalName="Warranty
Card"/>
<Product productId="1004" productTypeId="FINISHED_GOOD"
internalName="Glue"/>
<Product productId="1005" productTypeId="FINISHED_GOOD" internalName="Veneer
Maple Face"/>
<Product productId="1006" productTypeId="FINISHED_GOOD" internalName="Veneer
Maple X Ply"/>
<Product productId="1007" productTypeId="FINISHED_GOOD" internalName="Veneer
Maple Core"/>
</entity-engine-xml>
*1.3 Defining Products in SQL*
INSERT INTO PRODUCT (PRODUCT_ID, PRODUCT_TYPE_ID, INTERNAL_NAME) VALUES
('1000', 'FINISHED_GOOD', 'Skateboard Deck FG'),
('1001', 'FINISHED_GOOD', 'Skateboard Deck Sub Assembly'),
('1002', 'FINISHED_GOOD', 'Sticker'),
('1003', 'FINISHED_GOOD', 'Warranty Card'),
('1004', 'FINISHED_GOOD', 'Glue'),
('1005', 'FINISHED_GOOD', 'Veneer Maple Face'),
('1006', 'FINISHED_GOOD', 'Veneer Maple X Ply'),
('1007', 'FINISHED_GOOD', 'Veneer Maple Core');
*Step 2: Setting Up Bill of Materials (BoM)*
*2.1 BoM Structure*
*Parent Product*
*Component Product*
*Quantity*
1000
1001
1.000000
1000
1002
1.000000
1000
1003
1.000000
1001
1004
0.830000
1001
1005
2.000000
1001
1006
2.000000
1001
1007
3.000000
*2.2 Defining BoM in XML*
<entity-engine-xml>
<ProductAssoc productId="1000" productIdTo="1001"
productAssocTypeId="MANUF_COMPONENT" quantity="1.000000"/>
<ProductAssoc productId="1000" productIdTo="1002"
productAssocTypeId="MANUF_COMPONENT" quantity="1.000000"/>
<ProductAssoc productId="1000" productIdTo="1003"
productAssocTypeId="MANUF_COMPONENT" quantity="1.000000"/>
<ProductAssoc productId="1001" productIdTo="1004"
productAssocTypeId="MANUF_COMPONENT" quantity="0.830000"/>
<ProductAssoc productId="1001" productIdTo="1005"
productAssocTypeId="MANUF_COMPONENT" quantity="2.000000"/>
<ProductAssoc productId="1001" productIdTo="1006"
productAssocTypeId="MANUF_COMPONENT" quantity="2.000000"/>
<ProductAssoc productId="1001" productIdTo="1007"
productAssocTypeId="MANUF_COMPONENT" quantity="3.000000"/>
</entity-engine-xml>
*2.3 Defining BoM in SQL*
INSERT INTO PRODUCT_ASSOC (PRODUCT_ID, PRODUCT_ID_TO, ASSOC_TYPE_ID,
QUANTITY) VALUES
('1000', '1001', 'MANUF_COMPONENT', 1.000000),
('1000', '1002', 'MANUF_COMPONENT', 1.000000),
('1000', '1003', 'MANUF_COMPONENT', 1.000000),
('1001', '1004', 'MANUF_COMPONENT', 0.830000),
('1001', '1005', 'MANUF_COMPONENT', 2.000000),
('1001', '1006', 'MANUF_COMPONENT', 2.000000),
('1001', '1007', 'MANUF_COMPONENT', 3.000000);
*2.4 Screenshot For BoM *
*2.5 Screenshot for BoM Simulation*
**
*2.6 Screenshot of BoM for Sub-Assembly*
**
*2.7 Screenshot of BoM Simulation for Sub-Assembly*
*Step 3: Configuring Manufacturing Routing & Tasks*
Each *Work effort (Task)*represents a *step in skateboard assembly*.
*3.1 Routing for Skateboard Assembly*
*WorkEffort ID*
*Name*
*Type*
2000
Apply Transfer to deck
ROUTING
2001
Apply Transfer
ROU_TASK
*3.2 Defining Routing in XML*
<entity-engine-xml>
<WorkEffort workEffortId="2000" workEffortTypeId="ROUTING"
currentStatusId="ROU_ACTIVE" workEffortName="Apply Transfer to deck"
description="Apply Transfer to deck" quantityToProduce="0.000000"/>
<WorkEffort workEffortId="2001" workEffortTypeId="ROU_TASK"
currentStatusId="ROU_ACTIVE" workEffortPurposeTypeId="ROU_ASSEMBLING"
workEffortName="Apply Transfer" description="Apply Transfer"/>
<WorkEffortAssoc workEffortIdFrom="2000" workEffortIdTo="2001"
workEffortAssocTypeId="ROUTING_COMPONENT" sequenceNum="10" fromDate="2016-11-10
16:28:27.529"/>
<WorkEffortGoodStandard workEffortId="2000" productId="1000"
workEffortGoodStdTypeId="ROU_PROD_TEMPLATE" fromDate="2016-11-01 12:00:00.0"/>
</entity-engine-xml>
*3.3 Defining Routing in SQL*
INSERT INTO WORK_EFFORT (WORK_EFFORT_ID, WORK_EFFORT_NAME,
WORK_EFFORT_TYPE_ID) VALUES
('2000', 'Apply Transfer to deck', 'ROUTING'),
('2001', 'Apply Transfer', 'ROU_TASK');
*3.4 Screenshot of Routing*
**
*3.5 Screenshot of Routing Task *
**
*3.6 Screenshot of Routing with Routing task Assoc:*
**
*3.7 Screenshot of Routing with Deliverable Product Assoc:*
**
*Step 4: Configuring Manufacturing Routing & Tasks For Sub Assembly*
Each *WorkEffort*represents a *manufacturing step*in *Skateboard Deck
Assembly*.
*4.1 Routing for Skateboard Assembly *
*WorkEffort ID*
*Name*
*Type*
3000
Skateboard Sub Assembly
ROUTING
3001
LAM
ROU_TASK
3002
Shape Deck
ROU_TASK
*4.2 Defining Routing in XML*
<entity-engine-xml>
<WorkEffort workEffortId="3000" workEffortTypeId="ROUTING"
currentStatusId="ROU_ACTIVE" workEffortName="Skateboard Deck Sub Assembly"
description="Skateboard Deck Sub Assembly" quantityToProduce="0.000000"/>
<WorkEffort workEffortId="3001" workEffortTypeId="ROU_TASK"
currentStatusId="ROU_ACTIVE" workEffortPurposeTypeId="ROU_ASSEMBLING"
workEffortName="LAM" description="LAM" quantityToProduce="0.000000"/>
<WorkEffort workEffortId="3002" workEffortTypeId="ROU_TASK"
currentStatusId="ROU_ACTIVE" workEffortPurposeTypeId="ROU_ASSEMBLING"
workEffortName="Shape Deck" description="Shape Deck"/>
<WorkEffortAssoc workEffortIdFrom="3000" workEffortIdTo="3001"
workEffortAssocTypeId="ROUTING_COMPONENT" sequenceNum="10" fromDate="2016-11-01
12:00:00.0"/>
<WorkEffortAssoc workEffortIdFrom="3000" workEffortIdTo="3002"
workEffortAssocTypeId="ROUTING_COMPONENT" sequenceNum="20"
fromDate="2016-11-01 12:00:00.0"/>
<WorkEffortGoodStandard workEffortId="MANUF10169" productId="DSK15144-00"
workEffortGoodStdTypeId="ROU_PROD_TEMPLATE" fromDate="2016-11-01
12:00:00.0"/>
</entity-engine-xml>
*4.3 Defining Routing in SQL*
INSERT INTO WORK_EFFORT (WORK_EFFORT_ID, WORK_EFFORT_NAME,
WORK_EFFORT_TYPE_ID) VALUES
('3000', 'Skateboard Deck Sub Assembly', 'ROUTING'),
('3001', 'LAM', 'ROU_TASK'),
('3003', 'Shape Deck', 'ROU_TASK');
*4.4 Screenshot of Routing for Sub-Assembly*
**
*4.5 Screenshot of Routing Task for Sub-Assembly*
*4.6 Screenshot of Routing Assoc with Routing Task for Sub-Assembly *
**
*4.7 Screenshot of Routing Assoc with Deliverable Product for
Sub-Assembly*
**
*5.4 Screenshot of Routing with Routing Task*
*Step 6: Running Production*
Now that we have *Products, BoM, Routing, and Tasks*, we can create a
*Production Run*.
*6.1 Create Production Run*
**
*6.2 View Production Run *
*6.2 Creating a Production Run in XML*
<entity-engine-xml>
<WorkEffort currentStatusId="PRUN_CREATED" facilityId="WebStoreWarehouse"
quantityToProduce="2.000000" revisionNumber="2"
workEffortId="10013" workEffortName="1000-Apply Transfer to deck"
workEffortPurposeTypeId="WEPT_PRODUCTION_RUN"
workEffortTypeId="PROD_ORDER_HEADER"/>
<WorkEffort currentStatusId="PRUN_CREATED" description="Apply Transfer"
facilityId="WebStoreWarehouse" priority="10"
quantityToProduce="2.000000" revisionNumber="1" workEffortId="10014" workEffortName="Apply
Transfer" workEffortParentId="10013"
workEffortPurposeTypeId="WEPT_PRODUCTION_RUN"
workEffortTypeId="PROD_ORDER_TASK"/>
<WorkEffort currentStatusId="PRUN_CREATED" facilityId="WebStoreWarehouse"
quantityToProduce="2.000000" revisionNumber="2" workEffortId="10010"
workEffortName="1001-Skateboard Deck Sub Assembly"
workEffortPurposeTypeId="WEPT_PRODUCTION_RUN" workEffortTypeId="PROD_ORDER_HEADER"/>
<WorkEffort currentStatusId="PRUN_CREATED" facilityId="WebStoreWarehouse"
quantityToProduce="2.000000" revisionNumber="1" workEffortId="10011"
workEffortName="LAM" workEffortPurposeTypeId="WEPT_PRODUCTION_RUN"
workEffortTypeId="PROD_ORDER_TASK"/>
<WorkEffort currentStatusId="PRUN_CREATED" facilityId="WebStoreWarehouse"
quantityToProduce="2.000000" revisionNumber="1"
workEffortId="10012" workEffortName="Shape Deck"
workEffortPurposeTypeId="WEPT_PRODUCTION_RUN" workEffortTypeId="PROD_ORDER_TASK"/>
<WorkEffortGoodStandard workEffortId="10010" productId="1001"
workEffortGoodStdTypeId="PRUN_PROD_DELIV" fromDate="2025-02-24 16:56:56.000"
statusId="WEGS_CREATED" estimatedQuantity="2"/>
<WorkEffortGoodStandard workEffortId="10011" productId="1004"
workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01
12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="1.66"/>
<WorkEffortGoodStandard workEffortId="10011" productId="1005"
workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01
12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="4"/>
<WorkEffortGoodStandard workEffortId="10011" productId="1006"
workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01
12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="4"/>
<WorkEffortGoodStandard workEffortId="10011" productId="1007"
workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01
12:00:01.000" throughDate="2025-02-25 08:35:00.004" statusId="WEGS_CREATED"
estimatedQuantity="6"/>
<WorkEffortGoodStandard workEffortId="10013" productId="1000"
workEffortGoodStdTypeId="PRUN_PROD_DELIV" fromDate="2016-11-01 12:00:01.000"
statusId="WEGS_CREATED" estimatedQuantity="2"/>
<WorkEffortGoodStandard workEffortId="10014" productId="1001"
workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01
12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="2"/>
<WorkEffortGoodStandard workEffortId="10014" productId="1002"
workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01
12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="2"/>
<WorkEffortGoodStandard workEffortId="10014" productId="1003"
workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01
12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="2"/>
</entity-engine-xml>
*Step 7: Completing Production & Inventory Issue*
Once production is complete:
* *Inventory is issued from raw materials*
* *Finished goods (1000 - Skateboard Deck) are added to stock*
*7.1 Issue Raw Materials data in XML*
<entity-engine-xml>
<WorkEffortInventoryAssign workEffortId="10011" inventoryItemId="10000"
quantity="1.66"/>
<WorkEffortInventoryAssign workEffortId="10011" inventoryItemId="10001"
quantity="4"/>
<WorkEffortInventoryAssign workEffortId="10011" inventoryItemId="10002"
quantity="4"/>
<WorkEffortInventoryAssign workEffortId="10011" inventoryItemId="10003"
quantity="6"/>
<WorkEffortInventoryAssign workEffortId="10014" inventoryItemId="10004"
quantity="2"/>
<WorkEffortInventoryAssign workEffortId="10014" inventoryItemId="10005"
quantity="2"/>
<WorkEffortInventoryAssign workEffortId="10014" inventoryItemId="10006"
quantity="2"/>
</entity-engine-xml>
*7.2 Add Finished Product to Inventory in XML*
<entity-engine-xml>
<WorkEffortInventoryProduced workEffortId="10010" inventoryItemId="10004"/>
<WorkEffortInventoryProduced workEffortId="10013" inventoryItemId="10007"/>
</entity-engine-xml>
View page Icon
<https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=view>
View page
<https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=view>
•
Add comment Icon
<https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&showComments=true&showCommentArea=true&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=comment#addcomment>
Add comment
<https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&showComments=true&showCommentArea=true&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=comment#addcomment>
•
Like Icon
<https://cwiki.apache.org/confluence/plugins/likes/like.action?contentId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=like&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NGUzNmExZWIwMTRlMzZhMjlkZjEyYTJlIiwicXNoIjoiYTVmNTJkNWYwYjZjOGE1NDUwM2VjM2ZiMWY3NDQ0ZWY4MGJlNWFjMGMyMGNiYTc3YTRlYWExMzAxZjViNTBiNCIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE3NDExNzQzMTIsImlhdCI6MTc0MDU2OTUxMn0.ocFgeMfe7lcrlS2VV-JYhpzJbUVvoz3_KoQ_Up_kAfo>
Like
<https://cwiki.apache.org/confluence/plugins/likes/like.action?contentId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=like&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NGUzNmExZWIwMTRlMzZhMjlkZjEyYTJlIiwicXNoIjoiYTVmNTJkNWYwYjZjOGE1NDUwM2VjM2ZiMWY3NDQ0ZWY4MGJlNWFjMGMyMGNiYTc3YTRlYWExMzAxZjViNTBiNCIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE3NDExNzQzMTIsImlhdCI6MTc0MDU2OTUxMn0.ocFgeMfe7lcrlS2VV-JYhpzJbUVvoz3_KoQ_Up_kAfo>
Stop watching space
<https://cwiki.apache.org/confluence/users/removespacenotification.action?spaceKey=OFBIZ&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=stop-watching&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NGUzNmExZWIwMTRlMzZhMjlkZjEyYTJlIiwicXNoIjoiOTdhYTcyYWMyMGI2OGNhZjRiYzk5NzkyOWNiY2NhMDM3OWE4NGUyNmQ1YWJmNzU5NWY4MzAwMDEzNWY5MTlkNiIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE3NDExNzQzMTIsImlhdCI6MTc0MDU2OTUxMn0.D1am8TjqbSI6U8rF25gI3KMTMTvqroFwhgDdQvDN4GI>
•
Manage notifications
<https://cwiki.apache.org/confluence/users/editmyemailsettings.action?src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=manage>
Confluence logo big
This message was sent by Atlassian Confluence 7.19.30