diff --git a/db/migrate/20241021123147_allow_null_file_checksum_in_xray_reports.rb b/db/migrate/20241021123147_allow_null_file_checksum_in_xray_reports.rb
new file mode 100644
index 0000000000000000000000000000000000000000..f7e5ee98c29221833c85e082127b0c21d7b82d5c
--- /dev/null
+++ b/db/migrate/20241021123147_allow_null_file_checksum_in_xray_reports.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AllowNullFileChecksumInXrayReports < Gitlab::Database::Migration[2.2]
+  milestone '17.6'
+
+  def change
+    change_column_null :xray_reports, :file_checksum, true
+  end
+end
diff --git a/db/schema_migrations/20241021123147 b/db/schema_migrations/20241021123147
new file mode 100644
index 0000000000000000000000000000000000000000..2a46711a1d6924b66cb65d37136b5e7113709a4c
--- /dev/null
+++ b/db/schema_migrations/20241021123147
@@ -0,0 +1 @@
+b7dcafc4a5211261d39d17e8879a445297297faa021b739f36435774790d1987
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index f3aaf7324bcd8ffcf1b8c784b8b91ce333eb86c5..9a4d58bbc1b953906c938e2659196789a21f3499 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -21490,7 +21490,7 @@ CREATE TABLE xray_reports (
     updated_at timestamp with time zone NOT NULL,
     lang text NOT NULL,
     payload jsonb NOT NULL,
-    file_checksum bytea NOT NULL,
+    file_checksum bytea,
     CONSTRAINT check_6da5a3b473 CHECK ((char_length(lang) <= 255))
 );
 
diff --git a/ee/app/models/projects/xray_report.rb b/ee/app/models/projects/xray_report.rb
index 27e5dd5ba1c95e5c48c75db5a9ee77b9ae1e542d..4c76e95c2dce0280c378f5313c7bfe64b44d36c6 100644
--- a/ee/app/models/projects/xray_report.rb
+++ b/ee/app/models/projects/xray_report.rb
@@ -3,10 +3,13 @@
 module Projects
   class XrayReport < ApplicationRecord
     include Gitlab::Utils::StrongMemoize
+    include IgnorableColumns
+
+    ignore_column :file_checksum, remove_with: '17.8', remove_after: '2024-12-22'
 
     belongs_to :project
 
-    validates :project, :payload, :lang, :file_checksum, presence: true
+    validates :project, :payload, :lang, presence: true
     validates :lang, uniqueness: { scope: :project }
     validates :payload, json_schema: { filename: 'xray_report' }
 
diff --git a/ee/app/services/ai/repository_xray/scan_dependencies_service.rb b/ee/app/services/ai/repository_xray/scan_dependencies_service.rb
index ce79abbf131f148867926012d1aa466e7805bcfa..4be407166e3463e1d741872be871b56a2b15a3be 100644
--- a/ee/app/services/ai/repository_xray/scan_dependencies_service.rb
+++ b/ee/app/services/ai/repository_xray/scan_dependencies_service.rb
@@ -42,15 +42,12 @@ def process
 
       def save_xray_reports(config_files)
         config_files_by_lang = config_files.group_by { |cf| cf.class.lang }
-        # TODO: `file_checksum` to be removed in https://gitlab.com/gitlab-org/gitlab/-/issues/479185.
-        file_checksum = config_files.first.payload[:checksum]
 
         reports_array = config_files_by_lang.map do |(lang, config_files)|
           {
             project_id: project.id,
             payload: merge_payloads(config_files),
-            lang: lang,
-            file_checksum: file_checksum
+            lang: lang
           }
         end
 
diff --git a/ee/app/services/ai/store_repository_xray_service.rb b/ee/app/services/ai/store_repository_xray_service.rb
index 32d5c9477fe21c5d2edf0b5715e91a2beac792dc..9820cb458ddd11775480d92d5475e947e382d18f 100644
--- a/ee/app/services/ai/store_repository_xray_service.rb
+++ b/ee/app/services/ai/store_repository_xray_service.rb
@@ -17,7 +17,7 @@ def execute
             content = ::Gitlab::Json.parse(blob)
             Projects::XrayReport
               .upsert(
-                { project_id: pipeline.project_id, payload: content, lang: lang, file_checksum: content['checksum'] },
+                { project_id: pipeline.project_id, payload: content, lang: lang },
                 unique_by: [:project_id, :lang]
               )
           rescue JSON::ParserError => e
diff --git a/ee/app/services/code_suggestions/xray/store_dependencies_service.rb b/ee/app/services/code_suggestions/xray/store_dependencies_service.rb
index 788a3e1167aff27cf06beb92cddbd5046755c130..31d3e10df27d2a248310743227541aa0224a846f 100644
--- a/ee/app/services/code_suggestions/xray/store_dependencies_service.rb
+++ b/ee/app/services/code_suggestions/xray/store_dependencies_service.rb
@@ -22,7 +22,7 @@ def execute
         }
 
         Projects::XrayReport.upsert(
-          { project_id: project.id, payload: payload, lang: language, file_checksum: checksum },
+          { project_id: project.id, payload: payload, lang: language },
           unique_by: [:project_id, :lang]
         )
 
diff --git a/ee/spec/factories/projects/xray_reports.rb b/ee/spec/factories/projects/xray_reports.rb
index 33d528c04fe77a655235536d68205bacd52d8b1e..3c5b6ca366eda05ff1681a298dead6b0203889ff 100644
--- a/ee/spec/factories/projects/xray_reports.rb
+++ b/ee/spec/factories/projects/xray_reports.rb
@@ -4,7 +4,6 @@
   factory :xray_report, class: 'Projects::XrayReport' do
     project
     lang { 'Ruby' }
-    file_checksum { '53b5964d32d30fc60089fb54cd73538003a487afdd5d6a3b549ae162ce4819cd' }
     payload do
       {
         "scannerVersion" => "0.0.1",
diff --git a/ee/spec/models/projects/xray_report_spec.rb b/ee/spec/models/projects/xray_report_spec.rb
index 42826a5cbc1ffd3462dc3bec9657f12dbe6794d3..504691168d16104e78dc59df924dce27d8dc7b54 100644
--- a/ee/spec/models/projects/xray_report_spec.rb
+++ b/ee/spec/models/projects/xray_report_spec.rb
@@ -9,7 +9,6 @@
     it { is_expected.to validate_presence_of(:project) }
     it { is_expected.to validate_presence_of(:lang) }
     it { is_expected.to validate_presence_of(:payload) }
-    it { is_expected.to validate_presence_of(:file_checksum) }
 
     it 'validates uniqueness of lang and project', :aggregate_failures do
       create(:xray_report, project: project, lang: 'Ruby')
diff --git a/ee/spec/services/code_suggestions/xray/store_dependencies_service_spec.rb b/ee/spec/services/code_suggestions/xray/store_dependencies_service_spec.rb
index 2d64c0c57311c24d2fae76a407977d48f1976cf1..50a98a4a4cb51dce1b9aabc8ea90f4029edb9dfb 100644
--- a/ee/spec/services/code_suggestions/xray/store_dependencies_service_spec.rb
+++ b/ee/spec/services/code_suggestions/xray/store_dependencies_service_spec.rb
@@ -27,7 +27,6 @@
         report = project.xray_reports.last!
 
         expect(report.lang).to eq(language)
-        expect(report.file_checksum).to be_present
         expect(report.payload['checksum']).to be_present
         expect(report.payload['scannerVersion']).to eq(scanner_version)
         expect(report.payload['libs']).to match_array(dependencies_hash)