- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-20-2020 01:27 PM
I have an inbound action that creates a service request. Currently, I have it set to attach the email to the RITM and I also want to include whatever attachments were on the email. See below for the script -- I see that it should happen by default, but that's not the case. What's missing?
createRequest();
function createRequest(){
var cart = new Cart(); //calling the cart API
var gu = gs.getProperty('standards.generic_user'); // sys id generic user
var ds = gs.getProperty('standards.item');
var item = cart.addItem(ds); //sys_id of the catalog item I want to fire
cart.setVariable(item, 'subject', email.subject); //sets catalog variable to the email's subject
cart.setVariable(item, 'emailbody', email.body_text); //sets catalog variable to email's body
var usr = new GlideRecord('sys_user');
usr.addQuery('email', email.from);
usr.query();
if(usr.next()){
//if user is found in user table, set the requested for and opened by to that user
cart.setVariable(item, 'requested_for', usr.sys_id);
}else{
cart.setVariable(item, 'requested_for', gu); //generic user
}
var rc = cart.placeOrder(); //this launches the catalog item, and creates a request object. rc = the request object
updateRITM(rc.sys_id); //call a function immediately to update the ritm. This must be a nested function, otherwise inbound actions get weird.
//also, we're passing the sys_id of the request so we know what RITM to grab.
}
function updateRITM(req){
var strEmailContent = email.content_type + "\n" + email.headers + "\n\n\n\n" + email.body_text;
var sa = new GlideSysAttachment();
var ritm = new GlideRecord('sc_req_item');
ritm.addQuery('request', req); //req is what we passed from the previous function. the sys_id of the request.
ritm.query();
while (ritm.next()){
ritm.setValue('requested_for', email.from);
ritm.contact_type="email";
sa.write(ritm, email.subject + ".eml", " application/octet-stream ", strEmailContent);
if (sys_email.hasAttachments()){
gs.log('has attachments');
var att = new GlideRecord("sys_attachment");
att.addEncodedQuery("table_name=sc_req_item^table_sys_id=" + sys_email.getValue("sys_id"));
att.query();
while (att.next()){
att.table_name = "sc_req_item";
att.table_sys_id = ritm.getValue("sys_id");
att.update();
}
}
ritm.update();
}
}
event.state="stop_processing";
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-20-2020 02:06 PM
This GlideSysAttachment.copy('sys_email',current.sys_id,'sc_req_item',ritm); needs to be GlideSysAttachment.copy('sys_email',current.sys_id,'sc_req_item',ritm.sys_id);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-20-2020 01:35 PM
Instead of using a GlideRecord Query to copy the attachment try using GlideSysAttachment. I would also consider putting this in the first function right before you call the update function.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-20-2020 02:00 PM
Didn't work:
function updateRITM(req){
var strEmailContent = email.content_type + "\n" + email.headers + "\n\n\n\n" + email.body_text;
var sa = new GlideSysAttachment();
var ritm = new GlideRecord('sc_req_item');
ritm.addQuery('request', req); //req is what we passed from the previous function. the sys_id of the request.
ritm.query();
while (ritm.next()){
ritm.setValue('requested_for', email.from);
ritm.contact_type="email";
sa.write(ritm, email.subject + ".eml", " application/octet-stream ", strEmailContent);
GlideSysAttachment.copy('sys_email',current.sys_id,'sc_req_item',ritm);
ritm.update();
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-20-2020 02:06 PM
This GlideSysAttachment.copy('sys_email',current.sys_id,'sc_req_item',ritm); needs to be GlideSysAttachment.copy('sys_email',current.sys_id,'sc_req_item',ritm.sys_id);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-21-2020 06:21 AM
Brian - I made that tweak and updated the current.sys_id to sys_email.sys_id and it's working now. Thank you so much!