Configuration Overview

Approvals Management supports the Approvals and My Approvals pages out of the box for any object. With minimal configuration, you can set up both of these pages for any object and its child objects on which approvals is configured. This new capability overcomes the need for create custom Visualforce pages and Controllers for enabling approvals on any object, thus significantly simplifying the approval setup on any object and its related child objects.

Although these pages are now available out of the box, you have to configure Approval Required CheckYou can get the Approval Required Check with the main Approvals Management package.

To create an approval process for Agreement header fields, Agreement Line Items, Agreement Term Exceptions, and Agreement Clauses, consider the following use cases for each of the Agreement objects.

For each of the following scenarios, you can view the Approval Requests, Approval Status and the changes in the header field or agreement clause for each approver on the My Approvals and Approvals home page.

  1. Agreement header fields: You can set up an approval process and subsequent steps on the Agreement object to initiate an approval request for various scenarios, such as the total agreement amount > 10000, or Agreement type is MSA, an approval request is sent to the CFO of your company. Create an approval process for the Agreement header fields.

You can configure a child process for the following objects.

    • Agreement Clauses: You can also initiate an approval request when any change is made to the clause of an agreement document. This is required when you want to ensure that all the changes which your customer makes to the existing clauses are approved before finalizing an agreement. It might be possible that your customer changes the Agreement Start Date and your CFO wants to approve the change before finalizing and signing the agreement with your customer.

      For example, the agreement document contains a Warranty clause for 6 months and your customer wants to extend the warranty period to 1 year. Once your customer changes the period in the Warranty clause, you can set Approval process for the change in the Agreement Clause record.

      An Approval with Agreement Clause is useful when you want to track addition of a new clause, modification of an existing clause or deletion of an existing clause from your agreement document. This can be done by tracking the Number of Clauses field of the Template object.
    • Agreement Line Items: With the help of Approvals and Contract Management, you can also create approval processes to track any changes made to the Agreement Line Items and accordingly initiate an approval request.

For example, when your customer changes the price of a product listed in your agreement document, you might require your manager to approve the change before the agreement is finalized.

Also, if there are addition or deletion of Line Items in your agreement document, and you want the higher authority to approve or reject the changes, Approvals can be used.

    • Agreement Term Exceptions: It is also possible to initiate an approval request when a clause, associate with a term exception is checked in from X-Author Contracts.

An Approval with Term Exception is useful when your customer is requesting a change in an existing clause which requires approval from the CFO of your company, and this clause is specific to a single customer.
Considering the above example, if you renew an agreement for a specific customer and your customer wants to enter a new clause. In this scenario, you want your Legal team to approve the new clause before adding it to the renewed agreement. So, you add the new clause, associate it with a term exception and define an approval step of type child process.

After the Approvals package has been installed, there are Setup configuration options that can be changed. By default, the package installation sets up the majority of the application to be used as is; however, some organizational specific options can only be configured after the installation. Some post-package installation configuration must be done to best maximize the features available in Approvals. There are also default settings that you may want to change, to better suit your business.

This section provides the workflow and the sequence of actions you have to define to enable Custom Object Approvals for Agreement and its child objects.

To do...How to define...
Install required packagesInstall the latest approvals and dependent packages.
Adding Values to Approval PicklistsAdd object names to processes, rules, and dimensions.
Approvals System PropertiesCreate a record in Approval System Properties and enter the requisite details
To configure custom object settings

Create a record in Approval Custom Config for the primary custom object. Set up the Context Type as follows:

  • Multiple: If you are defining an approval process for the header and child object.
  • Single: If you are using approvals only on one object.
    In our example, enter Multiple because we want to setup the approval process on both, Agreement header fields and Agreement Line Items.
Add pick list values for approval fields
  • Create Approval Status and Approval Preview Status fields on the header object.

  • Create Approval Status and Approval Preview Status fields on the child object.

Configure Approval Required Check Settings
  • Setup Search Filter (Entry Criteria) for header (e.g. Agreement).

  • Setup Search Filter (Entry Criteria) for line items (e.g. Agreement Line Items).

  • Create the Approval Required Check Trigger for the header and line item object.
  • Invoke the Approval Required Check API within the trigger for the header and line item object and click Save.

  • Set Header and line item approval status based on the Approval Required Check API.

  • Pass the line items that need to be evaluated for approvals when the line items and header information is created or updated.

    The 2 APIs you have to invoke are from the ApprovalRequiredCheck global class:

    • doCheck (Id objId) – returns true if successful, otherwise false.

      This API is Invoked as follows:

      ApprovalRequiredCheck checker = new ApprovalRequiredCheck()


    • doCheck(SObject object) – return a map of approval-status-values keyed by subject IDs. The first entry in the map corresponds to the header context object.

      This API is Invoked in a trigger before update as follows:

       ApprovalRequiredCheck checker = new ApprovalRequiredCheck()


Approval status at the line item as well as header should be set to Approval Required for Preview or Submit to work. Use the above API to create a trigger to invoke Approval Required Check.
Configuring Approvals and My Approvals Page

You can now enable Approvals for your context object by configuring the following 2 buttons and placing them on your object record’s page layout.

  • Preview & Submit Approvals - For actions such as Preview, Submit, Recall for Submitter.
  • My Approvals - For actions such as Approve, Reject, Add Ad hoc Approver, Reassign.
Setting Up Email Templates and AlertsWhile provides default email templates for approval requests, if you want the emails to have attachments or have your own specific content, you must customize the templates.
Set up Approval ProcessConfigure Approval Process
  • Use the Approval Required status as process entry criteria.

  • Create additional pick list values for Approval Status etc.

  • Setup approval rules on the child context object to be used for the step of type Child Process.

  • Setup approval rules on the primary context object to be used for the step of type Subprocess.

  • Approval rules of type Condition can also be defined if the approval rule entry criteria is complex expression.

  • Setup the initial and final submission actions.

Setting Up Approval RulesCreate Approval Rules for each Sub Process and Child Process if you have multiple approvers for a process. Configure Approval Rule criteria. Select Approval Rule Type as Condition to use Auto Re-approval conditions. For each step in sub-process or child process, create approval rule entry, step label, Approval Condition, Auto Re-approval Condition, and Assignee, and step dependency.
Setting Up Backup or Delegate ApproversBackup approvers are required to 'catch' approval requests whose assignees cannot be identified and ensure approval processes progress as expected.
Setting Up the Backup AdministratorThe backup admin user is responsible for handling routing issues that may occur during the approval process, while admin profiles enable you to associate users — via their roles — with admin level access to Approvals.
Set up Page Layout for Primary ObjectAdd Approvals and My Approvals buttons to primary object layout.

Optional Configuration

Auto-Escalating Approval RequestsWhen an approval request is not approved, rejected, or reassigned within the allotted time, it can automatically be reassigned to a new approver so the approval process can continue.
Changing Approval Rule Step BehaviorTypically steps that cannot identify an assignee are sent to the backup administrator; however, you can change that behavior and have the those steps skipped instead.
Changing the Assignee Search Page Results ListThis controls the number of assignees that can be displayed on a single search page. Typically the default value of twenty is suitable for your organization, but you can increase or decrease the value
Creating Approval MatricesMatrices are used with Global Discount Policies to route approvals to users based on system wide default discount percentages.
Approval Request HistoryWhen an approval process is initiated — by submitting or resubmitting an approval — for an agreement, term exception, or opportunity, an approval history record is created. The Approval request history Object comprises information for old approval requests such as, the approval status, the date of the request, who it was assigned to, and who the actual approver was.
Submitting a Request with AttachmentsEnables you to submit your approval request with an attachment. To submit a request with attachment, ensure that you have created custom email notification templates and specified the name of each of the templates in the Approval Process of the object.
Approval Submission CommentsApproval submission comments enable you to add personalized comments when you submit an approval request. You can have a single comment at the process level or up to three comments at the step level.
Child Filter Objects

From 7.0 onwards you can use a child process to configure approvals on child objects.

 However if you wish to create approval steps based on child object fields, you can use custom child object fields. Create an child filter expressions to filter the records based on child object fields.

Reporting on Approval Request ChannelsAs approval requests can be completed within Salesforce or outside of the system via email, this feature provides a way to identify which of the two is used for each approval request.
Opportunity records and ACMWhen Advanced currency management (ACM) is enabled in your org, you cannot have any Opportunity record fields of data type currency in your email templates or approval summary page.

Best Practices

This section comprises the best practices to be considered while defining your approval processes.

Consolidate Notification?Consolidated Approvals?Behavior
YesNoRequests go on-hold if there are additional requests pending for approval. Once the last request becomes available for approval, all the requests for the assignee get assigned. A user gets only one email notification for approval.
YesYesRequests go On-Hold if there are more requests pending for approval. Once the last request becomes available for approval, only one of the requests for the assignee is assigned. All other requests remain On-Hold. What ever action user takes on an assigned request is propagated to all other requests. A user gets only one email notification for approval.
NoNoRequests never go On-Hold. Requests are assigned to the assignee as and when requests becomes available. A user gets a separate assignment notification for each request.
NoYesNot Supported.

Performance and Scalability

Multiple Approval ProcessesWhen to use multiple approval process?

When you have Region Based Approval variations, Business Unit Based Approvals variations, Channel Based Approvals variations.

How do I configure multiple approval processes?

Define mutually exclusive process entry criteria so that only one process is selected for a given primary object instance.

Why do I configure multiple approval processes?

Having multiple approval processes reduces number of approval steps/criteria system needs to execute

Approval Rule Entry CriteriaSpecify minimum approval conditions in Approval Rule entry criteria for Sub Process or Child Process steps to avoid the evaluation of all approval rule entries every time.
Approval Required CheckProvides users visibility to whether approval is needed for header or line items without executing the entire approval process. Provides a mechanism to avoid approval process evaluation for a large number of scenarios.

Types of Approval Steps and when do I use them?

  • Standard - This is the existing method for creating header level approval steps.
  • Sub Process - This is used when you want to select approval rules that are associated with the header level context object of the approval process. The assignee types are derived from the Approval Rule. Create a Sub-Process when you have multiple approvers for a set of criteria instead of defining multiple Standard steps for each criteria.
  • Child Process - This is used when you want to select approval rules that are associated to child objects of the approval process header level context object such as you want to define an approval process for Proposal and Proposal Line Items. The assignee types are derived from the Approval Rule. Use a child process instead of a Subprocess and Standard step type when you want to populate the Approval request with the child object line items to be approved, such as Proposal Line Items.


    If you select Rule as an Assignee Type, the approval request is sent only to the first user that satisfies the filter criteria in the Approval Rule. If you have multiple approvers in a sequence, only the first approver is selected and assigned.

It is recommended that you use conditional criteria instead of Approval Dimensions and Approval Matrix while creating your approval rules and processes.