I had a very similar workflow-stuck issue after our tc-12.3 upgrade and spent days troubleshooting. The problem turned out to be multi-faceted, involving all three key areas you mentioned.
Workflow Engine Configuration:
First, verify your workflow engine threading settings in site.xconf. TC-12.3 changed default thread pool sizes:
wt.workflow.engine.maxThreads=25
wt.workflow.engine.queueCapacity=500
Increase these if you have high workflow volume.
Approval Event Handler Registration:
The approval-event subscription mechanism changed. You need to re-register custom handlers. Check EventSubscription objects:
QuerySpec qs = new QuerySpec(EventSubscription.class);
QueryResult qr = PersistenceHelper.manager.find(qs);
// Verify your approval event subscriptions exist
If missing, recreate them through workflow template re-deployment.
Event Queue Processing:
The event-queue processing was refactored in tc-12.3. Clear any stale events first:
- Stop workflow engine service
- Run database cleanup script for orphaned workflow events (check Teamcenter admin guide section 8.4)
- Verify event listener configuration in wt.properties:
wt.events.default.QueueCapacity=1000
wt.events.default.ThreadPoolSize=10
Critical Fix:
The main issue was event handler class loading. TC-12.3 uses a different classloader hierarchy. If you have custom approval handlers, ensure they’re in the correct codebase location and referenced properly in your workflow template XML. Update the handler class references to use fully qualified names.
Approval Task Assignment:
For the Manager_Approval task specifically, verify the participant resolver is working. Test with:
WorkflowProcess process = // get your stuck process
WfAssignedActivity activity = // get Manager_Approval activity
Enumeration participants = activity.getParticipants();
// Should return valid principals from engineering_mgr_group
After making these changes, restart the workflow engine service and test with a new ECN. For stuck workflows, you may need to manually advance them or restart from a previous checkpoint.
The combination of updated thread pool settings, re-registered event handlers, and cleared event-queue should resolve your blocking issue. Monitor the MethodServer logs during workflow execution to catch any remaining event processing errors.