Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

ServiceNow created 2 records via inbound actions with same record number but different sys_ids

Not applicable

I created a inbound actions which should create new record in ServiceNow based on certain conditions. The " When to Run " type is selected as "None". So use case is like if someone sends a reply/fwd email as well to SN , then also it should create new record.

Issue is when I'm sending a new email,  its working fine. But If I'm sending reply on the same email its creating new record with different sys_id however the record number remains the same. So as per my customizations it should create new record always (If Record number i not mentioned in email subject line) with unique record number.

To be noted there is a time gap between both the emails received in SNOW.

Example : For both cases CASE000xxxx11 is created with 2 different sys_ids.

 

Need inputs if there is gap at my end or need to take help of ServiceNow.

11 REPLIES 11

Mike_R
Kilo Patron

Are you using both a field action and script? If so that could be causing the duplicates. See https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0825579

Not applicable

Hi Mike, 

No I'm using scripts only.

Can you please post your script here

Not applicable

(function runAction( /*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier) {
//Retrieves user account.
try {
var contactDetails;
// Get Assignmentment group based on support mailbox
var groupInfo = this.getAssignmentGroup(email.direct);
var assignmentGroupObj = new GlideRecord('sys_user_group');
assignmentGroupObj.get('name', groupInfo);

//Check for valid user details
if (sys_email.user_id) {
contactDetails = this.checkUser(sys_email.user_id.email.toString(), groupInfo);
if (contactDetails) {
var userAccount = contactDetails.account;
var contactSysId = contactDetails.sysId;
}
}

//recognised user
if (contactDetails && sys_email.user_id) {
current.account = userAccount;
current.contact = contactSysId;
current.state = 10;
current.description = "Email From: " + sys_email.user_id.email + "\n\n" + "Email Body: " + sys_email.body_text;
current.comments = "Email From: " + sys_email.user_id.email + "\n\n" + "Email Body: " + sys_email.body_text;
//unrecognised valid user
} else if (sys_email.user_id) {
current.state = 1;
current.comments = "Email From: " + sys_email.user_id.email + "\n\n" + "Email Body: " + sys_email.body_text;
current.description = "Email From: " + sys_email.user_id.email + "\n\n" + "Email Body: " + sys_email.body_text;
} else {
//unrecognised user
current.state = 1;
current.comments = "Email From: " + sys_email.user + "\n\n" + "Email Body: " + sys_email.body_text;
current.description = "Email From: " + sys_email.user + "\n\n" + "Email Body: " + sys_email.body_text;
}
current.assignment_group = assignmentGroupObj.sys_id;
current.short_description = sys_email.subject;
current.priority = 3;
current.category = 1;
current.contact_type = 'email';
current.correlation_display = "xxx:" + sys_email.direct;
current.insert();
} catch (error) {
gs.error("email: " + error);
}

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

function checkUser(email, assignmentGroup) {
var result = '';
var contactObj = new GlideRecord('customer_contact');
contactObj.addQuery('email', email);
contactObj.query();
while (contactObj.next()) {
var contactAccount = contactObj.account.sys_id.toString();
var osp = new global.xxxOSPUtils().getOSPNameFromCustomer(contactAccount);
if (osp == assignmentGroup) {
var contactDetails = {};
contactDetails.account = contactAccount;
contactDetails.sysId = contactObj.sys_id.toString();
result = contactDetails;
break;
}
}
return result;
}

function getAssignmentGroup(mailBoxId) {
var mappingObj = new GlideRecord('x_teeag_payload_pr_integration_column_data_mapping');
mappingObj.addQuery('integration_name', 'xxxx Email');
mappingObj.addQuery('source', 'xxxx');
mappingObj.addQuery('source_value', mailBoxId);
mappingObj.query();
if (mappingObj.next()) {
return mappingObj.target_value.toString();
}
}