Approvals
Pinion ships its own approval engine. It runs alongside (not on top of) Salesforce’s standard approval processes, and it knows about the things your quotes actually contain — products, bundle options, line aggregates, configuration draft state. You reach for Pinion approvals when a quote or opportunity has to clear a sign-off gate based on what the rep configured: a discount past a threshold, a margin under a floor, an enterprise SKU on the cart, a multi-year subscription over a certain total.
This section walks the model end to end. If you’re configuring a single rule, jump to Authoring a rule. If you’re auditing why a rule fired (or didn’t), see Runtime & Troubleshooting.
The data model in plain English
The approval subsystem is built out of seven custom objects. You won’t touch most of them directly — the wizard authors them for you — but knowing the shape makes the wizard’s vocabulary land.
| Object | Plain-English role |
|---|---|
| ApprovalChain__c | A path — an ordered or parallel set of steps. “Discount escalation.” |
| ApprovalRule__c | One step in a chain (or a standalone rule). The unit that fires or doesn’t. |
| ApprovalCondition__c | A single firing criterion attached to a rule. “Discount > 20%.” |
| ApprovalVariable__c | A named expression you author once and reference from many conditions. |
| Approver__c | A reusable approver record — wraps a User, Queue, Public Group, or Role. |
| ApprovalRuleApprover__c | Junction. Attaches an Approver to a step, with an order. |
| ApprovalRequest__c | A runtime row — created when a rule fires; tracks the actual sign-off. |
| ApprovalEvaluationLog__c | Append-only audit trail. One row per rule per evaluation, with a per-condition trace. |
The mental model: chains contain rules, rules contain conditions and approvers, runtime requests get written when conditions match. Variables factor out values that appear in many conditions. Evaluation logs are the breadcrumbs the engine drops on every submit and preview.
Related
- Authoring a Rule — the four-step wizard.
- Conditions — firing criteria, aggregates, variables, and scope.
- Approvers — who signs off and how they’re resolved.
- Runtime & Troubleshooting — Why this approval?, disabling, and a full worked example.