Approvals

Writers, I left all of this content on one page, but it should probably be split into multiple sub-topics. I didn't have time to do that.
An approval process is a special type of process in which the process must be approved by a specified group of users. To create an approval process, you must install the Approvals application. An approval process starts when a workflow action is run on a particular record and ends when the record is approved or rejected. Platform provides a default implementation for this process that you can customize.

To configure an approval process, follow these steps:

  1. Install the Approvals application
  2. Create an email template
  3. Select approvers
  4. Set the Approval attribute
  5. Set up the Approval process
  6. Optionally, customize the approvals process

Install the Approvals application

Install the Approvals application from the Marketplace (click Install Applications from the Platform menu or from the left sidebar on a setup page). This application has a system object named Approval. Each approval record contains the following information:

  • A reference to the record being approved
  • A reference to the user being asked to approve or reject that record (approver)
  • The current status of this approval: pending, approved, or rejected

Create an email template

Create an email template to be used to notify approvers that they have something to approve or reject. See Email templates for details. The email template should include a link to the record being approved.

Select approvers

Next, select a group of users who will participate in the approval process. Make sure the Is Approver check box is selected for each of these users in the edit user page (if you do not see this box, use the page editor to add it to the page. See Pages, the page editor, and grid controls for more information).

Set the Approval attribute

Edit the object you want to participate in the approval process and enable the Approval attribute. This automatically enables the Workflow attribute if it was not previously enabled. This creates the following components:

  • The system statuses: Approval In Progress, Approved and Declined
  • The workflow action object_name Approval (for example, Order Approval), which is used to start an approval process on a particular record
Note: If you want more than one object to participate in approval process, enable the Approval attribute on each object.

Set up the Approval process

Edit this object_name Approval workflow action to complete the configuration of the approval process:

  • Assign the object_name Approval action to a workflow status. Typically, this is the default status for your workflow process.
  • Select a default list of approvers (this can be changed at runtime whenever the approval process is started on a record).
  • Select an email template to be used to notify approvers that they have something to approve or reject. See Approvals.
  • Choose the workflow process in which to use this approval action (typically the Default workflow process).
  • Choose the approval type:
    • Sequential — Approvers will be notified in sequence. The record will be rejected if any approvers reject it, otherwise it will be approved once all approvers approve it.
    • Parallel — All approvers will be notified simultaneously and can submit their feedback in arbitrary order. The record will be rejected if one or more approvers rejects it, otherwise it will be approved.
    • Tally Votes — This works identically to the parallel approval process, but will continue until all approvers approve or reject the record. The record will be approved if a majority of the approvers approve it and it will be rejected otherwise.
  • Assign appropriate permissions to run the object_name Approval action.

Optionally, customize the approvals process

To further customize an approval process, you can:

  • Create several workflow processes
  • Create (by cloning) several object_name Approval actions to start them.
  • Create several email templates as needed.

Once configured, your approval processes will operate as follows:

  • Any user with sufficient permissions can invoke the object_name Approval action for a selected record (or a number of records if the Group Action property is enabled for the action).
  • An email to the first approver will be sent (or all approvers for a parallel or tally votes process).
  • The email should include a link to the record being approved. This link will open the view page for the approval.
  • Approvers will also see a list of records currently waiting for their approval in the My Approvals tab of the Approvals application. Selecting a record opens the view page for the approval.

    View Approval

  • After reviewing a record submitted for approval, the approver clicks Approve Or Reject, which opens the approval page:

    Approval Page

  • On this page, the user can:
    • Provide comments.
    • Click Approve, Reject, or Cancel.
  • If the record is approved, the sequential process will continue and an email will be sent to the next approver in the sequence.
  • If the record is rejected, the approval process will end and the record will be moved to the Rejected status (any approver has veto power, except for the Tally Votes process described above. That is, an approver can approve a rejected order or reject an approved order).
  • When all approvers have approved the record, it is moved to Approved status.

You can associate triggers to run when a record's status is changed to the Approved or Rejected status. It is common to configure a trigger to notify specific users when a record has been approved or rejected.