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?

Manan Raval
Giga Expert

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