﻿# Approval

> [HTML Version](360010366380.html)

**(hmfile_hash_a1140c6d.png)**The **Approval** activity is used to manually or automatically approve or reject a [document](360009923631), an [app item](360016427291), or a [file](360014164452) during a business process. When the process moves to the **Approval** activity, an [approval sheet](approval-sheets.md) is automatically created. By default, the final **Approved** or **Rejected** resolution is displayed in it after the process is completed. You can generate the approval result after the approval stage. To do this, use the [End Approval](360011756780.md) activity.

The location of the activity on the process diagram and its settings differ depending on the approval method that you select:

- **Manually**. In this case, when the process moves to the **Approval** activity, the task to review the document is assigned to the executor and an approval sheet with the **Pending approval** status is created. In the activity settings, you can configure the approval management. You can set parallel or sequential approvals for a group of approvers, the requirement to sign the document with a digital signature, and set a deadline. An employee actively participates in the approval process by performing the task that you have configured in the activity.

- **Automatically**. This option provides that the **Approval** activity is executed automatically. No approval task is assigned within the activity. Such a task should be set up additionally and placed on the process diagram before it moves to the **Approval** activity. The executor only needs to make a decision (approve or reject) via the standard task interface. Then the process will move to the **Approval** activity, where the corresponding decision will be made automatically. At the same time, an approval sheet with the decision is created. Read more in the [Automatic approval](auto-approval.md) article.

## Set up manual approval

Place the **Approval** activity on the process segment where the employee specified in the swimlane must approve or reject the document. The user will be tasked to review the document. At the same time, an [approval sheet](approval-sheets.md) will be created. It will record the approvers’ decisions and their comments with additionally attached files.

By default, the final **Approved** or **Rejected** resolution is generated after the end of the process. Until then, users see the **Pending approval** status. To display the final resolution in the approval sheet after the approval stage, use the [End Approval](360011756780.md) block. You can find the example of such process in the [Approval use case](approval-use-case.md) article.

````
начало внимание

````
Make sure that you have added a [process context](process_context.md) variable that will store the object sent for approval.

````
конец внимание

````
To open the settings, double-click on the **Approval** activity on the process diagram.** **The settings are managed in the following tabs: [General](#general_tab), [Form](#form), [Notifications](#notifications), [Deadline](#deadline_tab), [Schedule in Calendar](#schedule), [Connectors](#connectors_tab), [Custom Statuses](#custom-statuses), [Signature](#signature), [Substitutions](#signature), [Error Handling](#error-handling),** **[Start Process](#subprocess), and [Description](#description). You can specify the task name, set a deadline, define the approval logic, add the task to the executor’s calendar, enable the signature, etc.

### General tab

**(approval_01.png)**

- **Name\***.** **Enter a name that will be displayed in the process diagram. We recommend choosing a short yet informative name to make the process diagram easy to read.

- **Task name\***.** **Enter a text that the task executor will see in their task list or on the task page. You can add a [context variable](process_context.md) to the name to make it more detailed. To do that, click on the **\{+\}** icon in the right corner of the field. You can also add [conditions and functions](360007679591.md#conditions-and-functions), just like for the item name templates. This allows you to generate a more informative name for the task.

- **Items to send for approval\***. Select a context variable of the [Files](360009707032.md#file_type), [App](360009707032.md#app), or [Arbitrary App](360009707032.md#arbitrary-type) type that references the object being sent for approval.

- **Write the output to a variable**. Specify a variable of the **String** type to which the code of the result of the current activity execution will be written: \[OBJECT\] or \[OBJECT\]. The result depends on which button the approver clicks on the task page: **Approve** or **Reject**.** **When there are several approvers and at least one of them refuses to approve, the result will contain the \[OBJECT\] value. If the agreement is terminated, the terminated value will be written. This variable can be placed on the app form, as well as used in [gateways](360012495911.md) and [scripts](360027203731.md) to implement more complex approval logic.

- **Approval method**. Depending on the selected method, the set of tabs in the settings window and the list of settings listed below the current tab differ. To configure [automatic approval](auto-approval.md), select the **Automatically** option.

- **Approval type**.** **This option appears only if a user group or a department is specified as executor in [swimlane](360012263032.md) settings. Determine how the approval task should be assigned and executed:

	- **Parallel**. The approval task will be simultaneously assigned to all executors included in the swimlane. Depending on the [connector settings](#connectors_tab), there are two options. Either each executor needs to review the document before the process moves on to the next step, or the next step starts as soon as one of the executors approves or rejects the document.

	- **Sequential**.** **The task will be assigned consequently to all the executors included in the swimlane one by one. The process will go to the next step only when all the employees will complete the task. With [connector settings](#connectors_tab), you can determine what happens if an approver rejects the document.

Please note that in a dynamic swimlane, the tasks will be assigned in the same order as users were specified in the variable that stores users. In a static swimlane, the sequence is random.

1. **Leave only actual participants**. On the [Connectors](#connectors_tab) tab, you can configure the approval stage to end without waiting for resolutions from all participants. Using this option, you can control how the approval sheet appears once the stage is completed: 

	- With the option enabled. The sheet will display only users who actually reviewed the document and made a decision.

	- With the option disabled. The sheet will show all approvers. Users who reviewed the document will have their resolution displayed, while others will be marked with the **Canceled** status.  
  
For more details, see [Example 2: Parallel approval with a resolution from one participant](#example-parallel).  
  
Please note, if the [task execution time with transition to the next step](#escalation) is set in the activity, the sheet will display all employees even if the **Leave only actual participants** option is enabled. Users who did not manage to submit a resolution will also get the **Canceled** status.

Here are some examples to explain more clearly in which cases this or that type of approval is used.

Example 1: Parallel approval with resolutions of all participants

  
Let’s assume that the approval process in a company is organized in such a way that the contract is sent to an accountant, a lawyer, an economist, and a security officer for review. It is important for us that the work on the contract is not delayed and the decision is made as soon as possible, so the task of approval should come to all the specified employees at the same time. In this case, you should wait for each of them to decide before sending the contract further down the path.  
  
To do this:

	1. Select the **Parallel** option.

	2. Set the approval percentage to 100 in the connector settings.

Then all employees will receive the task **Approve** **contract**, and until each of them completes their work, the process will not move on.

Example 2: Parallel approval with a resolution from one participant

  
Let's assume that for a contract review by the legal department, a resolution from just one of its employees is sufficient. To achieve this, we will configure the approval process so that each lawyer receives the task simultaneously. The one who is less busy can start working on it immediately. Once they submit their resolution, the approval task will disappear from the other users' task lists. The approval sheet will display the name of the employee and the decision they made.  
  
To do this:  

1. Select the **Parallel** option.  

2. Enable the **Leave only actual participants** option.  

3. On the **Connectors** tab, specify the conditions under which the approval stage is considered completed, and the process can proceed along one of the configured branches:  

- Approval percentage greater than zero. A single approving resolution is sufficient to approve the contract. The process moves to the next stage.  

- Rejection percentage greater than zero. A single rejection is sufficient to decline the contract. The process moves to the next stage — contract revision by the author.  

- Default transition. The process proceeds along this branch if none of the conditions are met. Without such a transition, the process cannot be published.  

For more details on configuring transitions, see the [Connectors tab](#connectors_tab) section. 

Example 3: Sequential approval

  
Suppose we need several managers to read and approve a report before the process continues. If you select the **Sequential** option, the system assigns the review task to one manager first, and after they approve the report, to another manager. In the connector settings, you can specify how to proceed if one of the approvers rejects the report.

### Form tab

This tab appears when an app item is sent for approval. It allows you to configure a custom approval task form. If you want to use the default form, which is similar to the app item view form, you do not need to change any settings on this tab.

**(approval_activity_02.png)**

To use a custom form:

1. Click  **<Default>** and then click **+** **Create Form**. The [form template](360012495991.md#edit-template) opens in the interface designer.

2. Add the required widgets and process context properties to the form. You can use scripts, configure form validation, and more. Save your changes.

3. To configure how the properties of the app item sent for approval are displayed, return to the **Form** tab in the **Approval** activity settings.

4. Add the required fields to the form or create new ones.

5. Specify whether the fields are required and whether they can be edited. For fields that cannot be changed during approval, enable the **Read Only** option. These settings work the same way as the form settings in the [Task](360012495611.md#form) activity and are available only for a custom form.

### Notifications tab

You can set up notifications to keep process participants informed about the approval progress. To do this, enable the desired options on the **Notifications** tab:

 **(approval_02.png)**

- **Task assignment notification**. This option is available if **Manually** is selected as the approval method on the **General** tab, where the user approves as part of a separate task. The assignee will receive a notification in their [#Activity stream](360014162972.md) that an approval task has been assigned.

- **Approval start notification**. A message will be sent to the [associated activity stream](360014352191.md) of the file, document, or app item, notifying participants that the approval process has been launched.

In the **Message text** field that appears, enter the details you want to communicate. You can use context variables to personalize the notification, for example, to include a participant’s comment. To do this, click the** \{+\}** icon in the top right corner of the field. You can also add a condition or function to generate the message based on a template.

- **Approval result notification**. A notification will appear in the object’s associated activity stream once the approval process is complete, including the final resolution and any comments from the executor.

- **Notify about each decision**. This option is available when a file, document, or app item requires approval from multiple people. Each time a user completes their review task, a notification will be sent to the #Activity stream



### Deadline tab

**(approval_03.png)**

On this tab, you can set the due date for the task as well as specify the system behavior in case the task is not completed on time.

There are two ways to set the deadline:

- **Exact time**.** **Specify the number of days, hours, or minutes that the executor has to complete the task. The calculations can be based on the [business calendar](360004890291.md).

- **Variable**.** **Sometimes it is important that the user completes the task before a certain date. For example, an employee can specify the exact date before which others need to read the new internal regulations. By this day, all specified users should have made a decision on the document. In this case, you can use a [context variable](process_context.md) of the **Date/Time** type to define the deadline for the approval task.

If the approval task belongs to a swimlane with multiple executors, and a variable is used to define the deadline, all the executors will have to complete their tasks by this moment. Otherwise, the task will be considered overdue.

When specifying the task completion date, you can activate the following options:

- **According to the business calendar**. The completion time is calculated according to the business calendar and does not include the employee’s non-working hours.

If any of the users have edited the business calendar, republish the process to apply the new work schedule to the task completion date.

- **Consider the duration of the work day as a constant**. This option is available when the business calendar is taken into account. It allows you to calculate the task completion date based on the number of working hours per day. The time specified in the business calendar settings in the **Standard work schedule** field is used for calculation.

The examples of calculating the completion date are given in the [Task](360012495611.md#examples-deadline) article.

To specify what happens when the deadline is missed, use these fields:

- **Notification**. Select the users who will be notified if the executor does not complete the approval task on time. You can select the current user, a context variable such as the process initiator, a user group, or an org chart item.

**(hmfile_hash_95ae5ae4.png)**

- **Interrupt**. Specify the connector the process should follow if the executor does not complete the approval task on time.

Interrupting requires a separate connector on the process diagram. You cannot use the activity's main connector, which is activated when approval is completed, or the [error-handling connector](#error-handling). If no connector is selected, interrupting is disabled.

If you select a connector with [conditions](#condition), they will be ignored. The process follows this connector only if the deadline is missed.

**(approval_activity_05.png)**

This connector is marked with the timer icon on the process diagram. The process takes this path if the set time is over but the executor hasn’t marked the task as completed. The other connectors will not be activated.

For example, let’s say that the employee from the legal department didn’t complete the contract approval task on time. The process flow will take the escalation connector and assign the next task to the CEO.

**[![05.PNG](360007221480-05.PNG)]**



### Schedule in Calendar tab



**(approval_activity_04.png)**

This tab appears if a deadline is set for the task, and is used to add the task to the executor’s calendar.

To avoid overscheduling, you can schedule the task only for some of the days. Let’s say that the approval deadline is in a week. You can schedule the task to appear in the calendar only on the last three days of the week:

1. Add **Date/Time** variables to the context. They will store the values for the task deadlines in the calendar.

2. Add a [script](360027203731.md) on the process diagram before the **Approval** activity to calculate the values of these variables.

3. On the **Schedule in Calendar** tab, link the variables with the **Start date** and **End date** fields.



### Connectors tab

Here you can define the approval logic: specify the conditions that define which [connector](360015835331.md) the process flow should take. Do not forget to specify a default connector that the process will follow if none of the specified conditions are met.

If you added escalation connectors for a [missed deadline](#escalation) or an [error in the activity](#error-handling), they appear on this tab together with the other connectors. Do not add conditions to these connectors because the conditions are ignored when the process runs. If you select one of these connectors as the default, it is removed from the escalation settings.

**(approval_activity_03.png)**

If a connector for a missed deadline is configured on the **Deadline** tab, the process can follow the other connectors only before the task deadline.

**Important**: Regardless of how many outgoing connectors are configured for the Approval activity in the process diagram, only two buttons are displayed by default in the approval task page: Approve and Reject. You can add additional buttons for custom resolutions during approval or rejection on the [Custom Statuses](#custom-statuses) tab. However, the further process flow is determined only by the conditions set for the connectors.

To open the connector’s settings, double-click on its name.

On the **General** tab, enter a short and understandable name for the connector. It will be displayed on the process diagram. You can also add a a tooltip for the transition button that will be visible to the user on the form page.

### (hmfile_hash_9f9fe8b4.png)

On the **Conditions** tab, adjust the settings:

**(approval_activity_06.png)**

- **Process Variable**. Specify a variable from the process context or a specific value: 

	- **Approval Percentage**.

	- **Rejection Percentage**.

	- **Archived**. Check whether the approval sheet has been archived. Please note that for items the [rules of sheet archiving](approval-settings.md) are set in the app settings. For files, sheets are always archived when a new version is added.

	- **Approval object not found**. Check that the object is not deleted from the system. Please note that this option works only when a file is sent for approval. If an app item is being sent, the process will be terminated with an error upon its deletion.

	- **No access to the approval object**.

- **Operation**. Define a comparison operator to check a specific condition.

- **Field Value**. Enter the value at which the condition will be met.

- **Logical Operator**. This is a logical operation used to check multiple conditions. If the overall check result is **True**, the process continues with this connector:

	- **OR**. The result is **True** if at least one condition is met.

	- **AND**. The result is **True** if both conditions are met.

	- **OR NOT**. The result is **True** if the first condition is met or the second condition is not.

	- **AND NOT**. The result is **True** if the first condition is met while the second condition is not.

Please note that conditions are checked in the order they are listed in the connector settings.

For approval tasks assigned to a swimlane with multiple executors, connector conditions are checked each time one of them completes the task.

For more details on using connectors in the process, refer to the [Connectors](360015835331.md) article. To configure conditions for connectors in the **Approval** activity, read the [Approval use case](approval-use-case.md) article.

### Custom Statuses tab

When creating a custom status in the task, an additional button will appear. With its help, employees will be able to provide custom decisions within the standard approval process.

Depending on what object (app item or file) is stored in the variable specified on the **General** tab in the **Item to send for approval\*** field, the button will appear on the item page or on the file preview page.

**Important**:The buttons in the approval task are used only for making a decision and do not determine the further flow of the business process. The path to which the process is directed is automatically selected depending on the conditions set in the connector settings.

For instance, you can add the status **Approved with Comments**. Employees can approve a document that requires minor edits. The document will continue to move through the process according to the logic defined by outgoing connectors. In the approval sheet, the **Approved with Comments **status will appear next to the last name of  the user who selected this decision.

The final status of the item will depend on whether it is approved or rejected by the approvers.

To configure custom statuses, fill out the fields:

**(approval-custom-statuses-1.png)**

- **Approved/Rejected**. Enable the **Use custom status** option if you want users to be able to provide an additional decision within the approval or rejection decisions.

- **Button label in task\***. Enter the name for the button that the user will click to make a decision on the app item or file, for example, **Approve with Comments**. Buttons for additional decisions will be displayed next to the system ones in the approval task.

**(approval-custom-statuses-2.png)**

- **Status label\***. Enter the name of the status that will be displayed in the approval sheet after closing the task.

**(approval-custom-statuses-3.png)**

The custom status will be shown in the approval sheet and will also be displayed alongside the system statuses when the sheet is exported.

**(approval-custom-statuses-4.png)**

### Signature tab

This tab appears when the item sent for approval comes from a context variable of the **App** type, specified in the Items to send for approval field on the **General** tab.

You can configure the use of an electronic signature at the approval stage. In the task they receive, the user clicks the **Approve** button and enables the signing option. In the window that opens, they select the objects to sign: attributes, a file, or the decision.

This allows the employee to confirm their resolution with an electronic signature. Information about this is saved on the document’s page. For more details, see the [Digital signature in apps](digital_signtature_in_apps.md) article.

To enable the ability to sign the approval object or resolution, configure the following parameters on the **Signature** tab settings:

**(approval_05.png)**

- **Enable signing**. To display a window with the Sign option when approval is performed, select one of the following options:

	- **Do not use**. The **Sign** option is not displayed, and the user will not be able to sign the approval decision.

	- **Optional**. The **Sign** option is disabled by default. Instead of **Next**, the window displays the Approve button. By clicking it, the user approves the document without signing. If the user enables the option, they can proceed to signing by clicking **Next**.

	- **Preferred**. The **Sign** option is by default enabled but the user can disable it.

	- **Required**. The the **Sign** option is enabled by default and cannot be disabled. The user will not be able to close the task without signing the attributes, document file, and decision.

- **Sign attributes**. Configure signing for the app item’s attributes, similar to the Enable signing field. Available options: **Do not use**, **Optional**, **Preferred**, or **Required**.

- **Sign file**. This option is available for Document type apps. Select one of options to configure signing of the document file: **Do not use**, **Optional**, **Preferred**, or **Required**.

- **Sign decision**. The settings for this field are the same as for **Sign attributes**. Settings for signing the decision are similar to those in the **Sign attributes **field. In this case, the system-generated text containing information about the approval task, the item being approved, the approving user, and the decision with a comment is signed.

- **Comment when signing**. Set up visibility of the **Comment** option in the signing window. Select one of the available variants: **Do not use**, **Optional**, **Preferred**, or **Required**.

- **Default provider**. Select the provider whose certificate will be used for signing. The list displays services that have been integrated in the **Administration > Modules > Electronic Signature** workspace. The user will not be able to change the selected value to another one. If the field is left blank, the provider can be selected at the moment of signing.

### Substitutions tab

On this tab, you can specify a variable that controls the reassignment of the approval task to an employee who [substitutes](360010244599.md) the primary performer.

**(approval_activity_08.png)**

In the **Ignore substitution** field, specify a variable from the business process context of the [Yes/No switch](360009707032.md) type.

If the variable is set to **Yes**, the approval task will be assigned to the initially specified approver, and if it is set to **No**, it will be assigned to the substitute employee. The value of the variable can be changed during the business process, for example, by placing the variable on the form of another task, or by using [scripts](360027203731.md).

For example, you can ignore substitution if the document to be agreed upon contains confidential data that should not be disclosed to third parties.

### Error Handling tab

During the process, an error may occur during the approval. For example, if a variable storing a file or app item for approval is not populated. You can define which path the business process will follow in this case and configure a notification:

**(approval-14.png)**

- **Notification**. Enable the option and specify the users to whom notification of an error in the process will be sent. You can select a user, a user [group](360007146071.md), or an [org chart item](360003861992.md), and specify a [context variable](process_context.md), for example, the process initiator.

- **Interrupt**. Enable the option and then specify in the **Transition** field which path the process will follow in case of an error. The connector specified in these settings is marked on the process diagram with the **(error-connector-icon.png) **icon.

Interrupting requires a separate connector on the process diagram. You cannot use the activity's main connector, which is activated when approval is completed, or the [missed-deadline connector](#escalation).

Please note that if you select a connector for which [conditions are set](#condition), they will be ignored when the process executes. The process will continue on the specified connector only in case of an error. If no connector is selected, interrupting is disabled.

### Start Process and Inputs and Outputs tabs

These tabs are available when manually approving a document. You can configure a child process to start simultaneously with the approval task in the parent process. For more information, see the article on [starting a subprocess from the current task](start-subprocess-tab.md).



### Description tab

The tab is available in system versions 2025.10 and higher.

Indicate service information about the activity's operation. System administrators and employees modeling the process will be able to access this tab and review this data.

When the settings are complete, click the **Save** button.

## Approval sheet

As soon as the process reaches the **Approval** activity, a notification about the assigned task appears in the [#Activity stream](360014162972.md) of the executors with a link to the file, document, or app item.

An approval sheet is created on the object’s page, listing the employees assigned to the tasks. The **(wait-icon.png) **icon appears next to the user who has not yet reviewed the document.

After the task is completed, the approval sheet is updated with the date, time, decision, any comments left, and an additional attached file explaining the employee’s decision. You can download an attached file by clicking on it in the sheet.

**(approval-15.png)**

Read more about available actions in the lists in the [Lists of informed users and approval sheets](approval-sheets.md) article.