- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-11-2023 09:41 AM
Hi All, whenever there is an update in the tickets for certain fields, I would like to reflect the same changes in the third-party system, including comments. Although I was able to successfully test the REST message and confirm its functionality using the test option in the REST message, it appears that the same integration is not working when tested through a business rule.
Rest message:
Content Type:
{
"supplier_requestID":"${supplier_requestID}",
"custom_fields": [
{"id": "environment", "value": "${environment}"},
{"id": "note", "value": "${note}"},
{"id": "state", "value": "${state}"},
{"id": "status", "value": "${status}"}
]
}
The above is working but when I try using business rule it's not updating In sytem
when to run
Before Update
(function executeRule(current, previous /*null when async*/ ) {
// Add your code here
gs.info("Check Exe @@@");
var r = new sn_ws.RESTMessageV2('SXS', 'Update Ticket');
r.setStringParameterNoEscape('id', current.u_ticked_id);
r.setStringParameterNoEscape('environment', current.u_environment);
r.setStringParameterNoEscape('4me_id', current.number);
r.setStringParameterNoEscape('token', 'test');
if(current.sys_updated_by==current.u_pst_assignee.user_name){
r.setStringParameterNoEscape('note', current.comments);
}
else If(current.sys_updated_by==current.assigned_to.user_name)
{
r.setStringParameterNoEscape('ibs_note', current.comments);
}
r.setStringParameterNoEscape('state', current.category);
r.setStringParameterNoEscape('status', current.state);
gs.info('Check Exe here@@@');
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
//current.work_notes = responseBody;
gs.log("Check Exe @@@ Resp " + responseBody.toString());
responseJSON = responseBody.substring(10, responseBody.length - 1);
parsedJSON = JSON.parse(responseJSON);
var targetIncidentNumber = parsedJSON['number'];
var targetIncidentsysid = parsedJSON['sys_id'];
var targetnumber = parsedJSON['u_ticked_id'];
var env = parsedJSON['u_environment'];
var notes = parsedJSON['comments'];
var logString = 'Check Exe @@@ Target Incident Number - ' + targetIncidentNumber + "\nTarget Incident Sys ID - " + targetnumber + targetIncidentsysid;
gs.log(logString, 'BR- Test');
return logString;
//gs.log(logString);
})(current, previous);
: I was receiving null values for these fields in the response body
Thank you
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-11-2023 10:09 AM
@Vamshi_ch123 Found a couple of syntactical mistakes in your business rule. Fixed it in the following script.
(function executeRule(current, previous /*null when async*/ ) {
// Add your code here
gs.info("Check Exe @@@");
var r = new sn_ws.RESTMessageV2('SXS', 'Update Ticket');
r.setStringParameterNoEscape('id', current.u_ticked_id);
r.setStringParameterNoEscape('environment', current.u_environment);
r.setStringParameterNoEscape('4me_id', current.number);
r.setStringParameterNoEscape('token', 'test');
if (current.sys_updated_by == current.u_pst_assignee.user_name) {
r.setStringParameterNoEscape('note', current.comments);
} else if (current.sys_updated_by == current.assigned_to.user_name) {
r.setStringParameterNoEscape('ibs_note', current.comments);
}
r.setStringParameterNoEscape('state', current.category);
r.setStringParameterNoEscape('status', current.state);
gs.info('Check Exe here@@@');
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
//current.work_notes = responseBody;
gs.log("Check Exe @@@ Resp " + responseBody.toString());
var responseJSON = responseBody.substring(10, responseBody.length - 1);
var parsedJSON = JSON.parse(responseJSON);
var targetIncidentNumber = parsedJSON['number'];
var targetIncidentsysid = parsedJSON['sys_id'];
var targetnumber = parsedJSON['u_ticked_id'];
var env = parsedJSON['u_environment'];
var notes = parsedJSON['comments'];
var logString = 'Check Exe @@@ Target Incident Number - ' + targetIncidentNumber + "\nTarget Incident Sys ID - " + targetnumber + targetIncidentsysid;
gs.log(logString, 'BR- Test');
//return logString;
//gs.log(logString);
})(current, previous);
Please test this and see if it produces the desired result.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-11-2023 10:09 AM
@Vamshi_ch123 Found a couple of syntactical mistakes in your business rule. Fixed it in the following script.
(function executeRule(current, previous /*null when async*/ ) {
// Add your code here
gs.info("Check Exe @@@");
var r = new sn_ws.RESTMessageV2('SXS', 'Update Ticket');
r.setStringParameterNoEscape('id', current.u_ticked_id);
r.setStringParameterNoEscape('environment', current.u_environment);
r.setStringParameterNoEscape('4me_id', current.number);
r.setStringParameterNoEscape('token', 'test');
if (current.sys_updated_by == current.u_pst_assignee.user_name) {
r.setStringParameterNoEscape('note', current.comments);
} else if (current.sys_updated_by == current.assigned_to.user_name) {
r.setStringParameterNoEscape('ibs_note', current.comments);
}
r.setStringParameterNoEscape('state', current.category);
r.setStringParameterNoEscape('status', current.state);
gs.info('Check Exe here@@@');
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
//current.work_notes = responseBody;
gs.log("Check Exe @@@ Resp " + responseBody.toString());
var responseJSON = responseBody.substring(10, responseBody.length - 1);
var parsedJSON = JSON.parse(responseJSON);
var targetIncidentNumber = parsedJSON['number'];
var targetIncidentsysid = parsedJSON['sys_id'];
var targetnumber = parsedJSON['u_ticked_id'];
var env = parsedJSON['u_environment'];
var notes = parsedJSON['comments'];
var logString = 'Check Exe @@@ Target Incident Number - ' + targetIncidentNumber + "\nTarget Incident Sys ID - " + targetnumber + targetIncidentsysid;
gs.log(logString, 'BR- Test');
//return logString;
//gs.log(logString);
})(current, previous);
Please test this and see if it produces the desired result.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-17-2023 08:43 AM
@Vamshi_ch123 Did this script work for you, if yes then please mark the answer as correct.