IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL BEGIN CREATE TABLE [__EFMigrationsHistory] ( [MigrationId] nvarchar(150) NOT NULL, [ProductVersion] nvarchar(32) NOT NULL, CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId]) ); END; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Domains] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [Name] nvarchar(max) NOT NULL, [FQDN] nvarchar(max) NOT NULL, [NetBIOS] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_Domains] PRIMARY KEY ([Id]) ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Environments] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [Name] nvarchar(max) NOT NULL, [CloudEnabled] bit NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_Environments] PRIMARY KEY ([Id]) ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [OptionCategories] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [Name] nvarchar(max) NOT NULL, [ParentCategoryName] nvarchar(max) NOT NULL, [showOrder] int NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_OptionCategories] PRIMARY KEY ([Id]) ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Runbooks] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [Name] nvarchar(max) NOT NULL, [Description] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_Runbooks] PRIMARY KEY ([Id]) ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Services] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [Name] nvarchar(max) NOT NULL, [Description] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_Services] PRIMARY KEY ([Id]) ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [VirtualMachines] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [DomainID] uniqueidentifier NOT NULL, [Name] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_VirtualMachines] PRIMARY KEY ([Id]), CONSTRAINT [FK_VirtualMachines_Domains_DomainID] FOREIGN KEY ([DomainID]) REFERENCES [Domains] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [EnvironmentDomains] ( [EnvironmentId] uniqueidentifier NOT NULL, [DomainId] uniqueidentifier NOT NULL, [Modified] datetime2 NOT NULL, [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL, [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_EnvironmentDomains] PRIMARY KEY ([EnvironmentId], [DomainId]), CONSTRAINT [FK_EnvironmentDomains_Domains_DomainId] FOREIGN KEY ([DomainId]) REFERENCES [Domains] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_EnvironmentDomains_Environments_EnvironmentId] FOREIGN KEY ([EnvironmentId]) REFERENCES [Environments] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Options] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [Name] nvarchar(max) NOT NULL, [OptionType] nvarchar(max) NOT NULL, [OptionValue] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, [OptionCategoryId] uniqueidentifier NOT NULL, CONSTRAINT [PK_Options] PRIMARY KEY ([Id]), CONSTRAINT [FK_Options_OptionCategories_OptionCategoryId] FOREIGN KEY ([OptionCategoryId]) REFERENCES [OptionCategories] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Events] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [RunbookId] uniqueidentifier NOT NULL, [Class] nvarchar(max) NOT NULL, [Method] nvarchar(max) NOT NULL, [RestEndpointMethod] nvarchar(max) NOT NULL, [RestEndpointOperation] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_Events] PRIMARY KEY ([Id]), CONSTRAINT [FK_Events_Runbooks_RunbookId] FOREIGN KEY ([RunbookId]) REFERENCES [Runbooks] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [TemplateCategories] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [ServiceId] uniqueidentifier NOT NULL, [Name] nvarchar(max) NOT NULL, [ParentCategoryName] nvarchar(max) NOT NULL, [showOrder] int NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_TemplateCategories] PRIMARY KEY ([Id]), CONSTRAINT [FK_TemplateCategories_Services_ServiceId] FOREIGN KEY ([ServiceId]) REFERENCES [Services] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Templates] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [Name] nvarchar(max) NOT NULL, [CloudTemplate] bit NOT NULL, [Version] nvarchar(max) NOT NULL, [Description] nvarchar(max) NOT NULL, [JSONData] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, [TemplateCategoryId] uniqueidentifier NOT NULL, CONSTRAINT [PK_Templates] PRIMARY KEY ([Id]), CONSTRAINT [FK_Templates_TemplateCategories_TemplateCategoryId] FOREIGN KEY ([TemplateCategoryId]) REFERENCES [TemplateCategories] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [DeploymentGroups] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [TemplateId] uniqueidentifier NOT NULL, [Status] nvarchar(max) NOT NULL DEFAULT ('New'), [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_DeploymentGroups] PRIMARY KEY ([Id]), CONSTRAINT [FK_DeploymentGroups_Templates_TemplateId] FOREIGN KEY ([TemplateId]) REFERENCES [Templates] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [TemplateOptions] ( [TemplateId] uniqueidentifier NOT NULL, [OptionId] uniqueidentifier NOT NULL, [Value] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL, [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL, [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_TemplateOptions] PRIMARY KEY ([OptionId], [TemplateId]), CONSTRAINT [FK_TemplateOptions_Options_OptionId] FOREIGN KEY ([OptionId]) REFERENCES [Options] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_TemplateOptions_Templates_TemplateId] FOREIGN KEY ([TemplateId]) REFERENCES [Templates] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Deployments] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [DeploymentGroupId] uniqueidentifier NOT NULL, [VirtualMachineId] uniqueidentifier NOT NULL, [Status] nvarchar(max) NOT NULL, [JSONData] nvarchar(max) NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_Deployments] PRIMARY KEY ([VirtualMachineId], [DeploymentGroupId]), CONSTRAINT [AK_Deployments_Id] UNIQUE ([Id]), CONSTRAINT [FK_Deployments_DeploymentGroups_DeploymentGroupId] FOREIGN KEY ([DeploymentGroupId]) REFERENCES [DeploymentGroups] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_Deployments_VirtualMachines_VirtualMachineId] FOREIGN KEY ([VirtualMachineId]) REFERENCES [VirtualMachines] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE TABLE [Jobs] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [DeploymentId] uniqueidentifier NOT NULL, [RunbookId] uniqueidentifier NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_Jobs] PRIMARY KEY ([RunbookId], [DeploymentId]), CONSTRAINT [FK_Jobs_Deployments_DeploymentId] FOREIGN KEY ([DeploymentId]) REFERENCES [Deployments] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_Jobs_Runbooks_RunbookId] FOREIGN KEY ([RunbookId]) REFERENCES [Runbooks] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_DeploymentGroups_TemplateId] ON [DeploymentGroups] ([TemplateId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_Deployments_DeploymentGroupId] ON [Deployments] ([DeploymentGroupId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_EnvironmentDomains_DomainId] ON [EnvironmentDomains] ([DomainId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_Events_RunbookId] ON [Events] ([RunbookId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_Jobs_DeploymentId] ON [Jobs] ([DeploymentId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_Options_OptionCategoryId] ON [Options] ([OptionCategoryId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_TemplateCategories_ServiceId] ON [TemplateCategories] ([ServiceId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_TemplateOptions_TemplateId] ON [TemplateOptions] ([TemplateId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_Templates_TemplateCategoryId] ON [Templates] ([TemplateCategoryId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN CREATE INDEX [IX_VirtualMachines_DomainID] ON [VirtualMachines] ([DomainID]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20231020093825_Initial' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20231020093825_Initial', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260514210821_AddQueueJobs' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260514210821_AddQueueJobs', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260514210842_AddQueueJobModelSnapshotFix' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260514210842_AddQueueJobModelSnapshotFix', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [VirtualMachines] ADD [ExternalId] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [VirtualMachines] ADD [MetadataJson] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [VirtualMachines] ADD [ProviderType] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [VirtualMachines] ADD [TargetType] nvarchar(max) NOT NULL DEFAULT N''; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [Environments] ADD [EnvironmentType] nvarchar(max) NOT NULL DEFAULT N''; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [Environments] ADD [MetadataJson] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [Environments] ADD [ProviderType] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [Environments] ADD [SubscriptionId] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN ALTER TABLE [Environments] ADD [TenantId] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195005_AddEnvironmentAndTargetProviderModel' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260515195005_AddEnvironmentAndTargetProviderModel', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195742_RemoveCloudEnabledFromEnvironment' ) BEGIN DECLARE @var nvarchar(max); SELECT @var = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'CloudEnabled'); IF @var IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var + ';'); ALTER TABLE [Environments] DROP COLUMN [CloudEnabled]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195742_RemoveCloudEnabledFromEnvironment' ) BEGIN DECLARE @var1 nvarchar(max); SELECT @var1 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'TenantId'); IF @var1 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var1 + ';'); ALTER TABLE [Environments] ALTER COLUMN [TenantId] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195742_RemoveCloudEnabledFromEnvironment' ) BEGIN DECLARE @var2 nvarchar(max); SELECT @var2 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'SubscriptionId'); IF @var2 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var2 + ';'); ALTER TABLE [Environments] ALTER COLUMN [SubscriptionId] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195742_RemoveCloudEnabledFromEnvironment' ) BEGIN DECLARE @var3 nvarchar(max); SELECT @var3 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'ProviderType'); IF @var3 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var3 + ';'); ALTER TABLE [Environments] ALTER COLUMN [ProviderType] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195742_RemoveCloudEnabledFromEnvironment' ) BEGIN DECLARE @var4 nvarchar(max); SELECT @var4 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'MetadataJson'); IF @var4 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var4 + ';'); ALTER TABLE [Environments] ALTER COLUMN [MetadataJson] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195742_RemoveCloudEnabledFromEnvironment' ) BEGIN DECLARE @var5 nvarchar(max); SELECT @var5 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'EnvironmentType'); IF @var5 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var5 + ';'); ALTER TABLE [Environments] ALTER COLUMN [EnvironmentType] nvarchar(max) NOT NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515195742_RemoveCloudEnabledFromEnvironment' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260515195742_RemoveCloudEnabledFromEnvironment', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515204426_RemoveVirtualMachineTargetAndProvider' ) BEGIN DECLARE @var6 nvarchar(max); SELECT @var6 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[VirtualMachines]') AND [c].[name] = N'ProviderType'); IF @var6 IS NOT NULL EXEC(N'ALTER TABLE [VirtualMachines] DROP CONSTRAINT ' + @var6 + ';'); ALTER TABLE [VirtualMachines] DROP COLUMN [ProviderType]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515204426_RemoveVirtualMachineTargetAndProvider' ) BEGIN DECLARE @var7 nvarchar(max); SELECT @var7 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[VirtualMachines]') AND [c].[name] = N'TargetType'); IF @var7 IS NOT NULL EXEC(N'ALTER TABLE [VirtualMachines] DROP CONSTRAINT ' + @var7 + ';'); ALTER TABLE [VirtualMachines] DROP COLUMN [TargetType]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515204426_RemoveVirtualMachineTargetAndProvider' ) BEGIN DECLARE @var8 nvarchar(max); SELECT @var8 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[VirtualMachines]') AND [c].[name] = N'MetadataJson'); IF @var8 IS NOT NULL EXEC(N'ALTER TABLE [VirtualMachines] DROP CONSTRAINT ' + @var8 + ';'); ALTER TABLE [VirtualMachines] ALTER COLUMN [MetadataJson] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515204426_RemoveVirtualMachineTargetAndProvider' ) BEGIN DECLARE @var9 nvarchar(max); SELECT @var9 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[VirtualMachines]') AND [c].[name] = N'ExternalId'); IF @var9 IS NOT NULL EXEC(N'ALTER TABLE [VirtualMachines] DROP CONSTRAINT ' + @var9 + ';'); ALTER TABLE [VirtualMachines] ALTER COLUMN [ExternalId] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515204426_RemoveVirtualMachineTargetAndProvider' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260515204426_RemoveVirtualMachineTargetAndProvider', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515205512_MakeVirtualMachineDomainOptionalAndAddLinkUnlinkFlow' ) BEGIN ALTER TABLE [VirtualMachines] DROP CONSTRAINT [FK_VirtualMachines_Domains_DomainID]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515205512_MakeVirtualMachineDomainOptionalAndAddLinkUnlinkFlow' ) BEGIN DECLARE @var10 nvarchar(max); SELECT @var10 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[VirtualMachines]') AND [c].[name] = N'DomainID'); IF @var10 IS NOT NULL EXEC(N'ALTER TABLE [VirtualMachines] DROP CONSTRAINT ' + @var10 + ';'); ALTER TABLE [VirtualMachines] ALTER COLUMN [DomainID] uniqueidentifier NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515205512_MakeVirtualMachineDomainOptionalAndAddLinkUnlinkFlow' ) BEGIN ALTER TABLE [VirtualMachines] ADD CONSTRAINT [FK_VirtualMachines_Domains_DomainID] FOREIGN KEY ([DomainID]) REFERENCES [Domains] ([Id]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515205512_MakeVirtualMachineDomainOptionalAndAddLinkUnlinkFlow' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260515205512_MakeVirtualMachineDomainOptionalAndAddLinkUnlinkFlow', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515215206_AddServiceCloudFlagAndRoleDefinitionsV2' ) BEGIN ALTER TABLE [Services] ADD [IsCloudService] bit NOT NULL DEFAULT CAST(0 AS bit); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515215206_AddServiceCloudFlagAndRoleDefinitionsV2' ) BEGIN CREATE TABLE [ServiceRoleDefinitions] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [ServiceId] uniqueidentifier NOT NULL, [Key] nvarchar(max) NOT NULL, [Name] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [MinCount] int NOT NULL, [MaxCount] int NOT NULL, [DefaultStageOrder] int NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_ServiceRoleDefinitions] PRIMARY KEY ([Id]), CONSTRAINT [FK_ServiceRoleDefinitions_Services_ServiceId] FOREIGN KEY ([ServiceId]) REFERENCES [Services] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515215206_AddServiceCloudFlagAndRoleDefinitionsV2' ) BEGIN CREATE INDEX [IX_ServiceRoleDefinitions_ServiceId] ON [ServiceRoleDefinitions] ([ServiceId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515215206_AddServiceCloudFlagAndRoleDefinitionsV2' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260515215206_AddServiceCloudFlagAndRoleDefinitionsV2', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515221746_RemoveRoleDefinitionSizingFields' ) BEGIN DECLARE @var11 nvarchar(max); SELECT @var11 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[ServiceRoleDefinitions]') AND [c].[name] = N'DefaultStageOrder'); IF @var11 IS NOT NULL EXEC(N'ALTER TABLE [ServiceRoleDefinitions] DROP CONSTRAINT ' + @var11 + ';'); ALTER TABLE [ServiceRoleDefinitions] DROP COLUMN [DefaultStageOrder]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515221746_RemoveRoleDefinitionSizingFields' ) BEGIN DECLARE @var12 nvarchar(max); SELECT @var12 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[ServiceRoleDefinitions]') AND [c].[name] = N'MaxCount'); IF @var12 IS NOT NULL EXEC(N'ALTER TABLE [ServiceRoleDefinitions] DROP CONSTRAINT ' + @var12 + ';'); ALTER TABLE [ServiceRoleDefinitions] DROP COLUMN [MaxCount]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515221746_RemoveRoleDefinitionSizingFields' ) BEGIN DECLARE @var13 nvarchar(max); SELECT @var13 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[ServiceRoleDefinitions]') AND [c].[name] = N'MinCount'); IF @var13 IS NOT NULL EXEC(N'ALTER TABLE [ServiceRoleDefinitions] DROP CONSTRAINT ' + @var13 + ';'); ALTER TABLE [ServiceRoleDefinitions] DROP COLUMN [MinCount]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260515221746_RemoveRoleDefinitionSizingFields' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260515221746_RemoveRoleDefinitionSizingFields', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516113515_RemoveTemplateCategoryLegacyFields' ) BEGIN DECLARE @var14 nvarchar(max); SELECT @var14 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[TemplateCategories]') AND [c].[name] = N'ParentCategoryName'); IF @var14 IS NOT NULL EXEC(N'ALTER TABLE [TemplateCategories] DROP CONSTRAINT ' + @var14 + ';'); ALTER TABLE [TemplateCategories] DROP COLUMN [ParentCategoryName]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516113515_RemoveTemplateCategoryLegacyFields' ) BEGIN DECLARE @var15 nvarchar(max); SELECT @var15 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[TemplateCategories]') AND [c].[name] = N'showOrder'); IF @var15 IS NOT NULL EXEC(N'ALTER TABLE [TemplateCategories] DROP CONSTRAINT ' + @var15 + ';'); ALTER TABLE [TemplateCategories] DROP COLUMN [showOrder]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516113515_RemoveTemplateCategoryLegacyFields' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260516113515_RemoveTemplateCategoryLegacyFields', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516114627_AddTemplateCategoryMetadataFields' ) BEGIN ALTER TABLE [TemplateCategories] ADD [Color] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516114627_AddTemplateCategoryMetadataFields' ) BEGIN ALTER TABLE [TemplateCategories] ADD [Description] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516114627_AddTemplateCategoryMetadataFields' ) BEGIN ALTER TABLE [TemplateCategories] ADD [IconKey] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516114627_AddTemplateCategoryMetadataFields' ) BEGIN ALTER TABLE [TemplateCategories] ADD [IsActive] bit NOT NULL DEFAULT CAST(1 AS bit); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516114627_AddTemplateCategoryMetadataFields' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260516114627_AddTemplateCategoryMetadataFields', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516115934_MoveIconKeyFromTemplateCategoryToService' ) BEGIN DECLARE @var16 nvarchar(max); SELECT @var16 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[TemplateCategories]') AND [c].[name] = N'IconKey'); IF @var16 IS NOT NULL EXEC(N'ALTER TABLE [TemplateCategories] DROP CONSTRAINT ' + @var16 + ';'); ALTER TABLE [TemplateCategories] DROP COLUMN [IconKey]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516115934_MoveIconKeyFromTemplateCategoryToService' ) BEGIN ALTER TABLE [Services] ADD [IconKey] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516115934_MoveIconKeyFromTemplateCategoryToService' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260516115934_MoveIconKeyFromTemplateCategoryToService', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516121222_RemoveTemplateCloudFlag' ) BEGIN DECLARE @var17 nvarchar(max); SELECT @var17 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Templates]') AND [c].[name] = N'CloudTemplate'); IF @var17 IS NOT NULL EXEC(N'ALTER TABLE [Templates] DROP CONSTRAINT ' + @var17 + ';'); ALTER TABLE [Templates] DROP COLUMN [CloudTemplate]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516121222_RemoveTemplateCloudFlag' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260516121222_RemoveTemplateCloudFlag', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN ALTER TABLE [Templates] ADD [DeploymentRuleId] uniqueidentifier NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN ALTER TABLE [QueueJobs] ADD [MetadataJson] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN ALTER TABLE [QueueJobs] ADD [RuleSnapshotJson] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN CREATE TABLE [DeploymentRules] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [Name] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [IsActive] bit NOT NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_DeploymentRules] PRIMARY KEY ([Id]) ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN CREATE TABLE [QueueJobSteps] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [QueueJobId] uniqueidentifier NOT NULL, [DependsOnQueueJobStepId] uniqueidentifier NULL, [SortOrder] int NOT NULL, [Name] nvarchar(max) NOT NULL, [StepType] nvarchar(max) NOT NULL, [Status] nvarchar(max) NOT NULL, [MetadataJson] nvarchar(max) NULL, [ApprovedAt] datetime2 NULL, [ApprovedBy] nvarchar(max) NULL, [ApprovalComment] nvarchar(max) NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_QueueJobSteps] PRIMARY KEY ([Id]), CONSTRAINT [FK_QueueJobSteps_QueueJobSteps_DependsOnQueueJobStepId] FOREIGN KEY ([DependsOnQueueJobStepId]) REFERENCES [QueueJobSteps] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_QueueJobSteps_QueueJobs_QueueJobId] FOREIGN KEY ([QueueJobId]) REFERENCES [QueueJobs] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN CREATE TABLE [DeploymentRuleSteps] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [DeploymentRuleId] uniqueidentifier NOT NULL, [SortOrder] int NOT NULL, [Name] nvarchar(max) NOT NULL, [StepType] nvarchar(max) NOT NULL, [RequiresApproval] bit NOT NULL, [MetadataJson] nvarchar(max) NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_DeploymentRuleSteps] PRIMARY KEY ([Id]), CONSTRAINT [FK_DeploymentRuleSteps_DeploymentRules_DeploymentRuleId] FOREIGN KEY ([DeploymentRuleId]) REFERENCES [DeploymentRules] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN CREATE INDEX [IX_Templates_DeploymentRuleId] ON [Templates] ([DeploymentRuleId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN CREATE INDEX [IX_DeploymentRuleSteps_DeploymentRuleId] ON [DeploymentRuleSteps] ([DeploymentRuleId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN CREATE INDEX [IX_QueueJobSteps_DependsOnQueueJobStepId] ON [QueueJobSteps] ([DependsOnQueueJobStepId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN CREATE INDEX [IX_QueueJobSteps_QueueJobId] ON [QueueJobSteps] ([QueueJobId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN ALTER TABLE [Templates] ADD CONSTRAINT [FK_Templates_DeploymentRules_DeploymentRuleId] FOREIGN KEY ([DeploymentRuleId]) REFERENCES [DeploymentRules] ([Id]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516140554_AddDeploymentRulesAndQueueJobSteps' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260516140554_AddDeploymentRulesAndQueueJobSteps', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentGroups] DROP CONSTRAINT [FK_DeploymentGroups_Templates_TemplateId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [Deployments] DROP CONSTRAINT [FK_Deployments_DeploymentGroups_DeploymentGroupId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [Deployments] DROP CONSTRAINT [FK_Deployments_VirtualMachines_VirtualMachineId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [Jobs] DROP CONSTRAINT [FK_Jobs_Deployments_DeploymentId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [QueueJobSteps] DROP CONSTRAINT [FK_QueueJobSteps_QueueJobSteps_DependsOnQueueJobStepId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [QueueJobSteps] DROP CONSTRAINT [FK_QueueJobSteps_QueueJobs_QueueJobId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [QueueJobTargets] DROP CONSTRAINT [FK_QueueJobTargets_QueueJobs_QueueJobId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [QueueJobTargets] DROP CONSTRAINT [PK_QueueJobTargets]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [QueueJobSteps] DROP CONSTRAINT [PK_QueueJobSteps]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [QueueJobs] DROP CONSTRAINT [PK_QueueJobs]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [Deployments] DROP CONSTRAINT [AK_Deployments_Id]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [Deployments] DROP CONSTRAINT [PK_Deployments]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentGroups] DROP CONSTRAINT [PK_DeploymentGroups]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[QueueJobTargets]', N'DeploymentJobTargets', 'OBJECT'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[QueueJobSteps]', N'DeploymentJobSteps', 'OBJECT'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[QueueJobs]', N'DeploymentJobs', 'OBJECT'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[Deployments]', N'DeploymentExecutions', 'OBJECT'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[DeploymentGroups]', N'DeploymentBatches', 'OBJECT'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[DeploymentJobTargets].[IX_QueueJobTargets_QueueJobId]', N'IX_DeploymentJobTargets_QueueJobId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[DeploymentJobSteps].[IX_QueueJobSteps_QueueJobId]', N'IX_DeploymentJobSteps_QueueJobId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[DeploymentJobSteps].[IX_QueueJobSteps_DependsOnQueueJobStepId]', N'IX_DeploymentJobSteps_DependsOnQueueJobStepId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[DeploymentExecutions].[IX_Deployments_DeploymentGroupId]', N'IX_DeploymentExecutions_DeploymentGroupId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN EXEC sp_rename N'[DeploymentBatches].[IX_DeploymentGroups_TemplateId]', N'IX_DeploymentBatches_TemplateId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentJobTargets] ADD CONSTRAINT [PK_DeploymentJobTargets] PRIMARY KEY ([Id]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentJobSteps] ADD CONSTRAINT [PK_DeploymentJobSteps] PRIMARY KEY ([Id]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentJobs] ADD CONSTRAINT [PK_DeploymentJobs] PRIMARY KEY ([Id]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentExecutions] ADD CONSTRAINT [AK_DeploymentExecutions_Id] UNIQUE ([Id]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentExecutions] ADD CONSTRAINT [PK_DeploymentExecutions] PRIMARY KEY ([VirtualMachineId], [DeploymentGroupId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentBatches] ADD CONSTRAINT [PK_DeploymentBatches] PRIMARY KEY ([Id]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentBatches] ADD CONSTRAINT [FK_DeploymentBatches_Templates_TemplateId] FOREIGN KEY ([TemplateId]) REFERENCES [Templates] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentExecutions] ADD CONSTRAINT [FK_DeploymentExecutions_DeploymentBatches_DeploymentGroupId] FOREIGN KEY ([DeploymentGroupId]) REFERENCES [DeploymentBatches] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentExecutions] ADD CONSTRAINT [FK_DeploymentExecutions_VirtualMachines_VirtualMachineId] FOREIGN KEY ([VirtualMachineId]) REFERENCES [VirtualMachines] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentJobSteps] ADD CONSTRAINT [FK_DeploymentJobSteps_DeploymentJobSteps_DependsOnQueueJobStepId] FOREIGN KEY ([DependsOnQueueJobStepId]) REFERENCES [DeploymentJobSteps] ([Id]) ON DELETE NO ACTION; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentJobSteps] ADD CONSTRAINT [FK_DeploymentJobSteps_DeploymentJobs_QueueJobId] FOREIGN KEY ([QueueJobId]) REFERENCES [DeploymentJobs] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [DeploymentJobTargets] ADD CONSTRAINT [FK_DeploymentJobTargets_DeploymentJobs_QueueJobId] FOREIGN KEY ([QueueJobId]) REFERENCES [DeploymentJobs] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN ALTER TABLE [Jobs] ADD CONSTRAINT [FK_Jobs_DeploymentExecutions_DeploymentId] FOREIGN KEY ([DeploymentId]) REFERENCES [DeploymentExecutions] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141653_RenameDeploymentAndJobTables' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260516141653_RenameDeploymentAndJobTables', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN ALTER TABLE [DeploymentExecutions] DROP CONSTRAINT [FK_DeploymentExecutions_DeploymentBatches_DeploymentGroupId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN ALTER TABLE [DeploymentJobSteps] DROP CONSTRAINT [FK_DeploymentJobSteps_DeploymentJobSteps_DependsOnQueueJobStepId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN ALTER TABLE [DeploymentJobSteps] DROP CONSTRAINT [FK_DeploymentJobSteps_DeploymentJobs_QueueJobId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN ALTER TABLE [DeploymentJobTargets] DROP CONSTRAINT [FK_DeploymentJobTargets_DeploymentJobs_QueueJobId]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentJobTargets].[QueueJobId]', N'DeploymentJobId', 'COLUMN'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentJobTargets].[DeploymentGroupId]', N'DeploymentBatchId', 'COLUMN'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentJobTargets].[IX_DeploymentJobTargets_QueueJobId]', N'IX_DeploymentJobTargets_DeploymentJobId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentJobSteps].[QueueJobId]', N'DeploymentJobId', 'COLUMN'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentJobSteps].[DependsOnQueueJobStepId]', N'DependsOnDeploymentJobStepId', 'COLUMN'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentJobSteps].[IX_DeploymentJobSteps_QueueJobId]', N'IX_DeploymentJobSteps_DeploymentJobId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentJobSteps].[IX_DeploymentJobSteps_DependsOnQueueJobStepId]', N'IX_DeploymentJobSteps_DependsOnDeploymentJobStepId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentExecutions].[DeploymentGroupId]', N'DeploymentBatchId', 'COLUMN'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN EXEC sp_rename N'[DeploymentExecutions].[IX_DeploymentExecutions_DeploymentGroupId]', N'IX_DeploymentExecutions_DeploymentBatchId', 'INDEX'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN ALTER TABLE [DeploymentExecutions] ADD CONSTRAINT [FK_DeploymentExecutions_DeploymentBatches_DeploymentBatchId] FOREIGN KEY ([DeploymentBatchId]) REFERENCES [DeploymentBatches] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN ALTER TABLE [DeploymentJobSteps] ADD CONSTRAINT [FK_DeploymentJobSteps_DeploymentJobSteps_DependsOnDeploymentJobStepId] FOREIGN KEY ([DependsOnDeploymentJobStepId]) REFERENCES [DeploymentJobSteps] ([Id]) ON DELETE NO ACTION; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN ALTER TABLE [DeploymentJobSteps] ADD CONSTRAINT [FK_DeploymentJobSteps_DeploymentJobs_DeploymentJobId] FOREIGN KEY ([DeploymentJobId]) REFERENCES [DeploymentJobs] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN ALTER TABLE [DeploymentJobTargets] ADD CONSTRAINT [FK_DeploymentJobTargets_DeploymentJobs_DeploymentJobId] FOREIGN KEY ([DeploymentJobId]) REFERENCES [DeploymentJobs] ([Id]) ON DELETE CASCADE; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260516141719_RenameDeploymentAndJobColumns' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260516141719_RenameDeploymentAndJobColumns', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517193537_SyncEnvironmentStageAndHostingType' ) BEGIN DECLARE @var18 nvarchar(max); SELECT @var18 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'TenantId'); IF @var18 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var18 + ';'); ALTER TABLE [Environments] ALTER COLUMN [TenantId] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517193537_SyncEnvironmentStageAndHostingType' ) BEGIN DECLARE @var19 nvarchar(max); SELECT @var19 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'SubscriptionId'); IF @var19 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var19 + ';'); ALTER TABLE [Environments] ALTER COLUMN [SubscriptionId] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517193537_SyncEnvironmentStageAndHostingType' ) BEGIN DECLARE @var20 nvarchar(max); SELECT @var20 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'ProviderType'); IF @var20 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var20 + ';'); ALTER TABLE [Environments] ALTER COLUMN [ProviderType] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517193537_SyncEnvironmentStageAndHostingType' ) BEGIN DECLARE @var21 nvarchar(max); SELECT @var21 = QUOTENAME([d].[name]) FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Environments]') AND [c].[name] = N'MetadataJson'); IF @var21 IS NOT NULL EXEC(N'ALTER TABLE [Environments] DROP CONSTRAINT ' + @var21 + ';'); ALTER TABLE [Environments] ALTER COLUMN [MetadataJson] nvarchar(max) NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517193537_SyncEnvironmentStageAndHostingType' ) BEGIN ALTER TABLE [Environments] ADD [HostingType] nvarchar(max) NOT NULL DEFAULT N'OnPrem'; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517193537_SyncEnvironmentStageAndHostingType' ) BEGIN UPDATE [Environments] SET [HostingType] = CASE WHEN [EnvironmentType] IN ('OnPrem','AzureTenant','M365Tenant') THEN [EnvironmentType] ELSE 'OnPrem' END END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517193537_SyncEnvironmentStageAndHostingType' ) BEGIN UPDATE [Environments] SET [EnvironmentType] = CASE WHEN [EnvironmentType] IN ('Development','Test','QA','Production') THEN [EnvironmentType] ELSE 'Test' END END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517193537_SyncEnvironmentStageAndHostingType' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260517193537_SyncEnvironmentStageAndHostingType', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260517205713_LinkDeploymentBatchToDeploymentRule' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260517205713_LinkDeploymentBatchToDeploymentRule', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707195927_AddTemplateVersions' ) BEGIN ALTER TABLE [DeploymentBatches] ADD [DeploymentRuleId] uniqueidentifier NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707195927_AddTemplateVersions' ) BEGIN CREATE TABLE [TemplateVersions] ( [Id] uniqueidentifier NOT NULL DEFAULT (NEWID()), [TemplateId] uniqueidentifier NOT NULL, [Version] nvarchar(64) NOT NULL, [JsonData] nvarchar(max) NOT NULL, [JsonHash] nvarchar(64) NOT NULL, [SchemaVersion] nvarchar(32) NOT NULL, [IsPublished] bit NOT NULL, [PublishedAt] datetime2 NULL, [PublishedBy] nvarchar(max) NULL, [Modified] datetime2 NOT NULL DEFAULT (GETDATE()), [ModifiedBy] nvarchar(max) NOT NULL, [Created] datetime2 NOT NULL DEFAULT (GETDATE()), [CreatedBy] nvarchar(max) NOT NULL, CONSTRAINT [PK_TemplateVersions] PRIMARY KEY ([Id]), CONSTRAINT [CK_TemplateVersions_JsonData_IsJson] CHECK (ISJSON([JsonData]) = 1), CONSTRAINT [FK_TemplateVersions_Templates_TemplateId] FOREIGN KEY ([TemplateId]) REFERENCES [Templates] ([Id]) ON DELETE CASCADE ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707195927_AddTemplateVersions' ) BEGIN INSERT INTO [TemplateVersions] ([Id], [TemplateId], [Version], [JsonData], [JsonHash], [SchemaVersion], [IsPublished], [PublishedAt], [PublishedBy], [Modified], [ModifiedBy], [Created], [CreatedBy]) SELECT NEWID(), [Id], CASE WHEN [Version] IS NULL OR LTRIM(RTRIM([Version])) = '' THEN '1.0.0' ELSE [Version] END, CASE WHEN ISJSON([JSONData]) = 1 THEN [JSONData] ELSE '{}' END, CONVERT(varchar(64), HASHBYTES('SHA2_256', CONVERT(varbinary(max), CASE WHEN ISJSON([JSONData]) = 1 THEN [JSONData] ELSE '{}' END)), 2), '1.0', 1, SYSUTCDATETIME(), [CreatedBy], [Modified], [ModifiedBy], [Created], [CreatedBy] FROM [Templates] WHERE NOT EXISTS ( SELECT 1 FROM [TemplateVersions] WHERE [TemplateVersions].[TemplateId] = [Templates].[Id] ); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707195927_AddTemplateVersions' ) BEGIN CREATE INDEX [IX_DeploymentBatches_DeploymentRuleId] ON [DeploymentBatches] ([DeploymentRuleId]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707195927_AddTemplateVersions' ) BEGIN EXEC(N'CREATE UNIQUE INDEX [IX_TemplateVersions_TemplateId] ON [TemplateVersions] ([TemplateId]) WHERE [IsPublished] = 1'); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707195927_AddTemplateVersions' ) BEGIN CREATE UNIQUE INDEX [IX_TemplateVersions_TemplateId_Version] ON [TemplateVersions] ([TemplateId], [Version]); END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707195927_AddTemplateVersions' ) BEGIN ALTER TABLE [DeploymentBatches] ADD CONSTRAINT [FK_DeploymentBatches_DeploymentRules_DeploymentRuleId] FOREIGN KEY ([DeploymentRuleId]) REFERENCES [DeploymentRules] ([Id]) ON DELETE SET NULL; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707195927_AddTemplateVersions' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260707195927_AddTemplateVersions', N'10.0.8'); END; COMMIT; GO BEGIN TRANSACTION; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN DELETE FROM [DeploymentJobTargets]; DELETE FROM [DeploymentJobSteps]; DELETE FROM [DeploymentJobs]; DELETE FROM [Jobs]; DELETE FROM [Events]; DELETE FROM [DeploymentExecutions]; DELETE FROM [DeploymentBatches]; DELETE FROM [TemplateVersions]; DELETE FROM [TemplateOptions]; DELETE FROM [Templates]; DELETE FROM [DeploymentRuleSteps]; DELETE FROM [DeploymentRules]; DELETE FROM [ServiceRoleDefinitions]; DELETE FROM [TemplateCategories]; DELETE FROM [Options]; DELETE FROM [OptionCategories]; DELETE FROM [Services]; DELETE FROM [VirtualMachines]; DELETE FROM [EnvironmentDomains]; DELETE FROM [Domains]; DELETE FROM [Environments]; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'Description', N'IsActive', N'Modified', N'ModifiedBy', N'Name') AND [object_id] = OBJECT_ID(N'[DeploymentRules]')) SET IDENTITY_INSERT [DeploymentRules] ON; EXEC(N'INSERT INTO [DeploymentRules] ([Id], [Created], [CreatedBy], [Description], [IsActive], [Modified], [ModifiedBy], [Name]) VALUES (''60000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Validate input, wait for approval, then provision targets.'', CAST(1 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Standard Provisioning'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'Description', N'IsActive', N'Modified', N'ModifiedBy', N'Name') AND [object_id] = OBJECT_ID(N'[DeploymentRules]')) SET IDENTITY_INSERT [DeploymentRules] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'FQDN', N'Modified', N'ModifiedBy', N'Name', N'NetBIOS') AND [object_id] = OBJECT_ID(N'[Domains]')) SET IDENTITY_INSERT [Domains] ON; EXEC(N'INSERT INTO [Domains] ([Id], [Created], [CreatedBy], [FQDN], [Modified], [ModifiedBy], [Name], [NetBIOS]) VALUES (''20000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''corp.contoso.com'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Central Management'', N''CONTOSO''), (''20000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''resource.contoso.com'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Resource Domain'', N''RESOURCE'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'FQDN', N'Modified', N'ModifiedBy', N'Name', N'NetBIOS') AND [object_id] = OBJECT_ID(N'[Domains]')) SET IDENTITY_INSERT [Domains] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'EnvironmentType', N'HostingType', N'MetadataJson', N'Modified', N'ModifiedBy', N'Name', N'ProviderType', N'SubscriptionId', N'TenantId') AND [object_id] = OBJECT_ID(N'[Environments]')) SET IDENTITY_INSERT [Environments] ON; EXEC(N'INSERT INTO [Environments] ([Id], [Created], [CreatedBy], [EnvironmentType], [HostingType], [MetadataJson], [Modified], [ModifiedBy], [Name], [ProviderType], [SubscriptionId], [TenantId]) VALUES (''10000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Test'', N''OnPrem'', N''{"location":"Datacenter A"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Contoso Test'', NULL, NULL, NULL), (''10000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Production'', N''OnPrem'', N''{"location":"Datacenter A"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Contoso Production'', NULL, NULL, NULL), (''10000000-0000-0000-0000-000000000003'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Production'', N''M365Tenant'', N''{"tenant":"contoso.onmicrosoft.com"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Contoso M365'', N''Microsoft365'', NULL, N''11111111-1111-1111-1111-111111111111'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'EnvironmentType', N'HostingType', N'MetadataJson', N'Modified', N'ModifiedBy', N'Name', N'ProviderType', N'SubscriptionId', N'TenantId') AND [object_id] = OBJECT_ID(N'[Environments]')) SET IDENTITY_INSERT [Environments] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'Description', N'IconKey', N'IsCloudService', N'Modified', N'ModifiedBy', N'Name') AND [object_id] = OBJECT_ID(N'[Services]')) SET IDENTITY_INSERT [Services] ON; EXEC(N'INSERT INTO [Services] ([Id], [Created], [CreatedBy], [Description], [IconKey], [IsCloudService], [Modified], [ModifiedBy], [Name]) VALUES (''40000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''On-premises directory and identity service.'', N''network'', CAST(0 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Active Directory''), (''40000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Database platform for application workloads.'', N''database'', CAST(0 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''SQL Server''), (''40000000-0000-0000-0000-000000000003'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Collaboration platform for on-premises workloads.'', N''sharepoint'', CAST(0 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''SharePoint Server''), (''40000000-0000-0000-0000-000000000004'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Cloud collaboration workload in Microsoft 365.'', N''messages-square'', CAST(1 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Microsoft Teams'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'Description', N'IconKey', N'IsCloudService', N'Modified', N'ModifiedBy', N'Name') AND [object_id] = OBJECT_ID(N'[Services]')) SET IDENTITY_INSERT [Services] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'DeploymentRuleId', N'MetadataJson', N'Modified', N'ModifiedBy', N'Name', N'RequiresApproval', N'SortOrder', N'StepType') AND [object_id] = OBJECT_ID(N'[DeploymentRuleSteps]')) SET IDENTITY_INSERT [DeploymentRuleSteps] ON; EXEC(N'INSERT INTO [DeploymentRuleSteps] ([Id], [Created], [CreatedBy], [DeploymentRuleId], [MetadataJson], [Modified], [ModifiedBy], [Name], [RequiresApproval], [SortOrder], [StepType]) VALUES (''60000000-0000-0000-0000-000000000101'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''60000000-0000-0000-0000-000000000001'', N''{"action":"validate"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Validate configuration'', CAST(0 AS bit), 10, N''Provision''), (''60000000-0000-0000-0000-000000000102'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''60000000-0000-0000-0000-000000000001'', N''{"approverGroup":"Platform Owners"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Approve deployment'', CAST(1 AS bit), 20, N''Approval''), (''60000000-0000-0000-0000-000000000103'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''60000000-0000-0000-0000-000000000001'', N''{"action":"deploy"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Provision workload'', CAST(0 AS bit), 30, N''Provision'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'DeploymentRuleId', N'MetadataJson', N'Modified', N'ModifiedBy', N'Name', N'RequiresApproval', N'SortOrder', N'StepType') AND [object_id] = OBJECT_ID(N'[DeploymentRuleSteps]')) SET IDENTITY_INSERT [DeploymentRuleSteps] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'DomainId', N'EnvironmentId', N'Created', N'CreatedBy', N'Modified', N'ModifiedBy') AND [object_id] = OBJECT_ID(N'[EnvironmentDomains]')) SET IDENTITY_INSERT [EnvironmentDomains] ON; EXEC(N'INSERT INTO [EnvironmentDomains] ([DomainId], [EnvironmentId], [Created], [CreatedBy], [Modified], [ModifiedBy]) VALUES (''20000000-0000-0000-0000-000000000001'', ''10000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed''), (''20000000-0000-0000-0000-000000000001'', ''10000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed''), (''20000000-0000-0000-0000-000000000002'', ''10000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'DomainId', N'EnvironmentId', N'Created', N'CreatedBy', N'Modified', N'ModifiedBy') AND [object_id] = OBJECT_ID(N'[EnvironmentDomains]')) SET IDENTITY_INSERT [EnvironmentDomains] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'Description', N'Key', N'Modified', N'ModifiedBy', N'Name', N'ServiceId') AND [object_id] = OBJECT_ID(N'[ServiceRoleDefinitions]')) SET IDENTITY_INSERT [ServiceRoleDefinitions] ON; EXEC(N'INSERT INTO [ServiceRoleDefinitions] ([Id], [Created], [CreatedBy], [Description], [Key], [Modified], [ModifiedBy], [Name], [ServiceId]) VALUES (''41000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''SharePoint farm role.'', N''Farm'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Farm'', ''40000000-0000-0000-0000-000000000003''), (''41000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''SharePoint web front-end role.'', N''WebFrontEnd'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Web Front End'', ''40000000-0000-0000-0000-000000000003''), (''41000000-0000-0000-0000-000000000003'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''SharePoint service application role.'', N''Application'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Application'', ''40000000-0000-0000-0000-000000000003''), (''41000000-0000-0000-0000-000000000004'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''SQL Server database role.'', N''Database'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Database'', ''40000000-0000-0000-0000-000000000002'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'Description', N'Key', N'Modified', N'ModifiedBy', N'Name', N'ServiceId') AND [object_id] = OBJECT_ID(N'[ServiceRoleDefinitions]')) SET IDENTITY_INSERT [ServiceRoleDefinitions] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Color', N'Created', N'CreatedBy', N'Description', N'IsActive', N'Modified', N'ModifiedBy', N'Name', N'ServiceId') AND [object_id] = OBJECT_ID(N'[TemplateCategories]')) SET IDENTITY_INSERT [TemplateCategories] ON; EXEC(N'INSERT INTO [TemplateCategories] ([Id], [Color], [Created], [CreatedBy], [Description], [IsActive], [Modified], [ModifiedBy], [Name], [ServiceId]) VALUES (''50000000-0000-0000-0000-000000000001'', N''#2563EB'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Templates for domain controller and domain configuration.'', CAST(1 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Domain Services'', ''40000000-0000-0000-0000-000000000001''), (''50000000-0000-0000-0000-000000000002'', N''#16A34A'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Templates for SQL Server workloads.'', CAST(1 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Database Platform'', ''40000000-0000-0000-0000-000000000002''), (''50000000-0000-0000-0000-000000000003'', N''#0F766E'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Templates for SharePoint Server farms.'', CAST(1 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Collaboration Farm'', ''40000000-0000-0000-0000-000000000003''), (''50000000-0000-0000-0000-000000000004'', N''#7C3AED'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Templates for Teams policy configuration.'', CAST(1 AS bit), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Teams Policies'', ''40000000-0000-0000-0000-000000000004'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Color', N'Created', N'CreatedBy', N'Description', N'IsActive', N'Modified', N'ModifiedBy', N'Name', N'ServiceId') AND [object_id] = OBJECT_ID(N'[TemplateCategories]')) SET IDENTITY_INSERT [TemplateCategories] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'DomainID', N'ExternalId', N'MetadataJson', N'Modified', N'ModifiedBy', N'Name') AND [object_id] = OBJECT_ID(N'[VirtualMachines]')) SET IDENTITY_INSERT [VirtualMachines] ON; EXEC(N'INSERT INTO [VirtualMachines] ([Id], [Created], [CreatedBy], [DomainID], [ExternalId], [MetadataJson], [Modified], [ModifiedBy], [Name]) VALUES (''30000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''20000000-0000-0000-0000-000000000001'', NULL, N''{"role":"DomainController","environment":"Test"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''CT-DC-01''), (''30000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''20000000-0000-0000-0000-000000000001'', NULL, N''{"role":"DomainController","environment":"Production"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''CT-DC-02''), (''30000000-0000-0000-0000-000000000003'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''20000000-0000-0000-0000-000000000001'', NULL, N''{"role":"SqlServer","environment":"Test"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''CT-SQL-01''), (''30000000-0000-0000-0000-000000000004'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''20000000-0000-0000-0000-000000000001'', NULL, N''{"role":"SharePoint","environment":"Test"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''CT-SHP-01''), (''30000000-0000-0000-0000-000000000005'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''20000000-0000-0000-0000-000000000001'', NULL, N''{"role":"SharePoint","environment":"Test"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''CT-SHP-02'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'DomainID', N'ExternalId', N'MetadataJson', N'Modified', N'ModifiedBy', N'Name') AND [object_id] = OBJECT_ID(N'[VirtualMachines]')) SET IDENTITY_INSERT [VirtualMachines] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'DeploymentRuleId', N'Description', N'JSONData', N'Modified', N'ModifiedBy', N'Name', N'TemplateCategoryId', N'Version') AND [object_id] = OBJECT_ID(N'[Templates]')) SET IDENTITY_INSERT [Templates] ON; EXEC(N'INSERT INTO [Templates] ([Id], [Created], [CreatedBy], [DeploymentRuleId], [Description], [JSONData], [Modified], [ModifiedBy], [Name], [TemplateCategoryId], [Version]) VALUES (''70000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''60000000-0000-0000-0000-000000000001'', N''Creates a reusable Active Directory domain baseline.'', CONCAT(CAST(N''{'' AS nvarchar(max)), nchar(10), N'' "schemaVersion": "1.0",'', nchar(10), N'' "templateType": "Service",'', nchar(10), N'' "parameters": {'', nchar(10), N'' "DomainName": { "type": "string", "defaultValue": "corp.contoso.com" },'', nchar(10), N'' "NetBIOSName": { "type": "string", "defaultValue": "CONTOSO" }'', nchar(10), N'' },'', nchar(10), N'' "variables": {'', nchar(10), N'' "DefaultSiteName": "[concat(parameters(''''DomainName''''), ''''-DefaultSite'''')]"'', nchar(10), N'' },'', nchar(10), N'' "resources": {'', nchar(10), N'' "AllNodes": ['', nchar(10), N'' { "NodeName": "*", "PSDscAllowPlainTextPassword": true }'', nchar(10), N'' ],'', nchar(10), N'' "NonNodeData": {'', nchar(10), N'' "Services": {'', nchar(10), N'' "ActiveDirectory": {'', nchar(10), N'' "DomainName": "[parameters(''''DomainName'''')]",'', nchar(10), N'' "NetBIOSName": "[parameters(''''NetBIOSName'''')]"'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N''}''), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Contoso Active Directory Domain'', ''50000000-0000-0000-0000-000000000001'', N''1.0.0''), (''70000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''60000000-0000-0000-0000-000000000001'', N''Creates a SQL Server baseline for application workloads.'', CONCAT(CAST(N''{'' AS nvarchar(max)), nchar(10), N'' "schemaVersion": "1.0",'', nchar(10), N'' "templateType": "Service",'', nchar(10), N'' "parameters": {'', nchar(10), N'' "InstanceName": { "type": "string", "defaultValue": "MSSQLSERVER" },'', nchar(10), N'' "DatabasePrefix": { "type": "string", "defaultValue": "Contoso" }'', nchar(10), N'' },'', nchar(10), N'' "variables": {'', nchar(10), N'' "ConfigDatabase": "[concat(parameters(''''DatabasePrefix''''), ''''_Config'''')]"'', nchar(10), N'' },'', nchar(10), N'' "resources": {'', nchar(10), N'' "NonNodeData": {'', nchar(10), N'' "Services": {'', nchar(10), N'' "SqlServer": {'', nchar(10), N'' "InstanceName": "[parameters(''''InstanceName'''')]",'', nchar(10), N'' "ConfigDatabase": "[variables(''''ConfigDatabase'''')]"'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N''}''), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Contoso SQL Server'', ''50000000-0000-0000-0000-000000000002'', N''1.0.0''), (''70000000-0000-0000-0000-000000000003'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''60000000-0000-0000-0000-000000000001'', N''Creates a SharePoint Server farm baseline.'', CONCAT(CAST(N''{'' AS nvarchar(max)), nchar(10), N'' "schemaVersion": "1.0",'', nchar(10), N'' "templateType": "Service",'', nchar(10), N'' "parameters": {'', nchar(10), N'' "DatabasePrefix": { "type": "string", "defaultValue": "SharePoint_Contoso_Test" },'', nchar(10), N'' "FarmAccount": { "type": "credential", "metadata": { "description": "Farm account resolved by the credential provider." } }'', nchar(10), N'' },'', nchar(10), N'' "variables": {'', nchar(10), N'' "ConfigDbName": "[concat(parameters(''''DatabasePrefix''''), ''''_Farm_Config'''')]",'', nchar(10), N'' "AdminContentDbName": "[concat(parameters(''''DatabasePrefix''''), ''''_AdminContent'''')]"'', nchar(10), N'' },'', nchar(10), N'' "resources": {'', nchar(10), N'' "NonNodeData": {'', nchar(10), N'' "Services": {'', nchar(10), N'' "SharePoint": {'', nchar(10), N'' "Farm": {'', nchar(10), N'' "ConfigDatabase": "[variables(''''ConfigDbName'''')]",'', nchar(10), N'' "AdminContentDatabase": "[variables(''''AdminContentDbName'''')]",'', nchar(10), N'' "ManagedAccounts": {'', nchar(10), N'' "FarmAccount": "[parameters(''''FarmAccount'''')]"'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N''}''), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Contoso SharePoint Server'', ''50000000-0000-0000-0000-000000000003'', N''1.0.0''), (''70000000-0000-0000-0000-000000000004'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''60000000-0000-0000-0000-000000000001'', N''Creates a Microsoft Teams policy baseline.'', CONCAT(CAST(N''{'' AS nvarchar(max)), nchar(10), N'' "schemaVersion": "1.0",'', nchar(10), N'' "templateType": "Service",'', nchar(10), N'' "parameters": {'', nchar(10), N'' "CallingPolicyName": { "type": "string", "defaultValue": "Contoso-Standard-Calling" },'', nchar(10), N'' "MeetingPolicyName": { "type": "string", "defaultValue": "Contoso-Standard-Meetings" }'', nchar(10), N'' },'', nchar(10), N'' "variables": {},'', nchar(10), N'' "resources": {'', nchar(10), N'' "NonNodeData": {'', nchar(10), N'' "Services": {'', nchar(10), N'' "Teams": {'', nchar(10), N'' "CallingPolicy": "[parameters(''''CallingPolicyName'''')]",'', nchar(10), N'' "MeetingPolicy": "[parameters(''''MeetingPolicyName'''')]"'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N''}''), ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Contoso Teams Policies'', ''50000000-0000-0000-0000-000000000004'', N''1.0.0'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'DeploymentRuleId', N'Description', N'JSONData', N'Modified', N'ModifiedBy', N'Name', N'TemplateCategoryId', N'Version') AND [object_id] = OBJECT_ID(N'[Templates]')) SET IDENTITY_INSERT [Templates] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'DeploymentRuleId', N'Modified', N'ModifiedBy', N'Status', N'TemplateId') AND [object_id] = OBJECT_ID(N'[DeploymentBatches]')) SET IDENTITY_INSERT [DeploymentBatches] ON; EXEC(N'INSERT INTO [DeploymentBatches] ([Id], [Created], [CreatedBy], [DeploymentRuleId], [Modified], [ModifiedBy], [Status], [TemplateId]) VALUES (''80000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''60000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Pending'', ''70000000-0000-0000-0000-000000000003'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'DeploymentRuleId', N'Modified', N'ModifiedBy', N'Status', N'TemplateId') AND [object_id] = OBJECT_ID(N'[DeploymentBatches]')) SET IDENTITY_INSERT [DeploymentBatches] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'IsPublished', N'JsonData', N'JsonHash', N'Modified', N'ModifiedBy', N'PublishedAt', N'PublishedBy', N'SchemaVersion', N'TemplateId', N'Version') AND [object_id] = OBJECT_ID(N'[TemplateVersions]')) SET IDENTITY_INSERT [TemplateVersions] ON; EXEC(N'INSERT INTO [TemplateVersions] ([Id], [Created], [CreatedBy], [IsPublished], [JsonData], [JsonHash], [Modified], [ModifiedBy], [PublishedAt], [PublishedBy], [SchemaVersion], [TemplateId], [Version]) VALUES (''71000000-0000-0000-0000-000000000001'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', CAST(1 AS bit), CONCAT(CAST(N''{'' AS nvarchar(max)), nchar(10), N'' "schemaVersion": "1.0",'', nchar(10), N'' "templateType": "Service",'', nchar(10), N'' "parameters": {'', nchar(10), N'' "DomainName": { "type": "string", "defaultValue": "corp.contoso.com" },'', nchar(10), N'' "NetBIOSName": { "type": "string", "defaultValue": "CONTOSO" }'', nchar(10), N'' },'', nchar(10), N'' "variables": {'', nchar(10), N'' "DefaultSiteName": "[concat(parameters(''''DomainName''''), ''''-DefaultSite'''')]"'', nchar(10), N'' },'', nchar(10), N'' "resources": {'', nchar(10), N'' "AllNodes": ['', nchar(10), N'' { "NodeName": "*", "PSDscAllowPlainTextPassword": true }'', nchar(10), N'' ],'', nchar(10), N'' "NonNodeData": {'', nchar(10), N'' "Services": {'', nchar(10), N'' "ActiveDirectory": {'', nchar(10), N'' "DomainName": "[parameters(''''DomainName'''')]",'', nchar(10), N'' "NetBIOSName": "[parameters(''''NetBIOSName'''')]"'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N''}''), N''C05CBEF91131C75DE53B9609D9C2709D680AFC9559EE8D998318A132490F79A7'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''1.0'', ''70000000-0000-0000-0000-000000000001'', N''1.0.0''), (''71000000-0000-0000-0000-000000000002'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', CAST(1 AS bit), CONCAT(CAST(N''{'' AS nvarchar(max)), nchar(10), N'' "schemaVersion": "1.0",'', nchar(10), N'' "templateType": "Service",'', nchar(10), N'' "parameters": {'', nchar(10), N'' "InstanceName": { "type": "string", "defaultValue": "MSSQLSERVER" },'', nchar(10), N'' "DatabasePrefix": { "type": "string", "defaultValue": "Contoso" }'', nchar(10), N'' },'', nchar(10), N'' "variables": {'', nchar(10), N'' "ConfigDatabase": "[concat(parameters(''''DatabasePrefix''''), ''''_Config'''')]"'', nchar(10), N'' },'', nchar(10), N'' "resources": {'', nchar(10), N'' "NonNodeData": {'', nchar(10), N'' "Services": {'', nchar(10), N'' "SqlServer": {'', nchar(10), N'' "InstanceName": "[parameters(''''InstanceName'''')]",'', nchar(10), N'' "ConfigDatabase": "[variables(''''ConfigDatabase'''')]"'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N''}''), N''F376737E82CB6B729F7B9960CB9988897C16D90A1C454ED2F594B28EB86ECA11'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''1.0'', ''70000000-0000-0000-0000-000000000002'', N''1.0.0''), (''71000000-0000-0000-0000-000000000003'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', CAST(1 AS bit), CONCAT(CAST(N''{'' AS nvarchar(max)), nchar(10), N'' "schemaVersion": "1.0",'', nchar(10), N'' "templateType": "Service",'', nchar(10), N'' "parameters": {'', nchar(10), N'' "DatabasePrefix": { "type": "string", "defaultValue": "SharePoint_Contoso_Test" },'', nchar(10), N'' "FarmAccount": { "type": "credential", "metadata": { "description": "Farm account resolved by the credential provider." } }'', nchar(10), N'' },'', nchar(10), N'' "variables": {'', nchar(10), N'' "ConfigDbName": "[concat(parameters(''''DatabasePrefix''''), ''''_Farm_Config'''')]",'', nchar(10), N'' "AdminContentDbName": "[concat(parameters(''''DatabasePrefix''''), ''''_AdminContent'''')]"'', nchar(10), N'' },'', nchar(10), N'' "resources": {'', nchar(10), N'' "NonNodeData": {'', nchar(10), N'' "Services": {'', nchar(10), N'' "SharePoint": {'', nchar(10), N'' "Farm": {'', nchar(10), N'' "ConfigDatabase": "[variables(''''ConfigDbName'''')]",'', nchar(10), N'' "AdminContentDatabase": "[variables(''''AdminContentDbName'''')]",'', nchar(10), N'' "ManagedAccounts": {'', nchar(10), N'' "FarmAccount": "[parameters(''''FarmAccount'''')]"'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N''}''), N''FD5F0FD3C13538FAC70646972DC364DFCEAAF85BBE91B0F50FDFF9FD3A3748B4'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''1.0'', ''70000000-0000-0000-0000-000000000003'', N''1.0.0''), (''71000000-0000-0000-0000-000000000004'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', CAST(1 AS bit), CONCAT(CAST(N''{'' AS nvarchar(max)), nchar(10), N'' "schemaVersion": "1.0",'', nchar(10), N'' "templateType": "Service",'', nchar(10), N'' "parameters": {'', nchar(10), N'' "CallingPolicyName": { "type": "string", "defaultValue": "Contoso-Standard-Calling" },'', nchar(10), N'' "MeetingPolicyName": { "type": "string", "defaultValue": "Contoso-Standard-Meetings" }'', nchar(10), N'' },'', nchar(10), N'' "variables": {},'', nchar(10), N'' "resources": {'', nchar(10), N'' "NonNodeData": {'', nchar(10), N'' "Services": {'', nchar(10), N'' "Teams": {'', nchar(10), N'' "CallingPolicy": "[parameters(''''CallingPolicyName'''')]",'', nchar(10), N'' "MeetingPolicy": "[parameters(''''MeetingPolicyName'''')]"'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N'' }'', nchar(10), N''}''), N''32A902FE1A871D4CE2C877EBC5542F7562856532F09BA7F53597B21270586241'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''1.0'', ''70000000-0000-0000-0000-000000000004'', N''1.0.0'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Created', N'CreatedBy', N'IsPublished', N'JsonData', N'JsonHash', N'Modified', N'ModifiedBy', N'PublishedAt', N'PublishedBy', N'SchemaVersion', N'TemplateId', N'Version') AND [object_id] = OBJECT_ID(N'[TemplateVersions]')) SET IDENTITY_INSERT [TemplateVersions] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'DeploymentBatchId', N'VirtualMachineId', N'Created', N'CreatedBy', N'Id', N'JSONData', N'Modified', N'ModifiedBy', N'Status') AND [object_id] = OBJECT_ID(N'[DeploymentExecutions]')) SET IDENTITY_INSERT [DeploymentExecutions] ON; EXEC(N'INSERT INTO [DeploymentExecutions] ([DeploymentBatchId], [VirtualMachineId], [Created], [CreatedBy], [Id], [JSONData], [Modified], [ModifiedBy], [Status]) VALUES (''80000000-0000-0000-0000-000000000001'', ''30000000-0000-0000-0000-000000000004'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''81000000-0000-0000-0000-000000000001'', N''{"role":"WebFrontEnd"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Pending''), (''80000000-0000-0000-0000-000000000001'', ''30000000-0000-0000-0000-000000000005'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', ''81000000-0000-0000-0000-000000000002'', N''{"role":"Application"}'', ''2026-07-07T00:00:00.0000000Z'', N''DemoSeed'', N''Pending'')'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'DeploymentBatchId', N'VirtualMachineId', N'Created', N'CreatedBy', N'Id', N'JSONData', N'Modified', N'ModifiedBy', N'Status') AND [object_id] = OBJECT_ID(N'[DeploymentExecutions]')) SET IDENTITY_INSERT [DeploymentExecutions] OFF; END; IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260707203222_ResetAndSeedDemoData' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260707203222_ResetAndSeedDemoData', N'10.0.8'); END; COMMIT; GO