Remedy Integration

From ServiceNow Wiki
Jump to: navigation, search
Service Management Integrations
Note
Note: The following integration is not part of the supported platform. The integration may require additional customization, typically performed by an experienced administrator or consultant, prior to operating correctly.


Contents


1 Overview

Bi-directional integration with Remedy is achieved using ServiceNow's web service consumer API to invoke Remedy's OpCreate web service to create a new Ticket, and using web service import sets to provide an interface for Remedy to invoke and create a ServiceNow incident.

2 Requirements

  • ServiceNow Plugins
    • Web Service Consumer Plugin (com.glide.web_service_consumer)
    • Web Service Application Plugin (com.glide.web_service_application)

3 Incoming to ServiceNow

To create an Incident from a Remedy Ticket, configure a filter in Remedy to trigger a SOAP message to insert a record into the standard web service import set Notification table.

Refer to the following Remedy integration documentfor creating the set fields filter to import an external web service. You use an external web service by creating a Web Service Set Fields filter action to enter the data from the web service into your base form. You can then view the form in an ARSystem client. Make sure that you do not have other filters acting on the same form that might skew the data, or that might prevent the data from the external web service from displaying. You can use the following WSDL to construct your set fields fielter in Remedy:

https://yourinstance.service-now.com/imp_notification.do?WSDL

4 Outbound to Remedy

To create a Remedy Ticket from an Incident, the following is an example of a business rule on the Incident table that is triggered after the creation or update of the record. The script uses the Web Service consumer feature to consume Remedy's OpCreate web service directly.

var s = new SOAPEnvelope(); 
 
// build header with authentication 
var e = s.createHeaderElement('ns1:AuthenticationInfo', null, 'mustUnderstand', '0'); 
e.setAttribute('actor', 'http://www.w3.org/2001/XMLSchema-instance'); 
e.setAttribute('xmlns:ns1', 'urn:Interface_Incident'); 
s.createElement(e, 'ns1:userName', 'xxxxx'); 
s.createElement(e, 'ns1:password', 'xxxxx'); 
 
// create the body , make the web service call to OpCreate
e = s.createBodyElement('OpCreate', null, 'xmlns', 'urn:Interface_Incident'); 
s.createElement(e, 'Action', "CREATE"); 
s.createElement(e, 'Assigned_Group', current.assignment_group.getDisplayValue()); 
 
// if you track the affected CI class, you may create a custom field
// to hold this value and use it to update Remedy's Category field
if (current.cmdb_ci) { 
   s.createElement(e, 'Category', current.u_affected_ci_class); 
 
   // the CI name becomes Remedy's Type value
   s.createElement(e, 'Type', current.cmdb_ci.name); 
} 
 
// setting field values
s.createElement(e, 'Description', current.short_description); 
s.createElement(e, 'Diary_Update', current.comments); 
s.createElement(e, 'Direction', "OUTBOUND"); 
s.createElement(e, 'Fix_Code', ""); 
s.createElement(e, 'Incident_Create_Date', ""); 
s.createElement(e, 'Interface_ID', "NA"); 
s.createElement(e, 'Interface_Name', "XXXX"); 
s.createElement(e, 'Item', ""); 
s.createElement(e, 'Pending_Code', ""); 
 
// map Incident priorty to Remey priority
if (current.priority == 0) { 
  s.createElement(e, 'Priority', "RED"); 
  } else if (current.priority == 1) { 
  s.createElement(e, 'Priority', "1"); 
  } else if (current.priority == 2) { 
  s.createElement(e, 'Priority', "2"); 
  } else if (current.priority == 3) { 
  s.createElement(e, 'Priority', "3"); 
  } else if (current.priority == 9) { 
  s.createElement(e, 'Priority', "4"); 
}
 
// this is the unique ID that will be used to match Remedy Ticket
// to Incident
s.createElement(e, 'Remedy_ID', current.sys_id); 
 
// map Incident state to Remedy Status
if (current.state == 8) { 
    s.createElement(e, 'Status', "Assigned"); 
  } else if (current.state == 9) { 
    s.createElement(e, 'Status', "Assigned"); 
  } else if (current.state == 10) { 
    s.createElement(e, 'Status', "Work In Progress"); 
  } else if (current.state == 11) { 
    s.createElement(e, 'Status', "Pending"); 
  } else if (current.state == 6 ) { 
    s.createElement(e, 'Status', "Fixed"); 
  } else if (current.state == 7) { 
    s.createElement(e, 'Status', "Closed"); 
}
 
// specify the URL endpoint
var request = new SOAPRequest("https://company.com/arsys/services/ARService?server=arsys&webService=Interface_Incident",
                              "urn:Interface_Incident/OpCreate"); 
request.setSoapAction("Create"); // optionally set the SOAPAction header
request.post(s); // post the envelope directly
Was this article helpful?
Yes, I found what I needed
No, I need more assistance
Views
Personal tools