protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
                name: "UserCustomerRelations",
                columns: table => new
            {
                Id = table.Column <int>(nullable: false)
                     .Annotation("SqlServer:Identity", "1, 1"),
                UserId     = table.Column <int>(nullable: false),
                CustomerId = table.Column <int>(nullable: false)
            },
                constraints: table =>
            {
                table.PrimaryKey("PK_UserCustomerRelations", x => x.Id);
                table.ForeignKey(
                    name: "FK_UserCustomerRelations_Customers_CustomerId",
                    column: x => x.CustomerId,
                    principalTable: "Customers",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Restrict);
                table.ForeignKey(
                    name: "FK_UserCustomerRelations_Users_UserId",
                    column: x => x.UserId,
                    principalTable: "Users",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Restrict);
            });

            migrationBuilder.CreateIndex(
                name: "IX_Users_Upn",
                table: "Users",
                column: "Upn",
                unique: true,
                filter: "[Upn] IS NOT NULL");

            migrationBuilder.CreateIndex(
                name: "IX_UserCustomerRelations_CustomerId",
                table: "UserCustomerRelations",
                column: "CustomerId");

            migrationBuilder.CreateIndex(
                name: "IX_UserCustomerRelations_UserId",
                table: "UserCustomerRelations",
                column: "UserId");
            // Create UserCustomerRelation Records from Users.CustomerId
            migrationBuilder.CreateAllUserCustomerRelations();

            migrationBuilder.AddColumn <int>(
                name: "OrganizationId",
                table: "Users",
                nullable: true);



            migrationBuilder.CreateIndex(
                name: "IX_Users_OrganizationId",
                table: "Users",
                column: "OrganizationId");



            migrationBuilder.AddForeignKey(
                name: "FK_Users_Organizations_OrganizationId",
                table: "Users",
                column: "OrganizationId",
                principalTable: "Organizations",
                principalColumn: "Id",
                onDelete: ReferentialAction.Restrict);

            //Set all OrganizationIds
            migrationBuilder.SetOrganizationIdForUsers();

            migrationBuilder.DropForeignKey(
                name: "FK_Users_Customers_CustomerId",
                table: "Users");

            migrationBuilder.DropIndex(
                name: "IX_Users_CustomerId",
                table: "Users");

            migrationBuilder.DropColumn(
                name: "CustomerId",
                table: "Users");
        }