Integrating with other ITSM systems

This topic describes the steps required to configure any ITSM system that was set up with the BMC Cloud Lifecycle Management Generic Adapter - Generic Provider (GAGP) framework. (For assistance on adding a new ITSM provider with the GAGP framework, contact BMC Professional Services.)

Note

Integration is supported for ITSM systems only. CMDB integration is not supported through the GAGP framework. 

This topic includes:

Before you begin

Before you begin, make sure the following tasks are completed:

  • Create Change Request templates on the target ITSM system.
  • In BMC Atrium Orchestrator, create workflows for each provider operation to complete the following tasks for change requests (tickets) in the target ITSM system:
    • Ticket.create – Create a change request

    • Ticket.close – Close a change request

    • Ticket.search – Search a change request

    • Ticket.update – Update a change request

    • TicketTemplate.search (only if applicable) - Dynamically fetch change templates

You can use the following AutoPilot workflows for as examples:

    • Creating a change request – :AO-AD-ServiceNow:Setup_Validation:Change_Management:Test Create Change
    • Closing a change request – :AO-AD-ServiceNow:Setup_Validation:Change_Management:Test Close Change
    • Searching a change request – :AO-AD-ServiceNow:Setup_Validation:Change_Management:Test Search Change
    • Updating a change request – :AO-AD-ServiceNow:Setup_Validation:Change_Management:Test Update Change
  • Create BMC Atrium Orchestrator workflows (or Autpilot workflows) to populate request data into the cloud database on the Corporate BMC Remedy AR System server.

    These workflows must be triggered after the request creation workflows to ensure that the details of the requests are created and then persist in the cloud database.

  • Configure approvals on the target ITSM System based on your policies.

Creating the ITSM provider

The GAGP framework requires that you register the provider definition with the Platform Manager. You can use the REST API to register it.

Note

To create a new provider and provider definition, contact BMC Support or your BMC Professional Services representative. They can help you modify and use the required provider_definition.json and provider.json files.

When you register the provider definition, remember these tips:

  • The change request (ticket) provider should be the parent of the provider definition that you are registering.
  • The provider must support operations such as Ticket_create, Ticket_search, Ticket_update, and Ticket_close.
  • Map BMC Atrium Orchestrator workflows to the appropriate operations on the change request.
  • Configure and register the provider instance.
  • Create change policy entries in the SYS:Menu Items form on the Enterprise BMC Remedy AR System server. (See below.)
  • Execute a REST API to create TicketTemplate and TicketTemplateMap entries for Audit Only, Pre-Approved, and Approval Required change policies. See the following payload examples.

Note

GUIDs and Reconciliation IDs of TicketTemplate and TicketTemplate Map Object are automatically generated after inserting them into database (despite the values specified).

To create change policy entries

Use the following procedure to import the clmchg_sysmenuitems.arx file so that you can create change policy entries in the SYS:Menu Items form on the Enterprise BMC Remedy AR System server.

  1. Log in to BMC Remedy Data Import as the AR System Administrator (Demo).
  2. Click Create a new mapping file.

  3. Complete the following fields on the Mapping Editor tab:
    • Source Data File—Select the path of .arx file that you want to import.
    • Source Form Name—Enter the name of the form from which the .arx file's data is imported.
    • Target Server—Select the target server that appears in the list box.
    • Target Form Name—Select the same form that appears in Source Form Name field.
  4. Click Auto Map.
  5. Click Start importing records from the import file.

  6. Verify whether the import was successful.
  7. To deactivate the old BMC Change Management integration and ensure that change approval functions properly, rename the ClassName for entries in the CMF:ChangeIntegrationEnablement form:
    1. Log in to the CLM AR Server using the AR Administrator (Demo) user.
    2. Open the CMF:ChangeIntegrationEnablement form and run an unqualified search.
    3. For each entry with a ServiceOfferingInstance ClassName, rename the ClassName by appending text before or after the name, and then save the entry.

Status values for Ticket cloud objects

The status value that is returned for Ticket cloud objects indicates whether a change request is pending, approved, rejected, or cancelled. Following are the available status states:

  • DRAFT—The change request is not yet created in Corporate ITSM. (Generally, this status need not be set by BMC Atrium Orchestrator workflow.)
  • WAITING_FOR_APPROVAL—The change request created in Corporate ITSM is waiting for approval.
  • REJECTED—The change request is rejected.
  • APPROVED—The change request is approved.
  • IMPLEMENTATION_IN_PROGRESS—BMC Cloud Lifecycle Management will give a call with this status to the Ticket.update call. BMC Atrium Orchestrator workflow will update the change request accordingly.
  • DEPLOYED—BMC Cloud Lifecycle Management will give a call with this status to the Ticket.close call. BMC Atrium Orchestrator workflow will update the change request accordingly.
  • DEPLOY_FAILED—BMC Cloud Lifecycle Management will give a call with this status to the Ticket.close call. BMC Atrium Orchestrator workflow will update the change request accordingly.

Example payload for Audit Only change policy

 Click here to see example code.
Rest Request: /csm/tickettemplatemap/create
HTTP Method: POST
Change Policy: Audit Only
{
"operationParams": [
{
"multiplicity": "1",
"name": "ticketTemplateMap",
"value": {
"cloudClass" : "com.bmc.cloud.model.beans.TicketTemplateMap",
"changePolicy" : "Audit-only Change",
"guid" : "<<GENERATED_GUID>>",
"name" : "<<Ticket Template Map Name>>",
"omClass" : " ServiceOfferingInstance ",
"omOperation" : " bulkcreate ",
"organization" : "",
"reconciliationID" : "<<CORRESPONDING_RECON_ID>>",
"ticketTemplateObject" : {
"cloudClass" : "com.bmc.cloud.model.beans.TicketTemplate",
"externalID" : "<<TEMPLATEID_IN_TARGET_SYSTEM>>",
"guid" : "<<GENRATED_GUID>>",
"name" : "<<TEMPLATE_NAME>>",
"tokenID" : "0"
},
"tokenID" : "0"
},
"type": "com.bmc.cloud.model.beans.TicketTemplateMap"
}
],
"alreadyTraversedGlobalRegistry": false,
"alreadyTraversedLocalRegistry": false,
"preCallout": "",
"postCallout": "",
"callbackURL": "",
"timeout": 1000000
}

Example payload for Pre-Approved change policy

 Click here to see example code.
Rest Request: /csm/tickettemplatemap/create
HTTP Method: POST
Change Policy: Pre-Approved Change
{
"operationParams": [
{
"multiplicity": "1",
"name": "ticketTemplateMap",
"value": {
"cloudClass" : "com.bmc.cloud.model.beans.TicketTemplateMap",
"changePolicy" : " Pre-Authorized Change",
"guid" : "<<GENERATED_GUID>>",
"name" : "<<Ticket Template Map Name>>",
"omClass" : " ServiceOfferingInstance ",
"omOperation" : " bulkcreate ",
"organization" : "",
"reconciliationID" : "<<CORRESPONDING_RECON_ID>>",
"ticketTemplateObject" : {
"cloudClass" : "com.bmc.cloud.model.beans.TicketTemplate",
"externalID" : "<<TEMPLATEID_IN_TARGET_SYSTEM>>",
"guid" : "<<GENRATED_GUID>>",
"name" : "<<TEMPLATE_NAME>>",
"tokenID" : "0"
},
"tokenID" : "0"
},
"type": "com.bmc.cloud.model.beans.TicketTemplateMap"
}
],
"alreadyTraversedGlobalRegistry": false,
"alreadyTraversedLocalRegistry": false,
"preCallout": "",
"postCallout": "",
"callbackURL": "",
"timeout": 1000000
}

Example payload for Approval Required change policy

 Click here to see example code.
Rest Request: /csm/tickettemplatemap/create
HTTP Method: POST
Change Policy: Change Approval Required
{
"operationParams": [
{
"multiplicity": "1",
"name": "ticketTemplateMap",
"value": {
"cloudClass" : "com.bmc.cloud.model.beans.TicketTemplateMap",
"changePolicy" : " Change Approval Required",
"guid" : "<<GENERATED_GUID>>",
"name" : "<<Ticket Template Map Name>>",
"omClass" : " ServiceOfferingInstance ",
"omOperation" : " bulkcreate ",
"organization" : "",
"reconciliationID" : "<<CORRESPONDING_RECON_ID>>",
"ticketTemplateObject" : {
"cloudClass" : "com.bmc.cloud.model.beans.TicketTemplate",
"externalID" : "<<TEMPLATEID_IN_TARGET_SYSTEM>>",
"guid" : "<<GENRATED_GUID>>",
"name" : "<<TEMPLATE_NAME>>",
"tokenID" : "0"
},
"tokenID" : "0"
},
"type": "com.bmc.cloud.model.beans.TicketTemplateMap"
}
],
"alreadyTraversedGlobalRegistry": false,
"alreadyTraversedLocalRegistry": false,
"preCallout": "",
"postCallout": "",
"callbackURL": "",
"timeout": 1000000
}

Example provider definition

Following is example REST API code for the provider definition. In this example, the Autopilot utilities of BMC Atrium Orchestrator were used. As needed, replace the workflows and regenerate the GUIDs.

 Click here to see example code.
Rest Request: /csm/providerdefinition
Http Method: POST
 
{
"timeout": -1,
"preCallout": "",
"postCallout": "",
"callbackURL": "",
"operationParams": [
{
"name": "provider_definition",
"value": {
"name": "<ITSM_PROVIDER_DEF_NAME>>",
"description": "Service Now Provider Definiton",
"parent": "a692c58c-6ffa-4ceb-8560-e16fd81947af",
"isInternal": "false",
"cloudClass": "com.bmc.cloud.model.beans.ProviderDefinition",
"guid": "<<GENERATED_GUID>>",
"supportedOperations": [
{
"cloudClass": "com.bmc.cloud.model.beans.ProvidedOperation",
"className": "Ticket",
"description": "Ticket_create",
"guid": "<<GENERATED_GUID>>",
"name": "Ticket_create",
"operationName": "CREATE",
"configurationData": "{\"WFName\":\":AO-AD-ServiceNow:Setup_Validation:Change_Management:Test Create Change\"}"
},
{
"cloudClass": "com.bmc.cloud.model.beans.ProvidedOperation",
"className": "Ticket",
"description": "Ticket_close",
"guid": "<<GENERATED_GUID>>",
"name": "Ticket_close",
"operationName": "close",
"configurationData": "{\"WFName\":\":AO-AD-ServiceNow:Setup_Validation:Change_Management:Test Close Change\"}"
}
],
"accessAttributes": [
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"isPassword": false,
"name": "AO_SERVER_URL",
"description": "AO Server CDP URL",
"guid": "<<GENERATED_GUID>>"
},
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"isPassword": false,
"name": "AO_SERVER_USERNAME",
"description": "AO Server Username",
"guid": "<<GENERATED_GUID>>"
},
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"isPassword": true,
"name": "AO_SERVER_PASSWORD",
"description": "AO Server Password",
"guid": "<<GENERATED_GUID>>"
},
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"isPassword": false,
"name": "AO_SERVER_GRID_NAME",
"description": "AO Server Grid Name",
"guid": "<<GENERATED_GUID>>"
},
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"isPassword": false,
"name": "AO_SERVER_ADAPTER_NAME",
"guid": "<<GENERATED_GUID>>"
}
]
},
"type": "com.bmc.cloud.model.beans.ProviderDefinition",
"multiplicity": "1"
},
{
"name": "adapter_namespace",
"type": "java.lang.String",
"multiplicity": "1",
"value": "AO"
}
]
}
 

Example provider

Following is example REST API code for the provider. In this example, the Autopilot utilities of BMC Atrium Orchestrator were used. As needed, replace the workflows and regenerate the GUIDs.
Note that the definition GUID must be exactly the same as the GUID that is specified in the earlier provider definition call. 

 Click here to see example code.
Rest Request:/csm/provider/ 
HTTP Method: create
{
"timeout": -1,
"preCallout": "",
"postCallout": "",
"operationParams": [
{
"name": "provider",
"type": "com.bmc.cloud.model.beans.Provider",
"multiplicity": "1",
"value": {
"cloudClass": "com.bmc.cloud.model.beans.Provider",
"guid": "<<GENERATED_GUID>>",
"name": "<<PROVIDER_NAME>>",
"providerDefinition": "/providerdefinition/72a3dd36-4555-4b34-84dc-72c8a4c02fc6",
"accessValues": [
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttributeValue",
"accessAttribute": {
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"description": "AO Server CDP URL",
"guid": “<<GENERATED_GUID_IN_PROVIDER_DEF>>",
"isOptional": false,
"isPassword": false,
"modifiableWithoutRestart": false,
"name": "AO_SERVER_URL"
},
"attributeValue": "<<URL>>",
"description": "AO Server CDP URL",
"guid": "<<GENERATED_GUID>>",
"name": "AO_SERVER_URL"
},
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttributeValue",
"accessAttribute": {
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"description": "AO Server Grid Name",
"guid": “<<GENERATED_GUID_IN_PROVIDER_DEF>>”,
"isOptional": false,
"isPassword": false,
"modifiableWithoutRestart": false,
"name": "AO_SERVER_GRID_NAME"
},
"attributeValue": "GRID1",
"description": "AO Server Grid Name",
"guid": "<<GENERATED_GUID>>",
"name": "AO_SERVER_GRID_NAME"
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttributeValue",
"accessAttribute": {
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"description": "AO Server Username",
"guid": "<<GENERATED_GUID_IN_PROVIDER_DEF>>",
"isOptional": false,
"isPassword": false,
"modifiableWithoutRestart": false,
"name": "AO_SERVER_USERNAME"
},
"attributeValue": "admin",
"description": "AO Server Username",
"guid": "<<GENERATED_GUID>>",
"name": "AO_SERVER_USERNAME"
},
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttributeValue",
"accessAttribute": {
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"description": "AO Server Password",
"guid": "<<GENERATED_GUID_IN_PROVIDER_DEF>>",
"isOptional": false,
"isPassword": true,
"modifiableWithoutRestart": false,
"name": "AO_SERVER_PASSWORD"
},
"attributeValue": "RKy3Q6NHz05RFC7CCzzKRQ==",
"description": "AO Server Password",
"guid": "<<GENERATED_GUID>>",
"name": "AO_SERVER_PASSWORD"
},
{
"cloudClass": "com.bmc.cloud.model.beans.AccessAttributeValue",
"accessAttribute": {
"cloudClass": "com.bmc.cloud.model.beans.AccessAttribute",
"datatype": "STRING",
"guid": "<<GENERATED_GUID_IN_PROVIDER_DEF>>",
"isOptional": false,
"isPassword": false,
"modifiableWithoutRestart": false,
"name": "AO_SERVER_ADAPTER_NAME"
},
"attributeValue": "AO-AD-ServiceNow",
"guid": "<<GENERATED_GUID>>",
"name": "AO_SERVER_ADAPTER_NAME"
}
]
}
]
}

Where to go from here

Managing change policy mappings or Managing change policy mappings for particular tenants

Services

Was this page helpful? Yes No Submitting... Thank you

Comments