The Update Halo Ticket action updates an existing ticket in Halo PSA. Only the fields you specify will be updated; other fields remain unchanged.
When to Use This Action
Use this action when:
- You already have the ticket ID from a previous query or create action
- You want to update specific fields on an existing ticket without adding email content
- You need precise control over which fields are changed
Don't use this action for:
Configuration
Connection
| Field | Description |
|---|
| Halo Connection | Select the Halo connection to use for this action. |
Ticket
| Field | Description |
|---|
| Ticket ID | The ID of the ticket to update. Required. Supports text expressions with {{variable}} syntax. |
Content (Optional)
| Field | Description |
|---|
| Summary | Updated ticket summary/title. Leave empty to keep the current value. |
| Clear Summary | Explicitly clear the saved summary. When enabled, this takes precedence over Summary. |
| Details | Updated ticket description/details. Leave empty to keep the current value. |
| Clear Details | Explicitly clear the saved details. When enabled, this takes precedence over Details. |
Classification (Optional)
| Field | Description |
|---|
| Status | Updated ticket status. Leave empty to keep the current status. |
| Priority | Updated ticket priority. Leave empty to keep the current priority. |
Assignment (Optional)
| Field | Description |
|---|
| Agent | Updated assigned agent. Leave empty to keep the current assignment. |
| Team | Updated assigned team. Leave empty to keep the current assignment. |
Custom Fields (Optional)
| Field | Description |
|---|
| Custom Fields | Select ticket custom fields to update and set their values. Text values support text expressions, including text nested inside array values. The action rejects known read-only or unsupported fields while preserving unknown positive field IDs entered dynamically. Leave this section empty to omit custom fields. Boolean false, zero, arrays, empty strings, and null values retain their exact value. |
Error Handling
| Field | Description |
|---|
| Error Handling | Action to take if the ticket update fails. |
| Option | Behavior |
|---|
| Exception | Halt processing and report the error |
| Bounce | Return the email/item to the sender |
| Continue | Continue to the next action |
| Stop | In Email Processing, stop this rule but allow other rules to process |
| Stop All | Stop all processing for this message |
Returned Variables
When you configure Store the results in Variable, the result is the complete saved ticket object. MSPintegrations combines the full ticket detail response with the saved Custom Field values for that exact ticket. Access properties using dot syntax. If any update or refresh step fails, the stored result is null; an HTTP error body is never stored as the ticket.
Example usage: {{custom.myVariable.id}}
| Variable | Type | Description |
|---|
.id | number | The ticket ID |
.summary | string | The updated ticket summary |
.details | string | The updated ticket details |
.client_id | number | The client ID |
.client_name | string | The client name |
.user_id | number | The user/contact ID |
.user_name | string | The user/contact name |
.site_id | number | The site ID |
.site_name | string | The site name |
.tickettype_id | number | The ticket type ID |
.status_id | number | The status ID |
.status_name | string | The status name |
.priority_id | number | The priority ID |
.priority_name | string | The priority name |
.agent_id | number | The assigned agent ID |
.agent_name | string | The assigned agent name |
.team_id | number | The assigned team ID |
.team_name | string | The assigned team name |
.datecreated | string | The creation timestamp |
.datelastupdated | string | The last update timestamp |
.customfields | array | Custom fields returned on the updated ticket |
.customfields[].id | number | The Halo custom field ID |
.customfields[].value | mixed | The custom field value |
Example Use Cases
Close a Ticket After Processing
| Setting | Value |
|---|
| Ticket ID | {{custom.ticket.id}} |
| Status | Closed |
Escalate a Ticket's Priority
| Setting | Value |
|---|
| Ticket ID | {{custom.ticket.id}} |
| Priority | High |
| Team | Escalations |
Update Summary from Parsed Data
| Setting | Value |
|---|
| Ticket ID | {{custom.existingTicket[0].id}} |
| Summary | [Escalated] {{custom.existingTicket[0].summary}} |
FAQs
Do I need to fill in all fields when updating?
No. Only specify the fields you want to change, but you must select at least one change. A blank Summary or Details retains its current value; use Clear Summary or Clear Details to remove that text explicitly.
What if the Ticket ID doesn't exist?
The action fails with an error. Configure Error Handling to control what happens next.
Reply-All Storm Catcher
When this action runs inside an inbound email automation and the update succeeds, MSPintegrations records the email's Message-ID against the updated Halo ticket ID on the selected Halo connection.
Later replies in the same thread that arrive without a Halo ticket tag can still be matched to this ticket by Update Halo Ticket from Email, which looks up the email's In-Reply-To and References headers against those stored associations.
The association applies only to the Halo connection you selected on this action, so replies are never matched to tickets on a different Halo connection.