Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

Need to set the assignment group of incident based on the subject line

Mansi roy
Tera Contributor

Hello,

 

Could anyone please help me on this as i need to  set the assignment group based on the subject line of incident.

 

I have created one table and there i stored subject and assignment group.I have created the inbound action for 'Create Incident'.

 

Below is the code.

 

current.caller_id = gs.getUserID();
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
current.short_description = email.subject;

 

current.category = "Hardware";
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.contact_type = "email";

 

if (email.body.assign != undefined)
   current.assigned_to = email.body.assign;

 

if (email.importance != undefined) {
   if (email.importance.toLowerCase() == "high") {
        current.impact = 1;
        current.urgency = 1;
   }
}

 

   var subject = email.subject.toLowerCase(); 
var mapping = new GlideRecord('u_subject_group_mapping'); 
 mapping.addQuery('u_keyword', 'LIKE', subject);
mapping.query(); 
var assignmentGroup = null;

 

if (mapping.next()) {

 

assignmentGroup = mapping.u_assignment_group; 

 

if (assignmentGroup) {

 

var incident = new GlideRecord('incident');

 

if (incident.get(email.reference)) {

 

incident.assignment_group = assignmentGroup;

 

incident.update();
}
 else {

 

gs.info ('No assignment group found for the subject: ' + subject);
}
}
current.insert();
 
 
The incident is getting created but the assignment group is not getting set.Can anyone please me on this why the assignment group is not getting set.
 
Regards,
Priti
1 ACCEPTED SOLUTION

Hi @Mansi roy 

Try bellow refined script once and test: 

// Set the caller and basic details from the email
current.caller_id = gs.getUserID();
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
current.short_description = email.subject;

// Set incident state, notify and contact type
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.contact_type = "email";

// Assign incident if specified in the email body
if (email.body.assign != undefined) {
    current.assigned_to = email.body.assign;
}

// Set priority based on email importance
if (email.importance != undefined) {
    current.priority = 1;
}

// Normalize the subject for searching
var subject = email.subject.toLowerCase();

// Query the subject group mapping table
var mapping = new GlideRecord('u_subject_group_mapping');
mapping.addQuery('u_subject', subject);
mapping.query();

if (mapping.next()) {
    // If a mapping is found, set the assignment group
    var assignmentGroup = mapping.u_assignment_group;
    if (assignmentGroup) {
        current.assignment_group = assignmentGroup;
    } else {
        gs.info('No assignment group found for the subject: ' + subject);
    }
} else {
    gs.info('No mapping found for the subject: ' + subject);
}

// Insert the new incident record
current.insert();

Also keep consider the point mentioned by Ankur, here I am assuming 'assignment group' field is reference field in your custom table.

I hope my answer helps you to resolve your issue, if yes mark my answer correct & helpful.

thank you

rajesh. 

 

View solution in original post

22 REPLIES 22

@Mark Manders ,Could you please help me with the code as i am getiing confised how to achieve.It will be very helpful.

var subject = email.subject.toLowerCase(); // validate that you only have lower case in your custom table!!!
var mapping = new GlideRecord('u_subject_group_mapping');
mapping.addQuery('u_keyword', subject);
mapping.query();
if (mapping.next()) {
    var assignmentGroup = new GlideRecord('sys_user_group');
    assignmentGroup.addQuery('name',mapping.u_assignment_group);
    assignmentGroup.query();
    if (assignmentGroup) {
        //current.assignment_group = assignmentGroup;
        current.assignment_group = assignmentGroup.getUniqueValue();
    } else {
        gs.info('No assignment group found for the subject: ' + subject);
    }
} else {
    gs.info('No mapping found for the subject: ' + subject);
}

Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark

@Mark Manders,

 

After i updated this code now  incident is not getting created. Email is getting recieved. Could you please check the below code once.

current.caller_id = gs.getUserID();
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
current.short_description = email.subject;

current.category = "Hardware";
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.contact_type = "email";

if (email.body.assign != undefined)
   current.assigned_to = email.body.assign;

if (email.importance != undefined) {
    current.priority =1;
   //if (email.importance.toLowerCase() == "high") {
        //current.impact = 1;
        //current.urgency = 1;
        current.priority =1;
   //}
}
var mapping = new GlideRecord('u_subject_group_mapping');
mapping.addQuery('u_keyword', subject);
mapping.query();
if (mapping.next()) {
    var assignmentGroup = new GlideRecord('sys_user_group');
    assignmentGroup.addQuery('name',mapping.u_assignment_group);
    assignmentGroup.query();
    if (assignmentGroup) {
        //current.assignment_group = assignmentGroup;
        current.assignment_group = assignmentGroup.getUniqueValue();
    } else {
        gs.info('No assignment group found for the subject: ' + subject);
    }
} else {
    gs.info('No mapping found for the subject: ' + subject);
}
current.insert();
 

Rajesh Chopade1
Mega Sage

hi @Mansi roy 

I hope you have stored 'subject' of mails in lower case in your custom table.

Also please confirm, are you getting 'assignmentGroup' value here??

  var subject = email.subject.toLowerCase(); 
var mapping = new GlideRecord('u_subject_group_mapping'); 
 mapping.addQuery('u_keyword', 'LIKE', subject);
mapping.query(); 
var assignmentGroup = null;

if (mapping.next()) {

assignmentGroup = mapping.u_assignment_group;  // ARE YOU GETTING 'assignmentGroup' VALUE HERE??

} 

if yes(you getting value of assignmentGroup) then you need not to glide to 'incident' table, just add value of assignmentGroup to your incident assignment group as bellow:

current.assignmentGroup = assignmentGroup;

if (assignmentGroup) 
var incident = new GlideRecord('incident');                   // AVOID THIS GLIDE RECORD
if (incident.get(email.reference)) {.                                  // AVOID THIS
incident.assignment_group = assignmentGroup;          // REPLACE HERE - "current.assignment_group = assignmentGroup"
incident.update();                                                               // AVOID THIS
}
 else {
gs.info ('No assignment group found for the subject: ' + subject);
}
}

 

i hope my answer helps you to resolve your issue, if yes mark my answer helpful and correct.

THANK YOU

rajesh.

 

 

Hello Rajesh,

 

I am not getting value here.

 

anything wrong i did in the script. Please let me know.

 

assignmentGroup = mapping.u_assignment_group;