diff --git a/db/migrate/20240611202050_update_default_package_metadata_purl_types_cargo.rb b/db/migrate/20240611202050_update_default_package_metadata_purl_types_cargo.rb
new file mode 100644
index 0000000000000000000000000000000000000000..d58d7ea41ad0ecd47591758d31539f11e9a385da
--- /dev/null
+++ b/db/migrate/20240611202050_update_default_package_metadata_purl_types_cargo.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class UpdateDefaultPackageMetadataPurlTypesCargo < Gitlab::Database::Migration[2.2]
+  milestone '17.2'
+
+  disable_ddl_transaction!
+
+  PARTIALLY_ENABLED_SYNC = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13].freeze
+  FULLY_ENABLED_SYNC     = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14].freeze
+
+  def change
+    change_column_default :application_settings, :package_metadata_purl_types,
+      from: PARTIALLY_ENABLED_SYNC, to: FULLY_ENABLED_SYNC
+  end
+end
diff --git a/db/migrate/20240611202115_add_cargo_purl_type_to_application_setting.rb b/db/migrate/20240611202115_add_cargo_purl_type_to_application_setting.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c1c86d3f911facfea1d883592cf9d608baed4fa9
--- /dev/null
+++ b/db/migrate/20240611202115_add_cargo_purl_type_to_application_setting.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+class AddCargoPurlTypeToApplicationSetting < Gitlab::Database::Migration[2.2]
+  milestone '17.2'
+
+  restrict_gitlab_migration gitlab_schema: :gitlab_main
+
+  class ApplicationSetting < MigrationRecord
+  end
+
+  CARGO_PURL_TYPE = 14
+
+  def up
+    application_setting = ApplicationSetting.last
+    return unless application_setting
+
+    application_setting.package_metadata_purl_types |= [CARGO_PURL_TYPE]
+    application_setting.save
+  end
+
+  def down
+    application_setting = ApplicationSetting.last
+    return unless application_setting
+
+    application_setting.package_metadata_purl_types.delete(CARGO_PURL_TYPE)
+    application_setting.save
+  end
+end
diff --git a/db/schema_migrations/20240611202050 b/db/schema_migrations/20240611202050
new file mode 100644
index 0000000000000000000000000000000000000000..24ee041825b00079bf53209797c57747c88c22ff
--- /dev/null
+++ b/db/schema_migrations/20240611202050
@@ -0,0 +1 @@
+0b22e7b236e50bbee5f93fe9f9d96e2b5c9977918069e2c1d202190f18449ed6
\ No newline at end of file
diff --git a/db/schema_migrations/20240611202115 b/db/schema_migrations/20240611202115
new file mode 100644
index 0000000000000000000000000000000000000000..f837661a2b3d6750e2c376edbbe277144ce3417e
--- /dev/null
+++ b/db/schema_migrations/20240611202115
@@ -0,0 +1 @@
+baf3dd93f9ca57aff07984074da754e20f75ad56fc687e7118463180b25e15b1
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index 8bb8d9bf1b8f9154fdfc74835d86076eaa1c8378..0ab812e297bcbe52ea60c2af29f55b86fb616909 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -5327,7 +5327,7 @@ CREATE TABLE application_settings (
     encrypted_product_analytics_configurator_connection_string bytea,
     encrypted_product_analytics_configurator_connection_string_iv bytea,
     silent_mode_enabled boolean DEFAULT false NOT NULL,
-    package_metadata_purl_types smallint[] DEFAULT '{1,2,3,4,5,6,7,8,9,10,11,12,13}'::smallint[],
+    package_metadata_purl_types smallint[] DEFAULT '{1,2,3,4,5,6,7,8,9,10,11,12,13,14}'::smallint[],
     ci_max_includes integer DEFAULT 150 NOT NULL,
     remember_me_enabled boolean DEFAULT true NOT NULL,
     encrypted_anthropic_api_key bytea,
diff --git a/spec/migrations/20240611202115_add_cargo_purl_type_to_application_setting_spec.rb b/spec/migrations/20240611202115_add_cargo_purl_type_to_application_setting_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..8cf96fd8e9beeedf71690ce04560686e5115359d
--- /dev/null
+++ b/spec/migrations/20240611202115_add_cargo_purl_type_to_application_setting_spec.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe AddCargoPurlTypeToApplicationSetting, feature_category: :software_composition_analysis do
+  let(:settings) { table(:application_settings) }
+
+  describe "#up" do
+    it 'updates setting' do
+      settings.create!(package_metadata_purl_types: [1, 2, 4, 5, 9, 10])
+
+      disable_migrations_output do
+        migrate!
+      end
+
+      expect(ApplicationSetting.last.package_metadata_purl_types).to eq([1, 2, 4, 5, 9, 10, 14])
+    end
+  end
+
+  describe "#down" do
+    context 'with default value' do
+      it 'updates setting' do
+        settings.create!(package_metadata_purl_types: [1, 2, 4, 5, 9, 10, 14])
+
+        disable_migrations_output do
+          migrate!
+          schema_migrate_down!
+        end
+
+        expect(ApplicationSetting.last.package_metadata_purl_types).to eq([1, 2, 4, 5, 9, 10])
+      end
+    end
+  end
+end