diff --git a/.rubocop.yml b/.rubocop.yml
index 2a2f6102dfefe125352b048027ca2fcad45fe339..8219ce78f03e3ad27676e2be8560627645237547 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -935,6 +935,10 @@ Migration/BackgroundMigrationBaseClass:
 BackgroundMigration/AvoidSilentRescueExceptions:
   Enabled: false
 
+Migration/AvoidFinalizeBackgroundMigration:
+  Include:
+    - 'db/post_migrate/*.rb'
+
 Style/ClassAndModuleChildren:
   Enabled: true
 
diff --git a/.rubocop_todo/migration/avoid_finalize_background_migration.yml b/.rubocop_todo/migration/avoid_finalize_background_migration.yml
new file mode 100644
index 0000000000000000000000000000000000000000..bde85ce3e488b5986eff8f0c2b14e123e2dbd7c6
--- /dev/null
+++ b/.rubocop_todo/migration/avoid_finalize_background_migration.yml
@@ -0,0 +1,7 @@
+---
+Migration/AvoidFinalizeBackgroundMigration:
+  Details: grace period
+  Exclude:
+    - 'db/post_migrate/20220502015011_clean_up_fix_merge_request_diff_commit_users.rb'
+    - 'db/post_migrate/20220525131557_cleanup_backfill_integrations_enable_ssl_verification.rb'
+    - 'db/post_migrate/20220713133515_cleanup_backfill_draft_statuses_on_merge_requests.rb'
diff --git a/rubocop/cop/migration/avoid_finalize_background_migration.rb b/rubocop/cop/migration/avoid_finalize_background_migration.rb
new file mode 100644
index 0000000000000000000000000000000000000000..42e6e72a3303ff89959256912c5a9a51a2532762
--- /dev/null
+++ b/rubocop/cop/migration/avoid_finalize_background_migration.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+require_relative '../../migration_helpers'
+
+module RuboCop
+  module Cop
+    module Migration
+      class AvoidFinalizeBackgroundMigration < RuboCop::Cop::Base
+        include MigrationHelpers
+
+        RESTRICT_ON_SEND = [:finalize_background_migration].freeze
+
+        MSG = 'Prefer `ensure_batched_background_migration_is_finished` over ' \
+              '`finalize_background_migration` in Batched Background Migrations. ' \
+              'See https://docs.gitlab.com/ee/development/database/batched_background_migrations.html'
+
+        def on_send(node)
+          add_offense(node)
+        end
+      end
+    end
+  end
+end
diff --git a/spec/rubocop/cop/migration/avoid_finalize_background_migration_spec.rb b/spec/rubocop/cop/migration/avoid_finalize_background_migration_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e4eec39e3ff50c70fb605ce4ae73e73e2941805c
--- /dev/null
+++ b/spec/rubocop/cop/migration/avoid_finalize_background_migration_spec.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+require 'rubocop_spec_helper'
+require_relative '../../../../rubocop/cop/migration/avoid_finalize_background_migration'
+
+RSpec.describe RuboCop::Cop::Migration::AvoidFinalizeBackgroundMigration, feature_category: :database do
+  context 'when file is under db/post_migration' do
+    it "flags the use of 'finalize_background_migration' method" do
+      expect_offense(<<~RUBY)
+        class FinalizeMyMigration < Gitlab::Database::Migration[2.1]
+           MIGRATION = 'MyMigration'
+
+           def up
+             finalize_background_migration(MIGRATION)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #{described_class::MSG}
+           end
+        end
+      RUBY
+    end
+  end
+end