Plugin scriptPackages not available in before provisioning rule

Hi,

I was setting up a library plugin to get the possibility to install custom java code “on-the-fly” without any regular deployment.

The plugin installation is successful and the packages are marked as “scriptPackages” in the manifest.xml.

When I run a regular test rule with references to the plugins java code from the debug page the code can be found and processed.

But when I use the same code inside a before provisioning rule inside a web services connector, the provisioning is failing:

2021-09-30T06:54:14,511 ERROR https-openssl-nio-8443-exec-7 sailpoint.provisioning.PlanEvaluator:2011 - BeanShell script error: bsh.EvalError: Sourced file: inline evaluation of: `` import de.dhh.iam.beforeprovisioning.Test; import de.dhh.iam.beforeprovis . . . '' : Typed variable declaration : Class: Test not found in namespace : at Line: 6 : in file: inline evaluation of: `` import de.dhh.iam.beforeprovisioning.Test; import de.dhh.iam.beforeprovis . . . '' : Test

Is this an expected behaviour or a bug in IIQ?

Best,
Martin

It’s a BUG. When I updated the name of the rule the java code from the plugin was accessible within the before provisioning rule.

Do you have multiple servers? From my experience I found that the plugin deployment process is somewhat buggy, sometimes it will not update all SailPoint servers. After updating a plugin, some servers will be running the latest version, while the others would still be running the old one.

Next time you see this happen, try stopping and restarting your plugin.

I have the same issue with the customization rule.
I tried the following to fix the issue;

  • I changed the customization rule name.
  • I upload the plugin several times.
  • I restarted the tomcat after uploading the plugin.
  • I changed the java class name.

Still, I’m getting the no class found issue when I trigger an aggregation task.

Is there a limitation for different types of BeanShell? Such as the Plugin class cannot be used in Customization rule etc.

Caused by: org.apache.bsf.BSFException: BeanShell script error: bsh.EvalError: Sourced file: inline evaluation of: ``         import java.lang.IllegalArgumentException;         import java.lang.Sys . . . '' : Typed variable declaration : Class: MailService not found in namespace : at Line: 47 : in file: inline evaluation of: ``         import java.lang.IllegalArgumentException;         import java.lang.Sys . . . '' : MailService
 BSF info: library-dhh at line: 0 column: columnNo
	at bsh.util.BeanShellBSFEngine.eval(BeanShellBSFEngine.java:202) ~[bsh-2.1.8.jar:2.1.8 2018-10-02 08:36:04]
	at org.apache.bsf.BSFManager$5.run(BSFManager.java:445) ~[bsf.jar:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_151]
	at org.apache.bsf.BSFManager.eval(BSFManager.java:442) ~[bsf.jar:?]
	at sailpoint.server.BSFRuleRunner.eval(BSFRuleRunner.java:233) ~[identityiq.jar:8.1p4 Build 8db8c87b938-20211220-115258]
	at sailpoint.server.BSFRuleRunner.runRule(BSFRuleRunner.java:190) ~[identityiq.jar:8.1p4 Build 8db8c87b938-20211220-115258]
	... 10 more