Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

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