Send Updated fields in the payload
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-17-2023 09:04 AM
I am currently trying to send the updated fields to a third-party application. However, when I update any field using a business rule, I notice that all values, except the updated one, appear as null. Similarly, the same issue occurs, and the corresponding fields become blank in the third-party application.
(function executeRule(current, previous /*null when async*/ ) {
// Add your code here
gs.info("Check Exe @@@");
var restMessage = new sn_ws.RESTMessageV2('SS', 'Update Ticket');
restMessage.setStringParameterNoEscape('id', current.u_ticked_id);
restMessage.setStringParameterNoEscape('token', 'wjsjjjjjjjjjjjjjjjjjjjj');
if (current.u_environment) {
restMessage.setStringParameterNoEscape('environment', current.u_environment);
}
if (current.state) {
restMessage.setStringParameterNoEscape('status', current.state);
}
if (current.category) {
restMessage.setStringParameterNoEscape('state', current.category);
}
if (current.sys_updated_by == current.u_pst_assignee.user_name || current.sys_updated_by == current.assigned_to.user_name) {
restMessage.setStringParameterNoEscape('note', current.comments);
}
var requestBody = restMessage.getRequestBody();
gs.info("Request Payload sent to third party: " + requestBody);
gs.info('Check Exe here@@@');
var response = restMessage.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
current.work_notes = responseBody;
gs.log("Check Exe @@@ Resp " + responseBody);
if (httpStatus === 200) {
// Proceed with processing the response
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 - ' + targetIncidentSysId +
'\nTarget Incident ID - ' + targetNumber +
'\nEnvironment - ' + env +
'\nNotes - ' + notes;
gs.log(logString, 'BR- Test');
} else {
gs.error("Check Exe @@@ Error: HTTP Status " + httpStatus);
}
})(current, previous);
for ex : when I change the environment all other values are getting blank
custom_fields":[{"id":"description","value":null},{"id":"waiting_for_reason","value":null},{"id":"severity","value":"low"},{"id":"environment","value":"staging"},{"id":"state","value":"1"},{"id":"status","value":null},{"id":"note","value":null}
Thank you

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-17-2023 09:32 AM
@Vamshi_ch123 Please update your business rule as follows and check if the following script works for you.
(function executeRule(current, previous /*null when async*/ ) {
// Add your code here
gs.info("Check Exe @@@");
var restMessage = new sn_ws.RESTMessageV2('SS', 'Update Ticket');
restMessage.setStringParameterNoEscape('id', current.u_ticked_id+'');
restMessage.setStringParameterNoEscape('token', 'wjsjjjjjjjjjjjjjjjjjjjj');
if (current.u_environment) {
restMessage.setStringParameterNoEscape('environment', current.u_environment+'');
}
if (current.state) {
restMessage.setStringParameterNoEscape('status', current.state+'');
}
if (current.category) {
restMessage.setStringParameterNoEscape('state', current.category+'');
}
if (current.sys_updated_by == current.u_pst_assignee.user_name || current.sys_updated_by == current.assigned_to.user_name) {
restMessage.setStringParameterNoEscape('note', current.comments+'');
}
var requestBody = restMessage.getRequestBody();
gs.info("Request Payload sent to third party: " + requestBody);
gs.info('Check Exe here@@@');
var response = restMessage.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
current.work_notes = responseBody;
gs.log("Check Exe @@@ Resp " + responseBody);
if (httpStatus === 200) {
// Proceed with processing the response
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 - ' + targetIncidentSysId +
'\nTarget Incident ID - ' + targetNumber +
'\nEnvironment - ' + env +
'\nNotes - ' + notes;
gs.log(logString, 'BR- Test');
} else {
gs.error("Check Exe @@@ Error: HTTP Status " + httpStatus);
}
})(current, previous);
Hope this helps.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-17-2023 07:58 PM - edited 12-17-2023 07:59 PM
Hi @Sandeep Rajput,
The current solution is functional; however, when updating other fields, the note value remains blank in the response body. Despite successfully passing comments added by the assigned_to person to the third-party "note" string field, only this field returns a null output, while other fields are being updated.
After updating comments:
{"id":"environment","value":"production"},{"id":"state","value":"3"},{"id":"status","value":"10"},{"id":"assign_to","value":false},{"id":"note","value":"Test Comment"}
After Updating state or any other fields
{"id":"environment","value":"production"},{"id":"state","value":"2"},{"id":"status","value":"10"},{"id":"assign_to","value":false},{"id":"note","value":null}
Thank you

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-18-2023 12:56 AM
@Vamshi_ch123 Could you please share what values you are seeing while printing the request and response body in logs?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-18-2023 01:21 AM
Hi, @Sandeep Rajput ,
When I update the state/any field this is the payload I can see in the logs
Request Payload sent to third party: {"id": "undefined","token": "wwwwwwwwwwww","environment": "production","status": "10","state": "1","note": ""}
When I update the comments
Request Payload sent to third party: {"id": "undefined","token": "wwwwwwwwwwww","environment": "production","status": "10","state": "1","note": "test comment"}
Thank you