From d1da8b14ac3490124a921caedc8bf90e855e2ff8 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 2 Mar 2026 12:24:15 +0000
Subject: [PATCH 1/5] Initial plan
From 7af6dc869db3bfe65034a351dffb36dd66fba033 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 2 Mar 2026 12:47:03 +0000
Subject: [PATCH 2/5] Increase ActivityNodeId column max length from 450 to
1024 to fix truncation for deeply nested workflows
Add HasMaxLength(1024) for ActivityNodeId on ActivityExecutionRecord and
WorkflowExecutionLogRecord entities. Create V3_7 migrations for all 5
database providers (SqlServer, MySql, PostgreSql, Sqlite, Oracle).
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
---
.../Runtime/20260302123620_V3_7.Designer.cs | 512 +++++++++++++++++
.../Migrations/Runtime/20260302123620_V3_7.cs | 74 +++
.../RuntimeElsaDbContextModelSnapshot.cs | 8 +-
.../Runtime/20260302124146_V3_7.Designer.cs | 494 +++++++++++++++++
.../Migrations/Runtime/20260302124146_V3_7.cs | 66 +++
.../RuntimeElsaDbContextModelSnapshot.cs | 6 +-
.../Runtime/20260302123852_V3_7.Designer.cs | 512 +++++++++++++++++
.../Migrations/Runtime/20260302123852_V3_7.cs | 66 +++
.../RuntimeElsaDbContextModelSnapshot.cs | 8 +-
.../Runtime/20260302123412_V3_7.Designer.cs | 513 ++++++++++++++++++
.../Migrations/Runtime/20260302123412_V3_7.cs | 66 +++
.../RuntimeElsaDbContextModelSnapshot.cs | 8 +-
.../Runtime/20260302124019_V3_7.Designer.cs | 508 +++++++++++++++++
.../Migrations/Runtime/20260302124019_V3_7.cs | 28 +
.../RuntimeElsaDbContextModelSnapshot.cs | 4 +-
.../Modules/Runtime/Configurations.cs | 2 +
16 files changed, 2863 insertions(+), 12 deletions(-)
create mode 100644 src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/20260302123620_V3_7.Designer.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/20260302123620_V3_7.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/20260302124146_V3_7.Designer.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/20260302124146_V3_7.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.PostgreSql/Migrations/Runtime/20260302123852_V3_7.Designer.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.PostgreSql/Migrations/Runtime/20260302123852_V3_7.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.SqlServer/Migrations/Runtime/20260302123412_V3_7.Designer.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.SqlServer/Migrations/Runtime/20260302123412_V3_7.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.Sqlite/Migrations/Runtime/20260302124019_V3_7.Designer.cs
create mode 100644 src/modules/Elsa.Persistence.EFCore.Sqlite/Migrations/Runtime/20260302124019_V3_7.cs
diff --git a/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/20260302123620_V3_7.Designer.cs b/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/20260302123620_V3_7.Designer.cs
new file mode 100644
index 0000000000..175fc24536
--- /dev/null
+++ b/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/20260302123620_V3_7.Designer.cs
@@ -0,0 +1,512 @@
+//
+using System;
+using Elsa.Persistence.EFCore.Modules.Runtime;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace Elsa.Persistence.EFCore.MySql.Migrations.Runtime
+{
+ [DbContext(typeof(RuntimeElsaDbContext))]
+ [Migration("20260302123620_V3_7")]
+ partial class V3_7
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("Elsa")
+ .HasAnnotation("ProductVersion", "9.0.13")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
+
+ modelBuilder.Entity("Elsa.KeyValues.Entities.SerializedKeyValuePair", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("SerializedValue")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("TenantId")
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_SerializedKeyValuePair_TenantId");
+
+ b.ToTable("KeyValuePairs", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityName")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityNodeId")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("varchar(1024)");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityTypeVersion")
+ .HasColumnType("int");
+
+ b.Property("AggregateFaultCount")
+ .HasColumnType("int");
+
+ b.Property("CompletedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("HasBookmarks")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("SerializedActivityState")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedActivityStateCompressionAlgorithm")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedException")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedMetadata")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedOutputs")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedProperties")
+ .HasColumnType("longtext");
+
+ b.Property("StartedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("TenantId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ActivityId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityId");
+
+ b.HasIndex("ActivityName")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityName");
+
+ b.HasIndex("ActivityNodeId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityNodeId");
+
+ b.HasIndex("ActivityType")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityType");
+
+ b.HasIndex("ActivityTypeVersion")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityTypeVersion");
+
+ b.HasIndex("CompletedAt")
+ .HasDatabaseName("IX_ActivityExecutionRecord_CompletedAt");
+
+ b.HasIndex("HasBookmarks")
+ .HasDatabaseName("IX_ActivityExecutionRecord_HasBookmarks");
+
+ b.HasIndex("StartedAt")
+ .HasDatabaseName("IX_ActivityExecutionRecord_StartedAt");
+
+ b.HasIndex("Status")
+ .HasDatabaseName("IX_ActivityExecutionRecord_Status");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_TenantId");
+
+ b.HasIndex("WorkflowInstanceId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_WorkflowInstanceId");
+
+ b.HasIndex("ActivityType", "ActivityTypeVersion")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityType_ActivityTypeVersion");
+
+ b.ToTable("ActivityExecutionRecords", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.BookmarkQueueItem", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityTypeName")
+ .HasColumnType("varchar(255)");
+
+ b.Property("BookmarkId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("CorrelationId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("SerializedOptions")
+ .HasColumnType("longtext");
+
+ b.Property("StimulusHash")
+ .HasColumnType("varchar(255)");
+
+ b.Property("TenantId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("WorkflowInstanceId")
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "ActivityInstanceId" }, "IX_BookmarkQueueItem_ActivityInstanceId");
+
+ b.HasIndex(new[] { "ActivityTypeName" }, "IX_BookmarkQueueItem_ActivityTypeName");
+
+ b.HasIndex(new[] { "BookmarkId" }, "IX_BookmarkQueueItem_BookmarkId");
+
+ b.HasIndex(new[] { "CorrelationId" }, "IX_BookmarkQueueItem_CorrelationId");
+
+ b.HasIndex(new[] { "CreatedAt" }, "IX_BookmarkQueueItem_CreatedAt");
+
+ b.HasIndex(new[] { "StimulusHash" }, "IX_BookmarkQueueItem_StimulusHash");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_BookmarkQueueItem_TenantId");
+
+ b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_BookmarkQueueItem_WorkflowInstanceId");
+
+ b.ToTable("BookmarkQueueItems", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredBookmark", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityTypeName")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("CorrelationId")
+ .HasColumnType("longtext");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Hash")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("Name")
+ .HasColumnType("varchar(255)");
+
+ b.Property("SerializedMetadata")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("longtext");
+
+ b.Property("TenantId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "ActivityInstanceId" }, "IX_StoredBookmark_ActivityInstanceId");
+
+ b.HasIndex(new[] { "ActivityTypeName" }, "IX_StoredBookmark_ActivityTypeName");
+
+ b.HasIndex(new[] { "ActivityTypeName", "Hash" }, "IX_StoredBookmark_ActivityTypeName_Hash");
+
+ b.HasIndex(new[] { "ActivityTypeName", "Hash", "WorkflowInstanceId" }, "IX_StoredBookmark_ActivityTypeName_Hash_WorkflowInstanceId");
+
+ b.HasIndex(new[] { "CreatedAt" }, "IX_StoredBookmark_CreatedAt");
+
+ b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash");
+
+ b.HasIndex(new[] { "Name" }, "IX_StoredBookmark_Name");
+
+ b.HasIndex(new[] { "Name", "Hash" }, "IX_StoredBookmark_Name_Hash");
+
+ b.HasIndex(new[] { "Name", "Hash", "WorkflowInstanceId" }, "IX_StoredBookmark_Name_Hash_WorkflowInstanceId");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_StoredBookmark_TenantId");
+
+ b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId");
+
+ b.ToTable("Bookmarks", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("Hash")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Name")
+ .HasColumnType("varchar(255)");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("longtext");
+
+ b.Property("TenantId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("WorkflowDefinitionId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("WorkflowDefinitionVersionId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Hash")
+ .HasDatabaseName("IX_StoredTrigger_Hash");
+
+ b.HasIndex("Name")
+ .HasDatabaseName("IX_StoredTrigger_Name");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_StoredTrigger_TenantId");
+
+ b.HasIndex("WorkflowDefinitionId")
+ .HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionId");
+
+ b.HasIndex("WorkflowDefinitionVersionId")
+ .HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionVersionId");
+
+ b.HasIndex("WorkflowDefinitionId", "Hash", "ActivityId")
+ .IsUnique()
+ .HasDatabaseName("IX_StoredTrigger_Unique_WorkflowDefinitionId_Hash_ActivityId");
+
+ b.ToTable("Triggers", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityInstanceId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityName")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityNodeId")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("varchar(1024)");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityTypeVersion")
+ .HasColumnType("int");
+
+ b.Property("EventName")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Message")
+ .HasColumnType("longtext");
+
+ b.Property("ParentActivityInstanceId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Sequence")
+ .HasColumnType("bigint");
+
+ b.Property("SerializedActivityState")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("longtext");
+
+ b.Property("Source")
+ .HasColumnType("longtext");
+
+ b.Property("TenantId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Timestamp")
+ .HasColumnType("datetime(6)");
+
+ b.Property("WorkflowDefinitionId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("WorkflowDefinitionVersionId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("WorkflowVersion")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ActivityId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
+
+ b.HasIndex("ActivityInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId");
+
+ b.HasIndex("ActivityName")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityName");
+
+ b.HasIndex("ActivityNodeId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityNodeId");
+
+ b.HasIndex("ActivityType")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
+
+ b.HasIndex("ActivityTypeVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion");
+
+ b.HasIndex("EventName")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName");
+
+ b.HasIndex("ParentActivityInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId");
+
+ b.HasIndex("Sequence")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Sequence");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_TenantId");
+
+ b.HasIndex("Timestamp")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
+
+ b.HasIndex("WorkflowDefinitionId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId");
+
+ b.HasIndex("WorkflowDefinitionVersionId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionVersionId");
+
+ b.HasIndex("WorkflowInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
+
+ b.HasIndex("WorkflowVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion");
+
+ b.HasIndex("ActivityType", "ActivityTypeVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion");
+
+ b.HasIndex("Timestamp", "Sequence")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence");
+
+ b.ToTable("WorkflowExecutionLogRecords", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowInboxMessage", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ActivityTypeName")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("CorrelationId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ExpiresAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Hash")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("SerializedBookmarkPayload")
+ .HasColumnType("longtext");
+
+ b.Property("SerializedInput")
+ .HasColumnType("longtext");
+
+ b.Property("TenantId")
+ .HasColumnType("longtext");
+
+ b.Property("WorkflowInstanceId")
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "ActivityInstanceId" }, "IX_WorkflowInboxMessage_ActivityInstanceId");
+
+ b.HasIndex(new[] { "ActivityTypeName" }, "IX_WorkflowInboxMessage_ActivityTypeName");
+
+ b.HasIndex(new[] { "CorrelationId" }, "IX_WorkflowInboxMessage_CorrelationId");
+
+ b.HasIndex(new[] { "CreatedAt" }, "IX_WorkflowInboxMessage_CreatedAt");
+
+ b.HasIndex(new[] { "ExpiresAt" }, "IX_WorkflowInboxMessage_ExpiresAt");
+
+ b.HasIndex(new[] { "Hash" }, "IX_WorkflowInboxMessage_Hash");
+
+ b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_WorkflowInboxMessage_WorkflowInstanceId");
+
+ b.ToTable("WorkflowInboxMessages", "Elsa");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/20260302123620_V3_7.cs b/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/20260302123620_V3_7.cs
new file mode 100644
index 0000000000..9de5b0e2e2
--- /dev/null
+++ b/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/20260302123620_V3_7.cs
@@ -0,0 +1,74 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Elsa.Persistence.EFCore.MySql.Migrations.Runtime
+{
+ ///
+ public partial class V3_7 : Migration
+ {
+ private readonly Elsa.Persistence.EFCore.IElsaDbContextSchema _schema;
+
+ ///
+ public V3_7(Elsa.Persistence.EFCore.IElsaDbContextSchema schema)
+ {
+ _schema = schema;
+ }
+
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "ActivityNodeId",
+ schema: _schema.Schema,
+ table: "WorkflowExecutionLogRecords",
+ type: "varchar(1024)",
+ maxLength: 1024,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "varchar(255)")
+ .Annotation("MySql:CharSet", "utf8mb4")
+ .OldAnnotation("MySql:CharSet", "utf8mb4");
+
+ migrationBuilder.AlterColumn(
+ name: "ActivityNodeId",
+ schema: _schema.Schema,
+ table: "ActivityExecutionRecords",
+ type: "varchar(1024)",
+ maxLength: 1024,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "varchar(255)")
+ .Annotation("MySql:CharSet", "utf8mb4")
+ .OldAnnotation("MySql:CharSet", "utf8mb4");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "ActivityNodeId",
+ schema: _schema.Schema,
+ table: "WorkflowExecutionLogRecords",
+ type: "varchar(255)",
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "varchar(1024)",
+ oldMaxLength: 1024)
+ .Annotation("MySql:CharSet", "utf8mb4")
+ .OldAnnotation("MySql:CharSet", "utf8mb4");
+
+ migrationBuilder.AlterColumn(
+ name: "ActivityNodeId",
+ schema: _schema.Schema,
+ table: "ActivityExecutionRecords",
+ type: "varchar(255)",
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "varchar(1024)",
+ oldMaxLength: 1024)
+ .Annotation("MySql:CharSet", "utf8mb4")
+ .OldAnnotation("MySql:CharSet", "utf8mb4");
+ }
+ }
+}
diff --git a/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs
index f7add71af7..2b541f2bbe 100644
--- a/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs
+++ b/src/modules/Elsa.Persistence.EFCore.MySql/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs
@@ -18,7 +18,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("Elsa")
- .HasAnnotation("ProductVersion", "9.0.11")
+ .HasAnnotation("ProductVersion", "9.0.13")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
@@ -56,7 +56,8 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("ActivityNodeId")
.IsRequired()
- .HasColumnType("varchar(255)");
+ .HasMaxLength(1024)
+ .HasColumnType("varchar(1024)");
b.Property("ActivityType")
.IsRequired()
@@ -339,7 +340,8 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("ActivityNodeId")
.IsRequired()
- .HasColumnType("varchar(255)");
+ .HasMaxLength(1024)
+ .HasColumnType("varchar(1024)");
b.Property("ActivityType")
.IsRequired()
diff --git a/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/20260302124146_V3_7.Designer.cs b/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/20260302124146_V3_7.Designer.cs
new file mode 100644
index 0000000000..16e040273f
--- /dev/null
+++ b/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/20260302124146_V3_7.Designer.cs
@@ -0,0 +1,494 @@
+//
+using System;
+using Elsa.Persistence.EFCore.Modules.Runtime;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Oracle.EntityFrameworkCore.Metadata;
+
+#nullable disable
+
+namespace Elsa.Persistence.EFCore.Oracle.Migrations.Runtime
+{
+ [DbContext(typeof(RuntimeElsaDbContext))]
+ [Migration("20260302124146_V3_7")]
+ partial class V3_7
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("Elsa")
+ .HasAnnotation("ProductVersion", "8.0.12")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("Elsa.KeyValues.Entities.SerializedKeyValuePair", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("SerializedValue")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(2000)");
+
+ b.Property("TenantId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_SerializedKeyValuePair_TenantId");
+
+ b.ToTable("KeyValuePairs", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityName")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityNodeId")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("NVARCHAR2(1024)");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityTypeVersion")
+ .HasColumnType("NUMBER(10)");
+
+ b.Property("CompletedAt")
+ .HasColumnType("TIMESTAMP(7) WITH TIME ZONE");
+
+ b.Property("HasBookmarks")
+ .HasColumnType("BOOLEAN");
+
+ b.Property("SerializedActivityState")
+ .HasColumnType("NCLOB");
+
+ b.Property("SerializedActivityStateCompressionAlgorithm")
+ .HasColumnType("NVARCHAR2(2000)");
+
+ b.Property("SerializedException")
+ .HasColumnType("NCLOB");
+
+ b.Property("SerializedOutputs")
+ .HasColumnType("NCLOB");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("NCLOB");
+
+ b.Property("SerializedProperties")
+ .HasColumnType("NCLOB");
+
+ b.Property("StartedAt")
+ .HasColumnType("TIMESTAMP(7) WITH TIME ZONE");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("TenantId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ActivityId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityId");
+
+ b.HasIndex("ActivityName")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityName");
+
+ b.HasIndex("ActivityNodeId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityNodeId");
+
+ b.HasIndex("ActivityType")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityType");
+
+ b.HasIndex("ActivityTypeVersion")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityTypeVersion");
+
+ b.HasIndex("CompletedAt")
+ .HasDatabaseName("IX_ActivityExecutionRecord_CompletedAt");
+
+ b.HasIndex("HasBookmarks")
+ .HasDatabaseName("IX_ActivityExecutionRecord_HasBookmarks");
+
+ b.HasIndex("StartedAt")
+ .HasDatabaseName("IX_ActivityExecutionRecord_StartedAt");
+
+ b.HasIndex("Status")
+ .HasDatabaseName("IX_ActivityExecutionRecord_Status");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_TenantId");
+
+ b.HasIndex("WorkflowInstanceId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_WorkflowInstanceId");
+
+ b.HasIndex("ActivityType", "ActivityTypeVersion")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityType_ActivityTypeVersion");
+
+ b.ToTable("ActivityExecutionRecords", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.BookmarkQueueItem", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityTypeName")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("BookmarkId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("CorrelationId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("TIMESTAMP(7) WITH TIME ZONE");
+
+ b.Property("SerializedOptions")
+ .HasColumnType("NVARCHAR2(2000)");
+
+ b.Property("StimulusHash")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("TenantId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("WorkflowInstanceId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "ActivityInstanceId" }, "IX_BookmarkQueueItem_ActivityInstanceId");
+
+ b.HasIndex(new[] { "ActivityTypeName" }, "IX_BookmarkQueueItem_ActivityTypeName");
+
+ b.HasIndex(new[] { "BookmarkId" }, "IX_BookmarkQueueItem_BookmarkId");
+
+ b.HasIndex(new[] { "CorrelationId" }, "IX_BookmarkQueueItem_CorrelationId");
+
+ b.HasIndex(new[] { "CreatedAt" }, "IX_BookmarkQueueItem_CreatedAt");
+
+ b.HasIndex(new[] { "StimulusHash" }, "IX_BookmarkQueueItem_StimulusHash");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_BookmarkQueueItem_TenantId");
+
+ b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_BookmarkQueueItem_WorkflowInstanceId");
+
+ b.ToTable("BookmarkQueueItems", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredBookmark", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityTypeName")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("CorrelationId")
+ .HasColumnType("NVARCHAR2(2000)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("TIMESTAMP(7) WITH TIME ZONE");
+
+ b.Property("Hash")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("SerializedMetadata")
+ .HasColumnType("NCLOB");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("NCLOB");
+
+ b.Property("TenantId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "ActivityInstanceId" }, "IX_StoredBookmark_ActivityInstanceId");
+
+ b.HasIndex(new[] { "ActivityTypeName" }, "IX_StoredBookmark_ActivityTypeName");
+
+ b.HasIndex(new[] { "ActivityTypeName", "Hash" }, "IX_StoredBookmark_ActivityTypeName_Hash");
+
+ b.HasIndex(new[] { "ActivityTypeName", "Hash", "WorkflowInstanceId" }, "IX_StoredBookmark_ActivityTypeName_Hash_WorkflowInstanceId");
+
+ b.HasIndex(new[] { "CreatedAt" }, "IX_StoredBookmark_CreatedAt");
+
+ b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_StoredBookmark_TenantId");
+
+ b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId");
+
+ b.ToTable("Bookmarks", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(2000)");
+
+ b.Property("Hash")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("NCLOB");
+
+ b.Property("TenantId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("WorkflowDefinitionId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("WorkflowDefinitionVersionId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Hash")
+ .HasDatabaseName("IX_StoredTrigger_Hash");
+
+ b.HasIndex("Name")
+ .HasDatabaseName("IX_StoredTrigger_Name");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_StoredTrigger_TenantId");
+
+ b.HasIndex("WorkflowDefinitionId")
+ .HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionId");
+
+ b.HasIndex("WorkflowDefinitionVersionId")
+ .HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionVersionId");
+
+ b.ToTable("Triggers", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityInstanceId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityName")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityNodeId")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("NVARCHAR2(1024)");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityTypeVersion")
+ .HasColumnType("NUMBER(10)");
+
+ b.Property("EventName")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("Message")
+ .HasColumnType("NVARCHAR2(2000)");
+
+ b.Property("ParentActivityInstanceId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("Sequence")
+ .HasColumnType("NUMBER(19)");
+
+ b.Property("SerializedActivityState")
+ .HasColumnType("NCLOB");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("NCLOB");
+
+ b.Property("Source")
+ .HasColumnType("NVARCHAR2(2000)");
+
+ b.Property("TenantId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("Timestamp")
+ .HasColumnType("TIMESTAMP(7) WITH TIME ZONE");
+
+ b.Property("WorkflowDefinitionId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("WorkflowDefinitionVersionId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("WorkflowVersion")
+ .HasColumnType("NUMBER(10)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ActivityId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
+
+ b.HasIndex("ActivityInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId");
+
+ b.HasIndex("ActivityName")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityName");
+
+ b.HasIndex("ActivityNodeId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityNodeId");
+
+ b.HasIndex("ActivityType")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
+
+ b.HasIndex("ActivityTypeVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion");
+
+ b.HasIndex("EventName")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName");
+
+ b.HasIndex("ParentActivityInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId");
+
+ b.HasIndex("Sequence")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Sequence");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_TenantId");
+
+ b.HasIndex("Timestamp")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
+
+ b.HasIndex("WorkflowDefinitionId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId");
+
+ b.HasIndex("WorkflowDefinitionVersionId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionVersionId");
+
+ b.HasIndex("WorkflowInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
+
+ b.HasIndex("WorkflowVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion");
+
+ b.HasIndex("ActivityType", "ActivityTypeVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion");
+
+ b.HasIndex("Timestamp", "Sequence")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence");
+
+ b.ToTable("WorkflowExecutionLogRecords", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowInboxMessage", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("ActivityTypeName")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("CorrelationId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("TIMESTAMP(7) WITH TIME ZONE");
+
+ b.Property("ExpiresAt")
+ .HasColumnType("TIMESTAMP(7) WITH TIME ZONE");
+
+ b.Property("Hash")
+ .IsRequired()
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.Property("SerializedBookmarkPayload")
+ .HasColumnType("NCLOB");
+
+ b.Property("SerializedInput")
+ .HasColumnType("NCLOB");
+
+ b.Property("TenantId")
+ .HasColumnType("NVARCHAR2(2000)");
+
+ b.Property("WorkflowInstanceId")
+ .HasColumnType("NVARCHAR2(450)");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "ActivityInstanceId" }, "IX_WorkflowInboxMessage_ActivityInstanceId");
+
+ b.HasIndex(new[] { "ActivityTypeName" }, "IX_WorkflowInboxMessage_ActivityTypeName");
+
+ b.HasIndex(new[] { "CorrelationId" }, "IX_WorkflowInboxMessage_CorrelationId");
+
+ b.HasIndex(new[] { "CreatedAt" }, "IX_WorkflowInboxMessage_CreatedAt");
+
+ b.HasIndex(new[] { "ExpiresAt" }, "IX_WorkflowInboxMessage_ExpiresAt");
+
+ b.HasIndex(new[] { "Hash" }, "IX_WorkflowInboxMessage_Hash");
+
+ b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_WorkflowInboxMessage_WorkflowInstanceId");
+
+ b.ToTable("WorkflowInboxMessages", "Elsa");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/20260302124146_V3_7.cs b/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/20260302124146_V3_7.cs
new file mode 100644
index 0000000000..c0623baeaf
--- /dev/null
+++ b/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/20260302124146_V3_7.cs
@@ -0,0 +1,66 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Elsa.Persistence.EFCore.Oracle.Migrations.Runtime
+{
+ ///
+ public partial class V3_7 : Migration
+ {
+ private readonly Elsa.Persistence.EFCore.IElsaDbContextSchema _schema;
+
+ ///
+ public V3_7(Elsa.Persistence.EFCore.IElsaDbContextSchema schema)
+ {
+ _schema = schema;
+ }
+
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "ActivityNodeId",
+ schema: _schema.Schema,
+ table: "WorkflowExecutionLogRecords",
+ type: "NVARCHAR2(1024)",
+ maxLength: 1024,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "NVARCHAR2(450)");
+
+ migrationBuilder.AlterColumn(
+ name: "ActivityNodeId",
+ schema: _schema.Schema,
+ table: "ActivityExecutionRecords",
+ type: "NVARCHAR2(1024)",
+ maxLength: 1024,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "NVARCHAR2(450)");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "ActivityNodeId",
+ schema: _schema.Schema,
+ table: "WorkflowExecutionLogRecords",
+ type: "NVARCHAR2(450)",
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "NVARCHAR2(1024)",
+ oldMaxLength: 1024);
+
+ migrationBuilder.AlterColumn(
+ name: "ActivityNodeId",
+ schema: _schema.Schema,
+ table: "ActivityExecutionRecords",
+ type: "NVARCHAR2(450)",
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "NVARCHAR2(1024)",
+ oldMaxLength: 1024);
+ }
+ }
+}
diff --git a/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs
index cdee3d63e3..de6eb18490 100644
--- a/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs
+++ b/src/modules/Elsa.Persistence.EFCore.Oracle/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs
@@ -56,7 +56,8 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("ActivityNodeId")
.IsRequired()
- .HasColumnType("NVARCHAR2(450)");
+ .HasMaxLength(1024)
+ .HasColumnType("NVARCHAR2(1024)");
b.Property("ActivityType")
.IsRequired()
@@ -340,7 +341,8 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("ActivityNodeId")
.IsRequired()
- .HasColumnType("NVARCHAR2(450)");
+ .HasMaxLength(1024)
+ .HasColumnType("NVARCHAR2(1024)");
b.Property("ActivityType")
.IsRequired()
diff --git a/src/modules/Elsa.Persistence.EFCore.PostgreSql/Migrations/Runtime/20260302123852_V3_7.Designer.cs b/src/modules/Elsa.Persistence.EFCore.PostgreSql/Migrations/Runtime/20260302123852_V3_7.Designer.cs
new file mode 100644
index 0000000000..d7b65a0305
--- /dev/null
+++ b/src/modules/Elsa.Persistence.EFCore.PostgreSql/Migrations/Runtime/20260302123852_V3_7.Designer.cs
@@ -0,0 +1,512 @@
+//
+using System;
+using Elsa.Persistence.EFCore.Modules.Runtime;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace Elsa.Persistence.EFCore.PostgreSql.Migrations.Runtime
+{
+ [DbContext(typeof(RuntimeElsaDbContext))]
+ [Migration("20260302123852_V3_7")]
+ partial class V3_7
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("Elsa")
+ .HasAnnotation("ProductVersion", "9.0.13")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Elsa.KeyValues.Entities.SerializedKeyValuePair", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("SerializedValue")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_SerializedKeyValuePair_TenantId");
+
+ b.ToTable("KeyValuePairs", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ActivityName")
+ .HasColumnType("text");
+
+ b.Property("ActivityNodeId")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ActivityTypeVersion")
+ .HasColumnType("integer");
+
+ b.Property("AggregateFaultCount")
+ .HasColumnType("integer");
+
+ b.Property("CompletedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("HasBookmarks")
+ .HasColumnType("boolean");
+
+ b.Property("SerializedActivityState")
+ .HasColumnType("text");
+
+ b.Property("SerializedActivityStateCompressionAlgorithm")
+ .HasColumnType("text");
+
+ b.Property("SerializedException")
+ .HasColumnType("text");
+
+ b.Property("SerializedMetadata")
+ .HasColumnType("text");
+
+ b.Property("SerializedOutputs")
+ .HasColumnType("text");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("text");
+
+ b.Property("SerializedProperties")
+ .HasColumnType("text");
+
+ b.Property("StartedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ActivityId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityId");
+
+ b.HasIndex("ActivityName")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityName");
+
+ b.HasIndex("ActivityNodeId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityNodeId");
+
+ b.HasIndex("ActivityType")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityType");
+
+ b.HasIndex("ActivityTypeVersion")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityTypeVersion");
+
+ b.HasIndex("CompletedAt")
+ .HasDatabaseName("IX_ActivityExecutionRecord_CompletedAt");
+
+ b.HasIndex("HasBookmarks")
+ .HasDatabaseName("IX_ActivityExecutionRecord_HasBookmarks");
+
+ b.HasIndex("StartedAt")
+ .HasDatabaseName("IX_ActivityExecutionRecord_StartedAt");
+
+ b.HasIndex("Status")
+ .HasDatabaseName("IX_ActivityExecutionRecord_Status");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_TenantId");
+
+ b.HasIndex("WorkflowInstanceId")
+ .HasDatabaseName("IX_ActivityExecutionRecord_WorkflowInstanceId");
+
+ b.HasIndex("ActivityType", "ActivityTypeVersion")
+ .HasDatabaseName("IX_ActivityExecutionRecord_ActivityType_ActivityTypeVersion");
+
+ b.ToTable("ActivityExecutionRecords", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.BookmarkQueueItem", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("text");
+
+ b.Property("ActivityTypeName")
+ .HasColumnType("text");
+
+ b.Property("BookmarkId")
+ .HasColumnType("text");
+
+ b.Property("CorrelationId")
+ .HasColumnType("text");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("SerializedOptions")
+ .HasColumnType("text");
+
+ b.Property("StimulusHash")
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("WorkflowInstanceId")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "ActivityInstanceId" }, "IX_BookmarkQueueItem_ActivityInstanceId");
+
+ b.HasIndex(new[] { "ActivityTypeName" }, "IX_BookmarkQueueItem_ActivityTypeName");
+
+ b.HasIndex(new[] { "BookmarkId" }, "IX_BookmarkQueueItem_BookmarkId");
+
+ b.HasIndex(new[] { "CorrelationId" }, "IX_BookmarkQueueItem_CorrelationId");
+
+ b.HasIndex(new[] { "CreatedAt" }, "IX_BookmarkQueueItem_CreatedAt");
+
+ b.HasIndex(new[] { "StimulusHash" }, "IX_BookmarkQueueItem_StimulusHash");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_BookmarkQueueItem_TenantId");
+
+ b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_BookmarkQueueItem_WorkflowInstanceId");
+
+ b.ToTable("BookmarkQueueItems", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredBookmark", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("text");
+
+ b.Property("ActivityTypeName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CorrelationId")
+ .HasColumnType("text");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Hash")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .HasColumnType("text");
+
+ b.Property("SerializedMetadata")
+ .HasColumnType("text");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "ActivityInstanceId" }, "IX_StoredBookmark_ActivityInstanceId");
+
+ b.HasIndex(new[] { "ActivityTypeName" }, "IX_StoredBookmark_ActivityTypeName");
+
+ b.HasIndex(new[] { "ActivityTypeName", "Hash" }, "IX_StoredBookmark_ActivityTypeName_Hash");
+
+ b.HasIndex(new[] { "ActivityTypeName", "Hash", "WorkflowInstanceId" }, "IX_StoredBookmark_ActivityTypeName_Hash_WorkflowInstanceId");
+
+ b.HasIndex(new[] { "CreatedAt" }, "IX_StoredBookmark_CreatedAt");
+
+ b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash");
+
+ b.HasIndex(new[] { "Name" }, "IX_StoredBookmark_Name");
+
+ b.HasIndex(new[] { "Name", "Hash" }, "IX_StoredBookmark_Name_Hash");
+
+ b.HasIndex(new[] { "Name", "Hash", "WorkflowInstanceId" }, "IX_StoredBookmark_Name_Hash_WorkflowInstanceId");
+
+ b.HasIndex(new[] { "TenantId" }, "IX_StoredBookmark_TenantId");
+
+ b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId");
+
+ b.ToTable("Bookmarks", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Hash")
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .HasColumnType("text");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("WorkflowDefinitionId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("WorkflowDefinitionVersionId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Hash")
+ .HasDatabaseName("IX_StoredTrigger_Hash");
+
+ b.HasIndex("Name")
+ .HasDatabaseName("IX_StoredTrigger_Name");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_StoredTrigger_TenantId");
+
+ b.HasIndex("WorkflowDefinitionId")
+ .HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionId");
+
+ b.HasIndex("WorkflowDefinitionVersionId")
+ .HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionVersionId");
+
+ b.HasIndex("WorkflowDefinitionId", "Hash", "ActivityId")
+ .IsUnique()
+ .HasDatabaseName("IX_StoredTrigger_Unique_WorkflowDefinitionId_Hash_ActivityId");
+
+ b.ToTable("Triggers", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ActivityInstanceId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ActivityName")
+ .HasColumnType("text");
+
+ b.Property("ActivityNodeId")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ActivityTypeVersion")
+ .HasColumnType("integer");
+
+ b.Property("EventName")
+ .HasColumnType("text");
+
+ b.Property("Message")
+ .HasColumnType("text");
+
+ b.Property("ParentActivityInstanceId")
+ .HasColumnType("text");
+
+ b.Property("Sequence")
+ .HasColumnType("bigint");
+
+ b.Property("SerializedActivityState")
+ .HasColumnType("text");
+
+ b.Property("SerializedPayload")
+ .HasColumnType("text");
+
+ b.Property("Source")
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("Timestamp")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("WorkflowDefinitionId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("WorkflowDefinitionVersionId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("WorkflowVersion")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ActivityId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
+
+ b.HasIndex("ActivityInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId");
+
+ b.HasIndex("ActivityName")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityName");
+
+ b.HasIndex("ActivityNodeId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityNodeId");
+
+ b.HasIndex("ActivityType")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
+
+ b.HasIndex("ActivityTypeVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion");
+
+ b.HasIndex("EventName")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName");
+
+ b.HasIndex("ParentActivityInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId");
+
+ b.HasIndex("Sequence")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Sequence");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_TenantId");
+
+ b.HasIndex("Timestamp")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
+
+ b.HasIndex("WorkflowDefinitionId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId");
+
+ b.HasIndex("WorkflowDefinitionVersionId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionVersionId");
+
+ b.HasIndex("WorkflowInstanceId")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
+
+ b.HasIndex("WorkflowVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion");
+
+ b.HasIndex("ActivityType", "ActivityTypeVersion")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion");
+
+ b.HasIndex("Timestamp", "Sequence")
+ .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence");
+
+ b.ToTable("WorkflowExecutionLogRecords", "Elsa");
+ });
+
+ modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowInboxMessage", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("ActivityInstanceId")
+ .HasColumnType("text");
+
+ b.Property("ActivityTypeName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property