Document toolboxDocument toolbox

xMatters

[ 1 Connect xMatters with Devo SOAR ] [ 2 Actions for xMatters ] [ 2.1 Trigger Event ] [ 2.1.1 Input Field ] [ 2.1.2 Output ] [ 2.2 Get An Event ] [ 2.2.1 Input Field ] [ 2.2.2 Output ] [ 3 Release Notes ]

xMatters helps identify, prevent, and resolve IT issues before they impact customers whether it's a simple bug fix or a complex major incident.

Connect xMatters with Devo SOAR

  1. Navigate to Automations > Integrations.

  2. Search for xMatters.

  3. Click Details, then the + icon. Enter the required information in the following fields.

  4. Label: Enter a connection name.

  5. Reference Values: Define variables here to templatize integration connections and actions. For example, you can use https://www.{{hostname}}.com where, hostname is a variable defined in this input. For more information on how to add data, see 'Add Data' Input Type for Integrations.

  6. Verify SSL: Select option to verify connecting server's SSL certificate (Default is Verify SSL Certificate).

  7. Remote Agent: Run this integration using the Devo SOAR Remote Agent.

  8. Server URL: Rest API URL to access xMatters.

  9. Username: Username to access xMatters.

  10. Password: Password to access xMatters.

  11. After you've entered all the details, click Connect.

Actions for xMatters

Trigger Event

Trigger an event.

Input Field

Choose a connection that you have previously created and then fill in the necessary information in the following input fields to complete the connection.

Input Name

Description

Required

Input Name

Description

Required

ID

Jinja-templated id of the existing communication plan/form. Example: {{id_name_column}}.

Required

Recipients

Jinja-templated text containing the recipients for trigger.

 

Example: [{"id": "{{id_column}}", "recipientType": "DYNAMIC_TEAM", "responseCountThreshold": 1}, {"id": "f19d8b10", "recipientType": "GROUP", "responseCountThreshold": 3}].

Optional

 

Priority

Select Priority (Default is 'MEDIUM').

Optional

Expiration In Minutes

Jinja-templated text containing the expiration in minutes. Example: {{expiration_in_minutes_name_column}}.

Optional

Override Device Restrictions

Select Override Device Restrictions.

Optional

Escalation Override

Select Escalation Override.

Optional

Bypass Phone Intro

Select Bypass Phone Intro.

Optional

Require Phone Password

Select Require Phone Password.

Optional

Voicemail Options

Jinja-templated text containing voicemail_options.

 

Example: {"retry": 0, "every": 60, "leave": "callbackonly"}.

Optional

 

Target All Devices

Select whether target all devices.

Optional

Properties

Jinja-templated text containing property value object. Example: { \"myBooleanProperty\" : \"{{boolean_column}}\", \"myNumberProperty\": {{number_column}}, \"myTextProperty\" : \"See the attached evacuation route map.\", \"myListProperty\" : [\"Grocery\", \"Automotive\", \"Seasonal\"] }.

Optional

Output

A JSON object containing multiple rows of result:

  • has_error: True/False

  • error: message/null

  • result: Request ID

``` {json}{ "result": { "requestId": "9ab6d7c6-31b7-4a51-9d85-9901d442a3a5" }, "error": null, "has_error": false }

## Get Events Get list of events ### Input Field Choose a connection that you have previously created and then fill in the necessary information in the following input fields to complete the connection. | Input Name | Description | Required | | : -------- | : -------- | : -------- | | Form | Jinja-templated text containing the comma separated ids of the existing form. Example: '{{form1_column}}, {{form2_column}}'. | Optional | | Request ID | Jinja-templated text containing the requestId. Example: {{request_id_index_column}}. | Optional | | Limit | Maximum number of results to return per parent row(Default is 100,000). | Optional | ### Output A JSON object containing multiple rows of result: - has_error: True/False - error: message/null - result: List of events ``` {json}{ "incident": "INC-5", "eventType": "USER", "name": "Incident: INC-5: Y1", "priority": "MEDIUM", "escalationOverride": false, "responseCountsEnabled": false, "eventId": "271182000", "annotations": { "count": 0, "data": [], "links": { "self": "/api/xm/1/events/271182000/annotations?offset=0&limit=100" }, "total": 0 }, "links": { "self": "/api/xm/1/events/871fd9ed-9466-4df5-808d-9e8749b2a9d6" }, "has_error": false, "id": "871fd9ed-9466-4df5-808d-9e8749b2a9d6", "error": null, "requirePhonePassword": false, "status": "ACTIVE", "relatedIncident": { "id": "b3c1cc7d-3f92-4643-8bf0-0e1d005cd5bf", "links": { "self": "/api/xm/1/incidents/b3c1cc7d-3f92-4643-8bf0-0e1d005cd5bf" } }, "bypassPhoneIntro": false, "requestId": "972977c1-c298-422a-8fa1-f15473a60bab", "submitter": { "firstName": "Rajesh", "id": "4e446008-d9df-41e5-996f-791114401434", "lastName": "Kumar", "links": { "self": "/api/xm/1/people/4e446008-d9df-41e5-996f-791114401434" }, "recipientType": "PERSON", "targetName": "rajesh" }, "floodControl": false, "form": { "id": "6195ede1-126e-43e0-8003-cda95e54dcd6", "name": "New Incident Notification" }, "overrideDeviceRestrictions": false, "plan": { "iconOverride": "/static/images/logos/INCIDENT_RESOLUTION.png", "id": "4fe1ce4f-53e4-437f-baa0-d8b88ef2f9fb", "name": "Incident Resolution for My Service" }, "created": "2021-04-08T14:43:53.756+0000" }

Get An Event

Get a details of event

Input Field

Choose a connection that you have previously created and then fill in the necessary information in the following input fields to complete the connection.

Input Name

Description

Required

Input Name

Description

Required

Event Id

Jinja-templated text containing the event ID.

 

Example: '{{event_id_index_column}}'.

Required

 

Output

A JSON object containing multiple rows of result:

  • has_error: True/False

  • error: message/null

  • result: Event Details

{json}{ "result": { "id": "871fd9ed-9466-4df5-808d-9e8749b2a9d6", "name": "Incident: INC-5: Y1", "eventType": "USER", "plan": { "id": "4fe1ce4f-53e4-437f-baa0-d8b88ef2f9fb", "name": "Incident Resolution for My Service", "iconOverride": "/static/images/logos/INCIDENT_RESOLUTION.png" }, "form": { "id": "6195ede1-126e-43e0-8003-cda95e54dcd6", "name": "New Incident Notification" }, "floodControl": false, "submitter": { "id": "4e446008-d9df-41e5-996f-791114401434", "targetName": "rajesh", "firstName": "Rajesh", "lastName": "Kumar", "recipientType": "PERSON", "links": { "self": "/api/xm/1/people/4e446008-d9df-41e5-996f-791114401434" } }, "recipients": { "count": 0, "total": 0, "data": [], "links": { "self": "/api/xm/1/events/871fd9ed-9466-4df5-808d-9e8749b2a9d6/recipients?offset=0&limit=100" } }, "priority": "MEDIUM", "annotations": { "count": 0, "total": 0, "data": [], "links": { "self": "/api/xm/1/events/871fd9ed-9466-4df5-808d-9e8749b2a9d6/annotations?offset=0&limit=100" } }, "incident": "INC-5", "expirationInMinutes": 60, "notificationAuditCount": 0, "overrideDeviceRestrictions": false, "escalationOverride": false, "bypassPhoneIntro": false, "requirePhonePassword": false, "voicemailOptions": { "retry": 0, "every": 60, "leave": "callbackonly" }, "responseOptions": { "count": 2, "total": 2, "data": [ { "id": "2e16f31e-8026-406d-b7f5-dc063e21915e", "number": 1, "text": "Accept", "description": "Engage with this incident as a resolver", "prompt": "Accept", "action": "STOP_NOTIFYING_TARGET", "contribution": "POSITIVE", "joinConference": false, "redirectUrl": "", "allowComments": true }, { "id": "61d61427-be02-41ca-9703-10b2b2850014", "number": 2, "text": "Escalate", "description": "Escalate this incident to the next available resolver", "prompt": "Escalate", "action": "ESCALATE", "contribution": "NEGATIVE", "joinConference": false, "redirectUrl": "", "allowComments": true } ] }, "messages": { "count": 1, "total": 1, "data": [ { "messageType": "SUBJECT_AND_BODY", "language": "EN", "template": { "id": "5a046b4a-d7e4-4e2a-bd7d-a9ae1cb5f4be" }, "subject": "Incident: INC-5: Y1", "body": "<div style=\"width: 768px; margin-left: auto; margin-right: auto;\">\n <div style=\"width: 540px; margin-left: auto; margin-right: auto;\">\n <div style=\"margin: auto; width: 100%; margin-top: 50px; margin-bottom: 20px; display: flex\">\n <div style=\"margin: auto; width: 50%;\">\n <img style=\"display: block; vheight:20px; color:blue \"\n src=\"https://s3-xmatters-content.s3.amazonaws.com/email-images/xMatters-logo-medium.png\" />\n </div>\n <div style=\"margin: auto; width: 50%; text-align: center; color:#999999;\">\n Digital Service Availability Platform\n </div>\n </div>\n\n <div style=\"padding-left: auto; padding-right: auto;\">\n <img src=\"https://static.xmatters.com/email-images/incident-Medium.png\"\n style=\"display: block; width:66px; height:66px; margin-left: auto; margin-right: auto; margin-bottom: 20px;\" />\n </div>\n\n <div style=\"text-align: center; margin: 30px auto\">\n [First Name] [Last Name], you're needed as a resolver:\n </div>\n\n <div style=\"border: #e4e4e4 1px solid\">\n <div style=\"width: 100%; display: flex; border-bottom: #e4e4e4 1px solid; \" >\n <div style=\"width: 50%; text-align: center; display: block; border-right: #e4e4e4 1px solid; \">\n <div style=\"margin: auto; text-align: center; display: block; padding: 15px 5px;\">\n <div style=\"font-weight: bold\">Status</div>\n <div style=\"display: block; margin-left: auto; margin-right: auto\">\n <img src=\"https://static.xmatters.com/email-images/Open.png\"\n style=\"display: inline-block; width:13px; height:13px; margin-right: 5px; margin-top: 2px\" />\n <div style=\"display: inline-block\">Open</div>\n </div>\n </div>\n </div>\n <div style=\"width: 50%; text-align: center; display: block;\">\n <div style=\"margin: auto; text-align: center; display: block; padding: 15px 5px;\">\n <div style=\"font-weight: bold\"> Severity </div>\n <div style=\"display: block; margin-left: auto; margin-right: auto\">\n <img src=\"https://static.xmatters.com/email-images/severity-Medium.png\"\n style=\"display: inline-block; width:13px; height:13px; margin-right: 5px; margin-top: 2px\" />\n <div style=\"display: inline-block\">Medium</div>\n </div>\n </div>\n </div>\n </div>\n\n <div style=\"padding: 15px 15px; border-bottom: #e4e4e4 1px solid; \">\n <span style=\"font-weight: bold\">Incident:</span>\n <a href=\"${other.companyUrl}/xmatters/app.do#incidents/INC-5\">INC-5</a>\n </div>\n <div style=\"padding: 15px 15px; display: block; border-bottom: #e4e4e4 1px solid; \">\n <div style=\"font-weight: bold; margin-bottom: 5px\">Summary:</div>\n <div>Y1</div>\n </div>\n <div style=\"padding: 15px 15px; display: block; border-bottom: #e4e4e4 1px solid; \">\n <div style=\"font-weight: bold; margin-bottom: 5px\">Description:</div>\n <div>sdsd</div>\n </div>\n <div style=\"padding: 15px 15px; border-bottom: #e4e4e4 1px solid; \">\n <span style=\"font-weight: bold\">Initiated at:</span>\n <span>02:43 PM UTC, April 08, 2021</span>\n </div>\n <div style=\"padding: 15px 15px; border-bottom: #e4e4e4 1px solid;\">\n <span style=\"font-weight: bold\">Opened by:</span>\n <span>rajesh</span>\n </div>\n <div style=\"padding: 15px 15px; border-bottom: #e4e4e4 1px solid; \">\n <span style=\"font-weight: bold\">Alerting path:</span>\n <span>[Alert Context]</span>\n </div>\n </div>\n <div id=\"incident-responses\" style=\"margin-top: 30px\">\n <!--__X_RESPONSE_CHOICES_PLACEHOLDER__-->\n </div>\n </div>\n</div>" } ] }, "eventId": "271182000", "created": "2021-04-08T14:43:53.756+0000", "terminated": "2021-04-08T15:43:55.050+0000", "status": "TERMINATED", "links": { "self": "/api/xm/1/events/871fd9ed-9466-4df5-808d-9e8749b2a9d6" }, "relatedIncident": { "id": "b3c1cc7d-3f92-4643-8bf0-0e1d005cd5bf", "links": { "self": "/api/xm/1/incidents/b3c1cc7d-3f92-4643-8bf0-0e1d005cd5bf" } }, "integration": { "id": "b4b15d5b-65a6-4aea-8471-2d52d8c79dbd" }, "responseCountsEnabled": false, "requestId": "972977c1-c298-422a-8fa1-f15473a60bab", "properties": { "created time#en": "02:43 PM UTC, April 08, 2021", "description#en": "sdsd", "incidentID#en": "INC-5", "reporter#en": "rajesh", "severity#en": "Medium", "status#en": "Open", "summary#en": "Y1" } }, "error": null, "has_error": false }

Release Notes

  • v2.0.0 - Updated architecture to support IO via filesystem