send attachement through rest message to different instance.

pradippaul
Tera Contributor

Hi All,

I am using ServiceNow rest message to copy incident record and attachment to a different instance. but the attachment not copying to target instance.

(function executeRule(current, previous /*null when async*/ ) {


    try {
        gs.log("1.0 " +current.sys_id);
        var targetinstance = "https://dev211559.service-now.com/api/now/attachment";
        var user = "userid";
        var password = "password";
        var text = '';
        var r = new sn_ws.RESTMessageV2('ServiceNow e bonding', 'create an incident');
        r.setStringParameterNoEscape("details", current.short_description);
        r.setStringParameterNoEscape("caller", current.caller_id);
        r.setStringParameterNoEscape("id", current.sys_id);
        r.setStringParameterNoEscape("category", current.category);
        r.setStringParameterNoEscape("number", current.number);
        r.setStringParameterNoEscape("description", current.description);
        r.setStringParameterNoEscape("assignment_group", current.assignment_group);
        r.setStringParameterNoEscape("impact", current.impact);
        r.setStringParameterNoEscape("urgency", current.urgency);
        r.setStringParameterNoEscape("subcategory", current.subcategory);
        var response = r.execute();
        var responseBody = response.getBody();
        gs.log(" 1.1 Fianl test integration response" + responseBody);
        var parsedata = JSON.parse(responseBody);
        var inctargetnum = parsedata.result.number;
        current.correlation_id = inctargetnum;
        //current.update();

        var httpStatus = response.getStatusCode();
        gs.log("2.0 get httpstatus value " + httpStatus);
        if (httpStatus.toString() == "201") {
			gs.log("2.1 check httpstatus conditon " + httpStatus);
            text = "incident created";
            var parser = new JSONParse();
            var parsed = new parser.parse(responseBody);
            var tragetrec = parsed.sys_id;
            var attachmentcount = sendAttachements(current.getTableName(), current.sys_id, tragetrec);
           // gs.log("3. print table name  " + current.table_name);

        }


    } catch (ex) {
        var message = ex.message;
    }

 
    function sendAttachements(sourcetable, sourceid, targetid) {
    gs.log("4. attachment function call " + sourcetable + "  " + sourceid + "  " + targetid);
	gs.sleep(2000);

    var gr = new GlideRecord('sys_attachment');
    gs.log("4.1 Querying attachments for table: " + sourcetable + ", sys_id: " + sourceid);
    gr.addQuery('table_sys_id', sourceid);
    gr.addQuery('table_name', sourcetable);
    gr.query();

    var count = 0;
    while (gr.next()) {
        count++;
        gs.log("6. Attachment file name: " + gr.file_name);
        gs.log("7. Attachment sys_id: " + gr.sys_id);

        var ar = new sn_ws.RESTMessageV2();
        ar.setHttpMethod("POST");
        ar.setEndpoint(targetinstance);
        ar.setBasicAuth(user, password);

        ar.setRequestHeader("Accept", "application/json");

        ar.setQueryParameter("table_name", "incident");
        ar.setQueryParameter("table_sys_id", targetid);
        ar.setQueryParameter("file_name", gr.file_name);

        ar.setRequestBodyFromAttachment(gr.sys_id);

        var respon = ar.execute();
        gs.log("9. Attachment upload status: " + respon.getStatusCode());
        gs.log("10. Attachment upload error: " + respon.getErrorMessage());
        gs.log("11. Attachment upload response: " + respon.getBody());
    }

    gs.log("5. Attachment record count: " + count);
}




})(current, previous);

 "sendAttachements" function not working .

 

Please let me know where I am making the mistake.

 

Thanks

Pradip 

11 REPLIES 11

Hi @pradippaul ,

 

Did you try changing the URL?

 

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya

Hi @Chaitanya ILCR ,

Yes, I did try. still not working.