Unable to send State "resolved" along with close code and close note through "rest Message".

VIKAS MISHRA
Tera Contributor

We have bi directional ServiceNow incident integrating with 3rd party servicenow instance.

As per the requirement if I resolve the incident at my side then BR capture the state "6" means resolve along with "resolved notes" and "resolve code" and send this 3 values to 3rd party as a JASON payload. 

When i am sending the state only with below mentioned code its working as i can see the payload is generating 

else if (current.state.changesTo('6')) { // resolved
req.state = current.state.toString();
 
But when i am trying to send all 3 fields value then payload is not even generating. Please suggest what code i should use to send all 3 values when we resolve the incident 
req += "Incident is Resolved at Costa End with Resolution Code - " + current.close_code + "and Resolution Note - " + current.close_notes + "state - " + current.state.toString() ;
 
 
3 REPLIES 3

Community Alums
Not applicable

Hi @VIKAS MISHRA ,

 

Can you try this

else if (current.state.changesTo('6')) { 
    var message = "Incident is Resolved at Costa End with Resolution Code - " + current.close_code + " and Resolution Note - " + current.close_notes + " state - " + current.state.toString();

    var payload = {
        message: message
    };
 var req = JSON.stringify(payload);

 

If my answer helped you in any way, please mark it as helpful or correct. 

(function executeRule(current, previous /*null when async*/ ) {
    if (current.u_external_ticket_no == '') {
       
        try {
            var rInsert = new sn_ws.RESTMessageV2('Ultima', 'Create Incident');

            //override authentication profile
            //authentication type ='basic'/ 'oauth2'
            //r.setAuthenticationProfile(authentication type, profile name);

            //set a MID server name if one wants to run the message on MID
            //r.setMIDServer('MY_MID_SERVER');

            //if the message is configured to communicate through ECC queue, either
            //by setting a MID server or calling executeAsync, one needs to set skip_sensor
            //to true. Otherwise, one may get an intermittent error that the response body is null
            //r.setEccParameter('skip_sensor', true);
            var descbody = new TranslateTexttoen().translate(current.description);//current.description; // added by Translation team to convert non english text to english
            descbody = descbody.replace(/(\r\n|\n|\r|\\n)/gm, "");
            descbody = JSON.stringify(descbody);
            descbody = descbody.replace(/"/g, "'");
            descbody = descbody.replace(/\\/g, "\\\\");

            var shortDesc = new TranslateTexttoen().translate(current.short_description);//current.short_description; // added by Translation team to convert non english text to english
            shortDesc = shortDesc.replace(/(\r\n|\n|\r|\\n)/gm, "");
            shortDesc = JSON.stringify(shortDesc);
            shortDesc = shortDesc.replace(/"/g, "'");
            shortDesc = shortDesc.replace(/\\/g, "\\\\");

            rInsert.setStringParameterNoEscape('short_description', shortDesc);
            rInsert.setStringParameterNoEscape('description', descbody);

            rInsert.setStringParameterNoEscape('caller_id', 'Costa_API_user');
            rInsert.setStringParameterNoEscape('impact', current.impact);
            rInsert.setStringParameterNoEscape('urgency', current.urgency);
            rInsert.setStringParameterNoEscape('state', 1);
            rInsert.setStringParameterNoEscape('contact_type', 'Integration');
            rInsert.setStringParameterNoEscape('category', '910'); // cloud
            rInsert.setStringParameterNoEscape('subcategory', '1015'); // virtual
            rInsert.setStringParameterNoEscape('u_customer_reference', current.number);



            var insertResponse = rInsert.execute();
            var insertResponseBody = insertResponse.getBody();
            var insertHttpStatus = insertResponse.getStatusCode();
            var parsedData = JSON.parse(insertResponseBody);
            gs.log(parsedData.result.number + " Ultima Incident creation response : " + insertResponseBody, 'UltimaINCInsert');
            current.u_external_ticket_no = parsedData.result.number;
            current.state =11;
            current.update();

        } catch (ex) {
            var message = ex.message;
        }
    } else {
        try {
            var rUpdate = new sn_ws.RESTMessageV2('Ultima', 'Update Incident');
            //override authentication profile
            //authentication type ='basic'/ 'oauth2'
            //r.setAuthenticationProfile(authentication type, profile name);

            //set a MID server name if one wants to run the message on MID
            //r.setMIDServer('MY_MID_SERVER');

            //if the message is configured to communicate through ECC queue, either
            //by setting a MID server or calling executeAsync, one needs to set skip_sensor
            //to true. Otherwise, one may get an intermittent error that the response body is null
            //r.setEccParameter('skip_sensor', true);
           // var req = '{"u_customer_reference":"' + current.number + '"';
            //var req = {"u_customer_reference": current.number.toString()};
            var req = {};
            req.u_customer_reference = current.number.toString();
           
            if (current.impact.changes()){
                //req = req + ',"impact":"' + current.impact + '"';
                req.impact = current.impact.toString();
            }
            if (current.urgency.changes())
                //req = req + ',"urgency":"' + current.urgency + '"';
                req.urgency = current.urgency.toString();

            if (current.work_notes.changes()) {
               
                var worknotes1 = new TranslateTexttoen().translatewn('incident', current.sys_id,'work_notes'); // added by Translation team to convert non english text to english
                var workNotes =current.work_notes.getJournalEntry(1);
                workNotes = workNotes.replace(/(\r\n|\n|\r|\\n)/gm, "");
                workNotes = JSON.stringify(workNotes);
                workNotes = workNotes.replace(/"/g, "'");
                workNotes = workNotes.replace(/\\/g, "\\\\");
                //req = req + ',"work_notes":"' + workNotes + '"';
                req.work_notes = worknotes1;
            }
            if (current.comments.changes()) {
                var comment = current.comments.getJournalEntry(1);
                var comment1 = new TranslateTexttoen().translatewn('incident', current.sys_id,'comments'); // added by Translation team to convert non english text to english
                comment = comment.replace(/(\r\n|\n|\r|\\n)/gm, "");
                comment = JSON.stringify(comment);
                comment = comment.replace(/"/g, "");
                comment = comment.replace(/\\/g, "\\\\");
                //req = req + ',"comments":"' + comment + '"';
                req.comments = comment1;
            }
            if (current.assignment_group.changes()) {
                if (current.assignment_group == 'e8c3483c1b118510f48c65f7b04bcb0d') { // Ultima support group
                    //req = req + ',"assignment_group":"' + 'd934315d1b4a2300ab0887fe6e4bcbf5' + '"'; // ultima servicedesk 24*7  req.asign = sysid
                    req.assignment_group = 'd934315d1b4a2300ab0887fe6e4bcbf5';
                }
                //              else {
                //                 req = req + ',"state":"' + '8' + '","close_code":"' + 'Cancelled' + '","close_notes":"' + 'Cancelled as reassigned' + '"'; // resolved with cancel code in IBM
            }
            if (current.state.changes()) {
                if (current.state.changesTo('2')) { // In Progress
                    //req = req + ',"state":"' + '2' + '"';
                    req.state = current.state.toString();
                }
//              else if (current.state.changesTo('10')) { //Awaiting User Information
//                     req = req + ',"state":"' + '3' + '","on_hold_reason":"' + '1' + '"';
//                 } else if (current.state.changesTo('11')) { //Awaiting Vendor Information
//                     req = req + ',"state":"' + '3' + '","on_hold_reason":"' + '4' + '"';
//                 } else if (current.state.changesTo('12')) { //Change implementation in-progress
//                     req = req + ',"state":"' + '3' + '","on_hold_reason":"' + '5' + '"';
//                 }
                else if (current.state.changesTo('6')) { // resolved
                    // var closeNotes = current.close_notes;
                    // closeNotes = closeNotes.replace(/(\r\n|\n|\r|\\n)/gm, "");
                    // closeNotes = JSON.stringify(closeNotes);
                    // closeNotes = closeNotes.replace(/"/g, "'");
                    // closeNotes = closeNotes.replace(/\\/g, "\\\\");
                    // var close_code = current.close_code;
                    // if (close_code == 'Solved (Work Around)' || close_code == 'Solved (Permanently)' || close_code == 'Solved Remotely (Work Around)' || close_code == 'Solved Remotely (Permanently)') {
                    //     close_code = 'Fix Implemented';
                    // } else if (close_code == 'Closed/Resolved by Caller') {
                    //     close_code = 'Resolved by user';
                    // } else {
                    //     close_code = 'Unable to Identify/Resolve';
                    // }
                    //req.state = current.state.toString();
                    req += "Incident is Resolved at Costa End with Resolution Code - " + current.close_code + "and Resolution Note - " + current.close_notes + "state - " + current.state.toString() ;
                     //req = "Incident is Resolved at Costa End with state - " + current.state;
 //gs.log('Testing by vikas mishra' + req.state);
 //req = req + ',"state":"' + '6' + '","close_code":"' + close_code + '","close_notes":"' + closeNotes + '"';
 } else if (current.state.changesTo('7')) { // closed
                    //req = req + ',"state":"' + '7' + '"';
                    req.state = '7';
                } else if (current.state.changesTo('8')) { // cancelled
                    //req = req + ',"state":"' + '8' + '"';
                    req.state = '8';
                } else if (current.state.changesTo('13')) { //reopened
                    req = req + ',"state":"' + '2' + '","work_notes":"' + 'Reopened' + '"';
                   
                } else {
                    gs.log(current.state + " state update is not in scope", 'ultimaINCUpdate');
                }
            }
           
            //req = req + '}';
           
            gs.log("Update req body " + JSON.stringify(req), 'ultimaINCUpdate');
           // rUpdate.setStringParameterNoEscape('request', JSON.stringify(req));
            rUpdate.setRequestBody(JSON.stringify(req));

           
            var updateResponse = rUpdate.execute();
            var updateResponseBody = updateResponse.getBody();
            var updateHttpStatus = updateResponse.getStatusCode();
            gs.log('testing req ' + '' + req);
            gs.log('testing updateResponseBody ' + '' + updateResponseBody);
            gs.log('testing updateHttpStatus ' + '' + updateHttpStatus);
            gs.log(" Ultima Incident update response : " + updateResponseBody, 'ultimaINCUpdate');
           
           
        } catch (ex) {
            message = ex.message;
        }
    }

})(current, previous);

thomaskennedy
Tera Guru

This looks odd:

 

descbody = JSON.stringify(descbody);

 

The description doesn't contain JSON, does it?