Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

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