---
schema_version: "1"
id: e2ec98895ee0345ebc650e5d724673e209f34f71d3aa682c41df7210327da6c4
title: ApprovalProcess
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/api_meta/meta_approvalprocess.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_approvalprocess.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: a0e6734da6297cdca3cac39347176a5d06ee2a65d079652b7cdffa80bf292f63
description: Represents the metadata associated with an approval process. An approval process automates how records are approved in Salesforce. An approval process specifies each step of approval, including who to request approval from and what to do at each point of the process.
---
# ApprovalProcess

Represents the metadata associated with an approval process. An approval process automates how records are approved in Salesforce. An approval process specifies each step of approval, including who to request approval from and what to do at each point of the process.

This type extends the [Metadata](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/metadata.htm "The base class for all metadata types. You can’t edit this object. A component is an instance of a metadata type.") metadata type and inherits its fullName field.

![Note](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png)

#### Note

- To use approval processes on Salesforce Knowledge articles with the Metadata API, the article type must be deployed. For article version (\_kav) in approval processes, the supported action types are: Knowledge Action, Email Alert, Field Update, and Outbound Message.
- Send actions and approval processes for email drafts aren’t supported in the Metadata API.
- The metadata doesn’t include the order of active approval processes. Sometimes you have to reorder the approval processes in the destination org after deployment.

## File Suffix and Directory Location

ApprovalProcess components have the suffix .approvalProcess and are stored in the approvalProcesses folder.

## Version

ApprovalProcess components are available in API version 28.0 and later.

## Fields

<table class="featureTable sort_table" summary="">



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d144874e115">Field Name</th>

              <th class="featureTableHeader  " id="d144874e118">Field Type</th>

              <th class="featureTableHeader  " id="d144874e121">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">active</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">boolean</td>

              <td class="entry" headers="d144874e121" data-title="Description">Required. Whether the approval process is active.<p class="p">After an
                  approval process is activated, you can’t add, delete, or change
                  the order of the steps or change its reject or skip behavior,
                  even if the process is inactive.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">allowRecall</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">boolean</td>

              <td class="entry" headers="d144874e121" data-title="Description">Whether to allow submitters to recall approval requests.<p class="p">If set
                  to <samp class="codeph nolang">false</samp>, only
                  administrators can recall approval requests.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">allowedSubmitters</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">
                <a class="xref" href="#ApprovalSubmitter">ApprovalSubmitter</a>[]
              </td>

              <td class="entry" headers="d144874e121" data-title="Description">Required. An array of users who are allowed to submit records for
                approval.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">approvalPageFields</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type"><a class="xref" href="#ApprovalPageField">ApprovalPageField</a></td>

              <td class="entry" headers="d144874e121" data-title="Description">Specifies which fields to display on the approval page, where the
                approver goes to approve or reject the record. By default, the
                approval page displays the following:<ul class="ul bulletList">
                  <li class="li">
                    <span class="keyword parmname">Name</span> field
                  </li>

                  <li class="li">
                    <span class="keyword parmname">Owner</span> field (except for child
                    objects)
                  </li>

                </ul>
                <p class="p">If you enable notifications in the Salesforce mobile app, keep in mind
                  that approvers can view this list of fields on a mobile device.
                  Select only the fields necessary for users to decide whether to
                  approve or reject records.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">approvalStep</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">
                <a class="xref" href="#ApprovalStep">ApprovalStep</a>[]
              </td>

              <td class="entry" headers="d144874e121" data-title="Description">An array of approval step definitions.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">description</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e121" data-title="Description">Describes the approval process.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">emailTemplate</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e121" data-title="Description">Specifies which Classic email template to use for approval
                requests. If not specified, the default email template is used.
                <p class="p">Lightning email templates aren’t packageable. We recommend
                  using a Classic email template.</p>
                <p class="p">When an approval process
                  assigns an approval request to a user, Salesforce sends the user
                  an approval request email.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">enableMobileDeviceAccess</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">boolean</td>

              <td class="entry" headers="d144874e121" data-title="Description">Whether users can access an external version of the approval page
                from any browser, including browsers on mobile devices, without
                logging in to Salesforce. Corresponds to <span class="keyword parmname">Security
                  Settings</span> in the user interface.<p class="p">If set to <samp class="codeph nolang">true</samp>, approval steps can’t have
                  approvers of <span class="keyword parmname">type</span>
                  <samp class="codeph nolang">adhoc</samp>.
                </p>
                <p class="p">If set to
                  <samp class="codeph nolang">false</samp>, approvers must
                  log in to Salesforce to access the approval page.
                </p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">entryCriteria</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type"><a class="xref" href="#ApprovalEntryCriteria">ApprovalEntryCriteria</a></td>

              <td class="entry" headers="d144874e121" data-title="Description">Determines which records can enter the approval process. Exclude
                this field to allow all records to enter the approval process.
                <p class="p">When you deploy an approval process with no entry criteria to
                  overwrite an existing approval process with entry criteria, then
                  the entry criteria from the existing process are applied to the
                  deployed process.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">finalApprovalActions</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type"><a class="xref" href="#ApprovalAction">ApprovalAction</a></td>

              <td class="entry" headers="d144874e121" data-title="Description">Specifies which workflow actions to execute when all required
                approvals have been given for a record.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">finalApprovalRecordLock</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">boolean</td>

              <td class="entry" headers="d144874e121" data-title="Description">Whether to keep the record locked after it receives all necessary
                approvals. Default: <samp class="codeph nolang">false</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname" id="field_finalRejectionActions_name"><a name="field_finalRejectionActions_name"><!-- --></a>finalRejectionActions</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type"><a class="xref" href="#ApprovalAction">ApprovalAction</a></td>

              <td class="entry" headers="d144874e121" data-title="Description">Specifies which workflow actions to execute after a record enters
                the final rejection state.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">finalRejectionRecordLock</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">boolean</td>

              <td class="entry" headers="d144874e121" data-title="Description">Whether to keep the record locked after it’s finally rejected.
                Default: <samp class="codeph nolang">false</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">initialSubmissionActions</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type"><a class="xref" href="#ApprovalAction">ApprovalAction</a></td>

              <td class="entry" headers="d144874e121" data-title="Description">Specifies which workflow actions to execute when a record is
                initially submitted for approval.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">label</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e121" data-title="Description">Required. Name of the approval process.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname" id="field_nextAutomatedApprover_name"><a name="field_nextAutomatedApprover_name"><!-- --></a>nextAutomatedApprover</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type"><a class="xref" href="#NextAutomatedApprover">NextAutomatedApprover</a></td>

              <td class="entry" headers="d144874e121" data-title="Description">Specifies a standard or custom user hierarchy field that can be
                used to automatically assign the approver for an approval step.<p class="p">If
                  you exclude this field, then no approval step can use a user
                  hierarchy field to automatically assign the
                  approver.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">postTemplate</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e121" data-title="Description">Post template to use for Approvals in Chatter. <p class="p">Chatter post
                  approval notifications are only available for approval processes
                  associated with an object that has been enabled for feed
                  tracking.</p>

              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">recallActions</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type"><a class="xref" href="#ApprovalAction">ApprovalAction</a></td>

              <td class="entry" headers="d144874e121" data-title="Description">Specifies which workflow actions to execute when a pending
                approval request is withdrawn.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">recordEditability</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">RecordEditabilityType (enumeration of type string)</td>

              <td class="entry" headers="d144874e121" data-title="Description">Specifies which users can edit records that are pending approval.
                When a record is submitted for approval, it’s automatically locked
                to prevent other users from editing it during the approval process.
                Valid values are:<ul class="ul bulletList">
                  <li class="li">
                    <samp class="codeph nolang">AdminOnly</samp>—Records pending approval can be
                    edited by:<ul class="ul bulletList">
                      <li class="li">Users with the “Modify All Data”
                        permission</li>

                      <li class="li">Users with the “Modify All Records”
                        object-level permission for the given object</li>

                    </ul>
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">AdminOrCurrentApprover</samp>—Records pending
                    approval can be edited by:<ul class="ul bulletList">
                      <li class="li">Users with the “Modify All Data”
                        permission</li>

                      <li class="li">Users with the “Modify All Records”
                        object-level permission for the given object</li>

                      <li class="li">The assigned approver, who must have edit access to
                        the record through user permissions and the
                        organization-wide sharing defaults for the given
                        object</li>

                    </ul>
                  </li>

                </ul>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e115" data-title="Field Name"><span class="keyword parmname">showApprovalHistory</span></td>

              <td class="entry" headers="d144874e118" data-title="Field Type">boolean</td>

              <td class="entry" headers="d144874e121" data-title="Description">Whether to add the Approval History related list to the approval
                page, which is where the approver can view the approval request
                details and approve or reject the record. The Approval History
                related list tracks a record through the approval process.<p class="p">If you
                  also want to add the Approval History related list to record
                  detail and edit pages, use the Salesforce user interface to
                  customize the page layouts for the given object.</p>
              </td>

            </tr>

          </tbody>

        </table>

## ApprovalSubmitter

Represents a user or set of users who can submit records for approval.

<table class="featureTable sort_table" summary="">



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d144874e527">Field Name</th>

              <th class="featureTableHeader  " id="d144874e530">Field Type</th>

              <th class="featureTableHeader  " id="d144874e533">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d144874e527" data-title="Field Name"><span class="keyword parmname">submitter</span></td>

              <td class="entry" headers="d144874e530" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e533" data-title="Description">Identifies a specific user or set of users who can submit records
                for approval. This field is required, except when the following
                types are specified and the <span class="keyword parmname">submitter</span> field is ignored:<ul class="ul bulletList">
                  <li class="li"><samp class="codeph nolang">owner</samp></li>

                  <li class="li"><samp class="codeph nolang">creator</samp></li>

                  <li class="li"><samp class="codeph nolang">allInternalUsers</samp></li>

                </ul>
                <div class="p">Example:<div class="codeSection xml">
                    <pre class="codeblock xml"><span class="tag">&lt;allowedSubmitters</span>&gt; 
    <span class="tag">&lt;type</span>&gt;allInternalUsers<span class="tag">&lt;/type</span>&gt;
<span class="tag">&lt;/allowedSubmitters</span>&gt;  
<span class="tag">&lt;allowedSubmitters</span>&gt;
  &nbsp; <span class="tag">&lt;submitter</span>&gt;myGroup<span class="tag">&lt;/submitter</span>&gt;
    <span class="tag">&lt;type</span>&gt;group<span class="tag">&lt;/type</span>&gt;
<span class="tag">&lt;/allowedSubmitters</span>&gt;</pre>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e527" data-title="Field Name"><span class="keyword parmname">type</span></td>

              <td class="entry" headers="d144874e530" data-title="Field Type">ProcessSubmitterType (enumeration of type string)</td>

              <td class="entry" headers="d144874e533" data-title="Description">Required. Type of user or set of users who can submit records for
                approval. Valid values are:<ul class="ul bulletList">
                  <li class="li"><samp class="codeph nolang">group</samp></li>

                  <li class="li"><samp class="codeph nolang">role</samp></li>

                  <li class="li"><samp class="codeph nolang">user</samp></li>

                  <li class="li"><samp class="codeph nolang">roleSubordinates</samp></li>

                  <li class="li"><samp class="codeph nolang">roleSubordinatesInternal</samp></li>

                  <li class="li"><samp class="codeph nolang">owner</samp></li>

                  <li class="li"><samp class="codeph nolang">creator</samp></li>

                  <li class="li"><samp class="codeph nolang">partnerUser</samp></li>

                  <li class="li"><samp class="codeph nolang">customerPortalUser</samp></li>

                  <li class="li"><samp class="codeph nolang">portalRole</samp></li>

                  <li class="li"><samp class="codeph nolang">portalRoleSubordinates</samp></li>

                  <li class="li">
                    <samp class="codeph nolang">allInternalUsers</samp>—all Salesforce users in
                    the organization
                  </li>

                </ul>
              </td>

            </tr>

          </tbody>

        </table>

## ApprovalPageField

Represents the selection of fields to display on the approval page, where an approver can view the approval request details and approve or reject the record.

| Field Name | Field Type | Description |
| --- | --- | --- |
| field | string\[\] | An array of fields that are displayed on the page for the approver to approve or reject the record. |

## ApprovalStep

Represents a step in the approval process. Approval steps define the chain of approval for a particular approval process. Each step determines which records can advance to that step, who to assign approval requests to, and whether to let each approver’s delegate respond to the requests. The first step specifies what to do if a record doesn’t advance to that step. Later steps specify what happens if an approver rejects the request.

![Note](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png)

#### Note

- The order of the ApprovalStep entries in the approval process definition determines the order in which the approval steps are executed.
- After an approval process is activated, you can’t add, delete, or change the order of the steps or change its reject or skip behavior, even if the process is inactive.
- Each approval process supports up to 30 steps.

<table class="featureTable sort_table" summary="">



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d144874e741">Field Name</th>

              <th class="featureTableHeader  " id="d144874e744">Field Type</th>

              <th class="featureTableHeader  " id="d144874e747">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">allowDelegate</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type">boolean</td>

              <td class="entry" headers="d144874e747" data-title="Description">Whether to allow delegated approvers in this step of the approval
                process. A delegated approver is a user appointed by an assigned
                approver as an alternate for approval requests.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">approvalActions</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type"><a class="xref" href="#ApprovalAction">ApprovalAction</a></td>

              <td class="entry" headers="d144874e747" data-title="Description">Specifies which workflow actions to execute when a record is
                approved in this step of the approval process.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">assignedApprover</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type"><a class="xref" href="#ApprovalStepApprover">ApprovalStepApprover</a></td>

              <td class="entry" headers="d144874e747" data-title="Description">Specifies the assigned approvers for this step of the approval
                process.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">description</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e747" data-title="Description">Describes the approval step.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">entryCriteria</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type"><a class="xref" href="#ApprovalEntryCriteria">ApprovalEntryCriteria</a></td>

              <td class="entry" headers="d144874e747" data-title="Description">Determines which records can enter this step of the approval
                process.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">ifCriteriaNotMet</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type">StepCriteriaNotMetType (enumeration of type string)</td>

              <td class="entry" headers="d144874e747" data-title="Description">Specifies what to do for records that don't meet the entry
                criteria. Valid values are:<ul class="ul bulletList">
                  <li class="li">
                    <samp class="codeph nolang">ApproveRecord</samp>—Approve the request and
                    execute all final approval actions.
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">RejectRecord</samp>—Reject the request and execute
                    all final rejection actions. This option is available only
                    for the first step in the approval process.
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">GotoNextStep</samp>—Skip to the next approval
                    step. If you select this option for the first approval step,
                    and a record doesn’t meet the entry criteria for any other
                    step, the record is rejected.
                  </li>

                </ul>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">label</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e747" data-title="Description">Required. Name of the approval step.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">name</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e747" data-title="Description">Required. Unique name of the approval step. It must contain only
                underscores and alphanumeric characters, begin with a letter, not
                include spaces, not end with an underscore, and not contain two
                consecutive underscores. The requirement for uniqueness is only
                within the specific approval process.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">rejectBehavior</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type"><a class="xref" href="#ApprovalStepRejectBehavior">ApprovalStepRejectBehavior</a></td>

              <td class="entry" headers="d144874e747" data-title="Description">Required, except for the first step in the approval process.
                Specifies what happens if the approver rejects the request during
                this approval step, unless it's the first step in the
                approval process.<p class="p">If the approver rejects the request in the first
                  step in the approval process, the reject behavior is determined
                  by the <span class="keyword parmname">finalRejectionActions</span>.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e741" data-title="Field Name"><span class="keyword parmname">rejectionActions</span></td>

              <td class="entry" headers="d144874e744" data-title="Field Type"><a class="xref" href="#ApprovalAction">ApprovalAction</a></td>

              <td class="entry" headers="d144874e747" data-title="Description">Specifies which workflow actions to execute when a record is
                rejected in this step of the approval process.</td>

            </tr>

          </tbody>

        </table>

## ApprovalAction

Represents the actions that occur as a result of an approval process.

| Field Name | Field Type | Description |
| --- | --- | --- |
| action | [WorkflowActionReference](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_workflow.htm#WorkflowActionReference)\[\] | An array of workflow actions to execute. |

## ApprovalStepApprover

Represents the assigned approvers for an approval step. Each step supports up to 25 approvers.

<table class="featureTable sort_table" summary="">



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d144874e998">Field Name</th>

              <th class="featureTableHeader  " id="d144874e1001">Field Type</th>

              <th class="featureTableHeader  " id="d144874e1004">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d144874e998" data-title="Field Name"><span class="keyword parmname">approver</span></td>

              <td class="entry" headers="d144874e1001" data-title="Field Type">
                <a class="xref" href="#Approver">Approver</a>[]
              </td>

              <td class="entry" headers="d144874e1004" data-title="Description">An array of assigned approvers for this step of the approval
                process.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e998" data-title="Field Name"><span class="keyword parmname">whenMultipleApprovers</span></td>

              <td class="entry" headers="d144874e1001" data-title="Field Type">RoutingType (enumeration of type string)</td>

              <td class="entry" headers="d144874e1004" data-title="Description">Specifies how to handle approval or rejection when multiple
                approvers are assigned to the step. Valid values are:<ul class="ul bulletList">
                  <li class="li">
                    <samp class="codeph nolang">Unanimous</samp>—(Default) Require unanimous
                    approval from all approvers for this step. If any of the
                    approvers reject the request, the approval request for this
                    step is rejected.
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">FirstResponse</samp>—Approve or reject based on
                    the first response.
                  </li>

                </ul>
              </td>

            </tr>

          </tbody>

        </table>

## Approver

Represents an assigned approver for an approval step. Check out Considerations for Setting Approvers in Salesforce Help.

<table class="featureTable sort_table" summary="">



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d144874e1081">Field Name</th>

              <th class="featureTableHeader  " id="d144874e1084">Field Type</th>

              <th class="featureTableHeader  " id="d144874e1087">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d144874e1081" data-title="Field Name"><span class="keyword parmname">name</span></td>

              <td class="entry" headers="d144874e1084" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e1087" data-title="Description">Identifies an assigned approver. This field is required, except
                when the <span class="keyword parmname">type</span> is one of the following and the
                <span class="keyword parmname">name</span> is ignored:<ul class="ul bulletList">
                  <li class="li"><samp class="codeph nolang">adhoc</samp></li>

                  <li class="li"><samp class="codeph nolang">userHierarchyField</samp></li>

                </ul>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e1081" data-title="Field Name"><span class="keyword parmname" id="field_type_name"><a name="field_type_name"><!-- --></a>type</span></td>

              <td class="entry" headers="d144874e1084" data-title="Field Type">NextOwnerType (enumeration of type string)</td>

              <td class="entry" headers="d144874e1087" data-title="Description">Combined with the specified <span class="keyword parmname">name</span>,
                <span class="keyword parmname">type</span> identifies an assigned approver. Valid
                values are:<ul class="ul bulletList">
                  <li class="li">
                    <samp class="codeph nolang" id="NextOwnerType_value_adhoc"><a name="NextOwnerType_value_adhoc"><!-- --></a>adhoc</samp>—The approver for the step must be
                    selected manually. For the first step, the submitter selects
                    the approver. For the second and later steps, the approver
                    for the previous step selects the approver. For this value,
                    exclude the <span class="keyword parmname">name</span> field.
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">user</samp>—A user in
                    your organization. For this value, enter a username for the
                    <span class="keyword parmname">name</span> field.
                  </li>

                  <li class="li">
                    <samp class="codeph nolang" id="NextOwnerType_value_userHierarchyField"><a name="NextOwnerType_value_userHierarchyField"><!-- --></a>userHierarchyField</samp>—A
                    user specified in a standard or custom user hierarchy field,
                    such as the standard <span class="keyword parmname">Manager</span> field. For
                    this value, exclude the <span class="keyword parmname">name</span> field. The
                    user hierarchy field must be defined in the
                    nextAutomatedApprovers for the approval process.
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">relatedUserField</samp>—A user specified in a user
                    lookup field on the submitted record, such as the
                    <span class="keyword parmname">Last Modified By</span> field. For this
                    value, enter the name of the user lookup field for the
                    <span class="keyword parmname">name</span> field.
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">queue</samp>—Automatically assign to a queue. For
                    this value, enter the name of the queue for the
                    <span class="keyword parmname">name</span> field.
                  </li>

                </ul>
              </td>

            </tr>

          </tbody>

        </table>

## ApprovalEntryCriteria

Represents the criteria that records must meet to enter the approval process or an approval step. Specify either filter criteria or a formula, but not both.

<table class="featureTable sort_table" summary="">



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d144874e1216">Field Name</th>

              <th class="featureTableHeader  " id="d144874e1219">Field Type</th>

              <th class="featureTableHeader  " id="d144874e1222">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d144874e1216" data-title="Field Name"><span class="keyword parmname">booleanFilter</span></td>

              <td class="entry" headers="d144874e1219" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e1222" data-title="Description">Filter logic for <span class="keyword parmname">criteriaItems</span>. Exclude this
                field if you enter a <span class="keyword parmname">formula</span>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e1216" data-title="Field Name"><span class="keyword parmname">criteriaItems</span></td>

              <td class="entry" headers="d144874e1219" data-title="Field Type">
                <a class="xref" href="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/customfield.htm#filteritem">FilterItem</a>[]
              </td>

              <td class="entry" headers="d144874e1222" data-title="Description">Filter criteria that a record must meet to enter the approval
                process or approval step.<p class="p">Approval processes don’t support
                  <span class="keyword parmname">valueField</span> entries in filter
                  criteria.
                </p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d144874e1216" data-title="Field Name"><span class="keyword parmname">formula</span></td>

              <td class="entry" headers="d144874e1219" data-title="Field Type">string</td>

              <td class="entry" headers="d144874e1222" data-title="Description">Formula that must evaluate to true for a record to enter the
                approval process or approval step.</td>

            </tr>

          </tbody>

        </table>

## ApprovalStepRejectBehavior

Represents what happens if the approver rejects the request during this approval step, unless it's the first step in the approval process. For the first step in the approval process, the reject behavior is determined by the approval process's final rejection actions.

<table class="featureTable sort_table" summary="">



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d144874e1309">Field Name</th>

              <th class="featureTableHeader  " id="d144874e1312">Field Type</th>

              <th class="featureTableHeader  " id="d144874e1315">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d144874e1309" data-title="Field Name"><span class="keyword parmname">type</span></td>

              <td class="entry" headers="d144874e1312" data-title="Field Type">StepRejectBehaviorType (enumeration of type string)</td>

              <td class="entry" headers="d144874e1315" data-title="Description">Not allowed in the first step of the approval process. Valid
                values are:<ul class="ul bulletList">
                  <li class="li">
                    <samp class="codeph nolang">RejectRequest</samp>—Rejects the request even if
                    previous steps were approved. Salesforce performs all
                    rejection actions specified for this step and all final
                    rejection actions.
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">BackToPrevious</samp>—Rejects the request, and
                    returns the approval request to the previous approver.
                    Salesforce performs all rejection actions specified for this
                    step.
                  </li>

                </ul>
              </td>

            </tr>

          </tbody>

        </table>

## NextAutomatedApprover

Represents the user hierarchy field to use as the next automated approver for the approval process. If defined, the user specified in the hierarchy field can be automatically assigned as the approver in one or more approval steps.

| Field Name | Field Type | Description |
| --- | --- | --- |
| useApproverFieldOfRecordOwner | boolean | Required. Whether the first executed approval step uses the specified userHierarchyField in the record owner’s user record—instead of the submitter’s user record—as the approver. All remaining steps use the specified userHierarchyField in the user record of the preceding step’s approver. |
| userHierarchyField | string | Required. Standard or custom user hierarchy field whose value specifies which user to assign as the approver. For example, the standard Manager hierarchy field can be used to assign approvers for employee PTO (paid time off) requests. |

## Declarative Metadata Sample Definition

The following is an example of an ApprovalProcess component:

<?xml version="1.0" encoding="UTF-8"?>
<ApprovalProcess xmlns="http://soap.sforce.com/2006/04/metadata">
    <active\>false</active\>
    <allowRecall\>false</allowRecall\>
    <allowedSubmitters\>
        <type\>owner</type\>
    </allowedSubmitters\>
    <allowedSubmitters\>
        <submitter\>USSalesRep</submitter\>
        <type\>role</type\>
    </allowedSubmitters\>
    <allowedSubmitters\>
        <submitter\>MarketingGroup</submitter\>
        <type\>group</type\>
    </allowedSubmitters\>
    <allowedSubmitters\>
        <submitter\>kcooper@example.com</submitter\>
        <type\>user</type\>
    </allowedSubmitters\>
    <approvalPageFields\>
        <field\>Name</field\>
        <field\>Owner</field\>
        <field\>MyLeadCustomField\_\_c</field\>
        <field\>Address</field\>
    </approvalPageFields\>
    <approvalStep\>
        <allowDelegate\>false</allowDelegate\>
        <approvalActions\>
            <action\>
                <name\>LeadApprovedTask1</name\>
                <type\>Task</type\>
            </action\>
            <action\>
                <name\>LeadApprovedTask2</name\>
                <type\>Task</type\>
            </action\>
        </approvalActions\>
        <assignedApprover\>
            <approver\>
                <type\>adhoc</type\>
            </approver\>
        </assignedApprover\>
        <label\>Step1</label\>
        <name\>Step1</name\>
        <rejectionActions\>
            <action\>
                <name\>LeadRejectedTask</name\>
                <type\>Task</type\>
            </action\>
        </rejectionActions\>
    </approvalStep\>
    <approvalStep\>
        <allowDelegate\>false</allowDelegate\>
        <assignedApprover\>
            <approver\>
                <type\>userHierarchyField</type\>
            </approver\>
        </assignedApprover\>
        <entryCriteria\>
            <criteriaItems\>
                <field\>Lead.CreatedDate</field\>
                <operation\>greaterThan</operation\>
                <value\>3/25/2013</value\>
            </criteriaItems\>
            <criteriaItems\>
                <field\>User.IsActive</field\>
                <operation\>notEqual</operation\>
                <value\>true</value\>
            </criteriaItems\>
        </entryCriteria\>
        <ifCriteriaNotMet\>ApproveRecord</ifCriteriaNotMet\>
        <label\>Step2</label\>
        <name\>Step2</name\>
        <rejectBehavior\>
            <type\>RejectRequest</type\>
        </rejectBehavior\>
    </approvalStep\>
    <approvalStep\>
        <allowDelegate\>true</allowDelegate\>
        <assignedApprover\>
            <approver\>
                <name\>MarketingTeamQueue</name\>
                <type\>queue</type\>
            </approver\>
            <approver\>
                <name\>LastModifiedBy</name\>
                <type\>relatedUserField</type\>
            </approver\>
            <approver\>
                <name\>awheeler@example.com</name\>
                <type\>user</type\>
            </approver\>
            <whenMultipleApprovers\>FirstResponse</whenMultipleApprovers\>
        </assignedApprover\>
        <entryCriteria\>
            <formula\>CONTAINS( MyLeadCustomField\_\_c , 'Salesforce')</formula\>
        </entryCriteria\>
        <label\>Step3</label\>
        <name\>Step3</name\>
        <rejectBehavior\>
            <type\>BackToPrevious</type\>
        </rejectBehavior\>
    </approvalStep\>
    <emailTemplate\>MyFolder/LeadsNewassignmentnotification</emailTemplate\>
    <enableMobileDeviceAccess\>false</enableMobileDeviceAccess\>
    <entryCriteria\>
        <criteriaItems\>
            <field\>Lead.AnnualRevenue</field\>
            <operation\>greaterThan</operation\>
            <value\>10500</value\>
        </criteriaItems\>
        <criteriaItems\>
            <field\>Lead.MyLeadCustomField\_\_c</field\>
            <operation\>equals</operation\>
            <value\>Salesforce</value\>
        </criteriaItems\>
    </entryCriteria\>
    <finalApprovalActions\>
        <action\>
            <name\>LeadEmailContacted</name\>
            <type\>Alert</type\>
        </action\>
    </finalApprovalActions\>
    <finalApprovalRecordLock\>true</finalApprovalRecordLock\>
    <finalRejectionActions\>
        <action\>
            <name\>ProcessRejectedMessageAction</name\>
            <type\>OutboundMessage</type\>
        </action\>
    </finalRejectionActions\>
    <finalRejectionRecordLock\>false</finalRejectionRecordLock\>
    <initialSubmissionActions\>
        <action\>
            <name\>LeadFieldUpdate</name\>
            <type\>FieldUpdate</type\>
        </action\>
        <action\>
            <name\>NewLeadEmail</name\>
            <type\>Alert</type\>
        </action\>
    </initialSubmissionActions\>
    <label\>SampleProcess</label\>
    <nextAutomatedApprover\>
        <useApproverFieldOfRecordOwner\>false</useApproverFieldOfRecordOwner\>
        <userHierarchyField\>customlookupuserfield\_\_c</userHierarchyField\>
    </nextAutomatedApprover\>
    <postTemplate\>MyPostTemplate</postTemplate\>
    <recallActions\>
        <action\>
            <name\>ProcessRecalledMessageAction</name\>
            <type\>OutboundMessage</type\>
        </action\>
    </recallActions\>
    <recordEditability\>AdminOnly</recordEditability\>
    <showApprovalHistory\>false</showApprovalHistory\>
</ApprovalProcess\>

## Wildcard Support in the Manifest File

Use the wildcard character \* (asterisk) in the package.xml manifest file to retrieve all approval processes for all objects. You can’t use it to retrieve a subset of approval processes. Syntax such as Lead.\* isn’t supported. For information about using the manifest file, see [Deploying and Retrieving Metadata with the Zip File](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/file_based_zip_file.htm "The deploy() and retrieve() calls are used to deploy and retrieve a .zip file. Within the .zip file is a project manifest (package.xml) that lists what to retrieve or deploy, and one or more XML components that are organized into folders.").