- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-25-2014 02:31 PM
I have a requirement to auto-create catalog request through email inbound action, my approach is to use the Cart API(any better solution?) in inbound action script, I set up the inbound on sc_req_item table but I am not doing a current.insert() otherwise it will double submit the request(as the order is already placed through Cart API), things working fine but one problem I don't find a way to attach the original inbound email to the Activity field, any idea?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-27-2014 03:56 AM
Here are some ideas:
Option 1: Add Message to Comments
Inbound Action: Create Requested Item
Table: sc_req_item
Condition: <your condition here>
Script:
createRequest();
function createRequest() {
var cart = new Cart();
// add in cart
var item = cart.addItem('8c2a069c242cb800839dec45b40a7496');
// set requested for
cart.setVariable(item, 'requested_for', '5136503cc611227c0183e96598c4f706');
cart.setVariable(item, 'request_short_description', email.subject.toString());
cart.setVariable(item, 'request_description', email.body_html);
cart.setVariable(item, 'request_type', 'others');
// set application
cart.setVariable(item, 'application', '3243d574bd05300071578913764fb117');
// set assignment group
cart.setVariable(item, 'assignment_group', '4769d53099266800d7ea6843423a4c2b');
cart.setVariable(item, 'priority', 'PR3');
var cartmsg = "received from: " + email.origemail + "\n\n" + email.body_text;
cart.setVariable(item,'comments',cartmsg);
var rc = cart.placeOrder();
}
Option 2: Generate without Cart API
Inbound Action: Create Requested Item
Table: sc_req_item
Condition: <your condition here>
Script:
createRequest();
function createRequest() {
//Create Request
var grRequest = new GlideRecord ("sc_request");
grRequest.initialize();
grRequest.requested_for = '5136503cc611227c0183e96598c4f706';
grRequest.short_description = email.subject.toString();
grRequest.description = "received from: " + email.origemail + "\n\n" + email.body_text;
var requestSysId = grRequest.insert();
//Create Request Item
current.requested_for = '5136503cc611227c0183e96598c4f706';
current.short_description = email.subject.toString();
current.description = "received from: " + email.origemail + "\n\n" + email.body_text;
current.cat_item = '8c2a069c242cb800839dec45b40a7496';
current.parent = requestSysId;
current.request = requestSysId;
current.request_type = 'others';
current.application= '3243d574bd05300071578913764fb117';
current.assignment_group='4769d53099266800d7ea6843423a4c2b';
current.priority= 'PR3';
current.insert();
}
I tested Option 2 and it did work for me. I used a different Catalog Item (Dev Laptop), because I didn't have your item in my catalog, but most everything else worked the same.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-14-2015 04:21 PM
Did you get an answer?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-23-2015 11:47 AM
hey Bill..
I am assuming you had the same problem as well. Did you get an answer for the workflow issue?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-23-2015 11:47 AM
Hey,
Were you able to make the workflow work?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-12-2015 02:28 AM
HI james,
Can You help me on this script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-06-2020 09:06 AM
Hello
(i) I created a catalog item with view variables.
(ii) created a workflow to generate a task, and to set the assignment group value.
(iii) Wrote an inbound action :
Name : Create request
Target Table: sc_req_item
active : check
condition: subject starts with [abc]
actions: script:
var TECHNICAL_USER = 'd64be78cdbee1c50c6ea7cde3b96191c'; //
createRequest();
function createRequest() {
var cart = new Cart();
var item = cart.addItem('003d54d0dba25c50c6ea7cde3b9619f3');
cart.setVariable(item, 'request_description', email.body_html);
cart.setVariable(item, 'requested_by', TECHNICAL_USER);
cart.setVariable(item, 'requested_for', TECHNICAL_USER);
cart.setVariable(item, 'request_type', 'new');
var indexOfAdditionalInformation = email.body_text.indexOf("comments:");
var indexOfLanguage = email.body_text.indexOf("language:");
var add_inf = email.body_text.substring(indexOfAdditionalInformation + "comments:".length,indexOfLanguage);
cart.setVariable(item, 'comments', add_inf.trim());
var rc = cart.placeOrder();
}
})(current, event, email, logger, classifier);
(iv) I sent an email with subject [abc] to ServiceNow
(v) It created an RITM
(vi) Also an incident is created, when I checked the condition in create incident inbound action it is written as below:
(email.direct.toString().toLowerCase().indexOf(gs.getProperty('glide.email.user')) > -1 || email.direct.toString().toLowerCase().indexOf(gs.getProperty('snow.email.user')) > -1) && (new inboundEmailAction()). ignoreEmailAlerts(email)
what do I need to do so that it only creates an RITM and not an Incident.
Also how will the reply emails for additional comments work?
Thanks!