Copy Attachments from one record to another

Vikas Ahmed
Kilo Contributor

Hi All,

would really appreciate you help.

I have created a UI Action which will create an "incident" from another table.

I want to copy all attachments over and have found some script which should allow me to do it but it does not seem to be working.

the script i copied from servicenow is below

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

after my changes it appears like the below

GlideSysAttachment.copy('incident','8dce5f603733310099322b2943990e3c','u_incident_rt','0f425d0e37cdb2003332261953990e05');

When applying it to the UI Action, it looks like the below.

//create internal it incident and assign to group "All-staff"
var irt = new GlideRecord("u_incident_rt");
irt.short_description = current.short_description;
irt.description = current.number + '\n' + '\n' + current.description;
irt.priority = current.priority;
irt.work_notes = current.work_notes;
irt.u_caller_id = current.caller_id;
irt.company = current.company;
irt.setValue ('assignment_group', 'b3808e9337120200021e5ca543990e99');
irt.work_notes = current.work_notes.getJournalEntry(-1);
irt.comments = current.comments.getJournalEntry(-1);
GlideSysAttachment.copy('incident','8dce5f603733310099322b2943990e3c','u_incident_rt','0f425d0e37cdb2003332261953990e05');

var sysID = irt.insert();

I look forward to receiving some guidance and thanks in advance

Kind regards

 

1 ACCEPTED SOLUTION

Ajaykumar1
Tera Guru

Hi Vikas,

Try below line in your code after var sysID = irt.insert();

 

GlideSysAttachment.copy('incident', current.sys_id, 'u_incident_rt', sysID);
var mySysID = current.update();
gs.addInfoMessage("Incident created");
action.setRedirectURL(incident);
action.setReturnURL(current);

// If you are copying attachment from the record in u_incident_rt table then the source table should be u_incident_rt . It should look //like below line

var gr = new GlideRecord("incident");
gr.short_description = "Demo";
// Set other field values

var sysID = gr.insert();
GlideSysAttachment.copy('u_incident_rt', current.sys_id, 'incident', sysID);
var mySysID = current.update();
gs.addInfoMessage("Incident " + gr.number + " created for this u_incident_rt");
action.setRedirectURL(incident);
action.setReturnURL(current);

 

Mark If Correct/Helpful.

Regards,
Ajay

 

View solution in original post

11 REPLIES 11

Slawek_Radziewi
Kilo Sage

You can use glide function.

GlideSysAttachment.copy('from table', current.sys_id, 'to table', dmnd.sys_id);

Hi Slawek,

Thanks for the quick response.

I have tried the below but it still does not work

 

GlideSysAttachment.copy('incident', current.sys_id, 'u_incident_rt', irt.sys_id);

 

irt is the Gliderecord, is it in the right place of the script?

Not applicable

Hi Vikas,

You need to insert the record before copying the attachment.

Add var sysID = irt.insert(); before GlideSysAttachment.copy('incident','8dce5f603733310099322b2943990e3c','u_incident_rt','0f425d0e37cdb2003332261953990e05');

Also, dont add the hardcoded sysid

Thanks,

Manan Raval

Hi Manan,

I added it as seen below.

 

var sysID = irt.insert();

var sysID = irt.insert(); GlideSysAttachment.copy('incident','sys_id','u_incident_rt','sys_id');

//current.rfc = sysID;
var mySysID = current.update();

gs.addInfoMessage("Internal IT Ticket " + irt.number + " Created");
action.setRedirectURL(irt);
action.setReturnURL(current);

{

 

Kind regards