Joiner Process Suddenly Failing

We are on IIQ 8.3

In Joiner After Provisioning Rule we are passing arguments to an email template, previously this worked but started failing for null pointer. It is the nhmgrdn String that is failing.

This was what it was originally -

	String identityName = workflow.get("identityName");   
	Identity iden = context.getObjectByName(Identity.class,identityName);
	String nhlocation = iden.getAttribute("location");
	String nhtitle = iden.getAttribute("title");
	String nhbu = iden.getAttribute("businessUnit");
	String nhdept = iden.getAttribute("department");
    String nhmgrdn = iden.getManager().getDisplayName();

Changed it to this while trying to fix and still getting an error -

	String identityName = workflow.get("identityName");   
	Identity iden = context.getObjectByName(Identity.class,identityName);
	String nhlocation = iden.getAttribute("location");
	String nhtitle = iden.getAttribute("title");
	String nhbu = iden.getAttribute("businessUnit");
	String nhdept = iden.getAttribute("department");
    
  String nhmgrdn;
    Identity nhmanager = iden.getManager();
    if (nhmanager != null){
      nhmgrdn = nhmanager.getDisplayName();
    }
    if(null==nhmgrdn || nhmgrdn.isEmpty()){
			jlogger.warn("Warning in method joinerAfterProvisionRule : Couldn't find manager's DisplayName");
		}
    
		context.decache(nhmanager);
		nhmanager = null;

ERROR -

2025-02-13T12:41:57,079  WARN Workflow Event Thread 1 rule.SP.Joiner.RulesLibrary:-1 - Warning in method joinerAfterProvisionRule : Couldn't find manager's DisplayName
2025-02-13T12:41:57,079 ERROR Workflow Event Thread 1 org.apache.bsf.BSFManager:451 - Exception:
java.security.PrivilegedActionException: null
        at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
        at org.apache.bsf.BSFManager.eval(BSFManager.java:442) [bsf.jar:?]
        at sailpoint.server.BSFRuleRunner.runScript(BSFRuleRunner.java:347) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.server.InternalContext.runScript(InternalContext.java:1296) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.server.ScriptletEvaluator.doScript(ScriptletEvaluator.java:263) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.server.ScriptletEvaluator.evalSource(ScriptletEvaluator.java:71) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.evalSource(Workflower.java:5938) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.advanceStep(Workflower.java:5177) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.advance(Workflower.java:4564) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.assimilate(Workflower.java:4214) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.handleWorkItem(Workflower.java:7641) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.processEvent(Workflower.java:1918) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.processEvent(Workflower.java:1900) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.task.WorkflowerThread.process(WorkflowerThread.java:363) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.task.WorkflowerThread.run(WorkflowerThread.java:288) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
Caused by: org.apache.bsf.BSFException: The application script threw an exception: java.lang.NullPointerException BSF info: script at line: 0 column: columnNo
        at bsh.util.BeanShellBSFEngine.eval(BeanShellBSFEngine.java:197) ~[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:?]
        ... 15 more
2025-02-13T12:41:57,080 ERROR Workflow Event Thread 1 sailpoint.api.Workflower:4603 - An unexpected error occurred: sailpoint.tools.GeneralException: The application script threw an exception: java.lang.NullPointerException BSF info: script at line: 0 column: columnNo
sailpoint.tools.GeneralException: sailpoint.tools.GeneralException: The application script threw an exception: java.lang.NullPointerException BSF info: script at line: 0 column: columnNo
        at sailpoint.server.ScriptletEvaluator.doScript(ScriptletEvaluator.java:268) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.server.ScriptletEvaluator.evalSource(ScriptletEvaluator.java:71) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.evalSource(Workflower.java:5938) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.advanceStep(Workflower.java:5177) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.advance(Workflower.java:4564) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.assimilate(Workflower.java:4214) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.handleWorkItem(Workflower.java:7641) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.processEvent(Workflower.java:1918) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.api.Workflower.processEvent(Workflower.java:1900) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.task.WorkflowerThread.process(WorkflowerThread.java:363) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.task.WorkflowerThread.run(WorkflowerThread.java:288) [identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
Caused by: sailpoint.tools.GeneralException: The application script threw an exception: java.lang.NullPointerException BSF info: script at line: 0 column: columnNo
        at sailpoint.server.BSFRuleRunner.runScript(BSFRuleRunner.java:349) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.server.InternalContext.runScript(InternalContext.java:1296) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.server.ScriptletEvaluator.doScript(ScriptletEvaluator.java:263) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        ... 10 more
Caused by: org.apache.bsf.BSFException: The application script threw an exception: java.lang.NullPointerException BSF info: script at line: 0 column: columnNo
        at bsh.util.BeanShellBSFEngine.eval(BeanShellBSFEngine.java:197) ~[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_161]
        at org.apache.bsf.BSFManager.eval(BSFManager.java:442) ~[bsf.jar:?]
        at sailpoint.server.BSFRuleRunner.runScript(BSFRuleRunner.java:347) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.server.InternalContext.runScript(InternalContext.java:1296) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        at sailpoint.server.ScriptletEvaluator.doScript(ScriptletEvaluator.java:263) ~[identityiq.jar:8.3 Build f4b330b4da3-20220427-175259]
        ... 10 more
Ending workflow SP LCE Joiner WF

I’m truly bashing my head right now - it has been working for years and now it is failing, anyone have any ideas? Truly appreciate any insight!!

Thanks.

Hi @chrisk ,

It probably is just one manager identity that hasn’t got a displayName.
Include a System.out.println(nhmanaget); right after Identity nhmanager = iden.getManager(); to check the identity manually from the debug or from Identity Warehouse.

Let me know what you find!

2 Likes

OK, this helped move me along! Thank you.

Looks like the ‘Manager’ isn’t added to the Identity until after it has been refreshed with “Refresh identity attributes” selected.

We aggregate HR data and the Identity Cube is created with a ‘needsCreateProcessing’ set to true. But at this point the Identity has not been refreshed, so there is no manager assigned to it.

Then we run Refresh and it triggers the LCM Joiner workflow - but that is failing because the Identity’s Manager has not yet been added to the cube!

I don’t know why this is suddenly happening now. Is there a way to have the manager added prior to having LCM workflow started?

Thanks again!

I don’t know if it is a ‘smart’ thing to do, but I put in a refresh step if Manager was found to be NULL. Seems to work. Thanks for the help, I hadn’t thought that the manager was actually NULL.

	String identityName = workflow.get("identityName");   
	Identity iden = context.getObjectByName(Identity.class,identityName);
    
	String nhmgrdn;
    Identity nhmanager = iden.getManager();
    if (nhmanager != null){
      nhmgrdn = nhmanager.getDisplayName();
    }else{
		
		Map map = new HashMap();
		map.put("promoteAttributes",true);
		map.put("refreshManagerStatus",true);

		Attributes attr=new Attributes();
		attr.setMap(map);

		Identitizer identitizer = new Identitizer(context,attr );  

		identitizer.refresh(iden);

		context.saveObject(iden);

		context.commitTransaction();
		
		nhmgrdn = iden.getManager().getDisplayName();
		}
    
		context.decache(nhmanager);
		nhmanager = null;

Hi @chrisk,

Glad to hear you found the root cause! Adding a refresh step when the manager is null makes sense in this scenario, but you might want to be cautious about potential performance impacts if this runs frequently.

Another option could be to ensure that the identity refresh (with “Refresh Identity Attributes” enabled) is completed before the Joiner workflow starts. You might check:

  • Your HR aggregation timing: If possible, schedule the identity refresh after aggregation but before triggering the Joiner workflow.
  • The workflow trigger: If Joiner is kicking off too early, consider adjusting when it gets initiated to ensure the identity cube is fully updated first.

That said, if your solution is working well and not causing delays, it seems like a good workaround! Let me know if you run into any issues with it.

Thanks for sharing your findings! :rocket:

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.