Order handling as a ready-made computational model
The template ships with FlowVisual: from the incoming order to the confirmation, with volumes, ranges, capacities and rates already filled in. It is the only one of the six with a shared role and a genuine rework loop, and therefore the only one that shows two findings a one-row-per-step table cannot produce.
The order handling template covers the path from an incoming order to the order confirmation in six working steps and one decision: log the order, credit check, pricing and confirmation, sales-lead approval, then “approved?”. 85 % go to the confirmation, 15 % return as an exception to pricing. It is set up for 6,000 orders a year, 24 on a working day. Across 20,000 stress-test runs the credit check is the binding constraint in 75 % of runs: it can clear 28 orders a day against 24 arriving, and stands at 132 % on a busy day. The second finding appears in no per-step table. Approval and the exception decision are the same person, and that one person binds 19.4 % of runs. Lead time is 0.16 working days at the median and 5.8 on a busy day (P90).
60min
Per order, including the 1.18 passes through the loop.
0.2 → 5.8days
Normal day against busy day.
75%
One person, and every order goes through them.
19%
Approval and exception bind together. It is one person.
What is in the template
The figures come from an example model, not from a client engagement. They are chosen to match a mid-sized trading or manufacturing business handling around 6,000 orders a year. A starting point, not a benchmark.
Inflow: 6,000 orders a year, 24 on a working day, with a day-to-day variation of 24 % and a peak factor of 1.3 on 7 % of days. Start of month, call-offs against framework contracts, the last day of a price promotion.
| Step | Role | Visits | Processing | Capacity | Load, avg. | Load on a busy day |
|---|---|---|---|---|---|---|
| 01 Log order | Sales desk | 1.00 | 8–17 min | 45/day | 55 % | 74 % |
| 02 Credit check | Accounts receivable | 1.00 | 9–18 min | 1 person × 7 h → 28/day | 88 % | 132 % |
| 03 Pricing & confirmation | Sales desk | 1.18 | 12–24 min | 48/day | 61 % | 81 % |
| 04 Sales-lead approval | Sales lead | 1.18 | 3–7 min | shared role, 6.5 h | 55 % | 87 % |
| Decision: approved? | ||||||
| 05 Resolve exception | Sales lead | 0.18 | 6–14 min | the same person as 04 | 55 % | 86 % |
| 06 Send confirmation | Sales desk | 1.00 | 4–9 min | 60/day | 41 % | 55 % |
The visits column is the first sign that this template reads differently from the others: steps 03 and 04 do not run once per order but 1.18 times. The reason sits one row below. 15 % of approvals go back to pricing as an exception rather than onward.
The decisive finding. Constraint probability per step, across 20,000 runs:
| Step | Constraint probability | Days over capacity |
|---|---|---|
| 01 Log order | 0.6 % | 0.8 % |
| 02 Credit check | 74.7 % | 30.3 % |
| 03 Pricing & confirmation | 5.3 % | 2.1 % |
| 04 Sales-lead approval | 9.7 % | 5.2 % |
| 05 Resolve exception | 9.7 % | 5.3 % |
| 06 Send confirmation | 0.0 % | 0.0 % |
The column adds up to 100.0 %: each run counts exactly one binding step, the one carrying the highest load that day.
The credit check is the step where the least happens to an order. Nine to eighteen minutes of pulling an agency report, checking the limit, releasing. It is still the binding step in three runs out of four, because it is one person and every order passes through them: 370 usable minutes a day divided by 13.2 minutes of work is 28 orders against the 24 that arrive. On average that is enough. On 30 % of days it is not, and from there the queue grows faster than the utilisation does.
And the two middle rows belong together. 9.7 % plus 9.7 % is 19.4 % of runs, bound by one person who appears on the canvas as two boxes. That is the second most important constraint in the model, and it has no row of its own.
The shared role and the rework loop
The two things that set this template apart from the other five. Both are findings a one-row-per-step table cannot produce, and both are why this template is the first card in the gallery.
The shared role. Approval (step 04) and the exception decision (step 05) are not two capacities in this template but one resource: the sales lead, 6.5 hours a day at 86 % effective time, so 335 minutes. What the two steps ask of it:
| Visits per order | Processing (mean) | Minutes a day | |
|---|---|---|---|
| 04 Approval | 1.18 | 4.8 min | 137 |
| 05 Resolve exception | 0.18 | 9.7 min | 41 |
| Together | 178 of 335 |
That is 53 % of one person. Measured separately, each step given a capacity of its own, they would read 41 % and 12 %: two comfortable numbers nobody asks about. It is the same work; what differs is the volume you measure it against. Two steps that look comfortable on their own are one person's afternoon.
That is why both boxes read the same utilisation in the model, around 87 % on a busy day. They share one person and therefore share their fate: if that person is out for a day, both steps are out, not one. A model that assumes two independent capacities is quietly modelling two managers who are never ill on the same day.
The rework loop. 15 % of approvals return to pricing as an exception. Back, not onward. That is not a branch but a re-entry, and it has a consequence you cannot see reading left to right: steps 03 and 04 run 1/(1 − 0.15) = 1.18 times per order, the exception step itself 0.18 times.
What that costs, computed against the same model without the loop:
| with the loop (15 %) | without it | Difference | |
|---|---|---|---|
| Passes through 03 and 04 | 1.18 | 1.00 | +18 % |
| Processing time per order | 59.8 min | 54.1 min | +5.7 min |
| Working time per order | €60.85 | €53.95 | +€6.90 |
| Load on the shared role | 53 % | 35 % | +18 points |
| Lead time P90 | 5.81 days | 5.12 days | +0.69 days |
So the loop costs eleven per cent of the working time per order and a good third of the sales lead's day, and it still is not the constraint. This is exactly where two questions people treat as one come apart: "what is this costing me?" and "what is holding me up?" have different answers in this model. The template computes both, and the gap between them is half the story.
Leave a loop out because it is "only an exception" and you lose all three numbers at once: the visits, the cost and the time. A model without the re-entry reads eleven per cent cheaper and 0.7 working days faster than the process is.
The six numbers you replace
Everything else can stay. Adapting more does not improve the result; it only delays the meeting.
- Orders per working day. Last year's orders (or order lines) ÷ working days. Use the unit the work is actually done in: if a twelve-line order is entered once, count orders; if every line is checked, count lines. Either is right, mixing them is not.
- Peak factor. How many orders arrive on the busiest day compared with a normal one? Start of month, framework call-offs, the last day of a promotion. A factor of 1.3 to 2 is common. Without it you are computing a sales desk that is never under load, and the credit check tears on exactly those days.
- Hours the credit check genuinely has for orders. Not the head count of accounts receivable. Somebody also running dunning and matching incoming payments does not have seven hours for credit checks. This single number decides where the constraint sits.
- The processing range for the credit check. Low end and high end. Two minutes for a regular customer inside their limit, thirty for a new one needing an agency report and a callback. That range drives the waiting time, not the mean.
- The share of exceptions. 15 % in the template. The figure is rarely in a report but can be counted in an afternoon: how many orders went back to pricing last month? It is the only input in this model that moves cost, utilisation and lead time at the same time.
- Fully loaded rates per role. Gross salary × 1.5 to 1.8, divided by roughly 1,500 productive hours a year. Do not forget the rate on the shared role: in the template it sits on the resource, not on the two steps. Otherwise an approval is costed at clerk rates.
The one input that is not a number. Before you compute, check who really shares one person here. In the template it is approval and the exception decision. In your business it may be a different pair. Entry and confirmation often sit with the same clerk, pricing and approval with the same sales lead. Every such binding you leave out splits one person across two capacities on paper, and the model then reports two relaxed steps instead of one tight role.
Cross-check before you compute: count the open, unconfirmed orders in the ERP and divide by the orders you confirm in a day (Little's Law). If that lands near your known confirmation time, the model is usable. A large deviation means a queue is missing, here almost always the "waiting for the customer" status.
What the template does not contain. It ends at the order confirmation: picking, shipping and invoicing are deliberately not modelled. That is a different process with a different capacity. Also absent: material availability, callbacks to the customer (calendar time, not working time) and prioritisation. The model works in arrival order. If you genuinely expedite rush orders, model them as a second branch with its own capacity.
Five levers, computed one at a time, two of them null results
Change only one lever per run. Three at once produce a number nobody can attribute to a single lever, and therefore no business case. The five runs below use the same template with exactly one input changed each time.
| Lever | Lead time P90 | Credit-check load, busy day | Working time per order | New most likely constraint |
|---|---|---|---|---|
| Template as shipped | 5.81 days | 132 % | €60.85 | Credit check (74.7 %) |
| 1 Agency check via API (9–18 → 4–9 min) | 0.28 days | 65 % | €53.96 | Pricing (41 %) |
| 2 A second person on the credit check | 0.30 days | 66 % | €60.85 | Pricing (41 %) |
| 3 Exceptions from 15 % to 5 % | 5.20 days | 132 % | €56.00 | Credit check (89 %) |
| 4 Shared role split (two people) | 5.31 days | 132 % | €60.85 | Credit check (87 %) |
| 5 Order entry via EDI/portal (8–17 → 3–7 min) | 5.79 days | 132 % | €54.12 | Credit check (74.7 %) |
Lever 1. The agency check through an interface. The credit agency is queried automatically and a person only decides the cases above the limit or without a match. The check falls from 9–18 to 4–9 minutes. Effect: the P90 of lead time from 5.81 to 0.28 working days, busy-day load from 132 % to 65 %, working time per order from €60.85 to €53.96. The strongest lever in the field, and the only one that needs no staff.
The interesting part sits in the last column. Afterwards the most likely single constraint is "pricing & confirmation" at 41 %. Read only that column and you miss the bigger block: approval and the exception then stand at 25.3 % and 25.1 %, so 50.4 % of runs together. After lever 1 the constraint is no longer a step but a person.
Lever 2. A second person on the credit check. Works almost identically (0.30 instead of 0.28 days) but costs half to one headcount and changes nothing about the working time per order: the same work, spread over two people. The ratio between the two (an interface against a position, 0.02 days apart) is the actual statement of the table.
Lever 3. Exceptions from 15 % to 5 %. Clearer pricing rules, stored conditions, a value threshold below which nothing needs approving. Effect: working time per order from €60.85 to €56.00, load on the shared role from 53 % to 40 %, lead time P90 from 5.81 to 5.20 days. A good result, just not one that solves the constraint: the credit check afterwards binds more runs, not fewer (89 % instead of 74.7 %), because the competition for the title has gone. The lever relieves a person and saves money; it barely improves what you can promise a customer.
Lever 4. Split the shared role. The first null result, and the more uncomfortable of the two. Approvals go to a second manager, exceptions stay with the first. The two steps drop to the comfortable 41 % and 12 % from section 02. Lead time P90 falls from 5.81 to 5.31 days, working time per order stays at €60.85, and the credit check's constraint probability rises from 74.7 % to 86.6 %: the shadow constraint is gone, the real one stands where it was. The shared role is a correct finding and still not a measure, as long as the credit check sits in front of it. It becomes one the moment lever 1 or 2 has run; after that it binds half of all runs. A question of sequence, not of selection.
Lever 5. Order entry via EDI or a customer portal. The second null result, and the single most common recommendation in this family of processes: orders arrive by e-mail and get typed in; a portal or an EDI feed removes that. Entry falls from 8–17 to 3–7 minutes and working time per order from €60.85 to €54.12. Lead time on a busy day: from 5.81 to 5.79 days. Which is nothing. Entry runs at 55 % utilisation and 74 % on a busy day. It never held the process up. The measure is right; the justification "this will make it faster" is not. It saves €6.73 per order, and at 6,000 orders a year that is an argument in its own right, just a different one.
Compute the five separately and rank by effect per effort. Two of five move the lead time; three move money or utilisation. Both are results, as long as one is not sold as the other.
How 20,000 runs turn into a percentage per step is covered in Monte Carlo simulation for processes; why 85 % utilisation is already too much, in How to calculate a bottleneck.
What ends up on paper
After saving the baseline, changing one lever and running a second time, the comparison produces:
- Lead time before/after as P50 and P90. The median says 0.16 working days. Promise sales "confirmed same day" on the strength of that and you are wrong on every tenth day, by almost six working days. A commitment is made against the P90, not against the median.
- Utilisation per step on the busy day and the new constraint after the measure. In this model it moves to "pricing & confirmation" under two of the five levers, and behind that waits the shared role, carrying the larger block.
- Utilisation per shared resource, separately from the steps. This is the figure no step row can show: 178 of the sales lead's 335 minutes, spread across two boxes.
- Throughput as confirmed orders per week against orders arriving: 112 of 120 as shipped. The difference is eight orders left sitting every week.
- Working-time cost per order and per year, from volumes, durations and fully loaded rates. The template computes €60.85 per order, €6.90 of it attributable to the exception loop.
- The assumption list with every estimated input, stated. The sentence "picking, shipping and invoicing are not modelled" takes the sting out of the sharpest question before it is asked.
That is exported as two PDFs: a proposal for the decision maker and documentation for traceability, with your letterhead if you have set one.
One model, two questions. This page answers the arithmetic one: where the 74.7 % comes from, why two boxes show the same utilisation, and what a 15 % re-entry costs in time and money. The other question (what would you recommend, and what does an order waiting three days on a credit report cost) belongs to the method rather than the tool. It lives next door in the Flowrefy analysis archive, alongside the approach these templates came out of. One dataset, two questions, two audiences.
The other templates
Six models ship with the app. All follow the same pattern: structure complete, figures typical, six values to adapt, exactly one clear constraint.
- Order handling is this page. The first card in the gallery and the only case with a shared role and a rework loop.
- Quotation process is the case where lead time acts on revenue rather than on cost.
- Invoice approval is the volatility case: under capacity on average, over it at month end.
- Complaint handling puts the constraint outside the company, so the honest recommendation is not "automate".
- Employee onboarding has low volume and many participants, with one step that binds 86 % of runs.
- IT service desk is the case with a branch: 65 % solved on the spot, 35 % escalated to second level.
Every template opens from the welcome window via Browse templates. The first time round it is worth opening one before starting your own model. Otherwise people build too finely.
- Included in
- FlowVisual for macOS 13+ and Windows 10/11, in the welcome window under “Browse templates”, the first card in the gallery
- Scope
- 6 working steps, one decision with an 85/15 routing share, a re-entry to step 03, one shared resource across two steps, arrivals with variation and a peak factor, capacities, processing ranges, roles, cost rates
- To adapt
- Orders/day, peak factor, credit-check hours, credit-check range, share of exceptions, hourly rates
- Computed with
- 20,000 runs, seed 42. The app defaults to 400. The median holds, the P90 moves by a few per cent
- Typical finding
- The constraint is the credit check (74.7 %), with a shared role behind it at 19.4 % across two boxes
- Provenance of figures
- Example model, no client data. Labelled as such inside the template
Frequently asked
Why is the credit check the constraint rather than the approval?
Because it is one person every order passes through. Seven hours at 88 % effective time is 370 minutes a day; at an average of 13.2 minutes per check that is 28 orders against the 24 arriving, so 88 % utilisation on average and 132 % on a busy day. The approval, at three to seven minutes, is far shorter and sits at 55 %. From roughly 85 % utilisation upwards the queue grows faster than the utilisation does, so what decides is not how long a step takes but how close it runs to its own ceiling.
What does it mean that approval and the exception are the same resource?
That they share one person and therefore read the same utilisation. The sales lead has 335 usable minutes a day; approval asks for 137 of them and the exception for 41, so 178 together, or 53 %. Modelled as separate capacities they would read 41 % and 12 %, and nobody would look. In the stress test the two steps bind 19.4 % of runs together, making them the model's second most important constraint. The difference is not cosmetic: if that one person is out, both steps are out, not one.
How much does the exception loop actually cost?
A 15 % return rate means pricing and approval run 1.18 times per order. Computed against the same model without the re-entry, that costs 5.7 minutes and €6.90 per order, lifts the sales lead's load from 35 % to 53 %, and lead time on a busy day from 5.12 to 5.81 days. So the loop is expensive and still not the constraint. Leave it out of the model because it is "only an exception" and you compute a process eleven per cent cheaper and 0.7 working days faster than it is.
Are the template figures real client data?
No. They are example values matching the orders of magnitude of a mid-sized trading or manufacturing business, and the template labels them as such. Their purpose is that a model runs immediately. They should be replaced by your own six numbers.
Does order entry via EDI or a portal bring lead time down?
No, it brings cost down. In the model, entry at 3–7 instead of 8–17 minutes cuts working time per order from €60.85 to €54.12, a serious amount at 6,000 orders a year. Lead time on a busy day moves from 5.81 to 5.79 days, which is to say not at all: entry runs at 55 % utilisation and was never the limiting step. The measure is right; the justification is not.
Why does the template stop at the order confirmation rather than at dispatch?
Because picking, shipping and invoicing have a different capacity, work in different units and produce different constraints, namely storage slots and vehicles rather than person-hours. Put in one model, the confirmation would disappear next to the logistics. If you need both, model the logistics as a sub-process: it then rolls up with its own capacity and its own constraint, and the statement about the confirmation stays readable.
Open the template and enter your six numbers
Download FlowVisual, choose “Browse templates” in the welcome window, open Order Handling, which is the first card. Modelling and stress testing cost nothing.
Guide: seven steps to the number- Method
How to calculate a bottleneck: why 85 % utilisation is already too much
The bottleneck is not the longest step, it is the step with the highest utilisation. And waiting time does not grow linearly with utilisation. It explodes just before the limit. The maths behind it fits on one page.
Read - Method
Monte Carlo simulation for business processes: what it does and when it lies
Monte Carlo is not a magic word, it is systematic dice-rolling: the same process, hundreds of times, with different random draws each time. What comes out is not a number but a distribution. That is the whole point.
Read - Method
Reading P10, P50 and P90: where the average misleads you
Percentiles are not statistician's vanity; they are the only honest way to report a result that varies. Three numbers, three purposes. Plus three misreadings that routinely end up in decision papers.
Read