Releases: elsa-workflows/elsa-core
3.5.0 RC1
What's Changed
- Refactor trigger indexing and update base version to 3.5.0. by @sfmskywalker in #6516
- Fix incorrect Id assignment in Variable constructor by @Green7 in #6514
- Support for Writing Custom Trigger Activities Using Existing Trigger Infrastructure by @sfmskywalker in #6527
- Enhanced Delete of variable persistence manager to allow drivers filt… by @MariusVuscanNx in #6559
- Extended the incidents data to include the activityNodeId (#6570) by @MariusVuscanNx in #6572
- Refactor Fault Propagation and Simplify Bookmark Management by @sfmskywalker in #6545
- Add support for connection vertices in flowcharts by @sfmskywalker in #6585
- Refactor OpenTelemetry error handling implementation by @sfmskywalker in #6621
- Update package versions by @sfmskywalker in #6635
- Add IResilienceStrategy Abstraction with Category Matching and Expression-Based Configuration by @sfmskywalker in #6637
- Enhances workflow runtime resilience and signaling by @sfmskywalker in #6643
- Fix async callback awaiting in HTTP endpoint by @sfmskywalker in #6660
- Implement retry attempt capturing by @sfmskywalker in #6674
- Adds activity execution metadata support by @sfmskywalker in #6699
Full Changelog: 3.4.0...3.5.0-rc1
3.4.0
This release introduces major enhancements to workflow orchestration, resiliency, and developer experience. It brings support for executing and awaiting nested workflows, improved serialization and variable handling, expanded SQL activity capabilities, and comprehensive OpenTelemetry integration. With improved join behavior, controlled commit states, and auto-resume of interrupted workflows, this version provides even greater robustness for long-running and distributed scenarios. Several optional modules have been extracted to streamline the core, and many APIs were enhanced for better extensibility. Numerous bug fixes and usability improvements round out this feature-packed release.
Highlights
Controlled Commit States
Gain precise control over workflow persistence. Workflows can now define when to persist their state—before, after, or both before and after executing an activity. Custom strategies are also supported, such as committing every N seconds, allowing for powerful tuning of reliability and performance characteristics.
Auto Resume Interrupted Workflows
Workflows interrupted due to e.g. pod shutdowns are now automatically resumed on application restart. Combined with Controlled Commit States, this ensures minimal re-execution and smooth recovery from failures, supporting highly reliable long-running workflows.
Resilient Activities
The SendHttpRequest activity now features built-in retry logic using Polly. A simple checkbox enables resilience for your HTTP calls, with a more advanced configuration UI coming in 3.5.0, allowing full control over retry strategies.
Improved Join Behavior
Flowchart activities now intelligently track which paths were activated. This enables more accurate joining behavior, especially when using WaitAll
in combination with dynamic branching via Switch or Decision activities. Advanced looping scenarios will be further enhanced in 3.6.0.
Trimming the Core
Several optional modules have been extracted to the elsa-extensions repository, helping streamline the core and reduce dependencies. These include:
- Telnyx
- OrchardCore
- SQL Activities
- Agents
- Azure Service Bus
What's Changed
- Add functionality to execute nested workflows by @sfmskywalker in #6137
- Fix/32953 by @raymonddenhaan in #6147
- Add output serialization and deserialization support by @sfmskywalker in #6152
- Add support for waiting for child workflows in ExecuteWorkflow by @sfmskywalker in #6226
- Added DeleteVariablesAsync method for the workflow context by @MariusVuscanNx in #6290
- Back-port PolymorphicObjectConverter from 3.3 by @sfmskywalker in #6353
- Exposed incidents in the Elsa.Api.Client by @MariusVuscanNx in #6377
- Exposed incidents in the Elsa.Api.Client by @MariusVuscanNx in #6375
- Updated deprecated artifact by @MariusVuscanNx in #6378
- Updated deprecated artifacts by @MariusVuscanNx in #6379
- Controlled Commit States Feature Implementation by @sfmskywalker in #6343
- Added Alterations API to Client API library and updated server API co… by @yinzara in #6370
- FEAT: Implements SQL Activities by @KnibbsyMan in #6257
- ISSUE: Resolves Directory.Packages.props - Prevents Building by @KnibbsyMan in #6386
- Add customizable tenant header support for HTTP routing by @sfmskywalker in #6395
- Add missing request properties when starting workflow by @sfmskywalker in #6394
- Removes Built In SQL Editor Configuration by @KnibbsyMan in #6393
- Implement bulk cancellation using alterations and filters by @sfmskywalker in #6392
- Add toggle for WorkflowInboxCleanupJob in WorkflowRuntimeFeature by @sfmskywalker in #6418
- Add AddManyAsync method to activity execution stores by @sfmskywalker in #6416
- Improve APIs for extensibility and replaceability by @sfmskywalker in #6420
- Add AddManyAsync method to activity execution stores by @sfmskywalker in #6415
- ActivityExecutionContext Children property not populated by @bobhauser in #6423
- Add IBusRegistrationContext to Transport Configuration Actions by @CODEdire in #6413
- Add CorrelationId to NewBookmarkQueueItem by @pkaaz in #6412
- Enable configurable toggle for workflow inbox cleanup job by @sfmskywalker in #6429
- Update flowchart activity scheduling, implicit join (and FlowJoin/WaitAll) now only waits for followed connections by @bobhauser in #6406
- FEAT : Connection/Secret provider/handler to define generic configuration for Activities by @jdevillard in #6291
- Remove Telnyx module from the codebase by @sfmskywalker in #6437
- Remove Elsa.OrchardCore module. by @sfmskywalker in #6438
- Refactor WebhooksFeature to streamline configuration. by @sfmskywalker in #6440
- Remove Azure Service Bus integration and related tests by @sfmskywalker in #6443
- Add Resiliency to HTTP Request Activity by @sfmskywalker in #6447
- Add OpenTelemetry error span handling infrastructure by @sfmskywalker in #6427
- Stop DefaultBookmarkQueuePurger log spamming by @bobhauser in #6452
- Add workflow restart functionality for handling interruptions by @sfmskywalker in #6435
- Remove Agents by @sfmskywalker in #6461
- Revise retry policy by @sfmskywalker in #6465
- Simplify HttpRequestException handling in retry logic. by @sfmskywalker in #6466
- Update retry configuration to retry up to 4 minutes by @raymonddenhaan in #6470
- Harmonized launchSettings to be inline with appSettings by @MatthijsKrempel in #6467
- Patch ObjectConverter by @sfmskywalker in #6474
- Add support for passing initial variables by @sfmskywalker in #6476
- Fix serialization of composite activities by @sfmskywalker in #6478
- Fixes issue with FlowJoin(WaitAny) where activities can be executed multiple times by @bobhauser in #6480
- Bug - Update Scripting Activities To Resolve Auto Complete Issues by @KnibbsyMan in #6481
- Merge blueberry into master by @MariusVuscanNx in #6483
- Added missing functionalities from main as part of the blueberry merge by @MariusVuscanNx in #6487
- Refactor variable merging logic in ActivityExecutionContext by @sfmskywalker in #6493
- DateTimePicker UI Hint Missing by @KnibbsyMan in #6494
- Improved support for named workflow instances by @sfmskywalker in #6460
- Enhancement - Additional SQL Activity Features by @KnibbsyMan in #6475
- Refactor variable initialization for clarity and consistency by @sfmskywalker in #6495
- #6400 Add ClearProvider again to ActivityRegistry by @truthz03 in #6497
- Correct the issue with DeleteAsync not executing due to a premature p… by @Green7 in #6491
- Refactor activity execution state handling with IDisposable by @sfmskywalker in #6501
- Allow to configure JobRunner worker count by @truthz03 in #6498
- FEAT - Automatic SQL Expression Parameterization by @KnibbsyMan in #6503
- Remove message retry configuration in DispatchWorkflowRequestConsumer by @sfmskywalker in #6506
- Improve OTEL Spans and Tags for Workflow and Activity Execution by @sfmskywalker in #6502
- Handle conversion of enumerables to arrays in ObjectConverter by @sfmskywalke...
3.4.0 RC2
What's Changed
- Update Dapper Migrations by @sfmskywalker in #6520
- Fix DbContext pooling by @sfmskywalker in #6531
- Add support for activity output testing by @sfmskywalker in #6529
- Add strict type checking for variable parsing by @sfmskywalker in #6536
- Fix race condition in Distributed Workflow Runtime during same-workflow event publishing by @sfmskywalker in #6538
- Fix Output Persistence of Async Activities by @sfmskywalker in #6542
- Moved compression to separate feature by @raymonddenhaan in #6554
- Enhanced Delete of variable persistence manager to allow drivers filt… by @MariusVuscanNx in #6558
- Fix TenantId Missing in ActivityExecutionRecords and DB Context Isolation in Multitenancy by @sfmskywalker in #6549
- Fix infinitely waiting Alterations Workflow by @sfmskywalker in #6561
- Extended the incidents data to include the activityNodeId by @MariusVuscanNx in #6570
- Fix MessageReceived not setting Result by @sfmskywalker in #6562
- Fix Container Type Evaluation by @sfmskywalker in #6584
- Fix Dispatch Workflow Resumption by @sfmskywalker in #6586
- Remove alteration models and refactor to use JsonObject by @sfmskywalker in #6582
- Refactor variable storage driver mapping logic. by @sfmskywalker in #6588
- Make input variable names case-insensitive in dictionary by @sfmskywalker in #6590
- Fixed Log Persistence Mode Evaluation For Activity Execution by @sfmskywalker in #6595
- Remove default commit strategy by @sfmskywalker in #6599
- Implement internal state activity persistence and logging mechanisms by @sfmskywalker in #6601
- Remove obsolete properties and refactor activity evaluation by @sfmskywalker in #6603
- Start a new workflow trace when triggered from UI by @raymonddenhaan in #6606
Full Changelog: 3.4.0-rc1...3.4.0-rc2
2.15.1
What's Changed
- Upgrade MediatR to v12.4.1 to support updated AddMediatRClasses signature by @ssuermann in #6403
New Contributors
- @ssuermann made their first contribution in #6403
Full Changelog: 2.15.0...2.15.1
3.4.0 RC1
What's Changed
- Add functionality to execute nested workflows by @sfmskywalker in #6137
- Fix/32953 by @raymonddenhaan in #6147
- Add output serialization and deserialization support by @sfmskywalker in #6152
- Add support for waiting for child workflows in ExecuteWorkflow by @sfmskywalker in #6226
- Added DeleteVariablesAsync method for the workflow context by @MariusVuscanNx in #6290
- Back-port PolymorphicObjectConverter from 3.3 by @sfmskywalker in #6353
- Exposed incidents in the Elsa.Api.Client by @MariusVuscanNx in #6377
- Exposed incidents in the Elsa.Api.Client by @MariusVuscanNx in #6375
- Updated deprecated artifact by @MariusVuscanNx in #6378
- Updated deprecated artifacts by @MariusVuscanNx in #6379
- Controlled Commit States Feature Implementation by @sfmskywalker in #6343
- Added Alterations API to Client API library and updated server API co… by @yinzara in #6370
- FEAT: Implements SQL Activities by @KnibbsyMan in #6257
- ISSUE: Resolves Directory.Packages.props - Prevents Building by @KnibbsyMan in #6386
- Add obsolete ExecuteAsync overloads for job classes by @sfmskywalker in #6388
- Add customizable tenant header support for HTTP routing by @sfmskywalker in #6395
- Add missing request properties when starting workflow by @sfmskywalker in #6394
- Removes Built In SQL Editor Configuration by @KnibbsyMan in #6393
- Implement bulk cancellation using alterations and filters by @sfmskywalker in #6392
- Add toggle for WorkflowInboxCleanupJob in WorkflowRuntimeFeature by @sfmskywalker in #6418
- Add AddManyAsync method to activity execution stores by @sfmskywalker in #6416
- Improve APIs for extensibility and replaceability by @sfmskywalker in #6420
- Add AddManyAsync method to activity execution stores by @sfmskywalker in #6415
- ActivityExecutionContext Children property not populated by @bobhauser in #6423
- Add IBusRegistrationContext to Transport Configuration Actions by @CODEdire in #6413
- Add CorrelationId to NewBookmarkQueueItem by @pkaaz in #6412
- Enable configurable toggle for workflow inbox cleanup job by @sfmskywalker in #6429
- Update flowchart activity scheduling, implicit join (and FlowJoin/WaitAll) now only waits for followed connections by @bobhauser in #6406
- FEAT : Connection/Secret provider/handler to define generic configuration for Activities by @jdevillard in #6291
- Remove Telnyx module from the codebase by @sfmskywalker in #6437
- Remove Elsa.OrchardCore module. by @sfmskywalker in #6438
- Refactor WebhooksFeature to streamline configuration. by @sfmskywalker in #6440
- Remove Azure Service Bus integration and related tests by @sfmskywalker in #6443
- Add Resiliency to HTTP Request Activity by @sfmskywalker in #6447
- Add OpenTelemetry error span handling infrastructure by @sfmskywalker in #6427
- Stop DefaultBookmarkQueuePurger log spamming by @bobhauser in #6452
- Add workflow restart functionality for handling interruptions by @sfmskywalker in #6435
- Remove Agents by @sfmskywalker in #6461
- Revise retry policy by @sfmskywalker in #6465
- Simplify HttpRequestException handling in retry logic. by @sfmskywalker in #6466
- Update retry configuration to retry up to 4 minutes by @raymonddenhaan in #6470
- Harmonized launchSettings to be inline with appSettings by @MatthijsKrempel in #6467
- Patch ObjectConverter by @sfmskywalker in #6474
- Add support for passing initial variables by @sfmskywalker in #6476
- Fix serialization of composite activities by @sfmskywalker in #6478
- Fixes issue with FlowJoin(WaitAny) where activities can be executed multiple times by @bobhauser in #6480
- Bug - Update Scripting Activities To Resolve Auto Complete Issues by @KnibbsyMan in #6481
- Merge blueberry into master by @MariusVuscanNx in #6483
- Added missing functionalities from main as part of the blueberry merge by @MariusVuscanNx in #6487
- Refactor variable merging logic in ActivityExecutionContext by @sfmskywalker in #6493
- DateTimePicker UI Hint Missing by @KnibbsyMan in #6494
- Improved support for named workflow instances by @sfmskywalker in #6460
- Enhancement - Additional SQL Activity Features by @KnibbsyMan in #6475
- Refactor variable initialization for clarity and consistency by @sfmskywalker in #6495
- #6400 Add ClearProvider again to ActivityRegistry by @truthz03 in #6497
- Correct the issue with DeleteAsync not executing due to a premature p… by @Green7 in #6491
- Refactor activity execution state handling with IDisposable by @sfmskywalker in #6501
- Allow to configure JobRunner worker count by @truthz03 in #6498
- FEAT - Automatic SQL Expression Parameterization by @KnibbsyMan in #6503
- Remove message retry configuration in DispatchWorkflowRequestConsumer by @sfmskywalker in #6506
- Improve OTEL Spans and Tags for Workflow and Activity Execution by @sfmskywalker in #6502
- Handle conversion of enumerables to arrays in ObjectConverter by @sfmskywalker in #6508
- Catch exceptions and log instead of crashing by @yinzara in #6477
New Contributors
- @yinzara made their first contribution in #6370
- @KnibbsyMan made their first contribution in #6257
- @CODEdire made their first contribution in #6413
- @pkaaz made their first contribution in #6412
- @MatthijsKrempel made their first contribution in #6467
- @truthz03 made their first contribution in #6497
- @Green7 made their first contribution in #6491
Full Changelog: 3.3.2...3.4.0-rc1
3.3.5
Fixes
- Handle conversion of enumerables to arrays in ObjectConverter (#6508)
Full Changelog: 3.3.4...3.3.5
3.3.4
What's Changed
- Refactor WebhooksFeature to streamline configuration. by @sfmskywalker in #6441
Full Changelog: 3.3.3...3.3.4
2.15.0
What's Changed
- Allow to change encryption algorithm for secret properties by @4lexKislitsyn in #4591
- Support JavaScript and Liquid when sending MQTT messages by @dwoldo in #5461
- Fixes/rpa fix chromedriverdownload by @hcfv in #5690
- [FEAT] 2.x support net9 and drop end of life core versions by @bachampson in #6314
New Contributors
- @dwoldo made their first contribution in #5461
- @hcfv made their first contribution in #5690
- @bachampson made their first contribution in #6314
Full Changelog: 2.14.1...2.15.0
3.3.3
What's Changed
- Add obsolete ExecuteAsync overloads for job classes by @sfmskywalker in #6388
Full Changelog: 3.3.2...3.3.3
3.3.2
What's Changed
- Fix variable default value serialization and array type parsing by @sfmskywalker in #6328
- Refactor MongoDbStore to use EmptyToNull for TenantId assignments and add StringExtensions for null handling by @sfmskywalker in #6329
- Add SMTP server configuration and refactor email activity for improved error handling and attachment processing by @sfmskywalker in #6332
- Fix variable mapping and aliasing by @sfmskywalker in #6340
- Upgrade to NUKE 9.0.4 and fix automatic workflow generation by @lahma in #6339
- Restore methods for traversing activity execution context hierarchy by @sfmskywalker in #6341
- Validate unique input/output names before publishing workflow by @sfmskywalker in #6342
- Restore old workflow runtime API by @sfmskywalker in #6344
- Improve JSON array conversion in ObjectConverter by @sfmskywalker in #6350
- Add support for ExpandoObject attachments in email sending by @sfmskywalker in #6351
- Simplify DbContext creation with ActivatorUtilities. by @sfmskywalker in #6354
- Fix activity output by @sfmskywalker in #6358
- Fix Oracle EF Core Migrations by @sfmskywalker in #6359
- Fix output and input definition typing by @sfmskywalker in #6373
- Fix multitenancy support in Hangfire services and jobs by @sfmskywalker in #6380
Full Changelog: 3.3.1...3.3.2