1. Home
  2. Integrations
  3. Jira Server Integration Guide – VictorOps

Jira Server Integration Guide – VictorOps

Requirements

Jira Version Required: 7.7 and later

VictorOps Version Required: Starter, Growth, or Enterprise

Configuration in VictorOps

NOTE: Global Admin privileges are required for the VictorOps portion of the configuration.

In VictorOps, navigate to Integrations >> API.

Click the New Key button. Give the key a description. Note the resulting API key and existing API ID.

Installing the VictorOps Add-On

  1. Log in as a Jira administrator, then navigate to the Atlassian Marketplace by clicking on Jira administration gear icon > Manage apps.
  2. In the left-hand sidebar, click Find new apps under the Atlassian Marketplace header.
  3. Search for VictorOps. Locate the result Splunk > VictorOps Jira Server Integration. Click Install in the entry.

Once installation completes, click on Configure.

Configuring Application Settings

  1. Insert the API key you generated in VictorOps into the API Key field under the Connect to your VictorOps Organization section of Jira’s VictorOps for Jira Server Configuration page.
  2. In the API ID field in the same section, insert the API ID you noted in the VictorOps step above.
  3. Copy the VictorOps Org ID displayed in your VictorOps URL (e.g. https://portal.victorops.com/client/{Org_ID}) and paste it in Jira’s Organization ID field. This is appended to the incident link within Jira tickets.
  4. Once all three fields have been populated, click ConnectOn success, a new entry will appear in the Connected VictorOps Organizations section, and display a green “VALID” flag.

Configuring Jira Project Settings

The VictorOps add-on must be enabled and configured for each Jira project you wish to associate.  Note that while multiple projects can connect to the same VictorOps organization, projects cannot share the same Default Team Escalation Policy.

  1. In Jira, click Projects, then select the project you wish to enable for the VictorOps add-on.
  2. Click the Project settings gear icon in the lower left of the page, then click VictorOps Settings.
  3. Click Enable VictorOps for this Project.  This will expand the page to display a list of configurable fields.

Default Incident Settings

  1. Under VictorOps Instance, select the VictorOps organization you wish to associate with this project.
  2. Under Default Team Escalation Policy, select the VictorOps Escalation Policy you would like to page when Jira issues create incidents in VictorOps.  NOTE:  Incoming VictorOps incidents assigned to this Escalation Policy will be the only ones allowed to create issues in your Jira project.
  3. Under Default User, select the Jira user you wish to designate as Reporter for issues generated by incoming VictorOps incidents.

Incoming Issue Settings

VictorOps incidents created for a project’s Default Team Escalation Policy will automatically generate Jira issues.  The default type for such issues (Bug, Epic, Story, or Task) is set by selecting the desired option from the Issue type to use for incoming VictorOps incidents dropdown.

If you wish to disable such issue creation, deselect the Allow issues to be created from incidents via the REST API checkbox.

Jira State Configuration

Defining state mapping allows Jira issues to remain synchronized as incidents move through their life cycle in VictorOps.

Creating a VictorOps Incident Within Jira

Currently, VictorOps incidents can only be created from the Jira issue view.

  1. Click More > Create VictorOps Incident.  A preview of the VictorOps incident card will display, using the project’s Default Team Escalation Policy.
  2. You may select a different escalation policy from the VictorOps Team Escalation Policy dropdown.  You may also use the Additional Users dropdown to optionally include additional users for response.  Note that adding users to an incident will not create a “Multi-Responder incident” in VictorOps. 
  3. Click Create Incident to generate a VictorOps incident.  This will then display a Triggered VictorOps incident card under the VictorOps section in the lower right frame of the issue view.
  4. Click the incident card’s Incident Details link to display the incident in VictorOps in a new browser tab.

Creating VictorOps Webhooks

Outgoing webhooks will need to be defined in VictorOps in order for Jira to accept incoming incidents and remain synchronized.  Please note that the steps below will require Global Admin or Alert Admin permissions in VictorOps. 

  1. Click on Integrations >  Outgoing Webhooks > +Add Webhook
  2. Provide a meaningful name, such as Jira Integration – Triggered.
  3. Set fields and payloads for the appropriate incident action based on the templates below, then click Save.

Triggered

Event: Incident-Triggered

Method: POST

Content-Type: application/json

Custom Headers:

X-VO-Api-Id: {see “Configuring Application Settings” to find this value}

X-VO-Api-Key: {see “Configuring Application Settings” to find this value}

To: https://{your Jira instance}/plugins/servlet/victorops/receiver?state=triggered

Description: Publishes data to Jira instance on incident creation.

{

        "organizationId": "{see “Configuring Application Settings” to find this value}",

        "stateIncidentName":"${{STATE.INCIDENT_NAME}}",

       "incidentEntityType": "${{INCIDENT.ENTITY_TYPE}}",

       "alertServiceState":"${{ALERT.SERVICESTATE}}",

       "alertReceiveTime":"${{ALERT.VO_ALERT_RCV_TIME}}",

       "alertUrl":"${{ALERT.alert_url}}",

       "alertEntityDisplayName": "${{ALERT.entity_display_name}}",

       "alertEntityState": "${{ALERT.entity_state}}",

       "alertMessageType": "${{ALERT.message_type}}",

       "alertMonitorName": "${{ALERT.monitor_name}}",

       "alertMonitoringTool": "${{ALERT.monitoring_tool}}",

       "alertRoutingKey": "${{ALERT.routing_key}}",

       "alertTimestamp":"${{ALERT.timestamp}}",

       "stateAckMessage":"${{STATE.ACK_MSG}}",

       "stateAckUser":"${{STATE.ACK_USER}}",

       "stateAckTimestamp":"${{STATE.ACK_TIMESTAMP}}",

       "stateAlertCount":"${{STATE.ALERT_COUNT}}",

       "stateCurrentAlertPhase":"${{STATE.CURRENT_ALERT_PHASE}}",

       "stateCurrentState":"${{STATE.CURRENT_STATE}}",

       "stateEntityId":"${{STATE.ENTITY_ID}}",

       "stateHost":"${{STATE.HOST}}",

       "stateIncidentTimestamp":"${{STATE.INCIDENT_TIMESTAMP}}",

       "stateLastTimestamp":"${{STATE.LAST_TIMESTAMP}}",

       "stateMonitorType":"${{STATE.MONITOR_TYPE}}",

       "stateService":"${{STATE.SERVICE}}"

}

Acknowledged

Event: Incident-Acknowledged

Method: POST

Content-Type: application/json

Custom Headers:

X-VO-Api-Id: {see “Configuring Application Settings” to find this value}

X-VO-Api-Key: {see “Configuring Application Settings” to find this value}

To: https://{your Jira instance}/plugins/servlet/victorops/receiver?state=acknowledged

Description: Publishes data to Jira instance on incident acknowledgement.

{

        "organizationId": "{see “Configuring Application Settings” to find this value}",

        "stateIncidentName":"${{STATE.INCIDENT_NAME}}",

       "incidentEntityType": "${{INCIDENT.ENTITY_TYPE}}",

       "alertServiceState":"${{ALERT.SERVICESTATE}}",

       "alertReceiveTime":"${{ALERT.VO_ALERT_RCV_TIME}}",

       "alertUrl":"${{ALERT.alert_url}}",

       "alertEntityDisplayName": "${{ALERT.entity_display_name}}",

       "alertEntityState": "${{ALERT.entity_state}}",

       "alertMessageType": "${{ALERT.message_type}}",

       "alertMonitorName": "${{ALERT.monitor_name}}",

       "alertMonitoringTool": "${{ALERT.monitoring_tool}}",

       "alertRoutingKey": "${{ALERT.routing_key}}",

       "alertTimestamp":"${{ALERT.timestamp}}",

       "stateAckMessage":"${{STATE.ACK_MSG}}",

       "stateAckUser":"${{STATE.ACK_USER}}",

       "stateAckTimestamp":"${{STATE.ACK_TIMESTAMP}}",

       "stateAlertCount":"${{STATE.ALERT_COUNT}}",

       "stateCurrentAlertPhase":"${{STATE.CURRENT_ALERT_PHASE}}",

       "stateCurrentState":"${{STATE.CURRENT_STATE}}",

       "stateEntityId":"${{STATE.ENTITY_ID}}",

       "stateHost":"${{STATE.HOST}}",

       "stateIncidentTimestamp":"${{STATE.INCIDENT_TIMESTAMP}}",

       "stateLastTimestamp":"${{STATE.LAST_TIMESTAMP}}",

       "stateMonitorType":"${{STATE.MONITOR_TYPE}}",

       "stateService":"${{STATE.SERVICE}}"

}

Resolved

Event: Incident-Resolved

Method: POST

Content-Type: application/json

Custom Headers:

X-VO-Api-Id: {see “Configuring Application Settings” to find this value}

X-VO-Api-Key: {see “Configuring Application Settings” to find this value}

To: https://{your Jira instance}/plugins/servlet/victorops/receiver?state=resolved

Description: Publishes data to Jira instance on incident resolve.

{

        "organizationId": "{see “Configuring Application Settings” to find this value}",

        "stateIncidentName":"${{STATE.INCIDENT_NAME}}",

       "incidentEntityType": "${{INCIDENT.ENTITY_TYPE}}",

       "alertServiceState":"${{ALERT.SERVICESTATE}}",

       "alertReceiveTime":"${{ALERT.VO_ALERT_RCV_TIME}}",

       "alertUrl":"${{ALERT.alert_url}}",

       "alertEntityDisplayName": "${{ALERT.entity_display_name}}",

       "alertEntityState": "${{ALERT.entity_state}}",

       "alertMessageType": "${{ALERT.message_type}}",

       "alertMonitorName": "${{ALERT.monitor_name}}",

       "alertMonitoringTool": "${{ALERT.monitoring_tool}}",

       "alertRoutingKey": "${{ALERT.routing_key}}",

       "alertTimestamp":"${{ALERT.timestamp}}",

       "stateAckMessage":"${{STATE.ACK_MSG}}",

       "stateAckUser":"${{STATE.ACK_USER}}",

       "stateAckTimestamp":"${{STATE.ACK_TIMESTAMP}}",

       "stateAlertCount":"${{STATE.ALERT_COUNT}}",

       "stateCurrentAlertPhase":"${{STATE.CURRENT_ALERT_PHASE}}",

       "stateCurrentState":"${{STATE.CURRENT_STATE}}",

       "stateEntityId":"${{STATE.ENTITY_ID}}",

       "stateHost":"${{STATE.HOST}}",

       "stateIncidentTimestamp":"${{STATE.INCIDENT_TIMESTAMP}}",

       "stateLastTimestamp":"${{STATE.LAST_TIMESTAMP}}",

       "stateMonitorType":"${{STATE.MONITOR_TYPE}}",

       "stateService":"${{STATE.SERVICE}}"

}

Updated on October 20, 2020

Was this article helpful?

Related Articles