diff --git a/ee/lib/ee/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb b/ee/lib/ee/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb
index 1fd3780c24ce8c9ab260dcf419668b90a40dc83d..8bfa4984c7ddbed948ac1ffea28dd7f073eb8eef 100644
--- a/ee/lib/ee/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb
+++ b/ee/lib/ee/gitlab/ci/pipeline/chain/evaluate_workflow_rules.rb
@@ -12,7 +12,7 @@ module EvaluateWorkflowRules
 
             override :force_pipeline_creation_to_continue?
             def force_pipeline_creation_to_continue?
-              command.execution_policy_pipelines.present?
+              command.pipeline_execution_policies.present?
             end
           end
         end
diff --git a/ee/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/find_configs.rb b/ee/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/find_configs.rb
index 2bf70ffff4ff84f9cddb43c96567ea41d2a3415a..39594d1d8fdab77b35d06dd53214e04fd0306543 100644
--- a/ee/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/find_configs.rb
+++ b/ee/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/find_configs.rb
@@ -22,6 +22,8 @@ module FindConfigs
               include ::Gitlab::Utils::StrongMemoize
               extend ::Gitlab::Utils::Override
 
+              PipelineExecutionPolicy = Struct.new(:pipeline)
+
               override :perform!
               def perform!
                 return if ::Feature.disabled?(:pipeline_execution_policy_type, project.group)
@@ -29,12 +31,12 @@ def perform!
                 return if pipeline.dangling?
                 return if pipeline_execution_policy_contents.empty?
 
-                command.execution_policy_pipelines = []
+                command.pipeline_execution_policies = []
                 pipeline_execution_policy_contents.each do |content|
                   response = create_pipeline(content)
 
                   if response.success?
-                    command.execution_policy_pipelines << response.payload
+                    command.pipeline_execution_policies << PipelineExecutionPolicy.new(response.payload)
                   elsif pipeline_filtered_by_rules?(response.payload)
                     # no-op: we ignore empty pipelines
                   else
diff --git a/ee/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/merge_jobs.rb b/ee/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/merge_jobs.rb
index dfc8de36e3b007700ec6ece98cb75ba139b5c27b..afef25d829c6b8cdcec334e400d1519982e32302 100644
--- a/ee/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/merge_jobs.rb
+++ b/ee/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/merge_jobs.rb
@@ -17,7 +17,7 @@ module PipelineExecutionPolicies
             module MergeJobs
               def perform!
                 return if ::Feature.disabled?(:pipeline_execution_policy_type, project.group)
-                return if command.execution_policy_mode? || command.execution_policy_pipelines.blank?
+                return if command.execution_policy_mode? || command.pipeline_execution_policies.blank?
 
                 clear_project_pipeline
                 merge_policy_jobs
@@ -38,7 +38,7 @@ def clear_project_pipeline
               def merge_policy_jobs
                 ::Gitlab::Ci::Pipeline::PipelineExecutionPolicies::JobsMerger
                   .new(pipeline: pipeline,
-                    execution_policy_pipelines: command.execution_policy_pipelines,
+                    pipeline_execution_policies: command.pipeline_execution_policies,
                     # `yaml_processor_result` contains the declared project stages, even if they are unused.
                     declared_stages: command.yaml_processor_result.stages
                   )
diff --git a/ee/lib/ee/gitlab/ci/pipeline/chain/skip.rb b/ee/lib/ee/gitlab/ci/pipeline/chain/skip.rb
index 167184dca7d1b77ff02fa5f6943926fc3bc9db53..0a28f7388adee066152b1ea18c9e2f35c5020489 100644
--- a/ee/lib/ee/gitlab/ci/pipeline/chain/skip.rb
+++ b/ee/lib/ee/gitlab/ci/pipeline/chain/skip.rb
@@ -13,7 +13,7 @@ module Skip
             override :skipped?
             def skipped?
               return super if ::Feature.disabled?(:pipeline_execution_policy_type, project.group) ||
-                command.execution_policy_pipelines.blank?
+                command.pipeline_execution_policies.blank?
 
               # We don't allow pipeline to be skipped if it has to run execution policy pipelines
               false
diff --git a/ee/lib/gitlab/ci/pipeline/pipeline_execution_policies/jobs_merger.rb b/ee/lib/gitlab/ci/pipeline/pipeline_execution_policies/jobs_merger.rb
index 81827aeff4cc1218b52cc75e3ea5d16a1b8c07e0..14441811ddcd71f0b5073af0e14807144b4ce505 100644
--- a/ee/lib/gitlab/ci/pipeline/pipeline_execution_policies/jobs_merger.rb
+++ b/ee/lib/gitlab/ci/pipeline/pipeline_execution_policies/jobs_merger.rb
@@ -13,25 +13,25 @@ module PipelineExecutionPolicies
         class JobsMerger
           include ::Gitlab::Utils::StrongMemoize
 
-          def initialize(pipeline:, execution_policy_pipelines:, declared_stages:)
+          def initialize(pipeline:, pipeline_execution_policies:, declared_stages:)
             @pipeline = pipeline
-            @execution_policy_pipelines = execution_policy_pipelines
+            @pipeline_execution_policies = pipeline_execution_policies
             @declared_stages = declared_stages
             @pipeline_stages_by_name = pipeline.stages.index_by(&:name)
           end
 
           def execute
-            execution_policy_pipelines.each do |policy_pipeline_config|
+            pipeline_execution_policies.each do |policy_pipeline_config|
               inject_jobs_from(policy_pipeline_config)
             end
           end
 
           private
 
-          attr_reader :pipeline, :execution_policy_pipelines, :declared_stages, :pipeline_stages_by_name
+          attr_reader :pipeline, :pipeline_execution_policies, :declared_stages, :pipeline_stages_by_name
 
           def inject_jobs_from(policy_pipeline)
-            policy_pipeline.stages.each do |policy_stage|
+            policy_pipeline.pipeline.stages.each do |policy_stage|
               ensure_stage_exists(policy_stage)
               matching_pipeline_stage = pipeline_stages_by_name[policy_stage.name]
 
diff --git a/ee/lib/gitlab/ci/pipeline/pipeline_execution_policies/pipeline_context.rb b/ee/lib/gitlab/ci/pipeline/pipeline_execution_policies/pipeline_context.rb
index 3d836451066704ceb151b269284b589c4c3709d0..a945d64bdfff09ea04661cf367ef2a2a9b5d7aa8 100644
--- a/ee/lib/gitlab/ci/pipeline/pipeline_execution_policies/pipeline_context.rb
+++ b/ee/lib/gitlab/ci/pipeline/pipeline_execution_policies/pipeline_context.rb
@@ -15,20 +15,20 @@ def execution_policy_mode?
             command&.execution_policy_mode? || false
           end
 
-          def has_execution_policy_pipelines?
-            command&.execution_policy_pipelines.present? || false
+          def has_pipeline_execution_policies?
+            command&.pipeline_execution_policies.present? || false
           end
 
           # We inject reserved policy stages only when;
           # - execution_policy_mode: This is a temporary pipeline creation mode.
           #   We need to inject these stages for the validation because the policy may use them.
-          # - has_execution_policy_pipelines?: This is the actual pipeline creation mode.
+          # - has_pipeline_execution_policies?: This is the actual pipeline creation mode.
           #   It means that the result pipeline will have PEPs.
           #   We need to inject these stages because some of the policies may use them.
           def inject_policy_reserved_stages?
             return false if ::Feature.disabled?(:pipeline_execution_policy_type, project&.group)
 
-            execution_policy_mode? || has_execution_policy_pipelines?
+            execution_policy_mode? || has_pipeline_execution_policies?
           end
 
           def valid_stage?(stage)
diff --git a/ee/lib/gitlab/ci/project_config/pipeline_execution_policy_forced.rb b/ee/lib/gitlab/ci/project_config/pipeline_execution_policy_forced.rb
index 944f9503bb4128a81622181751eb96770991e7cb..a2242a5c528aff52b77fe308e10cfa3a231e99be 100644
--- a/ee/lib/gitlab/ci/project_config/pipeline_execution_policy_forced.rb
+++ b/ee/lib/gitlab/ci/project_config/pipeline_execution_policy_forced.rb
@@ -22,7 +22,7 @@ class PipelineExecutionPolicyForced < Gitlab::Ci::ProjectConfig::Source
 
         def content
           return if ::Feature.disabled?(:pipeline_execution_policy_type, @project.group)
-          return unless @has_execution_policy_pipelines
+          return unless @has_pipeline_execution_policies
 
           # Create a dummy job to ensure that project pipeline gets created.
           # Pipeline execution policy jobs will be merged onto the project pipeline.
diff --git a/ee/spec/factories/ci/pipeline_execution_policy.rb b/ee/spec/factories/ci/pipeline_execution_policy.rb
new file mode 100644
index 0000000000000000000000000000000000000000..0e65e099fb87da09015a38c28f764fc53f96191c
--- /dev/null
+++ b/ee/spec/factories/ci/pipeline_execution_policy.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+  factory(
+    :ci_pipeline_execution_policy,
+    class: '::Gitlab::Ci::Pipeline::Chain::PipelineExecutionPolicies::FindConfigs::PipelineExecutionPolicy'
+  ) do
+    pipeline factory: :ci_empty_pipeline
+  end
+end
diff --git a/ee/spec/lib/ee/gitlab/ci/config_spec.rb b/ee/spec/lib/ee/gitlab/ci/config_spec.rb
index 5c7ca99ee72ff9535fde73f58fee3e4b32cee204..e5edd3eee434add10af95a2fb2840ed5fd5b1780 100644
--- a/ee/spec/lib/ee/gitlab/ci/config_spec.rb
+++ b/ee/spec/lib/ee/gitlab/ci/config_spec.rb
@@ -168,8 +168,8 @@
       it_behaves_like 'injects reserved policy stages'
     end
 
-    context 'when execution_policy_pipelines are present' do
-      let(:execution_policy_pipelines) { build_list(:ci_empty_pipeline, 2) }
+    context 'when pipeline_execution_policies are present' do
+      let(:pipeline_execution_policies) { build_list(:ci_pipeline_execution_policy, 2) }
 
       it_behaves_like 'injects reserved policy stages'
     end
diff --git a/ee/spec/lib/ee/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb b/ee/spec/lib/ee/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb
index 817459a83d6bc23e178eb06b0922b4576b12055b..fb2490547d165d5c724bc9a50d14ab26863931c1 100644
--- a/ee/spec/lib/ee/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb
+++ b/ee/spec/lib/ee/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb
@@ -7,12 +7,12 @@
   let_it_be(:user) { create(:user) }
   let(:pipeline) { build(:ci_pipeline, project: project) }
 
-  let(:execution_policy_pipelines) { nil }
+  let(:pipeline_execution_policies) { nil }
   let(:command) do
     Gitlab::Ci::Pipeline::Chain::Command.new(
       project: project,
       current_user: user,
-      execution_policy_pipelines: execution_policy_pipelines
+      pipeline_execution_policies: pipeline_execution_policies
     )
   end
 
@@ -101,8 +101,10 @@
         end
       end
 
-      context 'when execution_policy_pipelines are present' do
-        let(:execution_policy_pipelines) { [build(:ci_pipeline, project: project, user: user)] }
+      context 'when pipeline_execution_policies are present' do
+        let(:pipeline_execution_policies) do
+          [build(:ci_pipeline_execution_policy, pipeline: build(:ci_pipeline, project: project, user: user))]
+        end
 
         before do
           step.perform!
diff --git a/ee/spec/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/find_configs_spec.rb b/ee/spec/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/find_configs_spec.rb
index 2c88b58e8078bd641ad91455a80e8717cbcceec2..d2f74079a449e081e68b9f3a830d966031ab292c 100644
--- a/ee/spec/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/find_configs_spec.rb
+++ b/ee/spec/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/find_configs_spec.rb
@@ -39,18 +39,18 @@
   end
 
   describe '#perform!' do
-    it 'sets execution_policy_pipelines' do
+    it 'sets pipeline_execution_policies' do
       step.perform!
 
-      expect(command.execution_policy_pipelines).to be_a(Array)
-      expect(command.execution_policy_pipelines.size).to eq(2)
+      expect(command.pipeline_execution_policies).to be_a(Array)
+      expect(command.pipeline_execution_policies.size).to eq(2)
     end
 
     it 'passes pipeline source to execution policy pipelines' do
       step.perform!
 
-      command.execution_policy_pipelines.each do |pipeline|
-        expect(pipeline.source).to eq(source)
+      command.pipeline_execution_policies.each do |policy|
+        expect(policy.pipeline.source).to eq(source)
       end
     end
 
@@ -73,7 +73,7 @@
       it 'passes the merge request to the policy pipelines' do
         step.perform!
 
-        expect(command.execution_policy_pipelines.first.merge_request).to eq(merge_request)
+        expect(command.pipeline_execution_policies.first.pipeline.merge_request).to eq(merge_request)
       end
     end
 
@@ -117,7 +117,7 @@
       end
 
       it 'ignores the policy pipelines' do
-        expect(command.execution_policy_pipelines).to be_empty
+        expect(command.pipeline_execution_policies).to be_empty
       end
     end
 
@@ -126,20 +126,20 @@
         stub_feature_flags(pipeline_execution_policy_type: false)
       end
 
-      it 'does not set execution_policy_pipelines' do
+      it 'does not set pipeline_execution_policies' do
         step.perform!
 
-        expect(command.execution_policy_pipelines).to be_nil
+        expect(command.pipeline_execution_policies).to be_nil
       end
     end
 
     context 'when running in execution_policy_dry_run' do
       let(:execution_policy_dry_run) { true }
 
-      it 'does not set execution_policy_pipelines' do
+      it 'does not set pipeline_execution_policies' do
         step.perform!
 
-        expect(command.execution_policy_pipelines).to be_nil
+        expect(command.pipeline_execution_policies).to be_nil
       end
     end
 
@@ -148,10 +148,10 @@
         context "when source is #{source}" do
           let(:source) { source }
 
-          it 'does not set execution_policy_pipelines' do
+          it 'does not set pipeline_execution_policies' do
             step.perform!
 
-            expect(command.execution_policy_pipelines).to be_nil
+            expect(command.pipeline_execution_policies).to be_nil
           end
         end
       end
@@ -160,10 +160,10 @@
     context 'when pipeline execution policy configs are empty' do
       let(:policy_contents) { [] }
 
-      it 'does not set execution_policy_pipelines' do
+      it 'does not set pipeline_execution_policies' do
         step.perform!
 
-        expect(command.execution_policy_pipelines).to be_nil
+        expect(command.pipeline_execution_policies).to be_nil
       end
     end
   end
diff --git a/ee/spec/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/merge_jobs_spec.rb b/ee/spec/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/merge_jobs_spec.rb
index f109bdab7a53e67b6124168481aa7819e7d55b35..2292a646aa0d992d318c6acc025bc286d6fd5bf3 100644
--- a/ee/spec/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/merge_jobs_spec.rb
+++ b/ee/spec/lib/ee/gitlab/ci/pipeline/chain/pipeline_execution_policies/merge_jobs_spec.rb
@@ -9,10 +9,10 @@
   let_it_be(:project) { create(:project, :repository, group: group) }
   let_it_be(:user) { create(:user, developer_of: project) }
   let(:pipeline) { build(:ci_pipeline, project: project, ref: 'master', user: user) }
-  let(:execution_policy_pipelines) do
+  let(:pipeline_execution_policies) do
     [
-      build_mock_policy_pipeline({ 'build' => ['docker'] }),
-      build_mock_policy_pipeline({ 'test' => ['rspec'] })
+      build(:ci_pipeline_execution_policy, pipeline: build_mock_policy_pipeline({ 'build' => ['docker'] })),
+      build(:ci_pipeline_execution_policy, pipeline: build_mock_policy_pipeline({ 'test' => ['rspec'] }))
     ]
   end
 
@@ -21,7 +21,7 @@
       project: project,
       current_user: user,
       origin_ref: pipeline.ref,
-      execution_policy_pipelines: execution_policy_pipelines
+      pipeline_execution_policies: pipeline_execution_policies
     )
   end
 
@@ -46,7 +46,7 @@
       expect(::Gitlab::Ci::Pipeline::PipelineExecutionPolicies::JobsMerger)
         .to receive(:new).with(
           pipeline: pipeline,
-          execution_policy_pipelines: execution_policy_pipelines,
+          pipeline_execution_policies: pipeline_execution_policies,
           declared_stages: %w[.pipeline-policy-pre .pre build test deploy .post .pipeline-policy-post]
         ).and_call_original
 
@@ -69,7 +69,7 @@
         expect(::Gitlab::Ci::Pipeline::PipelineExecutionPolicies::JobsMerger)
           .to receive(:new).with(
             pipeline: pipeline,
-            execution_policy_pipelines: execution_policy_pipelines,
+            pipeline_execution_policies: pipeline_execution_policies,
             declared_stages: %w[.pipeline-policy-pre .pre pre-test test post-test .post .pipeline-policy-post]
           ).and_call_original
 
@@ -84,7 +84,7 @@
         expect(::Gitlab::Ci::Pipeline::PipelineExecutionPolicies::JobsMerger)
           .to receive(:new).with(
             pipeline: pipeline,
-            execution_policy_pipelines: execution_policy_pipelines,
+            pipeline_execution_policies: pipeline_execution_policies,
             declared_stages: %w[.pipeline-policy-pre .pre build test deploy .post .pipeline-policy-post]
           ).and_call_original
 
@@ -110,8 +110,8 @@
       end
     end
 
-    context 'when execution_policy_pipelines is not defined' do
-      let(:execution_policy_pipelines) { nil }
+    context 'when pipeline_execution_policies is not defined' do
+      let(:pipeline_execution_policies) { nil }
 
       it 'does not change pipeline stages' do
         expect { run_chain }.not_to change { pipeline.stages }
diff --git a/ee/spec/lib/ee/gitlab/ci/pipeline/chain/skip_spec.rb b/ee/spec/lib/ee/gitlab/ci/pipeline/chain/skip_spec.rb
index d2921663ddd5be9e42c9959f056d7cee7f5f90ad..ecd6698aef682378721c262a730c975fc075da72 100644
--- a/ee/spec/lib/ee/gitlab/ci/pipeline/chain/skip_spec.rb
+++ b/ee/spec/lib/ee/gitlab/ci/pipeline/chain/skip_spec.rb
@@ -35,7 +35,7 @@
 
       context 'when pipeline execution policies are present' do
         before do
-          command.execution_policy_pipelines = build_list(:ci_empty_pipeline, 1)
+          command.pipeline_execution_policies = build_list(:ci_pipeline_execution_policy, 1)
         end
 
         it 'does not break the chain' do
diff --git a/ee/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb b/ee/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb
index a6afe1e5d4ecf3084ec6f12bf2e9aa1d34fcd7a2..fdccacec0957cfda538f6dc94cecb5fd23d99bd2 100644
--- a/ee/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb
+++ b/ee/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb
@@ -135,7 +135,7 @@
     end
 
     before do
-      command.execution_policy_pipelines = build_list(:ci_empty_pipeline, 2)
+      command.pipeline_execution_policies = build_list(:ci_pipeline_execution_policy, 2)
     end
 
     it 'forces the pipeline creation' do
diff --git a/ee/spec/lib/gitlab/ci/pipeline/pipeline_execution_policies/jobs_merger_spec.rb b/ee/spec/lib/gitlab/ci/pipeline/pipeline_execution_policies/jobs_merger_spec.rb
index eafd3fd9632df523a1ce0a6bae7c556c5746c283..233ddf954faced684578ed8efa2d0a82ebf2121a 100644
--- a/ee/spec/lib/gitlab/ci/pipeline/pipeline_execution_policies/jobs_merger_spec.rb
+++ b/ee/spec/lib/gitlab/ci/pipeline/pipeline_execution_policies/jobs_merger_spec.rb
@@ -9,17 +9,17 @@
   let_it_be(:user) { create(:user, developer_of: project) }
   let(:declared_stages) { %w[.pipeline-policy-pre .pre build test deploy .post .pipeline-policy-post] }
   let(:pipeline) { build_mock_pipeline({ 'build' => ['build_job'], 'test' => ['rake'] }, declared_stages) }
-  let(:execution_policy_pipelines) do
+  let(:pipeline_execution_policies) do
     [
-      build_mock_policy_pipeline({ 'build' => ['docker'] }),
-      build_mock_policy_pipeline({ 'test' => ['rspec'] })
+      build(:ci_pipeline_execution_policy, pipeline: build_mock_policy_pipeline({ 'build' => ['docker'] })),
+      build(:ci_pipeline_execution_policy, pipeline: build_mock_policy_pipeline({ 'test' => ['rspec'] }))
     ]
   end
 
   subject(:execute) do
     described_class.new(
       pipeline: pipeline,
-      execution_policy_pipelines: execution_policy_pipelines,
+      pipeline_execution_policies: pipeline_execution_policies,
       declared_stages: declared_stages
     ).execute
   end
@@ -47,10 +47,10 @@
 
   context 'with conflicting jobs' do
     context 'when two policy pipelines have the same job names' do
-      let(:execution_policy_pipelines) do
+      let(:pipeline_execution_policies) do
         [
-          build_mock_policy_pipeline({ 'test' => ['rspec'] }),
-          build_mock_policy_pipeline({ 'test' => ['rspec'] })
+          build(:ci_pipeline_execution_policy, pipeline: build_mock_policy_pipeline({ 'test' => ['rspec'] })),
+          build(:ci_pipeline_execution_policy, pipeline: build_mock_policy_pipeline({ 'test' => ['rspec'] }))
         ]
       end
 
@@ -64,10 +64,10 @@
     end
 
     context 'when project and policy pipelines have the same job names' do
-      let(:execution_policy_pipelines) do
+      let(:pipeline_execution_policies) do
         [
-          build_mock_policy_pipeline({ 'test' => ['rake'] }),
-          build_mock_policy_pipeline({ 'test' => ['rspec'] })
+          build(:ci_pipeline_execution_policy, pipeline: build_mock_policy_pipeline({ 'test' => ['rake'] })),
+          build(:ci_pipeline_execution_policy, pipeline: build_mock_policy_pipeline({ 'test' => ['rspec'] }))
         ]
       end
 
@@ -85,8 +85,8 @@
     context 'when custom policy stage is also defined but not used in the main pipeline' do
       let(:declared_stages) { %w[.pipeline-policy-pre .pre build test custom .post .pipeline-policy-post] }
 
-      let(:execution_policy_pipelines) do
-        [build_mock_policy_pipeline({ 'custom' => ['docker'] })]
+      let(:pipeline_execution_policies) do
+        build_list(:ci_pipeline_execution_policy, 1, pipeline: build_mock_policy_pipeline({ 'custom' => ['docker'] }))
       end
 
       it 'injects the policy job into the custom stage', :aggregate_failures do
@@ -101,8 +101,8 @@
     end
 
     context 'when custom policy stage is not defined in the main pipeline' do
-      let(:execution_policy_pipelines) do
-        [build_mock_policy_pipeline({ 'custom' => ['docker'] })]
+      let(:pipeline_execution_policies) do
+        build_list(:ci_pipeline_execution_policy, 1, pipeline: build_mock_policy_pipeline({ 'custom' => ['docker'] }))
       end
 
       it 'ignores the stage' do
@@ -115,8 +115,8 @@
 
   context 'when the policy stage is defined in a different position than the stage in the main pipeline' do
     let(:declared_stages) { %w[.pipeline-policy-pre .pre build test .post .pipeline-policy-post] }
-    let(:execution_policy_pipelines) do
-      [build_mock_policy_pipeline({ 'test' => ['rspec'] })]
+    let(:pipeline_execution_policies) do
+      build_list(:ci_pipeline_execution_policy, 1, pipeline: build_mock_policy_pipeline({ 'test' => ['rspec'] }))
     end
 
     it 'reassigns the position and stage_idx for the jobs to match the main pipeline', :aggregate_failures do
@@ -133,8 +133,8 @@
     let(:declared_stages) { %w[.pipeline-policy-pre .pre build test deploy .post .pipeline-policy-post] }
     let(:pipeline) { build_mock_pipeline({ 'deploy' => ['package'] }, declared_stages) }
 
-    let(:execution_policy_pipelines) do
-      [build_mock_policy_pipeline({ 'deploy' => ['docker'] })]
+    let(:pipeline_execution_policies) do
+      build_list(:ci_pipeline_execution_policy, 1, pipeline: build_mock_policy_pipeline({ 'deploy' => ['docker'] }))
     end
 
     it 'reassigns the position and stage_idx for policy jobs based on the declared stages', :aggregate_failures do
@@ -149,8 +149,8 @@
     end
   end
 
-  context 'when execution_policy_pipelines is empty' do
-    let(:execution_policy_pipelines) { [] }
+  context 'when pipeline_execution_policies is empty' do
+    let(:pipeline_execution_policies) { [] }
 
     it 'does not change pipeline stages' do
       expect { execute }.not_to change { pipeline.stages }
diff --git a/ee/spec/lib/gitlab/ci/pipeline/pipeline_execution_policies/pipeline_context_spec.rb b/ee/spec/lib/gitlab/ci/pipeline/pipeline_execution_policies/pipeline_context_spec.rb
index bd264a38d061bf0190ff0ad9185fd270fdfaa80d..73c69dc7bad388ab62391ba177eceeb491240235 100644
--- a/ee/spec/lib/gitlab/ci/pipeline/pipeline_execution_policies/pipeline_context_spec.rb
+++ b/ee/spec/lib/gitlab/ci/pipeline/pipeline_execution_policies/pipeline_context_spec.rb
@@ -25,13 +25,13 @@
     end
   end
 
-  describe '#has_execution_policy_pipelines?' do
-    subject { context.has_execution_policy_pipelines? }
+  describe '#has_pipeline_execution_policies?' do
+    subject { context.has_pipeline_execution_policies? }
 
     it { is_expected.to eq(false) }
 
-    context 'with execution_policy_pipelines' do
-      let(:execution_policy_pipelines) { build_list(:ci_empty_pipeline, 2) }
+    context 'with pipeline_execution_policies' do
+      let(:pipeline_execution_policies) { build_list(:ci_pipeline_execution_policy, 2) }
 
       it { is_expected.to eq(true) }
     end
@@ -54,8 +54,8 @@
       it { is_expected.to eq(true) }
     end
 
-    context 'with execution_policy_pipelines' do
-      let(:execution_policy_pipelines) { build_list(:ci_empty_pipeline, 2) }
+    context 'with pipeline_execution_policies' do
+      let(:pipeline_execution_policies) { build_list(:ci_empty_pipeline, 2) }
 
       it { is_expected.to eq(true) }
     end
diff --git a/ee/spec/lib/gitlab/ci/project_config_spec.rb b/ee/spec/lib/gitlab/ci/project_config_spec.rb
index ba82210e72242e1e022de395ce8664308e39bcc0..98231d315aabca2592892a9f2fc3b8a690356dd4 100644
--- a/ee/spec/lib/gitlab/ci/project_config_spec.rb
+++ b/ee/spec/lib/gitlab/ci/project_config_spec.rb
@@ -11,7 +11,7 @@
   let(:triggered_for_branch) { true }
   let(:ref) { 'master' }
   let(:security_policies) { {} }
-  let(:has_execution_policy_pipelines) { false }
+  let(:has_pipeline_execution_policies) { false }
 
   let(:content_result) do
     <<~CICONFIG
@@ -31,7 +31,7 @@
       pipeline_source_bridge: bridge,
       triggered_for_branch: triggered_for_branch,
       ref: ref,
-      has_execution_policy_pipelines: has_execution_policy_pipelines
+      has_pipeline_execution_policies: has_pipeline_execution_policies
     )
   end
 
@@ -267,7 +267,7 @@
         end
       end
 
-      let(:has_execution_policy_pipelines) { true }
+      let(:has_pipeline_execution_policies) { true }
 
       it_behaves_like 'forces the pipeline creation by including dummy content'
 
diff --git a/ee/spec/lib/gitlab/ci/yaml_processor_spec.rb b/ee/spec/lib/gitlab/ci/yaml_processor_spec.rb
index 23f3db57872856c306ff2ec5c48de4f9f15f1b9c..6d318500a59de862a08ab722a15ee9359af87ae0 100644
--- a/ee/spec/lib/gitlab/ci/yaml_processor_spec.rb
+++ b/ee/spec/lib/gitlab/ci/yaml_processor_spec.rb
@@ -433,8 +433,8 @@
         it_behaves_like 'stages including policy reserved stages'
       end
 
-      context 'with execution_policy_pipelines' do
-        let(:execution_policy_pipelines) { build_list(:ci_empty_pipeline, 2) }
+      context 'with pipeline_execution_policies' do
+        let(:pipeline_execution_policies) { build_list(:ci_pipeline_execution_policy, 2) }
 
         it_behaves_like 'stages including policy reserved stages'
       end
diff --git a/ee/spec/support/shared_examples/ci/pipeline_execution_policy_shared_examples.rb b/ee/spec/support/shared_examples/ci/pipeline_execution_policy_shared_examples.rb
index 602a093f09a06e06cec5ef624042f7664498f926..0a93cd830a17e291a91e934a7ea50d5e669c4273 100644
--- a/ee/spec/support/shared_examples/ci/pipeline_execution_policy_shared_examples.rb
+++ b/ee/spec/support/shared_examples/ci/pipeline_execution_policy_shared_examples.rb
@@ -9,11 +9,11 @@
     Gitlab::Ci::Pipeline::Chain::Command.new(
       project: project,
       execution_policy_dry_run: execution_policy_dry_run,
-      execution_policy_pipelines: execution_policy_pipelines
+      pipeline_execution_policies: pipeline_execution_policies
     )
   end
 
   let_it_be(:project) { create(:project, :repository) }
   let(:execution_policy_dry_run) { false }
-  let(:execution_policy_pipelines) { [] }
+  let(:pipeline_execution_policies) { [] }
 end
diff --git a/lib/gitlab/ci/pipeline/chain/command.rb b/lib/gitlab/ci/pipeline/chain/command.rb
index aa3c0f7ecc898ab1bf5c70669505ef6157f45cc9..0acc1b283ae1e003cf9443f91a396781a487aaf7 100644
--- a/lib/gitlab/ci/pipeline/chain/command.rb
+++ b/lib/gitlab/ci/pipeline/chain/command.rb
@@ -14,7 +14,7 @@ module Chain
           :chat_data, :allow_mirror_update, :bridge, :content, :dry_run, :logger, :execution_policy_dry_run,
           # These attributes are set by Chains during processing:
           :config_content, :yaml_processor_result, :workflow_rules_result, :pipeline_seed,
-          :pipeline_config, :execution_policy_pipelines
+          :pipeline_config, :pipeline_execution_policies
         ) do
           include Gitlab::Utils::StrongMemoize
 
diff --git a/lib/gitlab/ci/pipeline/chain/config/content.rb b/lib/gitlab/ci/pipeline/chain/config/content.rb
index 78ef8cc9bbba6b5ffdfa7387f1b3854275debb08..0f5f72e449ba9fee87aa03368cc4b3d44b05d90c 100644
--- a/lib/gitlab/ci/pipeline/chain/config/content.rb
+++ b/lib/gitlab/ci/pipeline/chain/config/content.rb
@@ -34,7 +34,7 @@ def pipeline_config
                   pipeline_source: @command.source, pipeline_source_bridge: @command.bridge,
                   triggered_for_branch: @pipeline.branch?,
                   ref: @pipeline.ref,
-                  has_execution_policy_pipelines: @command.execution_policy_pipelines.present?
+                  has_pipeline_execution_policies: @command.pipeline_execution_policies.present?
                 )
               end
             end
diff --git a/lib/gitlab/ci/pipeline/chain/populate.rb b/lib/gitlab/ci/pipeline/chain/populate.rb
index 0c78901847570d8ad8f39f0508d60e99ea74e601..5b2cb7f759dcb5e194e67e4bfb77e78d0e5f1633 100644
--- a/lib/gitlab/ci/pipeline/chain/populate.rb
+++ b/lib/gitlab/ci/pipeline/chain/populate.rb
@@ -39,7 +39,7 @@ def break?
           def no_pipeline_to_create?
             # If there are security policy pipelines,
             # they will be merged onto the pipeline in PipelineExecutionPolicies::MergeJobs
-            stage_names.empty? && @command.execution_policy_pipelines.blank?
+            stage_names.empty? && @command.pipeline_execution_policies.blank?
           end
 
           def stage_names
diff --git a/lib/gitlab/ci/project_config.rb b/lib/gitlab/ci/project_config.rb
index 0845e113dfaa77cdc936b4892c6d1cb6e26e00c1..72ced07619929b9cbbc327093af1ad2b1c4626de 100644
--- a/lib/gitlab/ci/project_config.rb
+++ b/lib/gitlab/ci/project_config.rb
@@ -23,7 +23,7 @@ class ProjectConfig
 
       def initialize(
         project:, sha:, custom_content: nil, pipeline_source: nil, pipeline_source_bridge: nil,
-        triggered_for_branch: nil, ref: nil, has_execution_policy_pipelines: nil)
+        triggered_for_branch: nil, ref: nil, has_pipeline_execution_policies: nil)
         @config = nil
 
         sources.each do |source|
@@ -34,7 +34,7 @@ def initialize(
             pipeline_source_bridge: pipeline_source_bridge,
             triggered_for_branch: triggered_for_branch,
             ref: ref,
-            has_execution_policy_pipelines: has_execution_policy_pipelines)
+            has_pipeline_execution_policies: has_pipeline_execution_policies)
 
           if source_config.exists?
             @config = source_config
diff --git a/lib/gitlab/ci/project_config/source.rb b/lib/gitlab/ci/project_config/source.rb
index 97893f4f91061d0badbc8608bfabde0fda8cd1c5..b7a00c0f2dce91021021a8c132f2e56454c77e6a 100644
--- a/lib/gitlab/ci/project_config/source.rb
+++ b/lib/gitlab/ci/project_config/source.rb
@@ -8,7 +8,7 @@ class Source
 
         def initialize(
           project:, sha:, custom_content: nil, pipeline_source: nil, pipeline_source_bridge: nil,
-          triggered_for_branch: false, ref: nil, has_execution_policy_pipelines: nil)
+          triggered_for_branch: false, ref: nil, has_pipeline_execution_policies: nil)
           @project = project
           @sha = sha
           @custom_content = custom_content
@@ -16,7 +16,7 @@ def initialize(
           @pipeline_source_bridge = pipeline_source_bridge
           @triggered_for_branch = triggered_for_branch
           @ref = ref
-          @has_execution_policy_pipelines = has_execution_policy_pipelines
+          @has_pipeline_execution_policies = has_pipeline_execution_policies
         end
 
         def exists?
diff --git a/spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb
index 14e8c8dd625ae9dfe564835fef058604943a252c..85b0abb554839f604ac583965da84dc3f0a308df 100644
--- a/spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb
+++ b/spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb
@@ -111,14 +111,14 @@ def run_chain
       expect(pipeline).to be_filtered_by_rules
     end
 
-    context 'when there are execution_policy_pipelines' do
+    context 'when there are pipeline_execution_policies' do
       let(:policy_pipeline) { create(:ci_pipeline, project: project, user: user) }
       let(:command) do
         Gitlab::Ci::Pipeline::Chain::Command.new(
           project: project,
           current_user: user,
           origin_ref: 'master',
-          execution_policy_pipelines: [policy_pipeline],
+          pipeline_execution_policies: [policy_pipeline],
           seeds_block: nil)
       end
 
diff --git a/spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb
index c9686e371b92b62ee9052417d4e8e36fea6c26d8..43d2b887403614d75d2a6716a76f94efc0c4333c 100644
--- a/spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb
+++ b/spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb
@@ -58,7 +58,7 @@
 
   context 'when [ci skip] should be ignored' do
     let(:command) do
-      double('command', project: project, current_user: user, ignore_skip_ci: true, execution_policy_pipelines: nil)
+      double('command', project: project, current_user: user, ignore_skip_ci: true, pipeline_execution_policies: nil)
     end
 
     it 'does not break the chain' do
@@ -71,7 +71,7 @@
   context 'when pipeline should be skipped but not persisted' do
     let(:command) do
       double('command', project: project, current_user: user, ignore_skip_ci: false, save_incompleted: false,
-        execution_policy_pipelines: nil)
+        pipeline_execution_policies: nil)
     end
 
     before do