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.

Prevent Recursive loop script

Pat Surtan
Tera Expert

Hello,

 

There is a parent/child feature in Incident Management where a record can be added to an incident as that incident's parent record. If the parent record has been added, that same record cannot be added as a child. This is a OOTB recursive script.


I want to create this same feature to prevent recursive loop in my custom table. Can someone provide a script for me to use? I found the OOTB script, modified it but it doesn't work. No errors and I can add one ticket as both the parent and a child, which isn't correct. 

 

Here is the OOTB script I modified.

 

var rt = new RecursionTester('u_additional_info', 'u_parent_info');
if (rt.isRecursive(current)) {
current.setAbortAction(true);
current.u_parent_info.setError(gs.getMessage('Invalid Parent Info'));
gs.addErrorMessage(gs.getMessage('The selected Parent Info loops back to this record (recursive sdq ticket loop)'));
}

 

Thanks in advance. 

1 ACCEPTED SOLUTION

Mike_R
Kilo Patron
Kilo Patron

is 'u_additional_info' your custom table name?

 

var rt = new RecursionTester('tableName', 'parentReferenceFieldName');
if (rt.isRecursive(current)) {
current.setAbortAction(true);
current.parentReferenceFieldName.setError(gs.getMessage('Invalid Parent Incident'));
gs.addErrorMessage(gs.getMessage('The selected Parent Incident loops back to this record (recursive incident loop)'));
}

View solution in original post

8 REPLIES 8

Your script looks fine and I compared it to several other OOTB business rules.

Stupid question, but can you confirm these settings on your business rule

Mike_R_0-1667315496692.png

 

Yes, it matches your screenshot.

 

when: before

Insert: true

Update: true

 

I'm not sure why it isn't working. 

I'm at a loss. I would suggest opening a case with support in the meantime.

If i think of anything else i will post here.

Hi Mike,

 

Thank you for helping out. Is there any other script I might have overlooked and that is why it isn't working?