# Approvals

Approval requests allow a ticket or a change to be validated by a person, a group, or multiple people within the same group.

{% hint style="info" %}
**Note**\
A group is considered a single entity. If a member of a group approves a ticket, it will be approved for the entire group. To have all members of a group approve the ticket, choose **`Group user(s)`** and select the desired users.
{% endhint %}

## Template

To simplify the approval application process, you can use a template.

### Create a Template

* Go to **`Configuration`** > **`Dropdowns`** > **`Approval Template`**
* Click on **`+ Add`**
* Fill in the required fields
  * In **`Approver`**, you can select a user, a group, or specific users from a particular group
* You can add a translation if necessary
* In the content, use variables to personalize your template (click on **`Available Variables`** to see the list of variables)
* Save your template

<figure><img src="/files/VSgNI7gegFZqRDjmU08x" alt=""><figcaption><p>Add an approval template</p></figcaption></figure>

***

## Approval Step

The concept of a approval step can be important, especially if the approval request is sent to multiple recipients.

It allows you to specify a percentage at which the approval must be accepted for it to be approved. For example, if the request is sent to two people and the approval step is set to 50%, if one out of two people responds positively, the approval will be approved. Conversely, if both respond negatively, the approval will be rejected.

{% hint style="warning" %}
Multi-level validation\
Example: If the percentage is set to 50% and two users need to validate the request, as soon as one of them validates, the request will be passed to the next user or group. If validation from all members is required, enter 100% in the Minimal required approval percent.

[See Multi-level validation](#multi-level-approval)
{% endhint %}

<figure><img src="/files/kpb5nGEbuD8hAhjJW2eJ" alt=""><figcaption></figcaption></figure>

You can define different approval steps in **`Configuration`** > **`Dropdowns`** > **`Approval Step`**

* Click on **`+ Add`**
* **Name** your approval step
* Add a **comment** if necessary
* Indicate if it should be **used by default**
* Add the **minimum required approval percentage**
* Click on **`+ Add`** to save it

{% hint style="danger" %}
Please note that if multiple approvals are sent separately, the percentage of each step of each approval will be taken into account for the final calculation.
{% endhint %}

***

### Send your approval

* To send a approval, open the ticket that requires approval.
* Click on the **`Request approval`** action

<div align="left"><figure><img src="/files/0kpVcN4LER605pgfd1tJ" alt="" width="464"><figcaption><p>View approval</p></figcaption></figure></div>

* You can also go to the **`Approvals`** tab from the ticket and select your template or manually enter the information you need:

<figure><img src="/files/CeXFKvkzrfJVYnirY0Lm" alt=""><figcaption></figcaption></figure>

* [*Approval Step*](#approval-step)
* *Requester* (by default, the person using the approval)
* *Aprpover* (user, group, or group users)
* *Comment*
* *Add a document*
* Click on **`+ Add`**

### Send a approval request

* Click on **`Send a approval request`**
* You can use [**`Template`** ](#creer-un-modele)to send a approval request
* In **`Approver`**, select the type (user, group, group users)
* Select the required **user** or **group**

{% hint style="success" %}
If you want to add specific users to a group, select **Group user(s)**, then select the desired users.

<img src="/files/fTw1R3K6wlvdTlRy6Q74" alt="add a new group for approval" data-size="original">
{% endhint %}

* Enter a **comment**
* You can add a **document** if necessary
* Click on **`+ Add`**

![Send a new approval request](/files/0YAR35AGuiFzw6D6c49v)

{% hint style="info" %}
You cannot select multiple groups or users at once; you must make separate approval requests for each group or user.
{% endhint %}

{% hint style="success" %}
You can add a new group if needed. Click on **+** in **Approver**. See [Groups](/documentation/modules/administration/groups.md) for more information.

<img src="/files/BbKqmya1JV8VgLb9sjq6" alt="add a new group for approval" data-size="original">
{% endhint %}

***

## Statuses

There are 3 different statuses:

* Pending approval
* Rejected
* Granted

![Pending approval status](/files/pG9jORoGiou5SBOHAfnL)

![Approval  status refused](/files/BRhbOb2vDMZJaquWoy5u)

![Approval status granted](/files/Mu233IdoWqSHYsXywsjK)

Approvals can also be viewed in a list in the same location.

![Approval statuses](/files/V3ew9siOKh6Lj4ghdsDu)

Users can change their approval status, whether it was previously granted or rejected. This can be done directly from the ticket or the change.

<details>

<summary>How to change status</summary>

![Change your status](/files/NakRBKDFKrh1Wdyz3Xl3)

</details>

It is also possible to delete a approval . Please note, however, that this does not change the final status, so you will need to submit one or more new approval requests to obtain a final result.

![Change your status](/files/cQfyGutlRCsSgcPVTY4j)

***

## Respond to a Approval

When a approval is requested, recipients will receive an email (provided their email address is entered in their [user profile](/documentation/modules/administration/profiles/profiles.md)).

It is then possible to confirm a approval either by email or through the relevant ticket.

<figure><img src="/files/eq5o1nPK4D2Pl66zr6Y7" alt=""><figcaption><p>Respond to a approval request</p></figcaption></figure>

{% hint style="info" %}
If one or more recipients do not have an email address, an error message will inform you. The approval will then need to be performed directly from the ticket.

<img src="/files/tVqVZW3BL929gz5BG6nR" alt="" data-size="original">
{% endhint %}

***

## View Results

You can check the approval progress in this tab.

<figure><img src="/files/zZaeKHGv9ZpnZcyWrkP5" alt=""><figcaption><p>approval progress</p></figcaption></figure>

***

## Multi-level approval

Multi-level approval allows an approval request to be sent to several recipients in sequence. For example, a request must be approved by several departments but must follow a clear process. The administrative department sends a request regarding the arrival of a new employee and forwards the ticket to the HR department:

1. The HR department approves the details relating to the new employee and then approves the ticket, which is sent to the accounts department
2. The accounts department creates a user profile in its payroll software and then approves the ticket, which is sent to the IT department.
3. The IT department approves the equipment for the new employee and then approves the ticket, which is sent to the department head.
4. The department head closes the ticket once the previous steps have been approved.

### Approval steps

Setting up approval steps is essential for this process to function. Each group or user required to approve a request must have its own approval step. Let’s take the example mentioned above:

1. HR
2. Accounting
3. IT
4. Head of department

You must therefore configure your validation steps so that each department (or group, user, etc.) has its own validation step, which will then be used to set up the business rules for tickets (see the previous chapter for creating a validation step):

<figure><img src="/files/zXqDgcqkhoASPpVQmQlN" alt=""><figcaption><p>Example of multi-level validation steps</p></figcaption></figure>

Each step must have a minimum threshold set. If this value is not 100, keep in mind that the validation may be sent to the next level even if not all members have validated the request.

<figure><img src="/files/y4AIPdZOoSu6JYJQTaiv" alt=""><figcaption><p>Details of the validation step</p></figcaption></figure>

### Business Rules for Tickets

Thanks to the validation steps, it's now possible to implement rules that sequence the sending of validations.

In our example, the first rule that triggers the sending of validations will be based on the category. The diagram below represents the ticket's path until its closure.

```
🟢 TRIGGER: New ticket (Category: "Newcomer")
│
▼
🟦 LEVEL 1: Human Resources (HR Group)
│
├─ ❌ Rejected ────────── 🛑 FULL CANCELLATION
│
├─ ✅ Accepted
▼
🟦 LEVEL 2: Accounting (Accounting Group)
│
├─ ❌ Rejected ────────── 🛑 FULL CANCELLATION
│
├─ ✅ Accepted
▼
🟦 LEVEL 3: IT (IT Group)
│
├─ ❌ Rejected ────────── 🛑 OVERALL CANCELLATION
│
├─ ✅ Accepted
▼
🟦 LEVEL 4: Head of department (Director Group)
▼
🏁 SUCCESS: The ticket can be closed
```

#### Category Rule

* From **`Administration`** > **`Rules`** > **`Business Rules for Tickets`**
* Add a new rule via **`+ Add`**
* Enter a clear title so you can easily find it later
* Leave the logical operator as **AND**
* In **`Rule used for`**, enter **`Add`**
* Remember to **`activate`** your rule

**Criteria**:

<table data-header-hidden="false" data-header-sticky><thead><tr><th>CRITERION</th><th>CONDITION</th><th>REASON</th></tr></thead><tbody><tr><td>Category</td><td>is</td><td>Newcomer</td></tr></tbody></table>

**Actions**:

<table data-header-hidden="false" data-header-sticky><thead><tr><th>FIELDS</th><th>ACTION TYPE</th><th>VALUE</th></tr></thead><tbody><tr><td>Set approval request step</td><td>Send</td><td>Newcomer approval Level 1 (RH)</td></tr><tr><td>Send an approval request - Group</td><td>Send</td><td>Human resources</td></tr></tbody></table>

<figure><img src="/files/Cj1WWp6qBfJZ1SDsjK1B" alt=""><figcaption><p>Level 1 validation rule</p></figcaption></figure>

#### Rule following approval from previous department

**Criteria**:

* Add a new rule as before, then specify the criteria and necessary actions. For this section, we will indicate that if the previous department has approved the request, it must be sent to the next department in the approval process:

<table data-header-hidden="false" data-header-sticky><thead><tr><th>CRITERION</th><th>CONDITION</th><th>REASON</th></tr></thead><tbody><tr><td>Approval step</td><td>is</td><td>Newcomer approval Level 1 (RH)</td></tr><tr><td>Approval</td><td>is</td><td>Granted</td></tr></tbody></table>

**Actions**:

<table data-header-hidden="false" data-header-sticky><thead><tr><th>FIELDS</th><th>ACTION TYPE</th><th>VALUE</th></tr></thead><tbody><tr><td>Set approval request step</td><td>Send</td><td>Newcomer approval Level 2 (Accounting)</td></tr><tr><td>Send an approval request - Group</td><td>Send</td><td>Accounting</td></tr></tbody></table>

<figure><img src="/files/H48rDuuR8M4ZLTlTGodz" alt=""><figcaption><p>Règle approbation niveau 2</p></figcaption></figure>

This step must be repeated until the last approver to complete the entire process. You should obtain a result similar to this:

<figure><img src="/files/ROVqBTFnjt7Taee7kgCG" alt=""><figcaption><p>Set of validation rules</p></figcaption></figure>

#### Rejection Rule

If one of the members rejects the request, an action must be taken to stop the process. Here, we will close the ticket, but you can add another action as needed.

**Criteria**:

<table data-header-hidden="false" data-header-sticky><thead><tr><th>CRITERION</th><th>CONDITION</th><th>REASON</th></tr></thead><tbody><tr><td>Approval step</td><td>contain</td><td>Newcomer</td></tr><tr><td>Approval</td><td>is</td><td>Rejected</td></tr></tbody></table>

**Actions**:

<table data-header-hidden="false" data-header-sticky><thead><tr><th>FIELDS</th><th>ACTION TYPE</th><th>VALUE</th></tr></thead><tbody><tr><td>Status</td><td>Assign</td><td>Solved</td></tr></tbody></table>

<figure><img src="/files/WRWewg4tvqk2TgBz4isN" alt=""><figcaption><p>Refusal rule</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.glpi-project.org/documentation/modules/assistance/tabs/approvals.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
