diff --git a/src-ui/src/app/components/manage/workflows/workflows.component.spec.ts b/src-ui/src/app/components/manage/workflows/workflows.component.spec.ts
index e24e7f8b8..9f7039838 100644
--- a/src-ui/src/app/components/manage/workflows/workflows.component.spec.ts
+++ b/src-ui/src/app/components/manage/workflows/workflows.component.spec.ts
@@ -28,6 +28,7 @@ const workflows: Workflow[] = [
name: 'Workflow 1',
id: 1,
order: 1,
+ enabled: true,
triggers: [
{
id: 1,
@@ -47,6 +48,7 @@ const workflows: Workflow[] = [
name: 'Workflow 2',
id: 2,
order: 2,
+ enabled: true,
triggers: [
{
id: 2,
diff --git a/src-ui/src/app/components/manage/workflows/workflows.component.ts b/src-ui/src/app/components/manage/workflows/workflows.component.ts
index 0be2db3f3..70b7cb86e 100644
--- a/src-ui/src/app/components/manage/workflows/workflows.component.ts
+++ b/src-ui/src/app/components/manage/workflows/workflows.component.ts
@@ -8,7 +8,6 @@ import { ToastService } from 'src/app/services/toast.service'
import { PermissionsService } from 'src/app/services/permissions.service'
import {
WorkflowEditDialogComponent,
- DOCUMENT_SOURCE_OPTIONS,
WORKFLOW_TYPE_OPTIONS,
} from '../../common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component'
import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component'
diff --git a/src-ui/src/app/data/workflow.ts b/src-ui/src/app/data/workflow.ts
index 9351c2fec..740507a62 100644
--- a/src-ui/src/app/data/workflow.ts
+++ b/src-ui/src/app/data/workflow.ts
@@ -7,6 +7,8 @@ export interface Workflow extends ObjectWithId {
order: number
+ enabled: boolean
+
triggers: WorkflowTrigger[]
actions: WorkflowAction[]
diff --git a/src-ui/src/app/services/rest/workflow.service.spec.ts b/src-ui/src/app/services/rest/workflow.service.spec.ts
index 121fb9e21..28a382034 100644
--- a/src-ui/src/app/services/rest/workflow.service.spec.ts
+++ b/src-ui/src/app/services/rest/workflow.service.spec.ts
@@ -17,6 +17,7 @@ const workflows: Workflow[] = [
name: 'Workflow 1',
id: 1,
order: 1,
+ enabled: true,
triggers: [
{
id: 1,
@@ -36,6 +37,7 @@ const workflows: Workflow[] = [
name: 'Workflow 2',
id: 2,
order: 2,
+ enabled: true,
triggers: [
{
id: 2,
diff --git a/src/documents/consumer.py b/src/documents/consumer.py
index a88716f79..2c50aebd6 100644
--- a/src/documents/consumer.py
+++ b/src/documents/consumer.py
@@ -612,7 +612,7 @@ class Consumer(LoggingMixin):
file name filters, path filters or mail rule filter if specified
"""
overrides = DocumentMetadataOverrides()
- for workflow in Workflow.objects.all().order_by("order"):
+ for workflow in Workflow.objects.filter(enabled=True).order_by("order"):
template_overrides = DocumentMetadataOverrides()
if document_matches_workflow(
diff --git a/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py b/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py
index a24ce2f25..a04b7f4b8 100644
--- a/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py
+++ b/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py
@@ -205,6 +205,10 @@ class Migration(migrations.Migration):
models.CharField(max_length=256, unique=True, verbose_name="name"),
),
("order", models.IntegerField(default=0, verbose_name="order")),
+ (
+ "enabled",
+ models.BooleanField(default=True, verbose_name="enabled"),
+ ),
],
),
migrations.CreateModel(
diff --git a/src/documents/models.py b/src/documents/models.py
index 0880a146b..0031b2c43 100644
--- a/src/documents/models.py
+++ b/src/documents/models.py
@@ -1086,5 +1086,7 @@ class Workflow(models.Model):
verbose_name=_("actions"),
)
+ enabled = models.BooleanField(_("enabled"), default=True)
+
def __str__(self):
return f"Workflow: {self.name}"
diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py
index cdd342925..db0f8ed05 100644
--- a/src/documents/serialisers.py
+++ b/src/documents/serialisers.py
@@ -1371,6 +1371,7 @@ class WorkflowSerializer(serializers.ModelSerializer):
"id",
"name",
"order",
+ "enabled",
"triggers",
"actions",
]
diff --git a/src/documents/signals/handlers.py b/src/documents/signals/handlers.py
index 3fa10e95c..0dd6e6c21 100644
--- a/src/documents/signals/handlers.py
+++ b/src/documents/signals/handlers.py
@@ -529,6 +529,7 @@ def run_workflow_updated(sender, document: Document, logging_group=None, **kwarg
def run_workflow(trigger_type: WorkflowTrigger.WorkflowTriggerType, document: Document):
for workflow in Workflow.objects.filter(
+ enabled=True,
triggers__type=trigger_type,
).order_by("order"):
if matching.document_matches_workflow(