The mechanism
Declared once. The server enforces it on every channel — not just UI sugar.
Five write paths
Web form, REST API, bulk import, integration flow and mobile sync all hit the same rule.
Business rule
IF credit_used > credit_limit → block save and show a message. Order 3 of 5, stop on false.
Order
Lines 420,000 with 96% of credit used — state consistent on every channel.
Write rejected
“Customer credit over limit. Order needs finance approval.” — a readable message, not a stack trace.
One rule, every door — declared once and enforced on the server, so the web form, API, import, integration and mobile sync all get the same answer and the same readable message.
A business rule is written once, with its order & message
The server applies it on every write path, not just the UI
Blocked writes route to the right approver to decide
Timed jobs run on schedule, under the same rules
Every run & rejection is logged with a readable reason
The approver's day
Review the record, see the route and who decided before you, then decide — individually or in bulk, across expenses, procurement, credit, claims, and any custom process.
Expense · EXP-20418
The details an RFP answer needs — all verifiable in a demo.
Server-enforced business rules
Web, API, import, integration or sync — the server enforces it. Not UI sugar.
Rule dry-run tester
Run a draft rule against a real record and read exactly what would happen.
Approval processes
Multi-step approvals route by amount, role or territory — with a full trail of who approved what.
Approvals console & bulk actions
Approvers see everything waiting in one console and act on many records at once.
Scheduled jobs & cron builder
Nightly recalculations, weekly digests, month-end jobs — scheduled with a readable cron builder.
Job run ledger
Each execution logged with outcome and duration. When something did not run, you can prove it.
Deduplication & merge
Match rules surface likely duplicates; compare-and-merge keeps the history of both.
Macros
Bundle routine updates into a single action reps trigger from the record.
Resumable workflows
Workflow automation spanning days picks up where it left off — across restarts and handoffs.
Field-change triggers
Fire automation when a field crosses a threshold or changes hands — no polling.