Object Model
25 min
approvals pro is built on a small, purposeful set of custom objects understanding the hierarchy makes every other doc easier to reason about all objects use the appro namespace prefix (1gp package) or sfappspro (2gp package) this page uses appro throughout — substitute your namespace as needed the hierarchy at a glance approval process (appro approval process c) └── (via process path c junction) approval path (appro approval path c) └── approval step (appro approval step c) └── step approver (appro step approver c) ← junction └── approver (appro approver c) runtime records approval request (appro approval request c) └── approval (appro approval c) ← one per approver action configuration records (process, path, step, approver, matrix, variable, condition) are set up once and versioned runtime records (approval request, approval) are created by the engine when a record is submitted configuration objects approval process — appro approval process c the top level container one process targets one object type (e g , opportunity, quote) and produces a single outcome stored in the final action status field key fields field type purpose approval process name c text display name active c checkbox whether the process runs object c text api name of the object being approved process order c number priority when multiple processes match; lowest wins final action status field c text api name of the status field on the target object lock record c checkbox lock the record on submission allow resubmit c checkbox allow resubmission after approval/rejection allow to edit by approver c checkbox approvers can edit the record during approval allow ad hoc addition of approvers c checkbox submitter/approver can add ad hoc approvers make submitted message required c checkbox require a submission comment version number c number incremented when a new version is created criteria expression c / criteria logic c text cached entry criteria logic expression approved email template c / rejected email template c / recalculation email template c / conflict approver email template c lookup template registrations send to c picklist recipients for each process level email approval path — appro approval path c paths group steps a path is reusable across processes on the same object — the process path c junction handles the many to many key fields approval path name c , object c , criteria logic c , matrix c (lookup), additional options c (includes "skip if not applicable"), color c , hide from profile ids c process path — appro process path c junction between process and path lets a single path be attached to multiple processes, each with its own dependency configuration (via depends on c on the junction) approval step — appro approval step c the unit of decision one step resolves to approved or rejected based on its resolve on rule key fields field purpose approval step name c display name approval path c parent path depends on c another step in the same path this step waits for resolve on c first approval , unanimous approval , first approval/reject , democratic approval democratic approval percentage c threshold for democratic mode number of approvers c populated at runtime remember approval decision c enables smart approvals make approver message required c / make rejection message required c / make reassignment message required c comment required gates matrix c optional matrix based condition request email template c / recall email template c step level templates start date c / end date c time bound activation window approval reason c shown in preview / history for approver context step approver — appro step approver c junction between a step and an approver contains no business fields — just the two lookups and receive email preferences approver — appro approver c the abstract approver record one per static user/group/role, one per dynamic lookup pattern see setting up approvers docid\ giczu1eqzh6lnzdehv6e2 key fields type c , user c , group name c , role name c , lookup path c , group lookup c , role lookup c , receive approval request emails c runtime objects approval request — appro approval request c created when a record is submitted represents one in flight or resolved approval cycle key fields field purpose rid c the id of the submitted record (text, to support any object) record name c / record object label c denormalized for display approval process c which process (and version) this request runs on status c pending , approved , rejected , recalled submitted message c submitter's comment rejection message c first rejection's message (for quick display) is edited c true if an approver edited the record mid flight editor c lookup to the last editor approvals c summary of child approvals (text for reporting) approval — appro approval c one record per approver action assigned, approved, rejected, reassigned, delegated the full audit trail of who did what, when key fields field purpose approval request c parent request approval step c which step approver c the approver c record approver user c resolved user id (after lookup/delegation) original approver c populated when reassigned/delegated status c new , assigned , approved , rejected , reassigned , skipped , previously approved step status c / path status c rolled up status of the containing step / path date time assigned c / date time approved c / date time rejected c / date time reassigned c timeline fields approver message c / rejection message c / reassignment message c comments is previously approved c true if smart approvals remembered this decision delegation level c 0 = direct, 1+ = number of delegation hops manually added c true for ad hoc approvers entry criteria objects condition — appro condition c a single criterion that can live on a process, path, step, or variable types clause (record level field check), aggregation (rollup over children), variable calculation (formula combining variables) see entry criteria docid\ jueqw5ihkigwapzfrtszk variable — appro variable c a reusable aggregation definition (in memory rollup) defined once, referenced from multiple conditions key fields object c (the child object), aggregated field c , aggregate function c (count/sum/average/min/max), variable link field c , aggregate filter clause c matrix objects matrix — appro matrix c the matrix definition object c , optionally child object c + child link field c matrix field — appro matrix field c maps a custom field on matrix line c to a field on the target object matrix field name c , map to c , map relation c ( parent / child ), operator c ( match , greater , less , contains ) matrix line — appro matrix line c the actual data rows admins add custom fields here to define the matrix dimensions one built in field seq c (sequence for tie breaking) delegation delegation — appro delegation c a time bound rule "delegate approvals from approver a to approver b when criteria x are met " the nightly reminderscheduler batch processes these key fields approver c , delegated approver c , delegation start date c , delegation end date c , criteria expression c settings approvals pro settings — approvalsprosettings c list type custom setting holding named/value pairs see permissions → custom settings docid\ ystatgnrufhelmt mgduc for the settings that matter approval page columns settings — approval page columns settings c / default c drive which columns appear on the home page pending approvals list per user override + per org default extending the model lookup from approval request c to your object the engine stores the submitted record's id in rid c as text (to stay object agnostic) this prevents standard salesforce reports from joining across the relationship to enable reporting add a standard lookup field on appro approval request c pointing at your object (e g , quote c ) build a record triggered flow (or apex trigger) on appro approval request c that copies rid c → the lookup field on record creation once done, you can show approval requests as a related list on the parent record page build cross object reports ("quotes pending > 7 days in approval") full recipe best practices → extending the object relationship docid\ h8xc9gykfudb7auncqlpu (section 4 2 in the setup guide) entity relationship diagrams standard approvals approval process ──1 to m──> process path ──m to 1──> approval path │ ├─1 to m─> approval step │ │ │ ├─1 to m─> step approver ──m to 1──> approver │ │ │ │ │ └─> user / public group / role (resolved at runtime) │ │ │ └─1 to m─> approval (runtime) │ └──> approval request (runtime) matrix driven matrix ──1 to m──> matrix field (mappings) │ ├──1 to m──> matrix line (data rows) │ │ │ └──> (custom fields per dimension + optional approver c lookup) │ ├──attached to──> approval path matrix c └──attached to──> approval step matrix c related configuring approval processes docid\ kcmpddjgungd5jvuo8ngj — how these objects are filled in entry criteria docid\ jueqw5ihkigwapzfrtszk — condition c and variable c in context approval matrices docid\ qpvuhcohzscqbfrbb6i9h — matrix c , matrix field c , matrix line c in context global methods docid 8c8dwhn2temdwypdq bj2 — apex api over this model