diff --git a/db/post_migrate/20240130131923_add_traversal_id_and_archived_to_vulnerability_reads.rb b/db/post_migrate/20240130131923_add_traversal_id_and_archived_to_vulnerability_reads.rb
new file mode 100644
index 0000000000000000000000000000000000000000..741dfb07ba29f3f418b238ddb88985027f3eff0f
--- /dev/null
+++ b/db/post_migrate/20240130131923_add_traversal_id_and_archived_to_vulnerability_reads.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+class AddTraversalIdAndArchivedToVulnerabilityReads < Gitlab::Database::Migration[2.2]
+  enable_lock_retries!
+
+  milestone '16.9'
+
+  def change
+    change_table :vulnerability_reads do |t|
+      t.bigint :traversal_ids, array: true, default: []
+      t.boolean :archived, null: false, default: false
+    end
+  end
+end
diff --git a/db/schema_migrations/20240130131923 b/db/schema_migrations/20240130131923
new file mode 100644
index 0000000000000000000000000000000000000000..7e90930adbafe402be1d298b3cb50cd7dfc0e8b6
--- /dev/null
+++ b/db/schema_migrations/20240130131923
@@ -0,0 +1 @@
+04ea3e00f5f04e4496bcb349fdff91d32db46f80028bc4411e6f7eb8ace2fbb8
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index 8d1e8651638094df52cf8218e7e28bebf1bfbb3f..7f85976a78f08c747dd9e9c8e894d28a39cd9fa3 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -25710,6 +25710,8 @@ CREATE TABLE vulnerability_reads (
     has_merge_request boolean DEFAULT false,
     has_remediations boolean DEFAULT false NOT NULL,
     owasp_top_10 smallint,
+    traversal_ids bigint[] DEFAULT '{}'::bigint[],
+    archived boolean DEFAULT false NOT NULL,
     CONSTRAINT check_380451bdbe CHECK ((char_length(location_image) <= 2048)),
     CONSTRAINT check_a105eb825a CHECK ((char_length(cluster_agent_id) <= 10))
 );