Approval steps provide the logic for routing object record approvals to the correct recipients.

At least one approval step is required to activate an approval process; however, a process can contain many steps. When you create steps, it is important to understand the approval workflow you want. Along with the step criteria, step dependencies should be used when organizing your approval workflow. Steps that are not dependent on another step are executed in parallel.

Approval Step Enhancements

Approval steps are enhanced to offer the user three different step types, new description fields, and the ability to select which context object fields are displayed when an approval request or preview is sent.


Approval Step TypesChoose from these step types when creating an approval step:
  • Standard - This is the existing method for creating approval steps.
  • Sub Process - Use this to select the approval rules associated with the approval process's context object, which also replace the assignee types used in a Standard step.
  • Child Process - Use this to select approval rules associated with the approval process context object's child objects, which also replace the assignee types used with a Standard step. This enables the context object and the approval rule list.
Description FieldsThere fields are available for adding descriptive text information about a step, as well as for step entry criteria conditions. These fields enable you to give approvers useful information about these items.
Display Fields

These fields enable you to select the header-level fields of the context object you will show to users when previewing an approval or when an approval request has been sent and the approver is reviewing the request information.

Any related fields you create for the context object are available as display fields.

To create approval steps

Prerequisite: There is an approval process.

  1. From the Approval Process page, click New Approval Step in the Approval Steps section, or when finalizing a process definition, select Yes, I'd like to create an approval step now and click Go.
  2. Enter a step name, step label and description for the step.
  3. Specify the appropriate step type and click Next.
  4. Select the entry criteria for the step and click Next. See Creating Expressions for details on setting the criteria.
  5. Specify the conditions for setting up auto-reapproval. When these conditions are satisfied, the current step is automatically re-approved.
  6. Select step dependencies, if necessary, by highlighting steps in Unselected Items and clicking the right-arrow () button to add them to Selected Items. Reorder the steps as required and click NextStep dependency is based on their order in Selected Items.
  7. Select Step Auto Complete for this step to be approved automatically when it is assigned to the approver. For auto-complete to work as expected, ensure that the step for which you set Step Auto Complete is independent from any other step.

    Note

    You can set up any or all standard steps in an approval process for auto-completion. Entry criteria are still enforced for the selection of the step but are marked as auto-completed if flagged. Approval comments are not enforced even if the comments are flagged as mandatory. Auto-completed steps are captured in the audit trail. Auto Complete assigns the step to the assignee but completes it automatically, whereas Notify Only does not assign the request to the assignee for action. Auto-Complete users are not notified that they have a step to approve, but Notify Only users receive a copy of the assignment email when a request is submitted.

  8. Select the process approvers from Assigned Approver > Assignee Type.

    OptionDescription
    Approval MatrixUse this to dynamically assign an approval request to a user who has the given approval level in the approval matrix for the user submitting the request. For example, approver authority may change based on the discount being offered on a sales contract. So different levels of approvers can be assigned based on approval authority for a given item.
    Custom Queue
    This points to a field that contains a queue name in any custom object with a filter to narrow it down to a single row. This can be specified in two ways:
    • Select the custom field in the custom object you will use for the custom filter expression and manually enter a constant value it will be compared to.
    • Select the custom field in the custom object, but select Bind Value, which enables you to select a field in the associated business object to compare to.
    Custom RoleThis field contains a role name in any custom object with a filter to narrow down to a single row. The behavior is the same as is described for Custom Queue.
    Custom UserThis is a user lookup reference field in any custom object with a filter to narrow down to a single row. The behavior is the same as is described for Custom Queue.
    QueueUse this to dynamically assign an approval request to a queue. If email notifications are set for the queue and the Send Email to Members flag is set to TRUE, notifications are sent to all queue members. If the Send Email to Members flag is set to FALSE, notifications are sent to the current user.
    Related UserThis is a user lookup reference field in the associated business object (e.g. Agreement or Opportunity). This enables you to assign a user associated with the business object (or record) as the approver. For example, you can assign an account's executive sponsor as an approver of that account's quotes. By specifying the executive sponsor via a user field on the account record associated with the quote, you can create a rule or flow where the assignee is that executive sponsor field on the account object.
    RoleA role can be based on your company's hierarchy and can have one or more users assigned to it.
    RuleUse this assignee type to dynamically assign an approval request based on an approval rule. If you select this option, the approval request is sent to the first user that satisfies the filter criteria in the approval rule. If there are multiple approvers in a sequence, only the first approver is selected and assigned.
    UserUse this assignee type to dynamically assign an approval request to a user.
  9. Select Send Email to notify the assignee by email that they must approve or reject the object record. Select Notify Only to notify the assignee by email that the approval process has reached this step, with no call to action.
  10. You may select Skip Unresolved Assignee to skip an unresolved approver from the sequential list of approvers.
  11. Choose Step Auto Escalate to escalate the current step if no action is taken on the approval request within a specified period. Enter the number of days by which you will escalate the approval request in Step Expected Days to Complete, and the number of hours in Step Expected Hours to Complete.
  12. Select a mandatory assignee type where you can escalate the approval request to a user, role or any of the assignee types mentioned in Step 8. Click Next.
  13. Create reminders for approval requests that send a reminder notification to the assignee at the specified duration unit and intervals. For example, you can remind the assignee to take action on the request seven days after it was assigned, and again a week later. To activate reminders, select Step Reminders Active. Reminders are sent to the original assignee only. Reminders are not sent if you reassign or escalate the approval request. 

    As a prerequisite, you must schedule reminder jobs in the respective environment to run a reminder flow. Run these jobs in the development console as per requirement. The default time interval between each job is 15 minutes.

    Example jobs:

    system.schedule('Approvals Reminder Job 1', '0 00 * ? * * 2019', new Apttus_Approval.ReminderJob());
    system.schedule('Approvals Reminder Job 2', '0 15 * ? * * 2019', new Apttus_Approval.ReminderJob());
    system.schedule('Approvals Reminder Job 3', '0 30 * ? * * 2019', new Apttus_Approval.ReminderJob());
    system.schedule('Approvals Reminder Job 4', '0 45 * ? * * 2019', new Apttus_Approval.ReminderJob());
  14. If you enabled submission comments at the process level, you must enable submission comments at each step.
  15. Select the Header and Display Fields that will appear at each approval step by highlighting steps in Unselected Items and clicking the right-arrow button to add them to Selected Items. Reorder the steps as required and click NextStep dependency is based on the Selected Items order. For example, the selected Display fields appear on the Approvals page if you have configured Approvals for CPQ.
  16. Select CC assignees to copy on email notifications for all approval requests assigned for each approval step. CC assignees are set up regardless of the approval step type. This works for standard, sub-, and child processes. CC assignees can be named users and are only copied on email notifications. They cannot approve a request by replying to the email: such replies are bounced. In case of consolidation, CCs from all requests are concatenated.

    Custom users and queues are not supported.

  17. Click Save.

The step is added to the Approval Steps section for the approval process. You can now activate the approval process.

To modify an approval step, use the navigation chevrons to navigate quickly between pages in the Approval Step setup menus. These chevrons reduce the time to navigate to a specific approval property for editing and eliminate having to traverse all the way through from the beginning to find a page to edit and save.

To create an approval rule to use with a sub-process or with child processes

Condition must be added to the Rule Type picklist.

Go to Setup > Create > Objects > Approval Rule, scroll to Custom Fields & Relationships and click Rule Type. From Picklist Values section, click New. Enter Condition and click Save.

  1. Go to Approval Rules and click New.
  2. Select the Business Object and click Next. To use the approval rule with a sub-process it must match the context object of the approval process. To use it with a child process, it must match the child object associated with the approval process.
  3. Enter a rule name and sequence, and select Condition from Rule Type. Click Save.
  4. Click Manage Entries from the Approval Rule Detail page.
  5. From Rule Entries, click New.



  6. Enter the condition you will use to route an approval request to the assignee and click OK.
  7. Fill out the rest of the rule entry as normal, including descriptions for both the condition and the assignee.
  8. When selecting assignees, the type you select impacts what you must enter for the Value field:
    • UserRoleQueue - Enter the label for the specific object record you are referring to.
    • Related User - For custom fields, enter the API Name, such as QuoteOwner___c. This needs to be the User Lookup field on the Line Item or Product Configuration object record. If it is a standard field, add Id to the field name. For instance, with the CreatedBy Line Item field, enter CreatedById.
    • Custom UserCustom QueueCustom Role - This can be a formula using the format: Custom Object (Custom Object Field 01 = "Value" AND Custom Object Field 02 = "Value") User. For more details, see Custom Assignee Example.
  9. Add conditions and assignees as desired and click Save.

    Note

    The assignee type is Subprocess regardless of whether you created a subprocess or child process type.

When the approval rule is Active, it can be used with an approval process and depending on the context object of the approval process, the approval rule will be available when you select a sub-process or child process step type.

You can create additional approval rules as needed.

Using Date Criteria in an Approval Rule Entry

If you use date-based criteria in an approval rule entry, you must use YYYY-MM-DD 00:00:00 format for the date. For example, to trigger an approval rule on a proposal line item with a create date greater than or equal to April 5, 2018, use the following and do not delete anything: 2018-04-05 00:00:00

This is useful to set an approval rule or entry to take effect on or after a certain date. If you do not use the right format, the system displays an error when you try to submit for approval, or it ignores the criteria and triggers the rule regardless of the date.