- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-25-2019 08:42 AM
Hi,
Inbound email action to avoid duplicate incident.
If the incident is created using inbound emai action with the same CI name it's state is Resolved/closed it should create new incident.
if the state is open/active it should not create new incident rather it should update the same incident
I have tried writting the below code,kindly assist.
current.caller_id = gs.getUserID();
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
//current.short_description = email.subject;
current.short_description = email.body.short_description;
//current.category = "inquiry";
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.contact_type = "email";
if(email.body.category!= undefined)
current.category = email.body.category;
//gs.log('email'+ email.direct.toString());
//if(email.body.subcategory!=undefined)
current.subcategory=email.body.subcategory;
if (email.body.assign != undefined)
current.assigned_to.setDisplayValue(email.body.assign_to);
// if (email.subject.toLowerCase().indexOf("configuration item") >= 0
// && email.subject.toLowerCase().indexOf("device ip address") > 0
// && email.subject.toLowerCase().indexOf("severity: critical") > 0 )
if (email.subject.indexOf("configuration item") >= 0
&& email.subject.indexOf("device ip address") > 0
&& email.subject.indexOf("severity: critical") > 0 ) {
var subjectSplit = email.subject.split('item:');
var theName = subjectSplit[1].split(',');
var res = theName[0];
gs.log('meen gharat 1'+ res);
var op = res.replace(/ /g,'');
gs.log('meen gharat'+op);
var cmdbci = new GlideRecord("cmdb_ci");
cmdbci.addQuery('name',op);
cmdbci.query();
gs.log('row count '+ cmdbci.getRowCount());
if(cmdbci.next())
{
gs.log('ci getting' +cmdbci.sys_id);
current.cmdb_ci = cmdbci.sys_id;
}
if(!cmdbci.next())
{
current.cmdb_ci.setDisplayValue('Dummy');
}
if(cmdbci.next())
{
var inc = new Gliderecord("incident");
inc.addQuery('active',true);
inc.addQuery('state','!=',4);
inc.addQuery('state','!=', 5);
inc.addQuery('cmdb_ci','=',cmdbci.sys_id);
inc.query();
if(!inc.next())
{
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
current.short_description = email.body.short_description;
current.category = email.body.category;
current.subcategory=email.body.subcategory;
//current.cmdb_ci.setDisplayValue(cmdbci.sys_id);
current.insert();
}
}
else
{
gs.addErrorMessage('Incident Already Exist');
}
}
current.insert();
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-06-2019 04:03 AM
Hi all
I have used below code and it works fine for me.
var eSubject = email.subject;
var grInc = new GlideRecord('incident');
var grEmail = new GlideRecord('sys_email');
var incUpdated = false;
grEmail.addEncodedQuery('sys_created_onONToday@javascript:gs.daysAgoStart(0)@javascript:gs.daysAgoEnd(0)^subject=' + eSubject);
grEmail.query();
if(grEmail.getRowCount != 0){
while(grEmail.next() && incUpdated != true){
grInc.get(grEmail.instance);
if(grInc.active == true && grInc.state < 6){ //is the existing incident active and not in closed or resolved state
incUpdated = true;
gs.log('Incident already exists');
grInc.work_notes = '\nFrom: ' + email.from + '\nTo: ' + email.to + '\nSubject: ' + email.subject + '\n\n' + email.body_text;
grInc.update();
}
}
}
//if(!gr.next());
if(incUpdated == false)
{
current.caller_id = gs.getUserID();
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
//current.short_description = email.subject;
current.short_description = email.body.short_description;
//current.category = "inquiry";
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.contact_type = "email";
if(email.body.category!= undefined)
current.category = email.body.category;
//gs.log('email'+ email.direct.toString());
//if(email.body.subcategory!=undefined)
current.subcategory=email.body.subcategory;
if (email.body.assign != undefined)
current.assigned_to.setDisplayValue(email.body.assign_to);
var subjectSplit = email.subject.split('item:');
var theName = subjectSplit[1].split(',');
var res = theName[0];
gs.log('meen gharat 1'+ res);
var op = res.replace(/ /g,'');
gs.log('meen gharat'+op);
var cmdbci = new GlideRecord("cmdb_ci");
cmdbci.addQuery('name',op);
cmdbci.query();
gs.log('row count '+ cmdbci.getRowCount());
if(cmdbci.next())
{
gs.log('ci getting' +cmdbci.sys_id);
current.cmdb_ci = cmdbci.sys_id;
}
//if(!cmdbci.next())
else
{
current.cmdb_ci.setDisplayValue('Dummy');
}
current.insert();
//your code to create an incident
}
})(current, event, email, logger, classifier);
Thank you for relpying my query.
Regards,
Meenal
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-26-2019 03:25 AM
Hi Alok,
Still it is creating a new incident when the state is open.
It should update the same incident.
Regards,
Meenal

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-26-2019 03:28 AM
Hi Meenal,
Can you share your latest script once.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-26-2019 03:37 AM
Please check.
current.caller_id = gs.getUserID();
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
//current.short_description = email.subject;
current.short_description = email.body.short_description;
//current.category = "inquiry";
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.contact_type = "email";
if(email.body.category!= undefined)
current.category = email.body.category;
//gs.log('email'+ email.direct.toString());
//if(email.body.subcategory!=undefined)
current.subcategory=email.body.subcategory;
if (email.body.assign != undefined)
current.assigned_to.setDisplayValue(email.body.assign_to);
// if (email.subject.toLowerCase().indexOf("configuration item") >= 0
// && email.subject.toLowerCase().indexOf("device ip address") > 0
// && email.subject.toLowerCase().indexOf("severity: critical") > 0 )
if (email.subject.indexOf("configuration item") >= 0
&& email.subject.indexOf("device ip address") > 0
&& email.subject.indexOf("severity: critical") > 0 ) {
var subjectSplit = email.subject.split('item:');
var theName = subjectSplit[1].split(',');
var res = theName[0];
gs.log('meen gharat 1'+ res);
var op = res.replace(/ /g,'');
gs.log('meen gharat'+op);
var cmdbci = new GlideRecord("cmdb_ci");
cmdbci.addQuery('name',op);
cmdbci.query();
gs.log('row count '+ cmdbci.getRowCount());
if(cmdbci.next())
{
gs.log('ci getting' +cmdbci.sys_id);
current.cmdb_ci = cmdbci.sys_id;
}
if(!cmdbci.next())
{
current.cmdb_ci.setDisplayValue('Dummy');
}
if(cmdbci.next())
{
var inc = new Gliderecord("incident");
// inc.addQuery('active',true);
// inc. addQuery('state','!=',4);
// inc.addQuery('state','!=', 5);
// inc.addQuery('cmdb_ci','=',cmdbci.sys_id);
inc.addEncodedQuery("active=true^state!=4^ORstate!=5^cmdb_ci="+cmdbci.sys_id);
inc.query();
if(!inc.next())
{
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
current.short_description = email.body.short_description;
current.category = email.body.category;
current.subcategory=email.body.subcategory;
current.cmdb_ci.setDisplayValue(cmdbci.sys_id);
current.insert();
}
else
{
gs.addErrorMessage('Incident Already Exist');
inc.update();
}
}
}
// if (email.importance != undefined) {
// if (email.importance.toLowerCase() == "high")
// current.priority = 1;
// }
//if (email.body.priority != undefined)
//current.priority = email.body.priority;
// current.insert();
current.insert();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-26-2019 07:41 AM
Hi ashifnoor,
Any suggestions on the above scripts would be helpful.
Kind regards,
Meenal

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-26-2019 11:39 AM
Try this code. And if it does not work, let me know till where will the logs be generated?
current.caller_id = gs.getUserID();
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
current.short_description = email.body.short_description;
//current.category = "inquiry";
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.contact_type = "email";
if(email.body.category!= undefined)
current.category = email.body.category;
if(email.body.subcategory!=undefined)
current.subcategory=email.body.subcategory;
if(email.body.assign != undefined)
current.assigned_to.setDisplayValue(email.body.assign_to);
if (email.subject.indexOf("configuration item") >= 0
&& email.subject.indexOf("device ip address") > 0
&& email.subject.indexOf("severity: critical") > 0 )
{
var subjectSplit = email.subject.split('item:');
var theName = subjectSplit[1].split(',');
var res = theName[0];
gs.log('meen gharat 1'+ res);
var op = res.replace(/ /g,'');
gs.log('meen gharat'+op);
var cmdbci = new GlideRecord("cmdb_ci");
cmdbci.addQuery('name',op);
cmdbci.query();
gs.log('row count '+ cmdbci.getRowCount());
if(cmdbci.next())
{
gs.log('ci getting' +cmdbci.sys_id);
current.cmdb_ci = cmdbci.sys_id;
} else {
current.cmdb_ci.setDisplayValue('Dummy');
}
if(cmdbci.next())
{
var inc = new Gliderecord("incident");
inc.addEncodedQuery("active=true^state!=4^ORstate!=5^cmdb_ci="+cmdbci.sys_id);
inc.query();
if(!inc.next())
{
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
current.short_description = email.body.short_description;
current.category = email.body.category;
current.subcategory=email.body.subcategory;
current.cmdb_ci.setDisplayValue(cmdbci.sys_id);
current.insert();
}
else
{
gs.addErrorMessage('Incident Already Exist');
inc.update();
}
}
}