It is possible to integrate with Symphony Summit as a ticketing system. The integration with Symphony Summit allows you to approve / reject remediation plans.
STEP 1: Configure JetPatch to use Symphony Summit
In order to enable the integration with the Symphony summit, you will need to add the properties below to the intigua.properties file.
- SSH to JetPatch application server
- Stop tomcat (service tomcat stop)
- vi /usr/share/tomcat/default/conf/intigua.properties
- Add the following setup (also attached)
- Fill in the missing information such as host URL, integration user, and password
- Review the existing values
- Save and restart tomcat (service tomcat restart
Enable Summit Integration
# enable change requests to managed agents and connector operations
symphony-summitai.enabled=true
# enable change requests to patch operations
symphony-summitai.remediationPlanEnabled=true
# summit URL
symphony-summitai.hostUrl=
The "hostUrl" should point to the REST API URL, for example: "https://cxlabs.symphonysummit.com/jetpatch/summitws/rest/summit_restwcf.svc/RESTService/CommonWS_JsonObjCall". See below for more information
Authentication
To use APIKey for authentication add the following property and add your API Key.
Please check the API Authentication and Authorization guide for generating the API Key and make sure API can access to your required department.
symphony-summitai.apiKey=<YOUR_API_KEY>
To use username & password authentication, add the following properties.
Please make sure you enabled username & password authentication for API usage.
symphony-summitai.userName=
symphony-summitai.password=
CR Details
The following details can be pulled from the CM Master Data. Instructions can be found in the sections below - "How to get SymphonySummitAI Details to fill in intigua.properties configuration"
# Intigua's integration user (needed also for requestor name)
symphony-summitai.userName=
# All of the following values can be found in a Change Request page and the Master Data
symphony-summitai.instanceName=
symphony-summitai.priority=
symphony-summitai.criticality=
symphony-summitai.risk=
symphony-summitai.impact=
symphony-summitai.workgroup.owned=
symphony-summitai.workgroup.assigned=
symphony-summitai.classification=
symphony-summitai.category=
symphony-summitai.changeTypeName=
#Support function name
symphony-summitai.department.name=
#Support function code.
symphony-summitai.department.code=
# Status for Default value = Successful
symphony-summitai.ticket.closure.code=Successful
# Default value = 1
symphony-summitai.ticket.closure.category.id=1
# Default value = Requested by JetPatch
symphony-summitai.ticket.closure.category.name=Requested by JetPatch
Status Definitions
JetPatch CR Status Changes
# Status for opening a ticket. Default value = Requested
symphony-summitai.ticket.status.new=Requested
# Status for closing a ticket. Default value = Closed
symphony-summitai.ticket.status.closed=Closed
Translating approval CR status to JetPatch Status
# Comma separated list, default value = Approved
symphony-summitai.approval.ticket.status.approved=Approved
# Comma separated list, default value = Cancelled
symphony-summitai.approval.ticket.status.cancelled=Canceled
# Comma separated list, default value = Requested, On-Hold
symphony-summitai.approval.ticket.status.pending=Requested,On-Hold
# Comma separated list, default value = Not Authorized, Rejected, Requested
symphony-summitai.approval.ticket.status.rejected=Not Authorized,Rejected,Requested (Refer Back)
JetPatch SymponySummitAI properties
# Polling interval in minutes , default is 1
symphony-summitai.polling.interval.minutes=1
# Approval timeout hours , default is 168
symphony-summitai.approval.timeout.hours=168
General Properties
For Symphony Summit integration, it is must to add more properties described in ITSM Integration Setup:
itsm.property.timeOffset.planned_start_time=3 min
itsm.property.timeOffset.planned_end_time=10 day
itsm.property.timezone=<JETPATCH_TIMEZONE>
Note - the timezone should be as the same JetPatch application server timezone
Please make sure that integration with similar ticketing systems (i.e service now, JIRA) is disabled.
STEP 2: Approve / Reject Remediation Plan
After the integration with Symphony Summit is established, the next step is to create remediation plans in JetPatch and approve it via the Symphony summit.
Follow the steps in the article 'Symphony Summit Integration - Remediation Plan Approval Process' to approve/reject remediation plans.
On-Premises SymphonySummit URL Extractions
Sometimes the URL to provide in JetPatch configuration ("symphony-summitai.hostUrl") is different than the Web instance.
In the following example, the needed site for Summit API usage is "Integration".
You can find the URL by entering the IIS -> Sites -> Default Web Site -> Integration -> REST.
In the REST Content window, right-click on "Summit_RESTWCF.svc" and choose Browse. This will open the browser and surf into the Summit_RESTWCF Service.
To generate the needed URL, take the current address and add /RESTService/CommonWS_JsonObjCall.
For example, the browser went to http://summit.example.com/Integration/REST/Summit_RESTWCF.svc.
The needed URL to configure in JetPatch should be
http://summit.example.com/Integration/REST/Summit_RESTWCF.svc/RESTService/CommonWS_JsonObjCall
STEP 3: Add A Custom Filed in CR Requested
JetPatch is searching for a custom correlation ID that needs to be added to the CR form.
Follow the instruction in Symphony SummitAI documentation for Configuring Custom Fields.
- Create a new "Group" called "JetPatch" in "GENERAL AREA".
- Edit the "JetPatch" group.
- Add "Text Box" controler called "Intigua Correlation ID" (not mandatory).
- Continue and save the actions.
Note - if you want to use additional fields, as described in ITSM Integration Setup, please make sure to add the following controllers:
- "Requested By" - Text Box.
- "Remediation Plan Description" - Text Area
- "Configuration Items" - Text Box.
- "Emergency Remediation Plan" - Text Box
Notes
Technical API calls
All requests are to the REST Service of Symphony Summit platform:
URL: <INSTANCE>/summitws/rest/summit_restwcf.svc/RESTService/CommonWS_JsonObjCall
TYPE: All actions are sent via POST type with body.
Notes - All requests below assuming authentication type using API Key.
Get all CM Master Data:
BODY: Example:
{
"ServiceName":"CM_GetCR_Master",
"objCommonParameters":{
"_ProxyDetails":{
"AuthType": "APIKEY",
"APIKey": "<API_KEY>",
"TokenID": "",
"OrgID": "1",
"ReturnType": "JSON",
"ProxyID": 0
},
"objCM_ParamDetails":{
"InstanceName":"<INSTANCE NAME>",
"PageType":"",
"ChangeRequestId":0
}
}
}
Open Change Request
BODY: Example
{
"ServiceName": "CM_LogOrUpdateCR",
"objCommonParameters": {
"_ProxyDetails":{
"AuthType": "APIKEY",
"APIKey": "<API_KEY>",
"TokenID": "",
"OrgID": "1",
"ReturnType": "JSON",
"ProxyID": 0
},
"cmParamsJSON": {
"CMContainerJson": "{\"Support_Function\": \"IT\",\"Support_Function_Name\": \"jet-pack\",\"Status\": \"Requested\",\"Category\": \"Medium\",\"ChangeTypeName\": \"Normal\",\"Change_CategoryID\": 315,\"Classification\": \"Normal\",\"Requestor_Name\": \"Fredrick.Norton@zacme.com\",\"Owner_Workgroup\": \"Application Support - North America\",\"Assigned_Workgroup\": \"Application Support - North America\",\"Risk\": \"High\",\"Impact\": \"Low\",\"Priority_Name\": \"Low\",\"Criticality_Name\": \"Low\",\"Downtime_Required\": false,\"Planned_Start_Time\": \"2021-12-29 16:11:00\",\"Planned_End_Time\": \"2021-12-30 17:00:00\",\"CustomerName\": \"ALL\",\"Information\": \"Or Test Info from API\",\"Description\": \"Or Test Desc from API\"}",
"CR_CI_Details": "[]",
"CR_CustomerApproverTesters": "[]",
"CustomFields": "[{\"Name\":\"Intigua Correlation ID\",\"GroupName\":\"JetPatch\",\"Value\":\"1234\"}]",
"MVCustomFields": "[]",
"CR_UserSelectedApproval": "[]",
"CR_ApprovalDetailsContainer": "[]"
},
"RequestType": "Mobile"
}
}
Note - Adding custom values to the configuration will be added to the "cmParamsJSON" only
Pull Change Request Details
BODY: Example
{
"ServiceName": "CM_GetChangeRecordList",
"objCommonParameters":{
"_ProxyDetails":{
"AuthType": "APIKEY",
"APIKey": "<API_KEY>",
"TokenID": "",
"OrgID": "1",
"ReturnType": "JSON",
"ProxyID": 0
},
"objCM_ParamDetails": {
"InstanceName": "IT",
"FrmChange_Request_Id": 4311,
"ToChange_Request_Id": 4311
}
}
}
Close Change Request
BODY: Example
{
"ServiceName": "CM_LogOrUpdateCR",
"objCommonParameters": {
"_ProxyDetails": {
"ProxyID": 0,
"ReturnType": "JSON",
"APIKey": "<API_KEY>",
"AuthType": "APIKEY"
},
"objCM_ParamDetails": {
"InstanceName": "IT",
"FrmChange_Request_Id": null,
"ToChange_Request_Id": null
},
"strInstance": "IT",
"RequestType": "Mobile",
"cmParamsJSON": {
"CMContainerJson": "{\"Support_Function\":\"IT\",\"Support_Function_Name\":\"IT\",\"Status\":\"Closed\",\"Change_CategoryID\":\"2\",\"Classification\":\"Normal\",\"Information\":\"Remediation Plan #501 was activated on Thu Jul 01 13:06:37 IDT 2021\\nJetPatch would like to:\\nInstall patch \\\"CEBA-2021:2317 CentOS 7 unzip BugFix Update\\\" on all applicable servers from group \\\"Igor-Cnts7\\\"\\n\\n\",\"Description\":\"Request to approve RP 501\",\"Category\":\"Medium\",\"ChangeTypeName\":\"Normal\",\"Requestor_Name\":null,\"Owner_Workgroup\":\"Application Support - North America\",\"Assigned_Workgroup\":\"Network Support - L2\",\"Risk\":\"Low\",\"Priority_Name\":null,\"Criticality_Name\":\"Low\",\"Impact\":\"Low\",\"change_request_id\":\"4311\",\"Requestor_Id\":\"22025\",\"CancelReason\":\"\",\"Planned_Start_Time\":\"2021-07-01 12:24:28\",\"Planned_End_Time\":\"2021-07-11 12:21:28\",\"ClosureCategoryID\":\"1\",\"ClosureCategoryName\":\"Requested by JetPatch\",\"Closure_Code\":\"Successful\",\"BackOutPlanNotTestedReason\":\"\"}",
"CustomFields": "[{\"Name\":\"Intigua Correlation ID\",\"GroupName\":\"JetPatch\",\"Value\":\"IntiguaRP_501_1625133979308\"}]"
}
}
}
Cancel Change Request
BODY: Example
{
"ServiceName": "CM_LogOrUpdateCR",
"objCommonParameters": {
"_ProxyDetails": {
"ProxyID": 0,
"ReturnType": "JSON",
"APIKey": "<API_KEY>",
"AuthType": "APIKEY"
},
"objCM_ParamDetails": {
"InstanceName": "IT",
"FrmChange_Request_Id": null,
"ToChange_Request_Id": null
},
"strInstance": "IT",
"RequestType": "Mobile",
"cmParamsJSON": {
"CMContainerJson": "{\"Support_Function\":\"IT\",\"Support_Function_Name\":\"IT\",\"Status\":\"Closed\",\"Change_CategoryID\":\"2\",\"Classification\":\"Normal\",\"Information\":\"Remediation Plan #501 was activated on Thu Jul 01 13:06:37 IDT 2021\\nJetPatch would like to:\\nInstall patch \\\"CEBA-2021:2317 CentOS 7 unzip BugFix Update\\\" on all applicable servers from group \\\"Igor-Cnts7\\\"\\n\\n\",\"Description\":\"Request to approve RP 501\",\"Category\":\"Medium\",\"ChangeTypeName\":\"Normal\",\"Requestor_Name\":null,\"Owner_Workgroup\":\"Application Support - North America\",\"Assigned_Workgroup\":\"Network Support - L2\",\"Risk\":\"Low\",\"Priority_Name\":null,\"Criticality_Name\":\"Low\",\"Impact\":\"Low\",\"change_request_id\":\"4311\",\"Requestor_Id\":\"22025\",\"CancelReason\":\"Cancelled via JetPatch\",\"Planned_Start_Time\":\"2021-07-01 12:24:28\",\"Planned_End_Time\":\"2021-07-11 12:21:28\",\"BackOutPlanNotTestedReason\":\"\"}",
"CustomFields": "[{\"Name\":\"Intigua Correlation ID\",\"GroupName\":\"JetPatch\",\"Value\":\"IntiguaRP_501_1625133979308\"}]"
}
}
}
How to get SymphonySummitAI Details to fill in intigua.properties configuration
There are several properties that need to be pre-defined in intigua.properties file.
JetPatch is validating the properties are existing in SymphonySummitAI by searching the configured value in CM Master Data.
Configured value in JetPatch | Location in CM Master Data |
symphony-summitai.priority | PriorityList |
symphony-summitai.criticality | CriticalityList |
symphony-summitai.risk | RiskList |
symphony-summitai.impact | ImpactList |
symphony-summitai.classification | ClassificationList |
symphony-summitai.category | CategoryList |
symphony-summitai.changeTypeName | ChangeTypeList |
symphony-summitai.ticket.status.new |
StatusList |
symphony-summitai.workgroup.assigned | AssignedWorkgroupList |
symphony-summitai.workgroup.owned | OwnerWorkgroupList |
symphony-summitai.ticket.closure.code | ClosureCodeList |
symphony-summitai.department.name |
InstanceSettingList -> Sup_Function_Name |
symphony-summitai.department.code |
InstanceSettingList -> Sup_Function |
Example:
The value configured for symphony-summitai.impact should exist in the ImpactList from the CM Master Data:
...
"ImpactList": [
{
"Text": "Normal-2 Weeks",
"Value": "1",
"EngineerInShift": 0,
"ShiftEnabled": 0,
"IsDefault": 0,
"IsActive": 0
},
{
"Text": "Emergency-Immediate",
"Value": "2",
"EngineerInShift": 0,
"ShiftEnabled": 0,
"IsDefault": 0,
"IsActive": 0
},
{
"Text": "Standard-48 Hrs",
"Value": "3",
"EngineerInShift": 0,
"ShiftEnabled": 0,
"IsDefault": 0,
"IsActive": 0
},
{
"Text": "ECAB- less than 24 Hrs",
"Value": "4",
"EngineerInShift": 0,
"ShiftEnabled": 0,
"IsDefault": 0,
"IsActive": 0
}
],
The possible values are:
- Normal-2 Weeks
- Emergency-Immediate
- Standard-48 Hrs
- ECAB- less than 24 Hrs
Note - To get the CM Maser Data you need to call the "Get all CM Master Data" API above using HTTP API Application (like Postman).
Configuration Validatation
JetPatch validating the user configuration (step 1 above) with the CM Master Data that it gets.
In case there are mismatch (user configured values that not exist in the CM Master Data) JetPatch application won't start
Comments
0 comments
Please sign in to leave a comment.