Business Rule Inserting 2 Records - Only want to Insert 1 Record

Carter1
Giga Guru

Hi all,

I am writing an after insert/update business rule on a table (u_example) that is creating a record on another table (u_budget_key). This business rule is running only when my field, Budget Key is empty.

find_real_file.png

 

(function executeRule(current, previous /*null when async*/) {

var key = new GlideRecord('u_budget_key');
	key.initialize();
	key.u_gl = current.u_gl;
	key.u_vendor = current.u_vendor;
	key.u_cc = current.u_cc;
	key.insert();


})(current, previous);

The script is working, but instead of only inserting one record, there are 2 duplicate records added to the other table. Can anyone help me diagnose why?

1 ACCEPTED SOLUTION

Great to know it worked.

Also, what I meant was condition not necessarily has to be the same check if there is something that runs on update & when it runs for the record which it runs for has Budget Key empty or not.

In addition you could also check below once that runs after insert/update

(function executeRule(current, previous /*null when async*/) {

var key = new GlideRecord('u_budget_key');
key.addQuery('u_gl',current.u_gl);
key.addQuery('u_vendor',current.u_vendor);
key.addQuery('u_cc',current.u_cc);
key.query();
if(!key.next()) //if not then insert
{
	key.initialize();
	key.u_gl = current.u_gl;
	key.u_vendor = current.u_vendor;
	key.u_cc = current.u_cc;
	key.insert();
}

})(current, previous);

View solution in original post

21 REPLIES 21

MrMuhammad
Giga Sage

try adding additional AND condition Budget key [Changes] 

If [Changes] is not available in the condition builder. try below line in the condition field of advance section

current.<budget_key_field_name>.changes();
Regards,
Muhammad

Hi Muhammad,

I only want this business rule to run when budget key is empty. 

Thanks anyways!

Can you check what is the value in Created by field for both the records? Also, try creating a record using Background script and see if it creates duplicate records.

Regards,
Muhammad

Thanks for trying to help, I was able to get this to work using the code that Ben commented. T=