diff --git a/db/migrate/20230703115902_add_relay_state_allowlist_application_settings.rb b/db/migrate/20230703115902_add_relay_state_allowlist_application_settings.rb
new file mode 100644
index 0000000000000000000000000000000000000000..3de7470f113f14a526dc658f222e31f12410a095
--- /dev/null
+++ b/db/migrate/20230703115902_add_relay_state_allowlist_application_settings.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class AddRelayStateAllowlistApplicationSettings < Gitlab::Database::Migration[2.1]
+  def change
+    add_column :application_settings, :relay_state_domain_allowlist,
+      :text,
+      array: true,
+      default: [],
+      null: false
+  end
+end
diff --git a/db/migrate/20230703121859_add_relay_state_allowlist_saml_providers.rb b/db/migrate/20230703121859_add_relay_state_allowlist_saml_providers.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b05059d1d61ba1b24a4c1e6bc43baf94bb26b722
--- /dev/null
+++ b/db/migrate/20230703121859_add_relay_state_allowlist_saml_providers.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class AddRelayStateAllowlistSamlProviders < Gitlab::Database::Migration[2.1]
+  def change
+    add_column :saml_providers, :relay_state_domain_allowlist,
+      :text,
+      array: true,
+      default: [],
+      null: false
+  end
+end
diff --git a/db/schema_migrations/20230703115902 b/db/schema_migrations/20230703115902
new file mode 100644
index 0000000000000000000000000000000000000000..471eb5becbb31d03d7ffb32961da9fd2f1adb8d8
--- /dev/null
+++ b/db/schema_migrations/20230703115902
@@ -0,0 +1 @@
+8a16b05cd573528b6e8baa2d86e761a2b431584c026918e3eda9a630b30ec727
\ No newline at end of file
diff --git a/db/schema_migrations/20230703121859 b/db/schema_migrations/20230703121859
new file mode 100644
index 0000000000000000000000000000000000000000..f72e3201352bb5320ce3b960b19fdaf2c627f114
--- /dev/null
+++ b/db/schema_migrations/20230703121859
@@ -0,0 +1 @@
+149cdb7863460246fb89d02d3c8e1709bdb1d38378304d44c9a916c4bd4ee4ed
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index 3c6bb260ce0a0efb8056d8edf6b7abacffe3d5c0..68e1692ca921d5ae19afda38e6dc258a6f14f71b 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -11768,6 +11768,7 @@ CREATE TABLE application_settings (
     gitlab_shell_operation_limit integer DEFAULT 600,
     elasticsearch_requeue_workers boolean DEFAULT false NOT NULL,
     elasticsearch_worker_number_of_shards integer DEFAULT 2 NOT NULL,
+    relay_state_domain_allowlist text[] DEFAULT '{}'::text[] NOT NULL,
     CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)),
     CONSTRAINT app_settings_container_registry_pre_import_tags_rate_positive CHECK ((container_registry_pre_import_tags_rate >= (0)::numeric)),
     CONSTRAINT app_settings_dep_proxy_ttl_policies_worker_capacity_positive CHECK ((dependency_proxy_ttl_group_policy_worker_capacity >= 0)),
@@ -22226,7 +22227,8 @@ CREATE TABLE saml_providers (
     enforced_group_managed_accounts boolean DEFAULT false NOT NULL,
     prohibited_outer_forks boolean DEFAULT true NOT NULL,
     default_membership_role smallint DEFAULT 10 NOT NULL,
-    git_check_enforced boolean DEFAULT false NOT NULL
+    git_check_enforced boolean DEFAULT false NOT NULL,
+    relay_state_domain_allowlist text[] DEFAULT '{}'::text[] NOT NULL
 );
 
 CREATE SEQUENCE saml_providers_id_seq