diff --git a/config/feature_flags/beta/container_scanning_continuous_vulnerability_scans.yml b/config/feature_flags/beta/container_scanning_continuous_vulnerability_scans.yml
deleted file mode 100644
index 736a449c2063940e9e05e682b82fe8db9151d5db..0000000000000000000000000000000000000000
--- a/config/feature_flags/beta/container_scanning_continuous_vulnerability_scans.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: container_scanning_continuous_vulnerability_scans
-feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/435435
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/141023
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/437162
-milestone: '16.8'
-group: group::composition analysis
-type: beta
-default_enabled: true
diff --git a/doc/user/application_security/continuous_vulnerability_scanning/index.md b/doc/user/application_security/continuous_vulnerability_scanning/index.md
index 79b45104baabb57f1382cb80c3c308728d851e19..94edbf0af46be0736a1fce67216e40b90a5445bb 100644
--- a/doc/user/application_security/continuous_vulnerability_scanning/index.md
+++ b/doc/user/application_security/continuous_vulnerability_scanning/index.md
@@ -10,10 +10,11 @@ DETAILS:
 **Tier:** Ultimate
 **Offering:** GitLab.com, Self-managed, GitLab Dedicated
 
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/371063) in GitLab 16.4 as an [Experiment](../../../policy/experiment-beta-support.md#experiment) with multiple [feature flags](../../../administration/feature_flags.md) enabled by default.
-> - [Feature flags removed](https://gitlab.com/gitlab-org/gitlab/-/issues/425753) in GitLab 16.10.
-> - Continuous Container Scanning [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/435435) in GitLab 16.8 [with a flag](../../../administration/feature_flags.md) named `container_scanning_continuous_vulnerability_scans`. Disabled by default.
-> - Continuous Container Scanning [enabled on GitLab.com, self-managed, and GitLab Dedicated](https://gitlab.com/gitlab-org/gitlab/-/issues/437162) in GitLab 16.10.
+> - Continuous dependency scanning [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/371063) with [feature flags](../../../administration/feature_flags.md) `dependency_scanning_on_advisory_ingestion` and `package_metadata_advisory_scans` enabled by default.
+> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/425753) in GitLab 16.10. Feature flags `dependency_scanning_on_advisory_ingestion` and `package_metadata_advisory_scans` removed.
+> - Continuous container scanning [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/435435) in GitLab 16.8 [with a flag](../../../administration/feature_flags.md) named `container_scanning_continuous_vulnerability_scans`. Disabled by default.
+> - Continuous container scanning [enabled on self-managed, and GitLab Dedicated](https://gitlab.com/gitlab-org/gitlab/-/issues/437162) in GitLab 16.10.
+> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/443712) in GitLab 17.0. Feature flag `container_scanning_continuous_vulnerability_scans` removed.
 
 When advisories are added to either the [GitLab Advisory Database](https://advisories.gitlab.com/) or the
 [Trivy Database](https://github.com/aquasecurity/trivy-db), Continuous Vulnerability Scanning
diff --git a/ee/app/services/package_metadata/ingestion/advisory/ingestion_service.rb b/ee/app/services/package_metadata/ingestion/advisory/ingestion_service.rb
index 73c2eb1fada2fc17e9b7aad1d05367f99a082ed6..21f96c37cef3ca93491c577ee88f7b6c2c985481 100644
--- a/ee/app/services/package_metadata/ingestion/advisory/ingestion_service.rb
+++ b/ee/app/services/package_metadata/ingestion/advisory/ingestion_service.rb
@@ -38,12 +38,6 @@ def publish!
             source_xid = data_object.source_xid
             advisory_xid = data_object.advisory_xid
 
-            if source_xid == 'trivy-db' && Feature.disabled?(:container_scanning_continuous_vulnerability_scans,
-              Feature.current_request, type: :beta)
-              log_skipped_advisory_scan(source_xid, advisory_xid)
-              next
-            end
-
             log_queued_advisory_scan(source_xid, advisory_xid)
 
             Gitlab::EventStore.publish(
@@ -68,11 +62,6 @@ def log_queued_advisory_scan(source_xid, advisory_xid)
           Gitlab::AppJsonLogger.info(message: 'Queued scan for advisory',
             source_xid: source_xid, advisory_xid: advisory_xid)
         end
-
-        def log_skipped_advisory_scan(source_xid, advisory_xid)
-          Gitlab::AppJsonLogger.warn(message: 'Skipped scan for advisory',
-            source_xid: source_xid, advisory_xid: advisory_xid)
-        end
       end
     end
   end
diff --git a/ee/spec/services/package_metadata/ingestion/advisory/ingestion_service_spec.rb b/ee/spec/services/package_metadata/ingestion/advisory/ingestion_service_spec.rb
index 30a05b1e62be1ea07c38516a8185a73b42fa1adf..e57937e096cec350915f9f493642c0cd3cc8ced6 100644
--- a/ee/spec/services/package_metadata/ingestion/advisory/ingestion_service_spec.rb
+++ b/ee/spec/services/package_metadata/ingestion/advisory/ingestion_service_spec.rb
@@ -12,76 +12,51 @@
     let(:old_advisories) { build_list(:pm_advisory_data_object, 5, published_date: Time.zone.now - 14.days - 1.second) }
     let(:import_data) { recent_advisories + old_advisories }
 
-    where(:cs_ff_enabled) do
-      [
-        true,
-        false
-      ]
+    let(:ds_advisories) do
+      build_list(:pm_advisory_data_object, 5, source_xid: 'glad',
+        published_date: Time.zone.now - 13.days)
     end
 
-    with_them do
-      let(:ds_advisories) do
-        build_list(:pm_advisory_data_object, 5, source_xid: 'glad',
-          published_date: Time.zone.now - 13.days)
-      end
+    let(:cs_advisories) do
+      build_list(:pm_advisory_data_object, 5, source_xid: 'trivy-db',
+        published_date: Time.zone.now - 13.days)
+    end
 
-      let(:cs_advisories) do
-        build_list(:pm_advisory_data_object, 5, source_xid: 'trivy-db',
-          published_date: Time.zone.now - 13.days)
-      end
+    before do
+      allow(Gitlab::AppJsonLogger).to receive(:info).and_call_original
+    end
 
-      before do
-        value = cs_ff_enabled ? 100 : 0
-        Feature.enable_percentage_of_actors(:container_scanning_continuous_vulnerability_scans, value)
-        allow(Gitlab::AppJsonLogger).to receive(:warn).and_call_original
-        allow(Gitlab::AppJsonLogger).to receive(:info).and_call_original
+    it 'publishes only recently ingested advisories to the event store' do
+      received_events = []
+      allow(Gitlab::EventStore).to receive(:publish) do |event|
+        received_events << event
       end
 
-      it 'publishes only recently ingested advisories to the event store' do
-        received_events = []
-        allow(Gitlab::EventStore).to receive(:publish) do |event|
-          received_events << event
-        end
-
-        execute
-
-        received_advisory_ids = received_events.map { |event| event.data[:advisory_id] }
-        received_advisories = PackageMetadata::Advisory.where(id: received_advisory_ids)
-                                                       .pluck(:source_xid, :advisory_xid)
-
-        expected = recent_advisories.filter_map do |obj|
-          if (obj.source_xid == 'glad') || (obj.source_xid == 'trivy-db' && cs_ff_enabled)
-            [obj.source_xid, obj.advisory_xid]
-          end
-        end
+      execute
 
-        expect(received_advisories).to match_array(expected)
+      received_advisory_ids = received_events.map { |event| event.data[:advisory_id] }
+      received_advisories = PackageMetadata::Advisory.where(id: received_advisory_ids)
+                                                     .pluck(:source_xid, :advisory_xid)
+      expected = recent_advisories.map { |obj| [obj.source_xid, obj.advisory_xid] }
 
-        if cs_ff_enabled
-          expect(Gitlab::AppJsonLogger).to have_received(:info)
-            .with(message: 'Queued scan for advisory', source_xid: be_present, advisory_xid: be_present)
-            .at_least(:once)
-        end
+      expect(received_advisories).to match_array(expected)
 
-        unless cs_ff_enabled
-          expect(Gitlab::AppJsonLogger).to have_received(:warn)
-            .with(message: 'Skipped scan for advisory', source_xid: be_present, advisory_xid: be_present)
-            .at_least(:once)
-        end
-      end
+      expect(Gitlab::AppJsonLogger).to have_received(:info)
+        .with(message: 'Queued scan for advisory', source_xid: be_present, advisory_xid: be_present)
+        .at_least(:once)
+    end
 
-      it 'uses package metadata application record transactions' do
-        expect(PackageMetadata::ApplicationRecord).to receive(:transaction)
-        execute
-      end
+    it 'uses package metadata application record transactions' do
+      expect(PackageMetadata::ApplicationRecord).to receive(:transaction)
+      execute
+    end
 
-      it 'adds new advisories and affected packages' do
-        expect { execute }
-          .to change { PackageMetadata::Advisory.count }.by(import_data.size)
-                                                        .and change {
-                                                          PackageMetadata::AffectedPackage.count
-                                                        }.by(import_data.size)
-      end
+    it 'adds new advisories and affected packages' do
+      expect { execute }
+        .to change { PackageMetadata::Advisory.count }.by(import_data.size)
+                                                      .and change {
+                                                        PackageMetadata::AffectedPackage.count
+                                                      }.by(import_data.size)
     end
 
     context 'when error occurs' do