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

# HaloPSA

> Integrate idemeum with HaloPSA to create tickets for elevation requests, requests JIT accounts, and more.

## **Integration use cases with Halo PSA**

There are several integrations that we support with HaloPSA today:

1. Create tickets for elevation requests
2. Approve elevation requests from tickets
3. Request JIT accounts from tickets
4. Disable JIT accounts from HaloPSA

## **Create tickets for elevation requests**

With this integration when users request elevations, the ticket will be automatically created in HaloPSA. When the elevation is approved (let's say with mobile device), the ticket will be automatically closed. Inside the ticket there will be a link to navigate to idemeum and approve the request. If you want to approve the elevation request with a button click, please also read through the next section.

<Card title="Create tickets in Halo PSA for elevation requests" icon="video" href="https://www.youtube.com/watch?v=B-A6k9fcDS8">
  Demo of how tickets integration works with Halo PSA
</Card>

### **Create custom fields in Halo**

These fields are used to associate the request ID as well as the idemeum customer name in the ticket. These fields are mandatory if you want to use the approval from tickets with custom integration.

* We need to create two custom fields - `CFidemeumCustomerName` and `CFidemeumElevationRequestId`
* Navigate to `Configuration` → `Custom objects` → `Custom fields`
* Click `New`

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo1.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=69d81a2d01059d0c4aa02af4a919a740" alt="Halo1" width="1600" height="1185" data-path="images/halo1.png" />

* For `Field Name` use `idemeumCustomerName`
* For `Field Label` use `idemeum_customer_name`

<img src="https://mintcdn.com/idemeum/O7hVp-_WmdyczMzI/images/halo2.png?fit=max&auto=format&n=O7hVp-_WmdyczMzI&q=85&s=a8a03fddaee623c4064aa1b3d1e76397" alt="Halo2" width="1600" height="1185" data-path="images/halo2.png" />

* Keep the rest as defaults and save the configuration
* Repeat the same steps for creating the second field `idemeumElevationRequestId`

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo3.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=47e71286293d4dbcc4fc3a10de03475d" alt="Halo3" width="1600" height="1185" data-path="images/halo3.png" />

### **Configure HaloPSA agent**

In this step we will create an API-only agent to use with HaloPSA application.

* Navigate to `Configuration` → `Teams and agents` → `Agents` and add a new agent by clicking `New` button

<img src="https://mintcdn.com/idemeum/O7hVp-_WmdyczMzI/images/halo4.png?fit=max&auto=format&n=O7hVp-_WmdyczMzI&q=85&s=6586ec5401838eebaa773727b224d753" alt="Halo4" width="1600" height="1307" data-path="images/halo4.png" />

* Provide the agent username
* Make sure you check the box for `Is an API-only Agent`

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo5.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=c26c56278f5ac15b61f8523494230c91" alt="Halo5" width="1600" height="1307" data-path="images/halo5.png" />

* Assign agent to the `Default team` of your choice and add the working hours
* `Save` the configuration

Now we will need to configure the proper permissions:

* Click `Edit` to configure the agent
* Navigate to `Departments and teams` tab
* If you are using teams, make sure the team you have chosen has the following permissions:
  * Can be assigned to
  * Can see unassigned tickets for this Team
  * Can see Tickets assigned to other Agents in this Team

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo6.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=77ef09a74cea257498c53965fa8e392b" alt="Halo6" width="1600" height="1307" data-path="images/halo6.png" />

* If you are using departments, make sure the permission `Modify all` is added
* Now click on `Permissions` tab and do the following:
  * For `Feature access` choose the following:
    * Tickets Access Level to Read and Modify
    * Clients Access Level to Read Only
    * Users Access Level to Read Only
    * Assets Access Level to Read Only

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo7.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=71bdfec6265a113a978c9131ad117de9" alt="Halo7" width="1600" height="1317" data-path="images/halo7.png" />

* For `Ticket permission` choose the following:
  * Can add new Tickets
  * Can edit closed Tickets
  * Can view Unassigned Tickets
  * Can view Tickets that are assigned to other Agents
  * Can Re-assign Tickets
  * Can Edit Tickets Which Are Not Assigned To Them
  * Can always update Ticket Statuses and re-assign Tickets outside of actions
* For `Asset type restrictions` choose the following:
  * Allow use of all Asset Types

<img src="https://mintcdn.com/idemeum/O7hVp-_WmdyczMzI/images/halo8.png?fit=max&auto=format&n=O7hVp-_WmdyczMzI&q=85&s=daf6e9cf1a42efdb61ae04eec748ddb5" alt="Halo8" width="1600" height="1307" data-path="images/halo8.png" />

* Save the agent configuration

### **Configure HaloPSA application**

The way HaloPSA allows other systems to make calls into their system is by creating an application.

* Navigate to HaloPSA admin portal
* Access `Configurations` → `Integrations` → `HaloPSA API` and click `View applications`

<img src="https://mintcdn.com/idemeum/8zIn1lOodv2kr8VK/images/halo9.png?fit=max&auto=format&n=8zIn1lOodv2kr8VK&q=85&s=652b7b3c2706a0caea086963d7de9167" alt="Halo9" width="1600" height="1307" data-path="images/halo9.png" />

* Now click `New` to create a new application
* Provide application name
* Choose `Client ID and Secret` for Authentication method. Save the `Client ID` and `Client Secret` as you will need this information for idemeum configuration.
* For the agent drop down choose the agent that we created in the previous step

<img src="https://mintcdn.com/idemeum/8zIn1lOodv2kr8VK/images/halo10.png?fit=max&auto=format&n=8zIn1lOodv2kr8VK&q=85&s=3095ff60a9e1faa1e716e31498115b36" alt="Halo10" width="1600" height="1307" data-path="images/halo10.png" />

* Click on the `Permissions` tab and add the following permissions:
  * read:tickets
  * edit:tickets
  * read:customers
  * read:assets
* `Save` the configuration

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo11.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=49d8a4a01eb37daf82726b910c2b4b6c" alt="Halo11" width="1600" height="1307" data-path="images/halo11.png" />

### **Configure idemeum connector**

* Access your parent tenant admin portal
* Navigate to `Global Settings` → `Integrations`
* Click `Add integration` and then choose `Outbound integration`

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo12.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=34ca72714a4f4114496ed1d1abce04e1" alt="Halo12" width="1600" height="1185" data-path="images/halo12.png" />

* Choose `Halo PSA` from the connector dropdown
* Now enter the URL of your HaloPSA instance and provide the `Client ID` and `Client secret` that we created in the previous step

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo14.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=71137986b674e04285345e77fe49a57c" alt="Halo14" width="1600" height="1185" data-path="images/halo14.png" />

* `Save` the configuration

### **Customers mapping**

Once the integration with HaloPSA is added, you will see the new `HaloPSA` column in the `Tenants` section.

<img src="https://mintcdn.com/idemeum/8zIn1lOodv2kr8VK/images/halo15.png?fit=max&auto=format&n=8zIn1lOodv2kr8VK&q=85&s=2f4c8fe63b458e98e9e25da16ef1ce08" alt="Halo15" width="1600" height="1171" data-path="images/halo15.png" />

**Automatic mapping**

As a first step idemeum will try to `automatically` map the customers in idemeum to tenants in HaloPSA. Here is how we will try to do that:

1. Use the `Display Name` of the customer in idemeum to search for a customer in HaloPSA
2. If no match was found using the `Display Name`, then we would use the `Name` of the customer in idemeum to search for a customer in HaloPSA
3. If no match was found using the `Name`, then the admin will have to manually link the customers

**Manual mapping**

The admin can manually link a tenant from idemeum with one in HaloPSA by providing the name of the customer from HaloPSA.

* Navigate to idemeum admin portal and access `Tenants` section
* Search for the customer name
* Click on the `Link` button

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/halo16.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=cd124a9ce92dc47b360f27bea7d62138" alt="Halo16" width="1600" height="1185" data-path="images/halo16.png" />

* Enter the HaloPSA customer name to map this idemeum customer to
* Once found we will display the customer name from HaloPSA in the PSA column.

<Note>
  The name matching will be using case-insensitive equality.
</Note>

### **Ticket creation**

Here is how idemeum will create the tickets in HaloPSA:

* Idemeum will create a ticket of type `Incident`
* We will use these default values for the ticket:
  1. `category` - **Business Applications**
  2. `urgency` - **Medium**
  3. `impact` - **Single User Affected**
* In the ticket there will be information about the user that requested access to which application from which device.

<img src="https://mintcdn.com/idemeum/VgXGEVx9zFv70IUh/images/h1.png?fit=max&auto=format&n=VgXGEVx9zFv70IUh&q=85&s=8f644f62b63224d7ca11451c77525ab3" alt="H1" width="1600" height="1158" data-path="images/h1.png" />

* idemeum knows from which desktop name the elevation was initiated from so will lookup that name in your assets list. If found then we will associate that asset with the HaloPSA ticket.

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/h2.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=5a3acdb1c3d18a5238997bcc4e51916b" alt="H2" width="1663" height="798" data-path="images/h2.png" />

* There is also a link to navigate to idemeum portal and respond to the request

<img src="https://mintcdn.com/idemeum/8zIn1lOodv2kr8VK/images/h3.png?fit=max&auto=format&n=8zIn1lOodv2kr8VK&q=85&s=270cec836cfe8a364bc16a281fc35797" alt="H3" width="1600" height="1158" data-path="images/h3.png" />

* Once the ticket is approved or denied the HaloPSA ticket will be updated with the status `Closed`. If we can find an agent in HaloPSA with the email address of the idemeum user that approved/denied the elevation request then we will assign that agent to the ticket. 

<img src="https://mintcdn.com/idemeum/Umq3mjGto2olDHL7/images/h4.png?fit=max&auto=format&n=Umq3mjGto2olDHL7&q=85&s=57c1b4d66bbe58fb12a955e6bc251e6e" alt="H4" width="1600" height="856" data-path="images/h4.png" />

* When a ticket is closed we will add some information on how the ticket was closed in the closure notes: who closed it, was the elevation approved or not, for this user or at a tenant level, etc.
* We will also add a closure time of 5 mins. If you want to use other value rather than 5 mins contact idemeum support.

<img src="https://mintcdn.com/idemeum/8zIn1lOodv2kr8VK/images/h6.png?fit=max&auto=format&n=8zIn1lOodv2kr8VK&q=85&s=101a18571d084c662f7f2fa52aaf1c59" alt="H6" width="1639" height="784" data-path="images/h6.png" />

## **Approve elevation requests from tickets**

By default there is a link in the ticket details that allows you to approve the elevation request. The new tab will open and you will be redirected to idemeum to approve the request. You can simplify this process by configuring an API-based integration to approve / deny the elevation request with a single click.

<Warning>
  Make sure you first create the two custom fields as described in the previous section - `CFidemeumCustomerName` and `CFidemeumElevationRequestId`
</Warning>

### **Create custom integration in HaloPSA**

* Navigate to `Configurations` → `Custom integrations`

<img src="https://mintcdn.com/idemeum/rimKYQW6YwJtruk6/images/m1.png?fit=max&auto=format&n=rimKYQW6YwJtruk6&q=85&s=212f082d2e34873123b6b88d54542a30" alt="M1" width="1600" height="1185" data-path="images/m1.png" />

* Click `New`
* Provide the integration name `Idemeum API integration`
* For base resource URL enter the URL of your parent tenant. i.e. `https://nikmsp.idemeum.com`
* For `Authorization` choose `API key`
  * For `Key` enter `X-Idemeum-Api-Key`
  * For value obtain the API key from idemeum (navigate to `Global Settings` → `Integrations` and view the API key there)
* Add the API key to `header`

<img src="https://mintcdn.com/idemeum/rimKYQW6YwJtruk6/images/m2.png?fit=max&auto=format&n=rimKYQW6YwJtruk6&q=85&s=a48b041281e92d55c53d3f0a83317cdd" alt="M2" width="1600" height="1185" data-path="images/m2.png" />

* Save the configuration

### **Create custom methods in Halo PSA**

* Navigate to `Configurations` → `Custom integrations` → `Custom methods`
* Click `New` to add the custom `approve` method
  * Provide the method name `idemeum - approve elevation request`
  * For integration dropdown choose `Idemeum API integration`
  * For method choose `POST`
  * For method URL add `/api/integrations/elevation/request/approve`

<img src="https://mintcdn.com/idemeum/9n7GhsvVA3NnFKT3/images/m5.png?fit=max&auto=format&n=9n7GhsvVA3NnFKT3&q=85&s=91ac698f2215d9ae8be0be3c3aaff2f3" alt="M5" width="1600" height="1185" data-path="images/m5.png" />

* For `Authorization` choose `Inherit from integration settings`
* Add the following to `Headers`
  * Key `Content-Type`
  * Value `application/vnd.dvmi.sdk.elevation.request.approval+json`

<img src="https://mintcdn.com/idemeum/rimKYQW6YwJtruk6/images/m6.png?fit=max&auto=format&n=rimKYQW6YwJtruk6&q=85&s=c5c7fd97f01cf4cf75b1cb23779fc5ed" alt="M6" width="1600" height="1185" data-path="images/m6.png" />

* Add the following to JSON `Body`. Here we will use the custom variables that we created before.

```json theme={null}
{
    "idemeumElevationRequestId": <<CFidemeumElevationRequestId>>,
    "idemeumCustomerName": <<CFidemeumCustomerName>>,
    "userElevationMode": "USER"
}
```

<img src="https://mintcdn.com/idemeum/9n7GhsvVA3NnFKT3/images/m8.png?fit=max&auto=format&n=9n7GhsvVA3NnFKT3&q=85&s=e52ab6fb87843f9d2992ae7536dfd147" alt="M8" width="1600" height="1185" data-path="images/m8.png" />

* Save the `approve` method
* Now we will create the `deny` method
  * Click `New` to create second method
  * Provide the method name `idemeum - deny elevation request`
  * For integration dropdown choose `Idemeum API integration`
  * For method choose `POST`
  * For method URL add `/api/integrations/elevation/request/deny`

<img src="https://mintcdn.com/idemeum/rimKYQW6YwJtruk6/images/p1.png?fit=max&auto=format&n=rimKYQW6YwJtruk6&q=85&s=1417f5a26275c4c2294602b383addafa" alt="P1" width="1600" height="1185" data-path="images/p1.png" />

* For `Authorization` choose `Inherit from integration settings`
* Add the following to `Headers`
  * Key `Content-Type`
  * Value `application/vnd.dvmi.sdk.elevation.request.approval+json`

<img src="https://mintcdn.com/idemeum/9n7GhsvVA3NnFKT3/images/p2.png?fit=max&auto=format&n=9n7GhsvVA3NnFKT3&q=85&s=a243ad377b6d1b7edc5ebff30d414621" alt="P2" width="1600" height="1185" data-path="images/p2.png" />

* Add the following to JSON `Body`. Here we will use the custom variables that we created before.

```json theme={null}
{
    "idemeumElevationRequestId": <<CFidemeumElevationRequestId>>,
    "idemeumCustomerName": <<CFidemeumCustomerName>>
}
```

<img src="https://mintcdn.com/idemeum/9n7GhsvVA3NnFKT3/images/p3.png?fit=max&auto=format&n=9n7GhsvVA3NnFKT3&q=85&s=444a70699f6ee354d8f1aad657eda588" alt="P3" width="1600" height="1185" data-path="images/p3.png" />

* Save the `deny` method

### **Create ticket actions in HaloPSA**

Now we will create two custom ticket actions that will call these `approve` and `deny` methods.

* Navigate to `Configuration` → `Tickets` → `Actions`
* Create `New` to create the first method
  * Provide the name `Idemeum - approve elevation request`
  * Choose the sequence you desire
  * Assign the icon, color and button name
  * Action type is `Generic action`

<img src="https://mintcdn.com/idemeum/JjT2uVN7f1Rh-Luz/images/t1.png?fit=max&auto=format&n=JjT2uVN7f1Rh-Luz&q=85&s=f54af4c442166ad94d3b8e5592da9d40" alt="T1" width="1600" height="1185" data-path="images/t1.png" />

* For `System use` choose `Execute an Integration Method`
* For method choose the idemeum `approve` method that we created
* Check `Allow users to use this action`
* Choose `Is a quick action`
* Choose the status to `Closed` after the action is executed

<img src="https://mintcdn.com/idemeum/mREju8ds8CFxoEm_/images/t2.png?fit=max&auto=format&n=mREju8ds8CFxoEm_&q=85&s=cd6e0cf555be7ae20734dd04ef12e074" alt="T2" width="1600" height="1185" data-path="images/t2.png" />

* Save the configuration
* Now we will create the second `Deny` action.
  * Provide the name `Idemeum - deny elevation request`
  * Choose the sequence you desire
  * Assign the icon, color and button name
  * Action type is `Generic action`

<img src="https://mintcdn.com/idemeum/mREju8ds8CFxoEm_/images/t3.png?fit=max&auto=format&n=mREju8ds8CFxoEm_&q=85&s=f61d743e58140d91ba375f794ffe5f1f" alt="T3" width="1600" height="1185" data-path="images/t3.png" />

* For `System use` choose `Execute an Integration Method`
* For method choose the idemeum `approve` method that we created
* Check `Allow users to use this action`
* Choose `Is a quick action`
* Choose the status to `Closed` after the action is executed

<img src="https://mintcdn.com/idemeum/mREju8ds8CFxoEm_/images/t4.png?fit=max&auto=format&n=mREju8ds8CFxoEm_&q=85&s=32a958ae55da3d8973e469d74a91261c" alt="T4" width="1600" height="1185" data-path="images/t4.png" />

* Save the configuration

### **Assign these methods to your workflow**

This will depend on your HaloPSA configuration and what workflow you are using. We are using a standard incident workflow for our demo.

* Access `Configuration` → `Tickets` → `Workflows`
* Choose the workflow where you will enable these actions
* Edit the workflow and make sure methods are assigned to it

<img src="https://mintcdn.com/idemeum/aZdc1xzzEWaouU7x/images/l1.png?fit=max&auto=format&n=aZdc1xzzEWaouU7x&q=85&s=c4d9f81542644fdd016f666fbd537bf8" alt="L1" width="1600" height="1185" data-path="images/l1.png" />

Now these methods will start showing up on your elevation request tickets and you can approve / deny requests with a single button click.

<img src="https://mintcdn.com/idemeum/bAk2oum3cIuVLjKp/images/l3.png?fit=max&auto=format&n=bAk2oum3cIuVLjKp&q=85&s=b900b3f7acb680e3bc514eda27ece379" alt="L3" width="1600" height="1185" data-path="images/l3.png" />

## **Request JIT accounts from tickets**

MSP technicians can request Entra ID JIT accounts right from HaloPSA tickets. HaloPSA and idemeum integration leverages embedded [**<u>iFrame</u>**](https://en.wikipedia.org/wiki/HTML_element?ref=docs.idemeum.com#Frames) sections.

<Info>
  By default idemeum security does not allow cross-domain requests. Therefore, to enable this integration, request idemeum team to allow embedded iFrames for your idemeum tenant.
</Info>

<Card title="Halo PSA and JIT Entra integration" icon="video" href="https://www.youtube.com/watch?v=4BeWwMPesvM">
  Request Entra JIT accounts right from your Halo PSA tickets.
</Card>

### **Configure session length**

This step is optional, but will improve technician experience when accessing just-in-time accounts. By default the idemeum session length is set to `8 hours`, meaning you have to re-authenticate with mobile every 8 hours. You can extend this session to `30 days` so that you can seamlessly access JIT accounts for any customer tenant right from HaloPSA and you will stay authenticated for 30 days.

* Navigate to your MSP tenant admin portal
* Access `Settings` → `Global` and then define the `Session expiration` duration

### **Configure HaloPSA**

In HaloPSA you can create a `Custom tab` that will point to your idemeum tenant. When managing PSA ticket you can click on that tab and get immediate access to your idemeum portal.

You have 2 options for navigation:

* **Navigate to parent MSP idemeum tenant** - you can simply specify the URL for your MSP tenant, i.e. `<msp name>.idemeum.com`. In this case technicians will access custom tab, MSP idemeum tenant will be loaded, then technician will search for customer tenant, access it, and will request JIT account.
* **Navigate directly to idemeum customer tenant** - you can leverage HaloPSA variables to navigate directly to customer idemeum tenant.

To support the second option you need to set up variables.

* Say we have an idemeum tenant with the display name `Demo PAM tenant` and the URL `demo-nikpot.idemeum.com`.
  * We can route based on `Demo PAM tenant` with the following URL `https://<tenant name>.idemeum.com?customerDisplayName=<value>`
  * Or we can router based on `demo` URL with the following `https://<tenant name>.idemeum.com?customerName=<value>`
  * In this guide we will use display name
* In HaloPSA we will use default variable `Client reference` and assign the value `Demo PAM tenant` to this variable

<img src="https://mintcdn.com/idemeum/W8Vcm8ZPG9NGr_jd/images/v1.png?fit=max&auto=format&n=W8Vcm8ZPG9NGr_jd&q=85&s=16788b66e4717f1983049af6cc8a7dc2" alt="V1" width="1600" height="1110" data-path="images/v1.png" />

* We populate this variable with `Demo PAM tenant` value in the customer section by simply editing a customer in HaloPSA

<img src="https://mintcdn.com/idemeum/pXwndDm3lJBxCvNA/images/v4.png?fit=max&auto=format&n=pXwndDm3lJBxCvNA&q=85&s=d45ed060cfef3dd0baaa2fe00e6608db" alt="V4" width="1600" height="1167" data-path="images/v4.png" />

* We can tag all our customers in the same way in HaloPSA so they are mapped to a customer tenant in idemeum with the display name that is used.

Now we will set up a custom tab.

* Navigate to `Configuration` → `Custom objects` → `Custom tabs` in HaloPSA
* Create a custom tab like in the image below. As you can see for URL we are using the URL of MSP idemeum tenant, and we are passing a parameter from the variable `$CLIENT_REFERENCE`. You can specify the variable that you have chosen for integration.

<img src="https://mintcdn.com/idemeum/W8Vcm8ZPG9NGr_jd/images/v5.png?fit=max&auto=format&n=W8Vcm8ZPG9NGr_jd&q=85&s=63abfa611f2619776a3311a6fe3e28d2" alt="V5" width="1600" height="1167" data-path="images/v5.png" />

### **Test integration**

* Open any ticket in Halo PSA
* Click on `idemeum` tab
* You will be presented with the idemeum user portal for that customer. You can see all workstation and Entra apps to request JIT accounts and view credentials

<img src="https://mintcdn.com/idemeum/W8Vcm8ZPG9NGr_jd/images/v6.png?fit=max&auto=format&n=W8Vcm8ZPG9NGr_jd&q=85&s=1121399d8e4b2987a5d712d022099b17" alt="V6" width="1600" height="1167" data-path="images/v6.png" />

## **Disable JIT accounts from HaloPSA**

### **Overview**

Technicians can request Entra ID JIT accounts right from HaloPSA with our existing iFrame integration.

However, requested JIT accounts will be disabled after a certain period of time, by default it is `4 hours`. If you want to immediately disable these requested JIT accounts, you can leverage idemeum APIs.

### **Obtain API key**

* Access your MSP portal admin dashboard
* Navigate to `Settings` → `Integrations` → `Inbound integration` and create a new integration
* Provide an integration name
* The API key will be displayed. Make sure you save it somewhere safe as we only display it once (you can always delete the client integration and recreated the client in case you lose the API key).

<img src="https://mintcdn.com/idemeum/wFQF2S-WRzFVcJcx/images/o1.png?fit=max&auto=format&n=wFQF2S-WRzFVcJcx&q=85&s=b9c005c3d99b98ce388a94c975df8b9f" alt="O1" width="1600" height="665" data-path="images/o1.png" />

### **Configure HaloPSA**

* In HaloPSA navigate to `Configuration` → `Integrations` → `Custom integrations`
* Click `New`

<img src="https://mintcdn.com/idemeum/BPLPiRc19wmiBoJ4/images/o2.png?fit=max&auto=format&n=BPLPiRc19wmiBoJ4&q=85&s=b9aacb625eac63456c434b3b6c937096" alt="O2" width="1600" height="1343" data-path="images/o2.png" />

* Create an integration and provide the following details:
  * Base resource: `https://<yout_tenant>.idemeum.com/api/integrations`
  * Authorization: `API key`
  * Key: `X-Idemeum-Api-Key`
  * Value: `<SDK_API_KEY that you obtained in the idemeum admin portal>`
  * Add to: `Header`

<img src="https://mintcdn.com/idemeum/wFQF2S-WRzFVcJcx/images/o3.png?fit=max&auto=format&n=wFQF2S-WRzFVcJcx&q=85&s=53aa9542427561275f8aabad8cc707b5" alt="O3" width="1600" height="802" data-path="images/o3.png" />

* Save the configuration
* Now in the same tab click on `Methods` to create an HTTP POST method
* Configure the following:
  * Provide method name
  * HTTP method → `POST`
  * Path → `/entrajitaccounts`
  * Headers:
    * `Content-Type: application/vnd.dvmi.entra.app.user.disable+json`
  * Body provided below

```json theme={null}
{
    "customerDisplayName" : "<your_customer_display_name>",
    "technicianEmailAddress" : "<user's email address>"
}
```

As an example here is what we used:

```json theme={null}
{
    "customerDisplayName" : "Demo PAM tenant",
    "technicianEmailAddress" : "nik@nikpot.com"
}
```

<img src="https://mintcdn.com/idemeum/BPLPiRc19wmiBoJ4/images/o5.png?fit=max&auto=format&n=BPLPiRc19wmiBoJ4&q=85&s=542c51ad716e0e941f17b84cbbe42b4c" alt="O5" width="1600" height="862" data-path="images/o5.png" />

* Once you `Save` the configuration you can test the API call for this integration. You should see the success response.
* Now you can navigate to `Integrations` → `Custom integrations` → `Integration runbooks` and create a run-book to call idemeum API when the ticket is closed.
