Setting field name via a Business Rule

RodHill11
Tera Contributor

Hi.

I was recently tasked with finding a way to populate a field on one form from another form.  After doing some research, I learned that setting up a business rule was the best way to achieve this.  On Form A, there is a tab named Audit that holds the Audit Engagement number.

 

Form A:

RodH58347840403_0-1749586513041.png

 

In the next section below, there's another tab named Remediation tasks.  The ask is this: when a user clicks the New button from the Remediation tasks, the Parent field from the Remediation task needs to be populated with the Audit engagement number.

 

RodH58347840403_1-1749587070002.png

 

I put together the following script but have not had any luck:

 

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

    // Only run if the issue field is set and parent is not already set
    if (current.issue && !current.parent) {
        var issue = new GlideRecord('sn_grc_issue');
        if (issue.get(current.issue)) {
            // Set parent to the sys_id of the audit engagement referenced by the issue
            current.parent = current.issue.sn_audit_engagement;
			current.update();
        }
    }

})(current, previous);

 

When I run the script I get the following error:

Evaluator.evaluateString() problem: java.lang.RuntimeException: failed to coerce com.glide.script.fencing.ScopedGlideElement to desired type java.lang.String: com.glide.script.fencing.ScopedFunctionObjectTypeHandler.coerceFunctionArgument(ScopedFunctionObjectTypeHandler.java:180)
org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247)
org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:3081)
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1721)
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:907)
org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:137)
com.glide.caller.gen.sys_security_acl_4212039b1bb2e110b7b35284604bcbcd ➚.call(Unknown Source)
com.glide.script.ScriptCaller.call(ScriptCaller.java:22)
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:135)
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:720)
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:4501)
org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:151)
com.glide.script.ScriptCompiler.executeAndPublishMetric(ScriptCompiler.java:78)
com.glide.script.ScriptEvaluator.execute(ScriptEvaluator.java:464)
com.glide.script.ScriptEvaluator.evaluate(ScriptEvaluator.java:231)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:384)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:328)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScriptAsBoolean(GlideScopedEvaluator.java:482)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScriptAsBoolean(GlideScopedEvaluator.java:457)
com.glide.sys.security.AccessTerm.checkScriptWithoutInstrument(AccessTerm.java:865)
com.glide.sys.security.AccessTerm.checkScript0(AccessTerm.java:833)
com.glide.sys.security.AccessTerm.lambda$checkScript$0(AccessTerm.java:807)
com.glide.sys.security.data_filter.DataFilterDisableOnCurrentUtil.withDataFiltersOnRecordDisabled(DataFilterDisableOnCurrentUtil.java:40)
com.glide.sys.security.AccessTerm.checkScript(AccessTerm.java:806)
com.glide.sys.security.AccessTerm.evaluate0(AccessTerm.java:417)
com.glide.sys.security.AccessTerm.evaluate(AccessTerm.java:322)
com.glide.sys.security.AccessRule.processOr(AccessRule.java:321)
com.glide.sys.security.AccessRule.evaluate(AccessRule.java:200)
com.glide.sys.security.AccessRule.processSequential(AccessRule.java:332)
com.glide.sys.security.AccessRule.evaluate(AccessRule.java:203)
com.glide.sys.security.AccessRule.processAnd(AccessRule.java:306)
com.glide.sys.security.AccessRule.evaluate(AccessRule.java:197)
com.glide.sys.security.ACLAccessHandler.hasRightsToWithoutInstrument(ACLAccessHandler.java:84)
com.glide.sys.security.ACLAccessHandler.hasRightsTo(ACLAccessHandler.java:67)
com.glide.sys.security.ContextualSecurityManager.eval(ContextualSecurityManager.java:1306)
com.glide.sys.security.ContextualSecurityManager.hasRightsToImpl0(ContextualSecurityManager.java:1128)
com.glide.sys.security.ContextualSecurityManager.hasRightsToImpl(ContextualSecurityManager.java:1090)
com.glide.sys.security.ContextualSecurityManager.canAccess(ContextualSecurityManager.java:1065)
com.glide.sys.security.ContextualSecurityManager.canAccess(ContextualSecurityManager.java:1070)
com.glide.script.GlideElement.hasRightsTo(GlideElement.java:1280)
com.glide.script.GlideElement.checkRightsWithDerived(GlideElement.java:2978)
com.glide.script.GlideElement.canRead(GlideElement.java:1210)
com.glide.script.GlideRecordSimpleSerializer.canRead(GlideRecordSimpleSerializer.java:142)
com.glide.script.GlideRecordSimpleSerializer.serialize(GlideRecordSimpleSerializer.java:85)
com.glide.script.GlideRecordSimpleSerializer.serialize(GlideRecordSimpleSerializer.java:213)
com.glide.script.GlideRecordSimpleSerializer.serialize(GlideRecordSimpleSerializer.java:199)
com.glide.processors.xmlhttp.XMLGlideRecordSerializer.query(XMLGlideRecordSerializer.java:98)
com.glide.processors.xmlhttp.AJAXGlideRecord.query(AJAXGlideRecord.java:69)
com.glide.processors.xmlhttp.AJAXGlideRecord.process(AJAXGlideRecord.java:60)
com.glide.processors.xmlhttp.internal.XMLHttpRequestExecutor.process(XMLHttpRequestExecutor.java:110)
com.glide.processors.xmlhttp.internal.XMLHttpRequestExecutor.process(XMLHttpRequestExecutor.java:76)
com.glide.processors.xmlhttp.AJAXXMLHttpAggregator.process(AJAXXMLHttpAggregator.java:79)
com.glide.processors.XMLHttpProcessor.processJavaAJAX(XMLHttpProcessor.java:168)
com.glide.processors.XMLHttpProcessor.process(XMLHttpProcessor.java:121)
com.glide.processors.AProcessor.runProcessor(AProcessor.java:785)
com.glide.processors.AProcessor.processTransaction(AProcessor.java:328)
com.glide.processors.ProcessorRegistry.process0(ProcessorRegistry.java:187)
com.glide.processors.ProcessorRegistry.process(ProcessorRegistry.java:175)
com.glide.ui.GlideServletTransaction.process(GlideServletTransaction.java:58)
com.glide.sys.Transaction.run(Transaction.java:2998)
com.glide.ui.HTTPTransaction.run(HTTPTransaction.java:34)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:840)

 

Exception while executing getSkillConfigObj from extension point: ConversionError: The undefined value has no properties.

 

Any help someone can provide would be greatly appreciated. 

Thanks.

 

 

1 ACCEPTED SOLUTION

Hi @RodHill11 ,

I don't think this error is coming from the BR

check the scripts of ACLs with sysid ( 4212039b1bb2e110b7b35284604bcbcd, cfae0a0fc31302004e44dccdf3d3ae63)

 

is parent value populated? with BR

 

see if there is any issue with those scripts

 

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya

View solution in original post

8 REPLIES 8

Chaitanya ILCR
Kilo Patron

Hi @RodHill11 ,

create Before insert / update BR on the Remediation task

with conditions as highlighted

ChaitanyaILCR_0-1749603625043.png

ChaitanyaILCR_1-1749603669311.png

Script used

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

    // Add your code here
    current.parent = current.issue.sn_audit_engagement;

})(current, previous);

 

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya

 

Hi @Chaitanya ILCR .  Thank you for your response.  I made the changes you suggested but it did not work.  I received the following error:

Exception while executing getSkillConfigObj from extension point: ConversionError: The undefined value has no properties.

Slow ACL cfae0a0fc31302004e44dccdf3d3ae63 for the path record/sn_audit_engagement/delete , time was: 20

Evaluator.evaluateString() problem: java.lang.RuntimeException: failed to coerce com.glide.script.fencing.ScopedGlideElement to desired type java.lang.String: com.glide.script.fencing.ScopedFunctionObjectTypeHandler.coerceFunctionArgument(ScopedFunctionObjectTypeHandler.java:180)
org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247)
org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:3081)
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1721)
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:907)
org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:137)
com.glide.caller.gen.sys_security_acl_4212039b1bb2e110b7b35284604bcbcd ➚.call(Unknown Source)
com.glide.script.ScriptCaller.call(ScriptCaller.java:22)
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:135)
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:720)
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:4501)
org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:151)
com.glide.script.ScriptCompiler.executeAndPublishMetric(ScriptCompiler.java:78)
com.glide.script.ScriptEvaluator.execute(ScriptEvaluator.java:464)
com.glide.script.ScriptEvaluator.evaluate(ScriptEvaluator.java:231)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:384)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:328)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScriptAsBoolean(GlideScopedEvaluator.java:482)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScriptAsBoolean(GlideScopedEvaluator.java:457)
com.glide.sys.security.AccessTerm.checkScriptWithoutInstrument(AccessTerm.java:865)
com.glide.sys.security.AccessTerm.checkScript0(AccessTerm.java:833)
com.glide.sys.security.AccessTerm.lambda$checkScript$0(AccessTerm.java:807)
com.glide.sys.security.data_filter.DataFilterDisableOnCurrentUtil.withDataFiltersOnRecordDisabled(DataFilterDisableOnCurrentUtil.java:40)
com.glide.sys.security.AccessTerm.checkScript(AccessTerm.java:806)
com.glide.sys.security.AccessTerm.evaluate0(AccessTerm.java:417)
com.glide.sys.security.AccessTerm.evaluate(AccessTerm.java:322)
com.glide.sys.security.AccessRule.processOr(AccessRule.java:321)
com.glide.sys.security.AccessRule.evaluate(AccessRule.java:200)
com.glide.sys.security.AccessRule.processSequential(AccessRule.java:332)
com.glide.sys.security.AccessRule.evaluate(AccessRule.java:203)
com.glide.sys.security.AccessRule.processAnd(AccessRule.java:306)
com.glide.sys.security.AccessRule.evaluate(AccessRule.java:197)
com.glide.sys.security.ACLAccessHandler.hasRightsToWithoutInstrument(ACLAccessHandler.java:84)
com.glide.sys.security.ACLAccessHandler.hasRightsTo(ACLAccessHandler.java:67)
com.glide.sys.security.ContextualSecurityManager.eval(ContextualSecurityManager.java:1306)
com.glide.sys.security.ContextualSecurityManager.hasRightsToImpl0(ContextualSecurityManager.java:1128)
com.glide.sys.security.ContextualSecurityManager.hasRightsToImpl(ContextualSecurityManager.java:1090)
com.glide.sys.security.ContextualSecurityManager.canAccess(ContextualSecurityManager.java:1065)
com.glide.sys.security.ContextualSecurityManager.canAccess(ContextualSecurityManager.java:1070)
com.glide.script.GlideElement.hasRightsTo(GlideElement.java:1280)
com.glide.script.GlideElement.checkRightsWithDerived(GlideElement.java:2978)
com.glide.script.GlideElement.canRead(GlideElement.java:1210)
com.glide.script.GlideRecordSimpleSerializer.canRead(GlideRecordSimpleSerializer.java:142)
com.glide.script.GlideRecordSimpleSerializer.serialize(GlideRecordSimpleSerializer.java:85)
com.glide.script.GlideRecordSimpleSerializer.serialize(GlideRecordSimpleSerializer.java:213)
com.glide.script.GlideRecordSimpleSerializer.serialize(GlideRecordSimpleSerializer.java:199)
com.glide.processors.xmlhttp.XMLGlideRecordSerializer.query(XMLGlideRecordSerializer.java:98)
com.glide.processors.xmlhttp.AJAXGlideRecord.query(AJAXGlideRecord.java:69)
com.glide.processors.xmlhttp.AJAXGlideRecord.process(AJAXGlideRecord.java:60)
com.glide.processors.xmlhttp.internal.XMLHttpRequestExecutor.process(XMLHttpRequestExecutor.java:110)
com.glide.processors.xmlhttp.internal.XMLHttpRequestExecutor.process(XMLHttpRequestExecutor.java:76)
com.glide.processors.xmlhttp.AJAXXMLHttpAggregator.process(AJAXXMLHttpAggregator.java:79)
com.glide.processors.XMLHttpProcessor.processJavaAJAX(XMLHttpProcessor.java:168)
com.glide.processors.XMLHttpProcessor.process(XMLHttpProcessor.java:121)
com.glide.processors.AProcessor.runProcessor(AProcessor.java:785)
com.glide.processors.AProcessor.processTransaction(AProcessor.java:328)
com.glide.processors.ProcessorRegistry.process0(ProcessorRegistry.java:187)
com.glide.processors.ProcessorRegistry.process(ProcessorRegistry.java:175)
com.glide.ui.GlideServletTransaction.process(GlideServletTransaction.java:58)
com.glide.sys.Transaction.run(Transaction.java:2998)
com.glide.ui.HTTPTransaction.run(HTTPTransaction.java:34)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:840)

Hi @RodHill11 ,

I don't think this error is coming from the BR

check the scripts of ACLs with sysid ( 4212039b1bb2e110b7b35284604bcbcd, cfae0a0fc31302004e44dccdf3d3ae63)

 

is parent value populated? with BR

 

see if there is any issue with those scripts

 

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya

RodHill11
Tera Contributor

Thanks @Chaitanya ILCR .  I checked those ACLs and it appear they are definitely conflicting with what I'm trying to accomplish.  I will accept your previous solution.  Thanks again.