diff --git a/src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionManager.cs b/src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionManager.cs
index 474dd8b48..74d8449e3 100644
--- a/src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionManager.cs
+++ b/src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionManager.cs
@@ -103,19 +103,18 @@ public class WorkflowDefinitionManager : IWorkflowDefinitionManager
///
public async Task RevertVersionAsync(string definitionId, int version, CancellationToken cancellationToken = default)
{
- var filter = new WorkflowDefinitionFilter { DefinitionId = definitionId, VersionOptions = VersionOptions.LatestAndPublished };
- var publishedAndLatestVersions = (await _store.FindManyAsync(filter, cancellationToken)).ToList();
-
- if (publishedAndLatestVersions.Any(v => v.Version == version))
- throw new Exception("Latest or published versions cannot be reverted");
-
- var latestVersion = publishedAndLatestVersions.First(v => v.IsLatest);
- latestVersion.IsLatest = false;
- await _store.SaveAsync(latestVersion, cancellationToken);
+ var filter = new WorkflowDefinitionFilter { DefinitionId = definitionId, VersionOptions = VersionOptions.Latest };
+ var latestVersion = await _store.FindAsync(filter, cancellationToken);
+
+ if(latestVersion != null)
+ {
+ latestVersion.IsLatest = false;
+ await _store.SaveAsync(latestVersion, cancellationToken);
+ }
var draft = await _workflowPublisher.GetDraftAsync(definitionId, VersionOptions.SpecificVersion(version), cancellationToken);
draft!.Id = _identityGenerator.GenerateId();
- draft.Version = latestVersion.Version + 1;
+ draft.Version = (latestVersion?.Version ?? 0) + 1;
draft.IsLatest = true;
await _store.SaveAsync(draft, cancellationToken);