A purchase-request approval workflow in Boomi Flow
Why approvals by email fail, the request-review-approve pattern that works, and how to build a purchase-request app with threshold-based manager approval in Boomi Flow.
Purchase requests are the classic first workflow. Everyone has them, they usually run over email, and the rules are simple enough to automate in days: an employee asks to buy something, a manager approves anything above a threshold, and purchasing places the order. This article explains why the email version breaks, describes the pattern that works, and builds it step by step in Boomi Flow.
Why approvals by email fail
- No status. “Has my request been approved?” can only be answered by asking around.
- No audit trail. The approval is a reply buried in someone’s mailbox. Auditors want a record they can query.
- Rules live in people’s heads. “Anything above 2,000 EUR goes to the manager” is applied inconsistently.
- Re-typing. Purchasing types the request into the ERP by hand, with the usual typos in supplier codes.
- Holidays. When the approver is away, requests simply wait.
The pattern: request, route, decide, record
The workflow has four parts:
- Request. A form captures the data in a structured way and validates it at entry.
- Route. A rule decides the path: small requests go straight to purchasing, larger ones need a manager.
- Decide. The approver sees the request on a dedicated screen and approves, rejects or sends it back with a comment. Only people in the approver role can do this.
- Record. Every step is stored with who, when and what, and the requester is notified of the outcome.
Requester ──► Request form ──► amount > threshold? ──yes──► Manager approval ──► Approved / Rejected
│ │
no ──────────────────────────┴──► Purchasing ──► notify requester
For our example, a company in Thessaloniki uses this rule: requests up to 2,000 EUR go straight to purchasing; above that, the department manager must approve.
Building it in Boomi Flow
In Boomi Flow, an app is a flow: a canvas of map elements (pages, decisions, steps and so on) connected by outcomes. Data is held in values, and structured data uses types. The steps below follow that model; exact menu labels can change between releases, so use them as a guide to the order of work.
Step 1: Define the data
Create a type called PurchaseRequest with these properties:
| Property | Type | Example |
|---|---|---|
| requestId | String | PR-2026-118 |
| requester | String | m.papadopoulou |
| costCentre | String | 210 |
| supplier | String | S-0381 |
| description | String | 3 laptops for warehouse |
| amount | Number | 2450.00 |
| status | String | Pending |
| approverNote | String | Approved, use framework deal |
Then create a value of that type, for example Current Request, which carries the request through the flow. Create a
separate value for the threshold (Approval Threshold, 2000) rather than typing the number into a rule. When the
threshold changes, you change one value.
Step 2: Build the request page
- Add a Page element to the canvas and create a page with input components bound to the properties of
Current Request: description, supplier, cost centre and amount. - Make amount, supplier and cost centre required.
- For the supplier, use a list (combobox) rather than free text. In this article we fill it from a static list; in Connecting a Boomi Flow app to integration processes we load it live from the ERP.
- Add a Submit outcome from the page to the next element.
Step 3: Route on the threshold
- Add a Decision element after the request page.
- Create two outcomes from it:
Needs approvalandAuto-approved. - On
Needs approval, add a business rule:Current Request → amountis greater thanApproval Threshold. LeaveAuto-approvedas the default outcome, so it is taken when the rule does not match.
Keep the decision this simple. If routing grows (different thresholds per cost centre, a second-level approver above 10,000 EUR), add the extra rules here, one outcome per path, so the logic stays visible on the canvas.
Step 4: Restrict approval to managers
Approval must happen only by the right people. In Boomi Flow you do this with a swimlane: a lane on the canvas whose elements can only be used by the users or groups you specify, as resolved through the flow’s identity provider.
- Configure the flow to use your identity provider, so users sign in with their company accounts.
- Add a swimlane named
Managersand restrict it to the managers group from your directory. - Inside the swimlane, add the approval page: a read-only summary of the request, a text field for
approverNote, and three outcomes:Approve,RejectandSend back.
When the flow reaches the swimlane, the requester’s session stops there. The request waits until a manager opens it and acts. This is the long-running, stateful part that email can’t do.
Step 5: Set the status and notify
- After each outcome, use an Operator element to set
Current Request → statustoApproved,RejectedorReturned. Send backleads to the request page again, so the requester can fix the request and resubmit.- Send a notification to the requester with the result and the approver’s note. A common approach is to call an integration process that sends the email (or a Teams message) through a connector. Depending on your set-up, Flow’s own notification options may also cover this; check what your tenant offers.
- Approved and auto-approved requests continue to purchasing. In the next article, this is where the flow creates the purchase order in the ERP automatically.
Step 6: Test it
Run the flow and walk through each path:
| Test | Expected result |
|---|---|
| 850 EUR request | Skips approval, status Approved |
| 2,450 EUR request, manager approves | Waits in swimlane, then Approved |
| 2,450 EUR request, manager rejects | Status Rejected, requester notified |
2,450 EUR, Send back, then resubmit |
Returns to request page with data kept |
| A non-manager opens the approval link | Access denied |
The last test matters most. A workflow that lets anyone approve is worse than email, because it looks controlled.
Before you go live
- Plan for absence. Decide what happens when the approver is away: a deputy group in the swimlane, or a reminder and escalation after a few days.
- Store the history outside the flow. Write each decision (request ID, user, outcome, timestamp, note) to a database or to the ERP through an integration process, so you can report on it and keep it as long as audits require.
- Keep thresholds configurable. Finance will change the limit. Make sure that is a value change, not a redesign.
- Test on a phone. Many managers will approve from mobile.
- Agree ownership. The purchasing manager owns the rules; IT owns the platform. Write it down.
Summary
The approval pattern is simple: a structured request, a visible routing rule, a restricted decision step and a recorded outcome. In Boomi Flow these map to a page, a decision with business rules, a swimlane and operator steps. The next step is to stop re-typing approved requests into the ERP, which we cover in Connecting a Boomi Flow app to integration processes. For the wider picture, see Workflow automation and low-code apps: a practical guide.