We upgraded our Agile instance from 9.3.3 to 9.3.4 last week and now all workflow approvals are stuck at the Review step. The workflow was working perfectly before the upgrade. We have custom PX (Process Extensions) scripts that handle approval routing logic.
Checking the server logs, I see NullPointerException errors:
NullPointerException at CustomApprovalHandler.getApprovers()
at com.agile.px.CustomApprovalHandler.execute(CustomApprovalHandler.java:87)
at com.agile.api.WorkflowProcessHandler.invoke(WorkflowProcessHandler.java:234)
The PX script uses Agile SDK APIs to query user groups and assign approvers dynamically. I’m wondering if there were API changes in 9.3.4 that broke our custom code. Has anyone else experienced workflow issues after upgrading to 9.3.4? Any known SDK compatibility issues we should be aware of?
Thanks for the insights. I checked our PX code and found we are indeed using getUsersByRole() without the new required parameters. I also noticed we’re not doing null checks on the returned collections. Before I start modifying the code, are there any other common API changes in 9.3.4 I should watch out for? Our PX scripts also interact with change objects and BOM structures.
I ran into this exact issue two months ago during our 9.3.4 upgrade. The problem is that the WorkflowProcessHandler API changed how it handles context objects. Your getApprovers() method is probably expecting a WorkflowContext object that’s no longer being passed in the same way. Check if you’re using context.getWorkflowObject() - that method signature changed and now requires casting to IWorkflow interface explicitly.
Quick troubleshooting tip - enable debug logging for your PX classes by adding this to your log4j configuration:
log4j.logger.com.agile.px.CustomApprovalHandler=DEBUG
log4j.logger.com.agile.api.WorkflowProcessHandler=DEBUG
This will show you exactly which API call is returning null. Also check if your PX is properly registered in the Process Extensions admin console after the upgrade - sometimes the registration gets lost during upgrades.