- 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-25-2019 09:25 AM
Hi Meenal,
Change the place where you glided to the incident table as the script mentioned below,
var inc = new Gliderecord("incident");
inc.addEncodedQuery("active=true^state!=4^ORstate!=5^cmdb_ci="+cmdbci.sys_id);
inc.query();
I believe now your issue should be resolved.
Kindly mark my answer correct/helpful if I was able to help you,
Regards,
Alok

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-30-2019 04:56 AM
Hi,
Remove current.insert() from last line
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-30-2019 05:01 AM
Hi Trupti,
I tried, but if I remove this then I am not able to create a new incident.
Thank you,
Meenal

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-30-2019 05:07 AM
have you checked stop processing check box?
or did you checked in email logs is there other Inbound action script is creating double incident?