Halo PSA
Open a Halo PSA ticket for every new Xyte incident, using Incidents Webhooks and a Halo Event Management rule.
Halo PSA isn't supported in Xyte yet. A Halo PSA integration would open a Halo ticket for each Xyte incident.
What you can do
- Ask us for it. Email [email protected] and tell us you need Halo PSA.
- Try the Webhook option tab. Until a built-in integration exists, you can send Xyte incidents to Halo PSA with Incidents Webhooks. The Webhook option tab has the steps.
Based on the vendor's documentation. These steps follow Halo's Event Management guide. Halo PSA isn't a built-in Xyte integration, and settings on the Halo PSA side can differ between accounts and versions.
You can use Incidents Webhooks to send each Xyte incident to Halo's Event Management module, which opens a ticket for it. The same setup works in HaloITSM and HaloServiceDesk.
- Create, and optionally update — each new Xyte incident opens one Halo ticket. Halo matches later events to that ticket by the incident ID, so updates can be added to the same ticket instead of opening new ones. Nothing syncs back from Halo to Xyte.
- What you need — a Halo instance on version 2.186 or later, permission to create Event Management rules, and access to Settings → Integrations → Webhooks in the Xyte Organization portal.
Step 1 — Create an event rule in Halo
-
In Halo, go to Configuration and enable the Event Management module. Make sure your agent has the read and modify Event Management access level, then log out and back in.
-
Go to Configuration → Event Management → Event Rules and click New.
-
Copy the application/json URL shown on the rule. It looks like:
https://<your Halo instance>/api/IncomingEvent/Process -
Under the rule's authorisation options, choose Basic auth and set a username and password for Xyte to use.
Keep the password secretAnyone with the username and password can send events to this rule. Treat them like any other password.
Inputs
-
Set the Event ID variable to
request^id, with data type Object. Halo uses it to match later events to the same ticket. -
Add these variables:
Name Value Title request^titleDetails request^descriptionDevice request^deviceLocation request^locationPriority request^priority -
Under Criteria, add a condition that every Xyte event meets, for example Title is not empty.
Ticket Creation
- Choose a Ticket Type (or a ticket Template) for the tickets Xyte opens.
- Under the field mappings, map Summary to Title and Details to Details. You can also map Priority, but only if your Halo priority IDs line up with Xyte's 1 (Critical) to 5 (Planning).
- Save the rule.
Step 2 — Set up Incidents Webhooks in Xyte
In the Xyte Organization portal, go to Settings → Integrations → Webhooks → Incidents Webhooks.
Endpoints
- Set Create incident URL to the application/json URL from Step 1.
- Leave Update incident URL and Close incident URL empty for now. See Limitations.
- Turn on Add custom header to requests and enter:
- Field name:
Authorization - Field value:
Basic <encoded credentials>— the wordBasic, a space, then the Base64 encoding ofusername:passwordfrom Step 1. On macOS or Linux you can create it withprintf 'username:password' | base64.
- Field name:
- Make sure Send payload as string is off.
- Click Update.
Turn off "Send payload as string"Halo evaluates events from a JSON body. With Send payload as string on, Halo receives a string instead of an object, and the rule's variables come through empty.
Create template
-
Open the Create template step.
-
Paste this template:
{ "id": "{id}", "title": "[Xyte] {title}", "description": "{description} (device: {device}, location: {location}, priority: {priority})", "device": "{device}", "location": "{location}", "priority": {priority}, "space_id": "{space_id}" } -
Click Save template.
{id} is the incident's unique ID, which Halo uses as the event ID. Keep it in the template. For the full list of placeholders you can use, see Webhooks.
Leave Update template and Close template blank.
Step 3 — Test and enable
- In the Create template step, click Test create. A new ticket should appear in Halo, and the event should show under Event Management as matched to your rule.
- Open the Enable step and click Activate.
From now on, each new Xyte incident opens a ticket in Halo.
Limitations
- Closing isn't automatic. If you also set the Update incident URL and Close incident URL to the same Halo URL (with the same template), Halo adds those events to the existing ticket because the incident ID matches. It doesn't close the ticket by itself; close it in Halo.
- One ticket per incident ID. If Always create new Tickets is on in the rule, every update and close opens a new ticket instead. Leave it off.
- No sync back to Xyte. Changes you make to the ticket in Halo don't reach Xyte.
Learn more
- Webhooks — every Incidents Webhooks setting, the available placeholders and what happens when a request fails.
- Halo Event Management — event rules, variables, field mappings and authorisation options.
Troubleshooting
- Event received but no ticket — the event didn't meet the rule's Criteria. Open Event Management in Halo, find the unmatched event and check its values against the criteria.
- Empty summary or details — Send payload as string is on, or a variable doesn't start with
request^. Turn the setting off in Endpoints and click Update. - 401 or other errors — Incidents Webhooks shows the error below the wizard. Click Show full error to see Halo's response, then check the
Basicprefix and the Base64-encodedusername:passwordin the header value. - A new ticket for every update — Always create new Tickets is on in the Halo rule, or
{id}is missing from the template.
Updated 9 minutes ago
