- 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-30-2019 05:24 AM
So thats the issue.
It looks like the glide record of cmdb_ci is not returning any rows. which means it is not finding any CI with the value of op.
So can you check the output of this line
gs.log('meen gharat'+op);
and then check if that value contains in cmdb_ci table. Go to cmdb_ci.list and filter by name with the value of op and see if you are getting any rows there.
Kindly mark my comment(s) as helpful if they are helping in debugging the issue.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-30-2019 07:19 AM
Still the duplicate incident is getting created.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-30-2019 07:42 AM
Hello Meenal,
Kindly read the above comment and do the same and let me know the output.
If possible, share your instance credentials and i will check and fix it for you.
Also, kindly mark the comment(s) as helfpul if it is helping to debug the issue.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-30-2019 07:52 AM
Now the CI which is in CI table is populated on CI field.
when I send and another email with same subject new incident is being created.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-30-2019 07:58 AM
kindly share the latest code that you have.
I have given you updated code which will not create new incident.
