Problems to send attachments to another servicenow instance
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-17-2025 07:46 AM
Hello community,
I tried several times to create a business rules to push attachments to one servicenow instance to another... the ticket is created but the attachments are not working at all. I don't know what else I can do.
I will paste my script and if anyone has any suggestion I will read carefully.
Thanks
(function executeRule(current, previous /*null when async*/ ) {
var targetIns = 'https://dev225301.service-now.com/';
var targetUserId = 'admin';
var targetUserPassword = 'Tigershark69!';
var answer = '';
var attachmentmsg = '';
var r = new sn_ws.RESTMessageV2('outBound to Poly Instance', 'Create Incident');
r.setStringParameterNoEscape('sys_id', current.sys_id);
r.setStringParameterNoEscape('category', current.category);
r.setStringParameterNoEscape('sd', current.short_description);
r.setStringParameterNoEscape('caller', current.caller_id);
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
var status = httpStatus.toString();
if (status == "201") {
answer = "Incident created sucessfully";
var parser = new JSONParser();
var parsed = parser.parse(responseBody);
var targetRec = parsed.result;
gs.log(targetRec.sys_id);
var attachment = sendAttachment(current.getTableName(), current.sys_id, targetRec.sys_id);
if (attachment != 'none') {
attachmentmsg = "Attachment was sent to target instance ::: ---> " + attachment[0].toString() + " Attachment failed to be sent " + attachment[1].toString();
} else {
attachmentmsg = "Ticket has not attachments";
}
} else {
gs.addInfoMessage("failed to sent");
}
answer+=attachmentmsg
gs.addInfoMessage(answer);
function sendAttachment(sourceTable, sourceID, targetID) {
var answer=[0,0];
var x = new GlideRecord('sys_attachment');
x.addQuery('table_sys_id', sourceID);
x.addQuery('table_name', sourceTable);
x.query();
if (x.hasNext()) {
while (x.next()) {
var amsg = new sn_ws.RESTMessageV2();
amsg.setHttpMethod('post');
amsg.setBasicAuth(targetUserId, targetUserPassword);
amsg.setEndpoint(targetIns+'api/now/attachment/file');
amsg.setQueryParameter('table_name', x.table_name);
amsg.setQueryParameter('table_sys_id', targetID);
amsg.setQueryParameter('file_name', x.file_name);
amsg.setQueryParameter('content_type', x.content_type);
amsg.setQueryParameter('Accept', "application/json");
// form request body
amsg.setRequestBodyFromAttachment(x.sys_id);
var response = amsg.execute();
var responseBody = response.getBody();
var https = response.getStatusCode();
if (https.toString() == '201'){
answer[0]+=1;
}
else {
answer[1]+=1;
}
}
}else {
answer='none';
}
return answer;
}
})(current, previous);