You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

To ensure that the data being shared out of Ivanti and into ServiceNow (inbound data) is being mapped correctly when arriving at your ServiceNow instance, you will next need to update the scripts for several fields in the PSP Common Incident to Incident transform map under the PSP Common Transform Maps module. ServiceNow transform maps handle the format of data being shared into a ServiceNow instance. Making changes to the scripts for the specified transform map fields will ensure that data shared out of your Freshservice instance will be mapped correctly to related fields in ServiceNow.


Prerequisites


(warning) First, you will need to create a ServiceNow dynamic share for Ivanti.

(warning) You will also need to create a ServiceNow subscribed queue and subscribe for Ivanti and edit ServiceNow outbound table map fields for Ivanti.

Procedure

To edit the outbound table map fields for Ivanti, follow these steps:


Access the Incident to PSP Common Incident transform map

Log into your ServiceNow instance and navigate to System Import Sets > Administration > Transform Maps or simply type and then select Transform Maps in the Filter Navigator on the upper left-hand side of the screen. Then, search for and then click into the PSP Common Incident to Incident transform map.

Add transform scripts

Scroll down to the tabs at the bottom of the form and click the Transform Scripts tab. Create New transform map scripts according to the information in the table shown below.

WhenOrderScript
onBefore80
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
 if (source.u_comments.nil())
  return;
 var sgr = new GlideRecord("sys_journal_field");
 sgr.addQuery("name", target.getTableName());
 sgr.addQuery("element", "comments");
 sgr.addQuery("element_id", target.sys_id);
 sgr.addQuery("value", source.u_comments);
 sgr.query(); 
 if (sgr.next())
  ignore = true;
})(source, map, log, target);
onBefore85
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
 if (source.u_caller_email.nil()) {
  return; 
 }
 var gr = new GlideRecord("sys_user");
 gr.addQuery("email", source.u_caller_email);
 gr.query(); 
 if (gr.next()) {
  target.caller_id = gr.sys_id;
 }
})(source, map, log, target);
onAfter90
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
    var pspS = new PerspectiumEncryption();
    var pspR = new PerspectiumReplicator();
    var ogr = new GlideRecord("psp_out_message");
    ogr.addQuery("state", "deferred");
    var orQc = ogr.addQuery("u_extra", "CONTAINS", "number=" + source.u_number);
    orQc.addOrCondition("u_attributes", "CONTAINS", target.sys_id);
    ogr.query();
    while (ogr.next()) {
   // update value with correlation id before we send out
        var decodeData = pspS.decryptString(ogr.value);
        decodeData = decodeData.replace("<correlation_id/>", "<correlation_id>" + target.correlation_id + "</correlation_id>");
        if (decodeData.indexOf("</attachments>") > -1) {
            ogr.name = ogr.name.replace("update", "attach");
        }
        ogr.value = pspS.encryptStringWithCipher(decodeData, "3");
        ogr.u_extra = "";
        ogr.state = "ready"; 
        ogr.update();
    }
})(source, map, log, target);
onAfter95
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
 if (!source.u_correlation_id.isNil()) {
        return;
    }
    var pspR = new PerspectiumReplicator();
    var ds = new GlideRecord("psp_replicate_conf");
    ds.addQuery("u_target_queue.u_name", "psp.in.meshlet.ivanti");
    ds.addQuery("active", "true");
    ds.addQuery("sync_direction", "share");
    ds.query();
    if (!ds.next()) {
        return;
    }
    var gr = new GlideRecord("incident");
    gr.addQuery("sys_id", target.sys_id);
    gr.query();
    if (gr.next()) {
        pspR.shareRecord(gr, "incident", "update", ds.sys_id);
    }
})(source, map, log, target);


Edit the caller_id table map field

Se

Add scripts for additional table map fields

Using Step #3 as a guide, click into and then add Source Scripts for the table map fields per the information in the table shown below.

Table Map Source FieldScript to add(info) NOTE: Field values will be reflected in Ivanti in...
description
answer = current.description;
if (current.description.nil()) {
 answer = current.short_description;
}
Summary
business_service
answer = “Service Desk”;
Service
category
answer = “Capacity”;
Category
state
answer = “Active”;
Status
assigned_to
answer = “Alan Taylor”;
Owner
assignment_group
answer = “Service Desk”;
Team


Update the onAfter script with Order 110

In the list of Transform Scripts, search for and click into the onAfter script with an Order of 110. Scroll down to the scripting window and replace "msp_client_incident_sent" with "ivanti_sent"

Finally, click Update in the bottom left-hand corner of the form to save the changes to your transform map script.



Next steps


Add ServiceNow attachment.uploaded script action for Ivanti