Problems to send attachments to another servicenow instance

pablogalian
Tera Contributor

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);

 

0 REPLIES 0