Adobe Experience Manager: In AEM 6.5 LTS SP2, the PROCESS value of a Workflow Process Step is saved with single quotes, causing Process implementation not found at runtime
Description description
In AEM 6.5 LTS SP2 environment, when a Process Step in a Workflow Model is configured and saved, the process class name stored in metaData/PROCESS may be converted to a string with single quotes.
As a result, during workflow execution, AEM cannot resolve it to the original Java class name and fails with an error such as the following:
01.01.2026 00:00:00.000 *ERROR* [ JobHandler: /var/workflow/instances/server0/2026-01-01/sample_workflow_1:/content/sample/path] com.adobe.granite.workflow.core.job.JobHandler Error executing workflow step
com.adobe.granite.workflow.WorkflowException: Process implementation not found: 'com.day.cq.dam.core.process.GateKeeperProcess'at com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:207) [ com.adobe.granite.workflow.core:2.0.240.CQ680-B0017] at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:271) [ com.adobe.granite.workflow.core:2.0.240.CQ680-B0017] at org.apache.sling.event.impl.jobs.JobConsumerManager$JobConsumerWrapper.process(JobConsumerManager.java:502) [ org.apache.sling.event:4.2.24] at org.apache.sling.event.impl.jobs.queues.JobQueueImpl.startJob(JobQueueImpl.java:351) [ org.apache.sling.event:4.2.24] at org.apache.sling.event.impl.jobs.queues.JobQueueImpl.access$100(JobQueueImpl.java:60) [ org.apache.sling.event:4.2.24] at org.apache.sling.event.impl.jobs.queues.JobQueueImpl$1.run(JobQueueImpl.java:287) [ org.apache.sling.event:4.2.24] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)at java.base/java.lang.Thread.run(Thread.java:834)
Environments
AEM 6.5 LTS SP2
AEM 6.5.23.0 (after applying cq-6.5.0-hotfix-GRANITE-61551-SP23-1.4.zip)
AEM 6.5.24.0
AEM 6.5.25.0
Resolution resolution
The Workflow Process class name may be saved with single quotes. This behavior occurs as part of a security check.
In this case, add the target Workflow Process class name to the allowlist in the OSGi Expression Security Configuration.
Steps
Step1. Open http://< host> :< port> /system/console/configMgr
Step2. Open Expression Security Configuration
Step3. Add the target Workflow Process class name to the allowlist
Use Allowed Keywords for a single class
Use Allowed Patterns for multiple classes
Step4. In the target Workflow Model, choose the target Workflow Process class again at the target Process Step, and save it
Step5. Sync the Workflow Model
Example: Allowed Keywords
com.day.cq.dam.core.process.GateKeeperProcess
Example: Allowed Patterns
ˆcom\.day\.cq\.dam\.core\.process\..*$