- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2025 01:34 PM
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:
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.
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.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-11-2025 07:22 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2025 02:02 PM
It seems your line with
current.parent = current.issue.sn_audit_engagement;
is faulty.. You are trying to assign a GlideElement object and not its value.
Please try this below:
I would suggest you replace the GlideElement "issue" with "gr" or something else that is not a keyword.
(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 gr = new GlideRecord('sn_grc_issue');
if (gr.get(current.issue.toString())) {
if (gr.sn_audit_engagement) {
current.parent = gr.sn_audit_engagement.toString();
}
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2025 02:21 PM
Thanks @folusho for your reply. I tried but that did not work. Also, I wanted to give a little more information. I have the rule set to run before and I have the Insert button checked:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2025 02:28 PM
Lets put some logs in the business rule.
I assume you are no longer getting the initial error you mentioned ?
(function executeRule(current, previous /*null when async*/) {
gs.info('[BR] Checking if issue exists and parent is not set...');
if (current.issue && !current.parent) {
gs.info('[BR] Issue found: ' + current.issue);
var gr = new GlideRecord('sn_grc_issue');
if (gr.get(current.issue.toString())) {
gs.info('[BR] Issue record retrieved. Sys ID: ' + gr.sys_id);
if (gr.sn_audit_engagement) {
gs.info('[BR] Audit engagement found: ' + gr.sn_audit_engagement);
current.parent = gr.sn_audit_engagement.toString();
} else {
gs.info('[BR] No audit engagement found on issue.');
}
} else {
gs.info('[BR] Could not retrieve issue record with sys_id: ' + current.issue);
}
} else {
gs.info('[BR] Skipping — either no issue or parent is already set.');
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2025 02:38 PM
Same error as before. I inserted the updated script, reran it and got the following messages followed by the same stack trace:
Warning | Exception while executing getSkillConfigObj from extension point: ConversionError: The undefined value has no properties. | sn_wwna |
Information | Slow ACL cfae0a0fc31302004e44dccdf3d3ae63 for the path record/sn_audit_engagement/delete , time was: 21 | AccessTerm |
Warning | Exception while executing getSkillConfigObj from extension point: ConversionError: The undefined value has no properties. | sn_wwna |
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)