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