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
Mega Patron

This looks like an AI generated script (looking at the comments in the script). What is exactly happening? What is the subject of your email? And what is the setup of your custom table? Is it a string field that you are validating against the subject of the email? If so: is it all in lower case? You are validating a lower case string (subject) to something else, so that has to be exactly the same.

If everything should be found through this, why are you setting 'incident.assignment_group' while everything else is being set as 'current.field = '.
Are you updating the incident through the inbound email, or are you setting it? It's a weird way of configuring, but if it's from AI, I can understand, because it probably didn't know it was applying this to the existing OOB inbound action.


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

Hello @Mark Manders ,

 

Thanks for your reply. Here i am not using AI.

 

I have crated one table and two column. In one column i am storing subject of the email and another column i am storing assignment group.

 

From inbound action i am trying to set the assignment based on the subject. The script written in inbound action should glide record the table and verify the subject of the email. Based on the subject the assignment group should set as the incident assignment group. But the above script is not setting the assignment group.

And the answers to my questions? Did you check on case sensitivity? You are setting your subject to lower case, so your table should also have the subjects to lower case. 

You are also doing an 'incident.assignment_group =' instead of a 'current.assignment_group ='. Why is that?


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

@Mark Manders,

 

As i am doing  glide record of  the incident  table  so wrte like below.Please let me know where i need to change and what i need to change.

var incident = new GlideRecord('incident');

 

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

 

incident.assignment_group = assignmentGroup;

 

incident.update();