- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-03-2016 07:56 AM
Hi,
I would like an attachment (word document) to be attached to each new record (in my request table) by default, as soon as the record gets created. How would I do this?
Right now I have to drag-and-drop the attachment onto each record.
Thanks!
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-03-2016 09:36 AM
Hi,
You can upload attachment in sys_attachment table and then create a before business rule on incident table to copy attachment from sys_attachment table to incident table with the help of GlideSysAttachment.copy
More info here Copy Attachments from Record to Record - ServiceNow Wiki
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-11-2017 11:22 AM
Hi All,
I had a requirement to get this done on a catalog item based on the selection in one of the variables. That being the case I did this in the workflow, but the same logic should work in a BR as well if you want to add one or more attachments when a record gets inserted into sc_request or any other table.
Cameron was on the right track about inserting into sys_attachment_doc, but depending on the size of the attachment, you may have to insert multiple records. This is where the actual attachment data is stored.
Note: size_bites as seen in Abhinay's script above has changed to size_bytes
if (current.variables.request_type == 'transfer_phone') {
/* I attached the needed attachment to a record in the rm_enhancement table. You can store it anywhere, but it's important to use the sys_id from sys_attachment to grab it. If you were to store it in sc_request or sc_req_item, there will be multiple with the same name so you don't want to query using the file name. You'll see the importance of this when you get to sys_attachment_doc */
var attachmentGR= new GlideRecord('sys_attachment');
attachmentGR.addQuery('sys_id','359651a34f728300c09001b28110c7f2');
attachmentGR.query();
if(attachmentGR.next()) {
var newGR = new GlideRecord('sys_attachment');
newGR.initialize();
newGR.compressed = attachmentGR.compressed;
newGR.content_type = attachmentGR.content_type;
newGR.size_bytes = attachmentGR.size_bytes;
newGR.size_compressed = attachmentGR.size_compressed;
newGR.file_name = attachmentGR.file_name;
newGR.table_name = current.getTableName();
newGR.table_sys_id = current.getValue('sys_id');
var newID = newGR.insert();
var Doc = new GlideRecord('sys_attachment_doc');
Doc.addQuery('sys_attachment', '359651a34f728300c09001b28110c7f2'); // note the same sys_id as used above. could have used attachmentGR.sys_id
Doc.query();
var newDoc = new GlideRecord('sys_attachment_doc');
while (Doc.next()) {
newDoc.initialize();
newDoc.sys_attachment = newID;
newDoc.length = Doc.length;
newDoc.data = Doc.data;
newDoc.position = Doc.position;
newDoc.insert();
}
}
}
Please mark helpful or correct if you find it so...
Jon
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-13-2018 06:17 AM
Hi Abhinay,
I had the similar requirement but the table is HR case table instead of Request Table. I used your script and I am able to add the attachment to the Hr case but the attachment does not open. It gives error message "Failed to load PDF Document".
Any idea why I am unable to open the file. If i add the same attachment manually, it gets open.
Can you please suggest?
Thanks in advance.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-13-2018 06:58 AM
Think about sys_attachment as a pointer. It contains the name of the attachment and the attachment will show up on the ticket, but without getting the data from sys_attachment_doc there's nothing in the attachment. This is why you're seeing errors when trying to open it
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-14-2018 04:22 AM
I was able to achieve this by querying sys_attachment_doc. the script mentioned above helped me.
Thanks.