When ERPNext semi-finished goods tracking fits a shop floor
Semi-finished goods tracking fits a plant where intermediate parts such as castings, machined subassemblies or blended intermediates are made at one operation, held on the floor or in a buffer, and consumed by a later operation. In ERPNext 16, the question is whether each intermediate needs its own item, its own BOM and its own work order, or whether the intermediate can be produced and consumed as a tracked output of a single operation on a work order. The main decision is how much of the floor's flow you want the system to see as stock, and how much you are willing to model as a chain of sub-assembly BOMs. Teams that move away from modeling every intermediate as a sub-assembly BOM usually do so because the BOM tree grows faster than the product range, because intermediates are not sold or purchased on their own, and because shop floor staff need to record what was made at an operation rather than raise a separate build order for each part.
The patterns that benefit most are multi-step routes where the same intermediate feeds several finished items, where intermediates are short-lived and consumed within the same shift, and where operations are long enough that partial output is worth recording before the full route completes. Process plants that produce a blended intermediate before filling, and foundries or machining cells that hand castings to a finishing operation, are typical examples. The fit is weaker when every intermediate is bought from a supplier, sold as a spare part, or needs its own serial or batch genealogy, because those cases still depend on the item and BOM structure. Before committing, confirm in the ERPNext 16 release your plant will run which fields, options and stock entry behavior exist for producing and consuming intermediates per operation, because the exact names and defaults must be checked against the ERPNext releases history and tested on a copy of your data.
Which modeling approach fits which production pattern
This table compares separate sub-assembly BOMs, operation-level semi-finished tracking in ERPNext 16, and a hybrid of the two. Read each row against your own product structure, then confirm the release-specific behavior for stock entries and costing before you commit to a pattern.
| Approach | Best fit | Main trade-off | Confirm in the ERPNext 16 release |
|---|---|---|---|
| Separate sub-assembly BOMs | Intermediates that are stocked, sold as spares or reused across many finished products | More BOMs, item codes and work orders to maintain, and more purchasing and stock entries per level | Multi-level BOM costing rolls up sub-assembly costs; check that each intermediate has its own valuation and reorder settings |
| Operation-level semi-finished tracking | Short-lived in-process parts that exist only between two operations on one route | Intermediate quantities are tied to the operation, so reuse outside that route and independent stock visibility are weaker | Confirm how the semi-finished quantity is produced and consumed per operation, and whether it appears in stock ledger and balance reports |
| Hybrid model | Plants with a mix of stocked intermediates and transient in-process parts | Two rules to govern, so the design needs a written rule for which parts get a BOM | Confirm which entries (work order, job card, stock entry) post the intermediate and how costing treats it when a finished good is valued |
| Costing of the intermediate | Products where the cost of each step must be visible to the planner | Operation costs and material costs can be split differently from a BOM roll-up | Test a sample work order end to end and compare the valuation with a separate-BOM version of the same product |
| Work order behavior | Planners who release one work order per finished good | Operation-level output can change how many work orders or job cards you need | Check whether one work order can produce intermediate quantities at several operations and how it reports completion |
| Job card and time logging | Shop floors that record time and quantity per operation | Quantities recorded per job card must match the stock movements, or variances appear at close | Confirm whether job card completion posts the semi-finished quantity and what happens to partial completions |
| Stock reconciliation and scrap | Processes with frequent rework or yield loss at intermediate steps | Scrap at an intermediate step may be easier to miss than scrap on a stocked item | Confirm where scrap is recorded for an intermediate and whether it reaches the scrap warehouse as expected |
| Migration from an existing BOM tree | Plants moving an established multi-level BOM onto ERPNext 16 | Restructuring a live BOM tree changes costing history and open orders | Ask for a test migration on a copy of production data and reconcile open work orders before cutover |
What changes for work orders, job cards and stock
Producing semi-finished goods per operation moves output recording from a separate sub-assembly work order into the routing of the parent. The cards below name the object each change touches and the question a planner or controller must answer before go-live.
Work order planning and material requirements
Work orders for the finished item now carry the operations that create intermediate output, so the material list is no longer split across sub-assembly orders. Confirm in the target release how required quantities are calculated for each operation and whether shortages surface at the right step. Ask: if a semi-finished good is short at operation 2, does the planner see which later operation stalls and which raw materials are already reserved?
Job card completion per operation
Each job card records the quantity completed at one operation and the workstation that ran it. For semi-finished output, the controller must confirm that completing an operation credits the intermediate quantity correctly, and that partial completions do not double count or leave open quantities that block the next operation. Test a split batch with a rework quantity before trusting the time logs.
Stock entries for intermediate items and warehouses
Intermediate items move between operations and may sit in a work-in-progress warehouse rather than a finished goods location. Verify which stock entry types are generated for each transfer, which warehouse receives the semi-finished quantity, and whether the transfer leaves a traceable record of what was consumed. The question to answer: after the last operation, does on-hand stock agree with the quantity recorded at each step?
Valuation and cost roll-up
Cost of a semi-finished good must flow into the finished item without a separate sub-assembly BOM to carry it. Confirm which operation costs, workstation rates and material values roll up to the intermediate quantity and the final item, and where scrap or process loss is absorbed. Ask your controller whether the valuation of each intermediate matches a manual calculation for one sample batch.
Work in progress reporting
Work in progress now sits partly in operations and partly in intermediate stock, so a single report may understate or overstate open production. Check which reports show quantities in progress per work order, per operation and per warehouse, and whether they reconcile with stock ledger balances. Ask the production lead to name a daily check that proves the two views agree during parallel running.
Setting up semi-finished tracking on a test site first
This sequence proves the operation-level semi-finished workflow on a staging site with sample data, so the team sees how routings, work orders, job cards and stock behave before any production data or configuration is touched.
Confirm the ERPNext 16 and app versions on staging
The platform engineer builds a staging site on the same ERPNext 16 patch level planned for production, with every companion app pinned to a matching version. Confirm the exact release numbers in the ERPNext release notes and check that the site is on a version listed as supported on Frappe's supported versions page. Record the versions in your change log. The step is done when the staging site reports the same ERPNext and Frappe versions as the production plan and a test login works for each role that will use the workflow.
Define routings and operations for the product
The manufacturing lead writes down each operation the product passes through, the workstation or work center that performs it, and which semi-finished output each operation produces and consumes. Create the routing as an operation template in ERPNext and confirm which operations are sequential and which can run in parallel. Ask the vendor or your ERPNext partner to confirm how the release handles operation-level inputs and outputs before you rely on it. The step is done when a reviewer can trace every operation on paper to one routing record and no operation is left without a workstation.
Create semi-finished items and warehouses
The inventory owner creates an item record for each semi-finished good, sets its stock UOM and valuation method, and creates the warehouses where it will sit between operations, such as a WIP warehouse per production line. Keep naming consistent so that reports and filters stay readable. Assign item groups that match your reporting structure. The step is done when every semi-finished item appears in the item list with its warehouse mapping, and a test stock entry can be posted to and from each warehouse without error.
Configure operation inputs and outputs as the release supports
The ERP administrator sets up the operation-level inputs and outputs on the routing and the work order according to what ERPNext 16 supports on the staging site. Where a feature is unclear in the documentation or release notes, test it on a single product before extending it, and note any behavior that differs from a separate sub-assembly BOM. Document each configuration key and setting you change. The step is done when a single test work order shows the expected input consumption and output production for the first operation.
Load sample master data through Data Import in batches
The data owner prepares a small sample of items, operations, workstations and BOM or routing records in the Data Import templates, then loads them in batches. The Frappe documentation advises importing only a few thousand records at a time, so keep each file small and review the import log after each run. Check that child table rows, such as operation lines, have been created against the correct parent. The step is done when record counts match the source sheet and a spot check of ten records shows the right values for each field.
Run a full work order with partial completion
The production supervisor creates a work order for the test product, starts the first job card, and records a partial completion quantity before the full batch is finished. Then the operator completes the remaining operations and time logs in the job cards. Watch which quantities move into WIP, which are consumed at the next operation, and which are posted as finished goods. The step is done when every job card closes, the partial quantities are visible in the stock ledger, and no quantity is left unexplained between operations.
Reconcile stock and valuation before go-live
The finance and inventory team compares the stock ledger, the stock balance report and the general ledger entries for the test work order. Confirm that the semi-finished quantities at each warehouse match the job card outputs and inputs, and that the valuation of finished goods matches the costs posted by the operations. Record any difference and trace it to a document before accepting the workflow. The step is done when the quantity and value differences are zero or each one is explained and signed off by the reviewer, and that signed record is kept with the staging change log.
What drives the cost of this implementation
Software cost is the smallest line in this work. ERPNext is free and open source under GPL-3.0, and the ERPNext pricing page states that self-hosting is free, so the money goes to hosting, to labor and to any partner you hire. Hosting is a recurring cost: the same pricing page lists Frappe Cloud shared site hosting from 5 US dollars per month and Frappe Cloud servers from 20 US dollars per month for shared instances and 125 US dollars per month for dedicated servers. If you run ERPNext on your own servers, the recurring cost is your infrastructure and the staff who operate it. Implementation labor is largely one-time: building routings and operation templates, cleaning master data, configuring the job card flow, testing stock movements against finished goods valuation, and training supervisors and operators. Implementation is available through certified partners, and a fixed-scope quote follows from a written scope.
Four factors move the labor estimate most for semi-finished goods tracking. The first is the number of operations per product, since each operation needs a routing entry, a workstation and a job card flow that operators will actually use. The second is the number of intermediates, because every stage that produces and consumes a semi-finished item adds stock entries to test. The third is shop-floor reporting habits: if operators currently log time on paper or in spreadsheets, the job card reporting design and the training effort grow. The fourth is the quality of existing BOMs. Sub-assembly BOMs that are inconsistent, duplicated or missing scrap quantities take time to reconcile before you can migrate them. Custom scripts add further effort, and they must be deployed under the server script controls the Frappe documentation describes, which can require a deliberate decision on your side.
Ask every bidder to price these items separately in the written scope: the routing and workstation build, the master data cleanup with a count of BOMs in scope, the stock and valuation tests for each intermediate, the operator and supervisor training, and any custom scripts or reports. Ask which items are one-time and which recur, such as hosting, upgrades and support. Confirm whether the quote assumes your current BOM data is usable or includes a cleanup phase. Ask who holds the Frappe Cloud or self-hosting account, since that determines who pays the hosting line. A quote that cannot show these components is not yet comparable with another.
Security and operational risks in shop-floor data
Shop-floor data changes stock and cost records, so access, audit trails and recovery need to be settled before operators start posting. The cards below cover the decisions that most often go wrong when semi-finished goods are tracked per operation.
Role permissions for postings
Decide who can submit job card completions, material transfers and stock entries, and separate those rights from people who can change costing or valuation. Operators usually need to log time and quantities per operation, not edit the stock ledger. Check the role matrix against each workstation and test it with a real operator account before go-live. Confirm the exact role names and permissions in your ERPNext 16 build, since these vary with the modules you enable.
Audit trail for intermediate corrections
Corrections to intermediate quantities, such as a semi-finished count reduced after a scrap find, change what the next operation consumes. Confirm that every amendment to a job card or stock entry is versioned and attributed to a user, and that a supervisor must approve large reversals. Ask your implementation partner to show the version history for a test correction before you rely on it for reconciliation or for any regulated record.
Server scripts disabled by default
Custom logic that validates operation quantities usually runs as a Server Script. From version 15, Server Scripts are disabled by default and must be enabled with the server_script_enabled setting. Frappe Cloud public shared benches do not allow them at all. If your per-operation rules depend on scripts, plan a self-hosted or dedicated bench and record who approves enabling the setting.
SSO and LDAP for shop-floor logins
Shared kiosk accounts make postings impossible to attribute. Decide whether shop-floor users sign in through LDAP against Active Directory or OpenLDAP, or through a social login key that points to your OIDC provider. LDAP group mapping assigns ERPNext roles at each login, so a group change in the directory changes what an operator can post. Confirm TLS settings and how terminated staff are removed.
Backups before master data migration
Moving BOMs, operations, workstations and opening stock into a new structure can overwrite records that production depends on. Take a full database and file backup, restore it to a staging site, and run the migration there first. The Data Import tool documentation advises importing only a few thousand records at a time, so plan batches and reconcile counts after each one.
ERP is not the control layer
Manufacturing is a critical sector under NIS2 Annex II, and connections from ERP to PLCs, SCADA or other industrial control systems fall under ISA/IEC 62443 guidance. Treat ERPNext as the planning and records system, and keep machine control, and any writes back to it, behind a defined boundary. Ask your security team to confirm which zones and conduits apply before any machine data feeds job cards.
Questions buyers ask before tracking semi-finished goods
How much more configuration does per-operation tracking take than a sub-assembly BOM model?
Per-operation tracking usually takes more configuration up front, and the size of the difference depends on how many operations and intermediate items your products have. A sub-assembly BOM model needs one BOM for each semi-finished item, each with its own work order path. Per-operation tracking moves much of that structure into routings, operations and job cards, so the effort depends on the routings you already maintain, the number of workstations involved and how many intermediates you still want to stock separately. The most reliable way to size it is a pilot on one product family. Time the BOM, routing, job card and stock steps, then scale the estimate from measured effort.
Can our team configure semi-finished goods tracking without a partner?
Yes, if your team already runs ERPNext manufacturing and has people who can change routings, BOMs and job card settings and then test the results. A partner becomes more useful when design choices affect valuation, reporting or links to other systems, or when the team lacks time for a structured test cycle. Internal teams usually hold the knowledge of how products are built, which is the hardest input to replace. Plan for the work to take people away from daily operations, and agree who owns decisions about operation outputs and stock treatment before configuration starts. DeployOpen works on fixed-scope engagements, so scope, deliverables and timeline are agreed in writing before work begins.
What does the work need from production engineers and controllers?
Production engineers supply the facts the model depends on: the operation sequence for each product, which operations consume and produce semi-finished goods, expected yields, scrap points and the workstation for each step. Production controllers and finance staff decide how those outputs are valued, which intermediates need stock visibility and how work in progress is reconciled at period end. Both groups should review test results using real job cards, not only the design document. Their availability is often the limiting factor, so name the individuals, the hours they can give during testing and who signs off each decision before the build starts.
How long does testing usually run for this kind of change?
Testing duration depends on scope, and no standard figure applies. The main drivers are the number of product families, the operations in each routing, the number of workstations and whether testing runs alongside live production. Test cases should cover normal runs, partial completion, scrap, rework, cancelled job cards and stock reconciliation. Ask for a test plan with entry and exit criteria, the number of test cycles included and the people who provide test data and approve results. The agreed duration belongs in the written scope, where it can be checked against the deliverables.
Do existing sub-assembly BOMs have to be rebuilt?
Not necessarily. Existing sub-assembly BOMs can often stay in place for products or intermediates you do not change, while the families you pilot move to operation-based tracking. The decision depends on which intermediates must remain stocked items, which exist only briefly between operations, and how many open orders and purchase links depend on the current BOM tree. Review each BOM against those questions and record what was changed and why. Before you change any BOM that feeds live orders, confirm how existing documents behave in ERPNext 16 using the release notes and a test copy of your data.
What happens to open work orders during an upgrade to version 16?
Open work orders need a decision before the upgrade, not after it. Their state at cutover determines whether they carry over, finish on the old version, or are closed and recreated. Take a backup, run the upgrade on a copy of production and check open work orders, job cards and stock entries against expected results. Confirm the upgrade steps and the supported version policy on Frappe's supported versions page before you set a date, and agree a rollback plan in writing. Ask any partner how they will handle in-progress jobs during cutover and who signs off the result.
What should we ask for in a quote for this work?
Ask for a written scope that names the product families, routings, operations, workstations and stock items included, along with anything excluded. A useful quote separates one-time work, such as design, configuration, testing, cutover and training, from recurring work, such as support, upgrades and later changes. It should state how test cycles are counted, who provides test data, how scope changes are handled and which acceptance criteria apply. Compare the quote with your internal effort estimate and ask which assumptions drive the price. DeployOpen does not publish a price list, and a quote follows from the written scope.
Limits to confirm in your ERPNext 16 environment
Operation-level tracking of semi-finished goods depends on the exact ERPNext 16 minor release, the support terms behind your version, and how your custom apps and reports handle intermediates. The checks below are the ones to close in writing before a build starts.
Operation-level options in your minor release
ERPNext 16 receives frequent minor releases, and the releases page lists versions such as v16.51.1, so the fields and behavior for producing and consuming intermediates per operation can differ between patches. Pin the exact minor version you will run in production, then test the work order, job card and stock entry flow on that version in a staging site. Ask the vendor or partner to confirm which options exist in that release rather than assuming the feature set from documentation written for another version.
Support status for version 16
Frappe's supported versions page lists version 16 as supported until the end of 2029, which sets the window in which your operation-level design should remain on a supported branch. Map that date against your planned go-live, your expected upgrade cycle and the time needed to validate a major upgrade. Confirm the support terms in writing so the intermediate tracking design is not built on a version that will leave support before your planning horizon ends.
Warranty and Frappe Cloud support plan
Frappe's supported versions policy ties warranty coverage to running a listed version and holding a matching Frappe Cloud support plan. If you host on your own infrastructure, confirm with Frappe whether your setup qualifies for any coverage and what your partner will support directly. Decide who answers for a defect in the intermediate tracking logic, the vendor, the implementation partner or your internal team, and write that split into the scope.
Reports and costing for intermediates
Stock ledger, valuation and cost roll-up reports must treat a semi-finished item produced by one operation and consumed by another as a stock movement with a correct value. Build a test case with a known quantity and cost at each operation, then compare the stock balance, the work-in-progress valuation and the finished goods cost against hand calculations. Check how the costing report behaves when an intermediate is scrapped, partially consumed or reworked.
Interaction with custom apps and scripts
Custom fields, client scripts or custom apps that touch work orders, job cards or stock entries can break after an operation-level change or a minor upgrade. List every customization that hooks into these DocTypes, then test each one against the target minor release. Server Scripts are disabled by default from version 15 and must be enabled through the server_script_enabled setting, so confirm that your design does not depend on them without that setting in place.
Data Import batch sizes for master data
Migrating existing BOM, routing and item data into the new operation structure often goes through the Data Import tool, which the documentation advises for only a few thousand records at a time. Split large files into batches, keep child table rows grouped with their parent, and validate each batch on a copy of production before loading. Plan the cutover window around the number of batches your data set needs, not around a single import.
How DeployOpen scopes and delivers this ERPNext work
DeployOpen approaches tracking semi-finished goods by operation in ERPNext 16 as a scoped change to your production setup, not a generic install. We first map which products, operations and stock movements need to be tracked, then build and test the configuration in an environment you control. Engagements are fixed-scope, with the written scope agreed before work starts.
How we scope
- Map which semi-finished items are produced and consumed at each operation, and which ones remain sub-assemblies.
- Review your current BOM structure, routings and workstations to decide where operation-level tracking replaces separate sub-assembly BOMs.
- Write down the scope in advance, including the work orders, job cards, stock entries and reports that change, and what stays as is.
How we build
- Configure operations, routings and work order settings in a test site, then confirm how job cards record semi-finished output and consumption.
- Test stock movements, valuation and warehouse transfers for semi-finished goods against a set of representative production scenarios.
- Check each change against your ERPNext version's documented behavior and confirm it on that version before moving it into production.
How we hand over
- Document the final configuration, the operator steps on the shop floor and the stock reconciliation checks for finance and planning.
- Walk your production, stock and accounting users through the changed workflow and record the questions that remain open.
- Provide the configuration and any customizations in a form your own team can review, version and maintain after go-live.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer if you want DeployOpen to keep the setup current.
- Plan how the configuration will be checked when ERPNext minor releases arrive, since both supported major versions receive frequent updates.
- Agree in writing who handles incidents, changes and version upgrades after go-live, and what your team retains.

