Policies

A Policy is a threshold gate. It answers one question for a record: does this need approval at all? Policies look at the numbers — an amount, a discount percentage, a credit balance — and decide whether to let the record through or require sign-off.

Policies run before any workflow. A policy that clears a record can skip the human approval entirely; a policy that trips forces the record into the approval chain.

Workflow Management — policies list with thresholds and subject types
Workflow Management — policies list with thresholds and subject types

When to use a policy vs a workflow

Use a Policy when…Use a Workflow when…
The decision is a number crossing a thresholdYou need to route to specific approvers
You want to turn approval on/offYou want an approval chain (serial/parallel)
Example: “PO over 50M needs approval”Example: “Route to Dept Head then Finance”

Most real setups use both: a policy decides whether, a workflow decides who.


The threshold model

A policy has three parts:

  1. Subject type — the entity it guards (Purchase Order, Sales Order, Invoice, Expense, Deal…).
  2. Condition / threshold — the numeric test, e.g. amount > 50,000,000 or discountPercent > 15.
  3. Outcome — what happens when the condition is met: require approval (the common case), or block/allow.

When the condition is not met, the record proceeds without an approval gate.


Create a policy

Step 1 — Open Policies

Go to Workflow → Policies and click New Policy.

Step 2 — Choose the subject type

Pick the entity to guard — e.g. Purchase Order. The available fields for the threshold come from this entity.

Step 3 — Define the threshold

Set the numeric condition. Examples:

  • PO amount: totalAmount > 50000000 → requires approval.
  • Discount: discountPercent > 15 → requires price approval.
  • Credit limit: orderTotal + outstandingBalance > creditLimit → block the order.

Step 4 — Set the outcome

Choose Require approval (hands the record to the matching workflow chain), Block (prevents the action, e.g. credit-limit exceeded), or Allow (explicitly clears below-threshold records).

Step 5 — Set priority

Give the policy a priority. Lower numbers evaluate first; the first matching policy wins. Put specific rules above general ones.

Step 6 — Activate

Set the policy Active. It is now evaluated on every create/update of its subject type.

⚠️

A policy only has effect if its backing feature toggle is enabled. For example an amount policy on POs needs po_amount_threshold; a discount policy needs price_approval_on_discount. See the table below.

Workflow Management — policy editor showing subject type, threshold and outcome
Workflow Management — policy editor showing subject type, threshold and outcome

Worked examples

PO over 50M VND needs director approval

  • Subject: Purchase Order
  • Condition: totalAmount > 50000000
  • Outcome: Require approval → routes to the PO approval workflow (Dept Head → Director)
  • Toggle: po_amount_threshold, require_po_approval

Discount over 15% needs price approval

  • Subject: Sales Order / Quote
  • Condition: discountPercent > 15
  • Outcome: Require approval → price approval chain
  • Toggle: price_approval_on_discount

Credit limit exceeded blocks the order

  • Subject: Sales Order
  • Condition: orderTotal + outstandingBalance > creditLimit
  • Outcome: Block (order cannot be confirmed until cleared)
  • Toggle: customer_credit_limit_check

Policy-capable toggles

These ERP feature toggles (in Workflow → Settings) control which policies take effect:

ToggleGovernsTypical policy
po_amount_thresholdPO amount gatePO over N needs approval
so_amount_thresholdSales order amount gateSO over N needs approval
require_po_approvalWhether POs need approval at allMaster switch for PO chains
require_so_approvalWhether SOs need approval at allMaster switch for SO chains
price_approval_on_discountDiscount gateDiscount over N% needs price approval
customer_credit_limit_checkCredit balance gateBlock orders exceeding credit limit
multi_level_approvalMulti-step chainsEnables Manager → Finance → CFO ladders
parallel_approvalParallel approversEnables A AND B levels
multi_level_leave_approvalLeave chainsLong leave needs Manager → HR

Evaluation order & precedence

  • Policies are checked in priority order; the first match decides the outcome.
  • A Block outcome stops the action immediately.
  • A Require approval outcome hands the record to the matching workflow.
  • If no policy matches, the record proceeds (subject to any always-on workflow).

Keep a small number of clear policies per subject type. Overlapping thresholds with similar priorities are hard to reason about — prefer distinct, non-overlapping bands.


FAQ

Q: What happens when two policies match? A: The one with the lower priority number (evaluated first) wins.

Q: Can a policy route to a specific person? A: No — that’s a workflow’s job. A policy decides whether approval is needed; the workflow decides who.

Q: My policy seems ignored. A: Check that its feature toggle is on in Workflow → Settings, that the policy is Active, and that a higher-priority policy isn’t matching first.