Close Inc via email

Stergios Stergi
Mega Guru

Hello!

 

We are trying to implement a system where we close an incident via email.

 

We want to read the subject that will contain the INC number at the beginning.

 

The script is,

 

(function runAction(/*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier) {


var emailSub = email.subject; // read the email Subject
emailSub = emailSub.substring(0,10);

var grTask = new GlideRecord('incident');  // Table = incident
grTask.addQuery('number', emailSub); // get the Inc Record
grTask.addQuery('active', true);       // check if incident is active
grTask.query();

// if(grTask.next()){
grTask.state = 7 ; // 7 is choice code for close completed in sys_choice table for incident.
grTask.update();
// }



})(current, event, email, logger, classifier);
 
In the When to Run tab of the inbound action I have a couple of rules that filter out the incoming email that seem to work.
But it doesnt work.
 
Can someone take a look into the script?
 
Thank you so much in advance!
1 ACCEPTED SOLUTION

@Stergios Stergi 

 

Can you update the code as below and let me know please

 

grTask.state = 7;

grTask.close_code = "Workaround provided";

grTask.close_notes = "Closed from inbound action";

grTask.update();

 

If my answer solved your issue, please mark my answer as  Correct & 👍Helpful based on the Impact.

View solution in original post

16 REPLIES 16

@Stergios Stergi 

 

It is required there
Without grTask.next()), It will not update the record.

I redid the script and its like this:

 

(function runAction( /*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier) {

// Extract the first 10 characters from the email subject
var emailSub = email.subject;
emailSub = emailSub.substring(0, 10);

// Create a new GlideRecord for the 'incident' table
var grTask = new GlideRecord('incident');

// Add queries to filter records with the specified incident number and active status
grTask.addQuery('number', emailSub);
grTask.addQuery('active', true);

// Execute the query
grTask.query();

// Check if a record was found
if (grTask.next()) {
// Update the state of the incident to 'close completed' (7)
grTask.state = 7;
grTask.update();
}

})(current, event, email, logger, classifier);

 

Still it doesnt work.

@Stergios Stergi 

 

Have it resolved your actual issue if So please mark the solution as Accepted, if not lets discuss it further!

 

Thanks

@Prince Arora  sadly no, Still it doesnt work.

@Stergios Stergi 

 

Can you please print the

var emailSub = email.subject;

gs.info("emailSub " +emailSub);

 

And trace it in system logs