What is the meaning of StatusCode 500 in integration
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-16-2023 01:19 AM
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);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-17-2023 02:00 AM - edited 05-17-2023 02:01 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-17-2023 02:45 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-17-2023 04:14 AM - edited 05-17-2023 04:16 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-17-2023 07:59 AM
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-17-2023 11:39 PM
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