2025.5.1 - Workflow error if for-each step is used

I was trying to run Wokflows which worked well in 2024.7.

I was expecting to see the correct result in version 2025.5.1

Instead I’ve got an error in WF log during processing the workflow.

2025-05-22 01:24:27,356 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] ERROR Origam.Workflow.WorkflowEngine - Uživatel není přihlášen.
Workflow stack trace

Origam.UserNotLoggedInException: Uživatel není přihlášen.
   at Origam.SecurityManager.get_CurrentPrincipal() in D:\a\1\s\backend\Origam.Common\SecurityManager.cs:line 136
   at Origam.Workflow.WorkflowEngine.EvaluateStartRule(IWorkflowStep task) in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 840
   at Origam.Workflow.WorkflowEngine.<>c__DisplayClass107_0.<EvaluateStartRuleTimed>b__0() in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 821
   at Origam.Workflow.ProfilingTools.ExecuteAndLogDuration(Func`1 funcToExecute, String logEntryType, String path, String id, Func`1 logOnlyIf) in D:\a\1\s\backend\Origam.Workflow\ProfilingTools.cs:line 97
   at Origam.Workflow.WorkflowEngine.EvaluateStartRuleTimed(IWorkflowStep task) in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 820
   at Origam.Workflow.WorkflowEngine.ResumeWorkflow() in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 507
   at Origam.Workflow.WorkflowEngine.RunWorkflow() in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 456
2025-05-22 01:24:27,492 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] DEBUG Origam.Workflow.WorkflowEngine - Block '02_Process_CM' completed
2025-05-22 01:24:27,495 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] ERROR Origam.Workflow.WorkflowEngine - TransactionWorkflowBlock TTD_Delivery_BrushDeduction_FarmerProcess/02_Process_CM failed.
2025-05-22 01:24:27,500 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] DEBUG Origam.Workflow.WorkflowEngine - Block 'TTD_Delivery_BrushDeduction_FarmerProcess' completed
2025-05-22 01:24:27,501 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] ERROR Origam.Workflow.WorkflowEngine - WorkflowCallTask TTD_Delivery_BrushDeduction/02_ForEach_Farmer/01_UpdateDeduction failed.
2025-05-22 01:24:27,502 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] DEBUG Origam.Workflow.WorkflowEngine - Block '02_ForEach_Farmer' completed
2025-05-22 01:24:27,502 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] ERROR Origam.Workflow.WorkflowEngine - ForeachWorkflowBlock TTD_Delivery_BrushDeduction/02_ForEach_Farmer failed.
2025-05-22 01:24:27,503 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] DEBUG Origam.Workflow.WorkflowEngine - Block 'TTD_Delivery_BrushDeduction' completed
2025-05-22 01:24:27,503 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] ERROR Origam.Workflow.WorkflowEngine - WorkflowCallTask TTD_Delivery_BrushDeduction_CustomDate/02_Call_BrushDecuction failed.
2025-05-22 01:24:27,504 [Workflow 622b7bf0-af27-4dd9-bea5-c392b589db61] DEBUG Origam.Workflow.WorkflowEngine - Block 'TTD_Delivery_BrushDeduction_CustomDate' completed

It looks, the error is generated during processing for-each block. I can see the same behavior in other workflow with for-each block.

Different workflow - similar error:

2025-05-22 01:43:16,489 [Workflow b3f2ce9a-0b37-484c-b4ae-67dfa6c1f856] ERROR Origam.Workflow.WorkflowEngine - Merge context 'TTD_Delivery', Step 'TTD_Schenk_Recalculate/03_Transaction/04_for-each' failed. InputContextValue: . Original exception message: Uživatel není přihlášen.
Workflow stack trace
	Step: '04_for-each/00_Load'
	Step: '04_for-each/01_Calculate'
	Step: '04_for-each/02_Store'

System.Exception: Merge context 'TTD_Delivery', Step 'TTD_Schenk_Recalculate/03_Transaction/04_for-each' failed. InputContextValue: . Original exception message: Uživatel není přihlášen.
 ---> Origam.UserNotLoggedInException: Uživatel není přihlášen.
   at Origam.SecurityManager.get_CurrentPrincipal() in D:\a\1\s\backend\Origam.Common\SecurityManager.cs:line 136
   at Origam.SecurityManager.CurrentUserProfile() in D:\a\1\s\backend\Origam.Common\SecurityManager.cs:line 144
   at Origam.Rule.RuleEngine.Merge(DataSet inout_dsTarget, DataSet in_dsSource, Boolean in_bTrueDelete, Boolean in_bPreserveChanges, Boolean in_bSourceIsFragment, Boolean preserveNewRowState) in D:\a\1\s\backend\Origam.Rule\RuleEngine.cs:line 415
   at Origam.Workflow.WorkflowEngine.MergeContext(Key resultContextKey, Object inputContext, IWorkflowStep step, String contextName, ServiceOutputMethod method) in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 1017
   --- End of inner exception stack trace ---
   at Origam.Workflow.WorkflowEngine.MergeContext(Key resultContextKey, Object inputContext, IWorkflowStep step, String contextName, ServiceOutputMethod method) in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 1240
   at Origam.Workflow.Tasks.ForEachBlockEngineTask.Host_WorkflowFinished(Object sender, WorkflowHostEventArgs e) in D:\a\1\s\backend\Origam.Workflow\Tasks\ForEachBlockEngineTask.cs:line 189
   at Origam.Workflow.WorkflowHost.OnWorkflowFinished(WorkflowEngine engine, Exception exception) in D:\a\1\s\backend\Origam.Workflow\WorkflowHost.cs:line 106
   at Origam.Workflow.WorkflowEngine.FinishWorkflow(Exception exception) in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 1508
   at Origam.Workflow.WorkflowEngine.ResumeWorkflow() in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 500
   at Origam.Workflow.WorkflowEngine.OnEngineTaskFinished(Object sender, WorkflowEngineTaskEventArgs e) in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 1468
   at Origam.Workflow.Tasks.AbstractWorkflowEngineTask.OnFinished(WorkflowEngineTaskEventArgs e) in D:\a\1\s\backend\Origam.Workflow\Tasks\AbstractWorkflowEngineTask.cs:line 59
   at Origam.Workflow.Tasks.ServiceMethodCallEngineTask.Execute() in D:\a\1\s\backend\Origam.Workflow\Tasks\ServiceMethodCallEngineTask.cs:line 82
   at Origam.Workflow.WorkflowEngine.ResumeWorkflow() in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 524
   at Origam.Workflow.WorkflowEngine.OnEngineTaskFinished(Object sender, WorkflowEngineTaskEventArgs e) in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 1468
   at Origam.Workflow.Tasks.AbstractWorkflowEngineTask.OnFinished(WorkflowEngineTaskEventArgs e) in D:\a\1\s\backend\Origam.Workflow\Tasks\AbstractWorkflowEngineTask.cs:line 59
   at Origam.Workflow.Tasks.ServiceMethodCallEngineTask.Execute() in D:\a\1\s\backend\Origam.Workflow\Tasks\ServiceMethodCallEngineTask.cs:line 82
   at Origam.Workflow.WorkflowEngine.ResumeWorkflow() in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 524
   at Origam.Workflow.WorkflowEngine.OnEngineTaskFinished(Object sender, WorkflowEngineTaskEventArgs e) in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 1468
   at Origam.Workflow.Tasks.AbstractWorkflowEngineTask.OnFinished(WorkflowEngineTaskEventArgs e) in D:\a\1\s\backend\Origam.Workflow\Tasks\AbstractWorkflowEngineTask.cs:line 59
   at Origam.Workflow.Tasks.ServiceMethodCallEngineTask.Execute() in D:\a\1\s\backend\Origam.Workflow\Tasks\ServiceMethodCallEngineTask.cs:line 82
   at Origam.Workflow.WorkflowEngine.ResumeWorkflow() in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 524
   at Origam.Workflow.WorkflowEngine.RunWorkflow() in D:\a\1\s\backend\Origam.Workflow\Engine.cs:line 456

In which context is the workflow invoked (API, UI). The error states, that there is no authenticated user.

It is invoked from UI (Menu item).

I tried to create simple workflow:

  1. LoadData step
  2. for-each block to iterate loaded data with only 1 transformation step
  3. StoreData step
    All steps have correct dependencies

I can see in the trace, that the data are transformed correctly, but the StoreData step is never invoked.
When I remove the for-each block and leave only the transformation step, the StoreData step is invoke as usual.

I’ve tested the situation in model-test and I can’t reproduce the problem.

At the end I was able to reproduce the issue with for-each block ending the workflow even when there are other steps following it.

I wasn’t able to reproduce the issue with lost user context. Anyway it was confirmed that reverting changes made in FIX: Workflow UI task was not working in ForEach block by JindrichSusen · Pull Request #3141 · origam/origam · GitHub solves the reportign issues, so as a temporary solution, we’re going to revert them and revisit the code again.

Here are links to reverting pull requests: