Overview
BMC Remedy (BMC Helix ITSM) is the enterprise ITSM platform built on AR System – incidents, change requests, problems, assets, and the CMDB. The Automize connector talks to the AR System REST API (jsonapi/v1.0) using AR-JWT bearer tokens.
- Regions: Each Remedy install has its own host – on-prem (mid-tier behind your firewall) or BMC Helix SaaS (yourcompany-restapi.onbmc.com). Connector hits the host you configure on the credential directly.
- Plans: Works against any AR System 9.x+ deployment that exposes /api/jsonapi/v1.0. CMDB queries require the BMC Atrium / Helix CMDB plugin. Service Request Management forms (SRM:Request) need the SRM stack installed.
Setting up the connection
Auth type: Bearer Token.
- POST <host>/api/jwt/login with form-encoded username + password (or use the Login action) – Remedy returns an AR-JWT token.
- Copy the AR-JWT string. Tokens are long-lived but invalidated when the user changes password or you call Logout.
- In Automize, open Settings → Connectors → BMC Remedy → Add connection. Paste the AR-JWT as the API token.
- For unattended automations, run a service account whose password is rotated by your secrets manager; refresh the token via the Login action when AR rejects it as expired.
Find your credentials at https://docs.bmc.com/docs/ars2008/getting-tokens-for-authentication-924518661.html.
Rate limits
AR System has no global REST rate limit – throttling is driven by thread pools on the mid-tier (default 8 concurrent REST workers per process). Connector retries on 429 / 503 with backoff. For bulk loads prefer ARImport or the data-import workflow over REST.
Data model
Everything in Remedy is an "entry" on a "form":
HPD:Help Desk (incidents)
CHG:Infrastructure Change (changes)
PBM:Problem Investigation (problems)
AST:Asset / BMC_BaseElement (assets + CMDB CIs)
SRM:Request (service requests)
Each entry has a Request ID (INC000000001234 style) and an
internal Entry ID (the API-addressable key, padded numeric). Field
names contain spaces ("Incident Number", "Assigned Group") and
are case-sensitive – wrap them in single quotes in qualifications.
Bodies are always {"values": {"Field Name": "value", ...}} on
create/update – the connector enforces this shape.Available operations
17 operations available. Click any row to jump to its detail.
| Operation | Category | What it does |
|---|---|---|
| Create Change Request | General | Create a change on CHG:Infrastructure Change |
| Create Entry | General | Create an entry on any form. Body must be {"values": {...field map...}} |
| Create Incident | General | Create an incident on HPD:Help Desk. Body must be {"values": {"Description": ..., "Status": "New", ...}} |
| Create Problem | General | Create a problem investigation on PBM:Problem Investigation |
| Delete Entry | General | Delete an entry by ID |
| Get Attachment | General | Download an attachment from a field on an entry |
| Get Entry | General | Get a single entry by ID from any form |
| Get Form Schema | General | Retrieve field definitions for a form |
| Login | General | Re-authenticate and refresh the AR-JWT token |
| Logout | General | Invalidate the current AR-JWT token on the server |
| Query Entries | General | Query a Remedy form. Use 'q' for the qualification (e.g. q='Status'="Open" AND 'Priority'<3) and 'fields' to project columns (e.g. fields=values(Incident Number,Status)) |
| Query Assets | General | Query AST:Asset (or the BMC_BaseElement CMDB form) with a qualification |
| Query Change Requests | General | Query CHG:Infrastructure Change with a qualification |
| Query Incidents | General | Query HPD:Help Desk with a qualification (q param) |
| Query Problems | General | Query PBM:Problem Investigation with a qualification |
| Update Entry | General | Update an entry by ID. Body must be {"values": {...field map...}} |
| Update Incident | General | Update an HPD:Help Desk entry by ID |
Operations
Create Change Request
Create a change on CHG:Infrastructure Change
No input parameters.
Tips
- Wraps Create Entry against CHG:Infrastructure Change.
- 'Change Type' (Normal, Standard, Emergency, Latent) drives which approval workflow fires.
Create Entry
Create an entry on any form. Body must be {"values": {...field map...}}
| Parameter | Required | Type | Description |
|---|---|---|---|
Form Name form_name | Yes | text |
Tips
- Body MUST be {"values": {...}}. Fields not in the schema are silently dropped.
- For required fields, fetch Get Form Schema first – the field's 'required' flag tells you which keys must be present.
Errors
ARERR-301– Authentication failed – AR-JWT has expired. Call Login to refresh.ARERR-326– Required field missing – check Get Form Schema for the form's required fields.ARERR-388– Value too long for field – Remedy enforces max_length from the field definition; truncate client-side.
Create Incident
Create an incident on HPD:Help Desk. Body must be {"values": {"Description": ..., "Status": "New", ...}}
No input parameters.
Tips
- Wraps Create Entry against HPD:Help Desk.
- Status defaults to 'New' – the form's process flow handles transitions. Don't hardcode 'Assigned' unless you also set 'Assigned Group'.
- Required: 'Description', 'Service Type', 'Status', 'Impact', 'Urgency', 'Reported Source'. Customer ID + login ID often required by site policy.
Create Problem
Create a problem investigation on PBM:Problem Investigation
No input parameters.
Tips
- Wraps Create Entry against PBM:Problem Investigation.
- Link to triggering incidents via 'BMC.CORE:BMC_BaseRelationship' after creation – not in the create payload.
Delete Entry
Delete an entry by ID
| Parameter | Required | Type | Description |
|---|---|---|---|
Form Name form_name | Yes | text | |
Entry Id entry_id | Yes | text |
Tips
- Hard-delete on most forms. Many sites disable this via row-level permissions – failing silently with 403 is common.
Get Attachment
Download an attachment from a field on an entry
| Parameter | Required | Type | Description |
|---|---|---|---|
Form Name form_name | Yes | text | |
Entry Id entry_id | Yes | text | |
Field Name field_name | Yes | text |
Tips
- form_name + entry_id + field_name (e.g. 'Attachment 1'). Returns the binary as a base64 stream the connector decodes into a file.
Get Entry
Get a single entry by ID from any form
| Parameter | Required | Type | Description |
|---|---|---|---|
Form Name form_name | Yes | text | |
Entry Id entry_id | Yes | text |
Tips
- form_name + entry_id (the padded numeric Request ID, e.g. 000000000001234 for INC000000001234).
Get Form Schema
Retrieve field definitions for a form
| Parameter | Required | Type | Description |
|---|---|---|---|
Form Name form_name | Yes | text |
Tips
- Returns every field on the form plus its dataType, required flag, max_length, and enum values. Cache this – schemas don't change between deploys.
Login
Re-authenticate and refresh the AR-JWT token
No input parameters.
Tips
- Username + password → AR-JWT. Used to refresh tokens that have been invalidated on the server.
- Skip this if you're pasting a long-lived AR-JWT directly into the credential.
Logout
Invalidate the current AR-JWT token on the server
No input parameters.
Tips
- Invalidates the AR-JWT server-side. Call when retiring a credential – leaving stale tokens active is an audit finding under most ITGC frameworks.
Query Entries
Query a Remedy form. Use 'q' for the qualification (e.g. q='Status'="Open" AND 'Priority'<3) and 'fields' to project columns (e.g. fields=values(Incident Number,Status))
| Parameter | Required | Type | Description |
|---|---|---|---|
Form Name form_name | Yes | text |
Tips
- q is the qualification – Remedy's WHERE clause. Single-quote field names: q=('Status'="Open" AND 'Priority'<3).
- fields=values(Incident Number,Status,Assigned Group) projects columns. Without it the connector returns every field on the form.
- form_name is case-sensitive and includes the colon (HPD:Help Desk, not hpd_help_desk).
Query Assets
Query AST:Asset (or the BMC_BaseElement CMDB form) with a qualification
No input parameters.
Tips
- Defaults to AST:Asset; override form_name to BMC_BaseElement for the full CMDB.
- CMDB CIs link via 'BMC.CORE:BMC_BaseRelationship'. Run a second Query against that form to walk relationships.
Query Change Requests
Query CHG:Infrastructure Change with a qualification
No input parameters.
Tips
- Shortcut over Query → CHG:Infrastructure Change. Filter by 'Change Type', 'Risk Level', 'Status'.
Query Incidents
Query HPD:Help Desk with a qualification (q param)
No input parameters.
Tips
- Shortcut over Query → HPD:Help Desk. Same q + fields semantics.
Query Problems
Query PBM:Problem Investigation with a qualification
No input parameters.
Tips
- Shortcut over Query → PBM:Problem Investigation. Use 'Investigation Driver' for known-error workflows.
Update Entry
Update an entry by ID. Body must be {"values": {...field map...}}
| Parameter | Required | Type | Description |
|---|---|---|---|
Form Name form_name | Yes | text | |
Entry Id entry_id | Yes | text |
Tips
- Send only the fields that change. Sending the full record is fine but every field counts as a write in the audit trail.
- Body MUST be {"values": {...}}.
Update Incident
Update an HPD:Help Desk entry by ID
| Parameter | Required | Type | Description |
|---|---|---|---|
Entry Id entry_id | Yes | text |
Tips
- Shortcut over Update Entry against HPD:Help Desk.
- To resolve an incident, set 'Status' = 'Resolved' AND 'Status_Reason' AND 'Resolution' in the same call – Remedy's workflow rejects partial transitions.
FAQ
- AR-JWT keeps expiring mid-run – what's the right pattern?
- Wrap your flow with a Login action at the start (refreshes the AR-JWT before any work) and a Logout at the end. Don't paste a long-lived token into the credential for unattended use – rotate via Login each run.
- Why does my qualification not match anything?
- Field names are case-sensitive and include spaces – 'Incident Number', not incident_number. Wrap them in single quotes. String values use double quotes. Numbers and selection-field codes are bare.
- Selection fields – pass the label or the code?
- Always the label as a string ('High', not 3). Remedy translates labels via the field's enum definition. Get Form Schema returns the enum list.
- Helix SaaS vs on-prem – same endpoints?
- Same REST shape. Helix uses *-restapi.onbmc.com hosts and stricter rate limits. On-prem hits your mid-tier directly (port 8008 by default).
- Why ARERR-301 even with a fresh token?
- AR-JWT is bound to the AR server's session table – if the server restarts, all outstanding tokens are invalidated. Always handle 301 by calling Login and retrying.