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.

How to copy attachments from RITM to taks

RudhraKAM
Tera Guru

Hello

i would like to copy when the attachment is attached to RITM it should copy over to associated Task as well , i searched in the community , some have i found that business rule , but the issue i am facing here is 

When i mark the business rule to run on insert , its not performing any action  meaning if i attach an image and if i open the associated task cannot see the image.

and when i change the business rule from insert to update , its acting even strange , when i attach any attachment on RITM and save it and open the task , i cannot see any attachment and if i save the task then i can see the attachement and  if i save it again its duplicating the attachement . Am i missing any thing here , can some one help me with this please,

find_real_file.png

 

find_real_file.png

 

1 ACCEPTED SOLUTION

Let's try below code on sys_attachment table with after insert BR, I have tested and it works fine. 

(function executeRule(current, previous /*null when async*/) {
	var sctask = new GlideRecord('sc_task');
	sctask.addQuery('request_item', current.table_sys_id);
	sctask.addQuery('request_item.cat_item', 'PASS THE SYS_ID OF CATALOG ITEM HERE');
	sctask.query();
	if(sctask.next()){
		var deleteTaskAttachment = new GlideRecord('sys_attachment');
		deleteTaskAttachment.addQuery('table_sys_id', sctask.sys_id.toString());
		deleteTaskAttachment.addQuery('table_name', 'sc_task');
		deleteTaskAttachment.deleteMultiple();
		
		var ritmAttachment = new GlideRecord('sys_attachment');
		ritmAttachment.addQuery('table_sys_id', sctask.request_item);
		ritmAttachment.query();
		if(ritmAttachment.next())
			GlideSysAttachment.copy('sc_req_item', ritmAttachment.table_sys_id, 'sc_task', sctask.sys_id); 
	}
})(current, previous);

View solution in original post

22 REPLIES 22

but i want that for only one catalog item 

Ashutosh Munot1
Kilo Patron
Kilo Patron

Look at this:

https://community.servicenow.com/community?id=community_question&sys_id=b55d83e9db9cdbc01dcaf3231f9619ba

 

Ashutosh

apoorva_tewari
Mega Guru

I think you can write async business rule on sc_req_item table instead of writing on sc_task.

 

GlideSysAttachment.copy('sourcetable', 'sys_id', 'destinationtable', 'sys_id');