We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

What is the meaning of StatusCode 500 in integration

VIKAS MISHRA
Tera Contributor

I have done one servicenow to servicenow integration.

When i am updating the worknote in my side instance then it should send those to another instase but i checked getting update status code as 500, please suggest why ib am getting that.

 

Below is my script.

(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 = current.description;
            descbody = descbody.replace(/(\r\n|\n|\r|\\n)/gm, "");
            descbody = JSON.stringify(descbody);
            descbody = descbody.replace(/"/g, "'");
            descbody = descbody.replace(/\\/g, "\\\\");

            var shortDesc = current.short_description;
            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 + '"';
            if (current.impact.changes())
                req = req + ',"impact":"' + current.impact + '"';
            if (current.urgency.changes())
                req = req + ',"urgency":"' + current.urgency + '"';

            if (current.work_notes.changes()) {
                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 + '"';
            }
            if (current.comments.changes()) {
                var comment = current.comments.getJournalEntry(1);
                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 + '"';
            }
            if (current.assignment_group.changes()) {
                if (current.assignment_group == 'e8c3483c1b118510f48c65f7b04bcb0d') { // Ultima support group
                    req = req + ',"assignment_group":"' + 'd934315d1b4a2300ab0887fe6e4bcbf5' + '"'; // ultima servicedesk 24*7  
                }
                // 				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' + '"';
                } 
// 				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 = req + ',"state":"' + '6' + '","close_code":"' + close_code + '","close_notes":"' + closeNotes + '"';
                } else if (current.state.changesTo('7')) { // closed
                    req = req + ',"state":"' + '7' + '"';
                } else if (current.state.changesTo('8')) { // cancelled
                    req = 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 " + req, 'ultimaINCUpdate');
            rUpdate.setStringParameterNoEscape('request', req);

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

})(current, previous);
11 REPLIES 11

prashantpandey
Tera Contributor

The issue could be due to multiple reasons and not necessarily only from the other side.

  • One reason could be that the target has a faulty code which is not able to process the request properly and failing.
  • The other could be due to the request JSON is not valid either structure or any value.

You need to involve the other side in debugging or just check using a Rest Client like Postman and confirm whether the URL is accessible and bug free. Once you are able to update a request successfully using Postman then check the log which you put 

gs.log("Update req body " + req, 'ultimaINCUpdate');

 and confirm if the req variable has a desired structure and value which you want to send.

 

Regards,

Prashant Pandey

I checked with other side below is there response i got:

 

Hi Vikas,

That is the correct URL for our non-prod environment, and I can see that the payload hit our endpoint and was authorised.
The error you received is because the payload was not in a valid JSON format, so ServiceNow rejected the call.

API_INT-thread-3 E0C57D2E1BB22550A60B8551F54BCB32 txid=28c57d2e3224 SEVERE *** ERROR *** com.glide.rest.util.RESTRuntimeException: The payload is not valid JSON.

org.mozilla.javascript.JavaScriptException: com.glide.rest.util.RESTRuntimeException: The payload is not valid JSON.

Can you please check this your side please.

____________________________________________________________________

Below is the screenshot of loigs that i got 

Now i do not know how can i check if JSON format is correct or not

 

 

VIKASMISHRA_0-1684316623895.png

 

prashantpandey
Tera Contributor

Please share the request body which you logged at 

gs.log("Update req body " + req, 'ultimaINCUpdate');

Also, one more question. what is the http method for Update Incident resource, is it Post, Put or Patch?

I see you are setting the request as a string parameter at the following line

rUpdate.setStringParameterNoEscape('request', req);

can you change that to rUpdate.setRequestBody(req);

 

Also, for debugging and checking the JSON you are sending you can ask the other team to share the request body they have received in the request.

 

Regards,

Prashant Pandey

When i use the log  "gs.log("Update req body " + req, 'ultimaINCUpdate'); ", in result i got log as below:

Update req body {"u_customer_reference":"INC0031009","work_notes":"'17/05/2023 08:57:19 - Vikas Mishra (Work notes)testing'"}

 

For update incident we are using "PUT" method.

 

Tried using code "rUpdate.setRequestBody(req);" instead of the previous one as you said, but still facing the same.

 

 

 

 

 

Hi Vikas,

 

In the log you see there is an unnecessary single quote in the work_notes value, can you remove that single quote from the value and then try.

 

Regards,

Prashant Pandey