diff --git a/src/Database/EntityFramework/Migrations/20230912144216_R_0.4.2.Designer.cs b/src/Database/EntityFramework/Migrations/20230912144216_R_0.4.2.Designer.cs
new file mode 100644
index 000000000..5185bdd8b
--- /dev/null
+++ b/src/Database/EntityFramework/Migrations/20230912144216_R_0.4.2.Designer.cs
@@ -0,0 +1,391 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Monai.Deploy.InformaticsGateway.Database.EntityFramework;
+
+#nullable disable
+
+namespace Monai.Deploy.InformaticsGateway.Database.Migrations
+{
+ [DbContext(typeof(InformaticsGatewayContext))]
+ [Migration("20230912144216_R_0.4.2")]
+ partial class R_042
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "6.0.21");
+
+ modelBuilder.Entity("Monai.Deploy.InformaticsGateway.Api.DestinationApplicationEntity", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.Property("AeTitle")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeCreated")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeUpdated")
+ .HasColumnType("TEXT");
+
+ b.Property("HostIp")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Port")
+ .HasColumnType("INTEGER");
+
+ b.Property("TenantId")
+ .HasColumnType("TEXT");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Name");
+
+ b.HasIndex(new[] { "Name" }, "idx_destination_name")
+ .IsUnique();
+
+ b.HasIndex(new[] { "Name", "AeTitle", "HostIp", "Port" }, "idx_source_all")
+ .IsUnique();
+
+ b.ToTable("DestinationApplicationEntities");
+ });
+
+ modelBuilder.Entity("Monai.Deploy.InformaticsGateway.Api.DicomAssociationInfo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("TEXT");
+
+ b.Property("CalledAeTitle")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("CallingAeTitle")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("CorrelationId")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeCreated")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeDisconnected")
+ .HasColumnType("TEXT");
+
+ b.Property("Duration")
+ .HasColumnType("TEXT");
+
+ b.Property("Errors")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("FileCount")
+ .HasColumnType("INTEGER");
+
+ b.Property("PayloadIds")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("RemoteHost")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("RemotePort")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("DicomAssociationHistories");
+ });
+
+ modelBuilder.Entity("Monai.Deploy.InformaticsGateway.Api.MonaiApplicationEntity", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("TEXT")
+ .HasColumnOrder(0);
+
+ b.Property("AeTitle")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("AllowedSopClasses")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeCreated")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeUpdated")
+ .HasColumnType("TEXT");
+
+ b.Property("Grouping")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("IgnoredSopClasses")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("PlugInAssemblies")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TenantId")
+ .HasColumnType("TEXT");
+
+ b.Property("Timeout")
+ .HasColumnType("INTEGER");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("Workflows")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Name");
+
+ b.HasIndex(new[] { "Name" }, "idx_monaiae_name")
+ .IsUnique();
+
+ b.ToTable("MonaiApplicationEntities");
+ });
+
+ modelBuilder.Entity("Monai.Deploy.InformaticsGateway.Api.Rest.InferenceRequest", b =>
+ {
+ b.Property("InferenceRequestId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeCreated")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("InputMetadata")
+ .HasColumnType("TEXT");
+
+ b.Property("InputResources")
+ .HasColumnType("TEXT");
+
+ b.Property("OutputResources")
+ .HasColumnType("TEXT");
+
+ b.Property("Priority")
+ .HasColumnType("INTEGER");
+
+ b.Property("State")
+ .HasColumnType("INTEGER");
+
+ b.Property("Status")
+ .HasColumnType("INTEGER");
+
+ b.Property("TransactionId")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TryCount")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("InferenceRequestId");
+
+ b.HasIndex(new[] { "InferenceRequestId" }, "idx_inferencerequest_inferencerequestid")
+ .IsUnique();
+
+ b.HasIndex(new[] { "State" }, "idx_inferencerequest_state");
+
+ b.HasIndex(new[] { "TransactionId" }, "idx_inferencerequest_transactionid")
+ .IsUnique();
+
+ b.ToTable("InferenceRequests");
+ });
+
+ modelBuilder.Entity("Monai.Deploy.InformaticsGateway.Api.SourceApplicationEntity", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.Property("AeTitle")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeCreated")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeUpdated")
+ .HasColumnType("TEXT");
+
+ b.Property("HostIp")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TenantId")
+ .HasColumnType("TEXT");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Name");
+
+ b.HasIndex(new[] { "Name", "AeTitle", "HostIp" }, "idx_source_all")
+ .IsUnique()
+ .HasDatabaseName("idx_source_all1");
+
+ b.HasIndex(new[] { "Name" }, "idx_source_name")
+ .IsUnique();
+
+ b.ToTable("SourceApplicationEntities");
+ });
+
+ modelBuilder.Entity("Monai.Deploy.InformaticsGateway.Api.Storage.Payload", b =>
+ {
+ b.Property("PayloadId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("TEXT");
+
+ b.Property("CorrelationId")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("DataOrigins")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("DataTrigger")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeCreated")
+ .HasColumnType("TEXT");
+
+ b.Property("Files")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Key")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("MachineName")
+ .HasColumnType("TEXT");
+
+ b.Property("RetryCount")
+ .HasColumnType("INTEGER");
+
+ b.Property("State")
+ .HasColumnType("INTEGER");
+
+ b.Property("TaskId")
+ .HasColumnType("TEXT");
+
+ b.Property("Timeout")
+ .HasColumnType("INTEGER");
+
+ b.Property("WorkflowInstanceId")
+ .HasColumnType("TEXT");
+
+ b.HasKey("PayloadId");
+
+ b.HasIndex(new[] { "CorrelationId", "PayloadId" }, "idx_payload_ids")
+ .IsUnique();
+
+ b.HasIndex(new[] { "State" }, "idx_payload_state");
+
+ b.ToTable("Payloads");
+ });
+
+ modelBuilder.Entity("Monai.Deploy.InformaticsGateway.Api.VirtualApplicationEntity", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("TEXT")
+ .HasColumnOrder(0);
+
+ b.Property("CreatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeCreated")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeUpdated")
+ .HasColumnType("TEXT");
+
+ b.Property("PlugInAssemblies")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("TEXT");
+
+ b.Property("VirtualAeTitle")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Workflows")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Name");
+
+ b.HasIndex(new[] { "Name" }, "idx_virtualae_name")
+ .IsUnique();
+
+ b.ToTable("VirtualApplicationEntities");
+ });
+
+ modelBuilder.Entity("Monai.Deploy.InformaticsGateway.Database.Api.StorageMetadataWrapper", b =>
+ {
+ b.Property("CorrelationId")
+ .HasColumnType("TEXT");
+
+ b.Property("Identity")
+ .HasColumnType("TEXT");
+
+ b.Property("DateTimeCreated")
+ .HasColumnType("TEXT");
+
+ b.Property("IsUploaded")
+ .HasColumnType("INTEGER");
+
+ b.Property("TypeName")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("CorrelationId", "Identity");
+
+ b.HasIndex(new[] { "CorrelationId" }, "idx_storagemetadata_correlation");
+
+ b.HasIndex(new[] { "CorrelationId", "Identity" }, "idx_storagemetadata_ids");
+
+ b.HasIndex(new[] { "IsUploaded" }, "idx_storagemetadata_uploaded");
+
+ b.ToTable("StorageMetadataWrapperEntities");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/Database/EntityFramework/Migrations/20230912144216_R_0.4.2.cs b/src/Database/EntityFramework/Migrations/20230912144216_R_0.4.2.cs
new file mode 100644
index 000000000..81382a8db
--- /dev/null
+++ b/src/Database/EntityFramework/Migrations/20230912144216_R_0.4.2.cs
@@ -0,0 +1,45 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Monai.Deploy.InformaticsGateway.Database.Migrations
+{
+ public partial class R_042 : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "TenantId",
+ table: "SourceApplicationEntities",
+ type: "TEXT",
+ nullable: true);
+
+ migrationBuilder.AddColumn(
+ name: "TenantId",
+ table: "MonaiApplicationEntities",
+ type: "TEXT",
+ nullable: true);
+
+ migrationBuilder.AddColumn(
+ name: "TenantId",
+ table: "DestinationApplicationEntities",
+ type: "TEXT",
+ nullable: true);
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "TenantId",
+ table: "SourceApplicationEntities");
+
+ migrationBuilder.DropColumn(
+ name: "TenantId",
+ table: "MonaiApplicationEntities");
+
+ migrationBuilder.DropColumn(
+ name: "TenantId",
+ table: "DestinationApplicationEntities");
+ }
+ }
+}
diff --git a/src/Database/EntityFramework/Migrations/InformaticsGatewayContextModelSnapshot.cs b/src/Database/EntityFramework/Migrations/InformaticsGatewayContextModelSnapshot.cs
index f85fc6347..3d1a5966f 100644
--- a/src/Database/EntityFramework/Migrations/InformaticsGatewayContextModelSnapshot.cs
+++ b/src/Database/EntityFramework/Migrations/InformaticsGatewayContextModelSnapshot.cs
@@ -42,6 +42,9 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("Port")
.HasColumnType("INTEGER");
+ b.Property("TenantId")
+ .HasColumnType("TEXT");
+
b.Property("UpdatedBy")
.HasColumnType("TEXT");
@@ -141,6 +144,9 @@ protected override void BuildModel(ModelBuilder modelBuilder)
.IsRequired()
.HasColumnType("TEXT");
+ b.Property("TenantId")
+ .HasColumnType("TEXT");
+
b.Property("Timeout")
.HasColumnType("INTEGER");
@@ -232,6 +238,9 @@ protected override void BuildModel(ModelBuilder modelBuilder)
.IsRequired()
.HasColumnType("TEXT");
+ b.Property("TenantId")
+ .HasColumnType("TEXT");
+
b.Property("UpdatedBy")
.HasColumnType("TEXT");