> ## Documentation Index
> Fetch the complete documentation index at: https://docs.msportal.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Ticket approval chains

> Hold requests from chosen ticket templates in MSPortal until the client approves them, one step at a time.

An approval chain holds requests from chosen ticket templates in MSPortal until the client's approvers sign off. Nothing reaches your PSA before the last step approves. When it does, MSPortal creates the ticket exactly as it would have been created at submission.

**Audience:** MSP staff with permission to change ticket settings. Approvers are always contacts of the client company the request comes from.

## How a request moves through a chain

<Steps>
  <Step title="The request is held">
    A person submits a template the chain covers. Instead of a ticket, MSPortal creates an approval request and opens it for them on the **Approvals** page.
  </Step>

  <Step title="Each step approves in order">
    The first step's approvers get an email and an in-app notification. When enough of them approve, the next step starts. One rejection ends the request.
  </Step>

  <Step title="The ticket is created">
    After the last step approves, MSPortal creates the ticket in your PSA (or sends the email or workflow the template uses). The requester is told the outcome either way.
  </Step>
</Steps>

<Note>
  For companies whose tickets go to HaloPSA, requests are not held in MSPortal. Halo's own approval processes apply instead.
</Note>

## Create an approval chain

<Steps>
  <Step title="Open the Approval chains tab">
    Go to **Settings > Tickets** and select **Approval chains**. Select **New approval chain**.
  </Step>

  <Step title="Choose the templates and who it applies to">
    Enter a name and choose one or more **Templates**. Requests from branches of those templates wait too.

    Leave **Company** as **Every company**, or choose one company. With one company you can also choose a **Site** so the chain applies only to people at that site. A site chain wins over a company chain, and a company chain wins over an every-company chain.
  </Step>

  <Step title="Add the steps">
    For each step, choose who approves it:

    | Approved by | Who can approve |
    | - | - |
    | **Named people** | The contacts you pick. Needs a chain for one company. |
    | **Holders of a company role** | Every active contact of the requester's company with that role. Turn on **Only people at the requester's site** to narrow it to the requester's site when they have one. |

    Set **Approvals needed**, and optionally **Remind after** and **Expire after**. An expired step ends the request. The requester never approves their own request.
  </Step>

  <Step title="Save">
    Select **Create chain**. Only one chain that is on can cover a template for the same company and site; the editor names the chain that already does.
  </Step>
</Steps>

Turning a chain off or deleting it stops holding new requests. Requests already waiting keep their approvers.

## Decide for the approvers

MSP staff who can update tickets can open any request on **Approvals > All requests** and select **Approve for the approvers** or **Reject for the approvers**. A reason is required. The decision settles every remaining step and is recorded as an MSP override that the requester and approvers can read.

Decisions can't be made while you are impersonating someone. Stop impersonating and decide for the approvers instead.

## When the ticket is not created

If the PSA refuses the ticket after approval, the request shows **Ticket not created** with the reason. Fix the cause (for example a mapping the PSA requires) and select **Create the ticket again** on the request.

Related: [Approve a request](/user-guides/ticketing/approve-a-request), [Change management](/user-guides/ticketing/change-management).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.