diff --git a/ee/app/models/ee/epic.rb b/ee/app/models/ee/epic.rb
index 5a257496bb27ea66ff2d6049cef52c25c52e5f5f..72ec0f28b0ca338f8b74aa42cb2129d9ed66aae1 100644
--- a/ee/app/models/ee/epic.rb
+++ b/ee/app/models/ee/epic.rb
@@ -738,7 +738,7 @@ def exportable_restricted_associations
     # To account for this mismatch we call this method on the updated epic to set the same updated_at value on the
     # work item while bypassing validations and callbacks
     def sync_work_item_updated_at
-      return unless work_item && group.epic_sync_to_work_item_enabled?
+      return unless work_item
 
       work_item.update_column(:updated_at, updated_at)
     end
diff --git a/ee/app/models/ee/group.rb b/ee/app/models/ee/group.rb
index f9a5e9060a439015a8f1e2404e5fa45108aa5370..4d1c081f5769c35cc581fa6ef1f62024246c87b3 100644
--- a/ee/app/models/ee/group.rb
+++ b/ee/app/models/ee/group.rb
@@ -251,18 +251,9 @@ def service_accounts
         provisioned_users.service_account
       end
 
-      def epic_sync_to_work_item_enabled?
-        ::Feature.enabled?(:sync_epic_to_work_item, self, type: :wip)
-      end
-
       def work_item_sync_to_epic_enabled?
         ::Feature.enabled?(:sync_work_item_to_epic, self, type: :wip)
       end
-
-      def sync_epic_work_item_order_enabled?
-        epic_sync_to_work_item_enabled? &&
-          ::Feature.enabled?(:sync_epic_work_item_order, self, type: :gitlab_com_derisk)
-      end
     end
 
     override :supports_saved_replies?
diff --git a/ee/app/services/concerns/epics/sync_as_work_item.rb b/ee/app/services/concerns/epics/sync_as_work_item.rb
index f3e8087088d2623f1bb62a3e06235c47107e3eec..453afc27a6dd7b47a997893c7c9f1f0c3b295494 100644
--- a/ee/app/services/concerns/epics/sync_as_work_item.rb
+++ b/ee/app/services/concerns/epics/sync_as_work_item.rb
@@ -16,8 +16,6 @@ module SyncAsWorkItem
     def create_work_item_for!(epic)
       work_item = WorkItem.create!(create_params(epic))
 
-      return work_item unless group.epic_sync_to_work_item_enabled?
-
       sync_color(epic, work_item)
       sync_dates(epic, work_item)
 
@@ -29,7 +27,6 @@ def create_work_item_for!(epic)
     end
 
     def update_work_item_for!(epic)
-      return true unless group.epic_sync_to_work_item_enabled?
       return true unless epic.work_item
 
       sync_color(epic, epic.work_item)
diff --git a/ee/app/services/epic_issues/create_service.rb b/ee/app/services/epic_issues/create_service.rb
index 104c349fd2dd7f01d9d7ea926cb1d5ca8e631660..d36f9563c044b3eb43aa935030a4256e81cc0265 100644
--- a/ee/app/services/epic_issues/create_service.rb
+++ b/ee/app/services/epic_issues/create_service.rb
@@ -91,7 +91,7 @@ def schedule_new_link_worker(link, referenced_issue, params)
     def sync_work_item_link!(epic_issue_link)
       return if synced_epic
 
-      if issuable.group.epic_sync_to_work_item_enabled? && issuable.work_item
+      if issuable.work_item
         create_synced_work_item_link!(epic_issue_link)
       else
         delete_synced_work_item_link!(epic_issue_link)
diff --git a/ee/app/services/epics/close_service.rb b/ee/app/services/epics/close_service.rb
index ce9f943f0a542e24f2ee6ee5744b70d848e063f6..2a879157f2a89bde7712189988ea615b9164c4ba 100644
--- a/ee/app/services/epics/close_service.rb
+++ b/ee/app/services/epics/close_service.rb
@@ -11,7 +11,7 @@ def execute(epic)
     private
 
     def close_epic(epic)
-      work_item = epic.work_item if epic.group.epic_sync_to_work_item_enabled? && epic.work_item
+      work_item = epic.work_item if epic.work_item
 
       ApplicationRecord.transaction do
         epic.close!
diff --git a/ee/app/services/epics/epic_links/create_service.rb b/ee/app/services/epics/epic_links/create_service.rb
index 8d3961d4489bfef05edfe17791857ac04168b806..c69763476e56f7d928bc3dba1f463291ced1e764 100644
--- a/ee/app/services/epics/epic_links/create_service.rb
+++ b/ee/app/services/epics/epic_links/create_service.rb
@@ -126,7 +126,7 @@ def can_link_epic?(epic)
       end
 
       def create_synced_work_item_link!(child_epic)
-        return true unless !params[:synced_epic] && issuable.group.epic_sync_to_work_item_enabled?
+        return true if params[:synced_epic]
         return true unless issuable.work_item && child_epic.work_item
 
         response = ::WorkItems::ParentLinks::CreateService
diff --git a/ee/app/services/epics/epic_links/update_service.rb b/ee/app/services/epics/epic_links/update_service.rb
index 89e63c47db4c0ff1caac212d2a2158b53079c4fc..8636eb2ccef4111586c4c7081cfd308f37d09a1e 100644
--- a/ee/app/services/epics/epic_links/update_service.rb
+++ b/ee/app/services/epics/epic_links/update_service.rb
@@ -61,7 +61,7 @@ def sync_work_items_relative_position!(before_epic, after_epic, epic)
       end
 
       def sync_work_item_parent_links?(epic, before_epic, after_epic)
-        return false unless epic.parent.group.sync_epic_work_item_order_enabled? && epic.work_item&.parent_link.present?
+        return false unless epic.work_item&.parent_link.present?
         return false if after_epic && after_epic.work_item&.parent_link.blank?
         return false if before_epic && before_epic.work_item&.parent_link.blank?
 
diff --git a/ee/app/services/epics/issue_promote_service.rb b/ee/app/services/epics/issue_promote_service.rb
index 6bcf89827797bb567379ecd3684e90ac7eead617..0bb026d1b5fe76afd1faebc6388cc04ed9711b1b 100644
--- a/ee/app/services/epics/issue_promote_service.rb
+++ b/ee/app/services/epics/issue_promote_service.rb
@@ -54,7 +54,6 @@ def update_old_entity
     def update_new_entity_description
       super
 
-      return unless parent_group.epic_sync_to_work_item_enabled?
       return unless new_entity.work_item
 
       new_entity.work_item.update!(description: new_entity.description, description_html: new_entity.description_html)
diff --git a/ee/app/services/epics/related_epic_links/create_service.rb b/ee/app/services/epics/related_epic_links/create_service.rb
index 93324c0dad5de59e1b98bcbc8fbc0860c4d57c0f..413e721c85bd53674b9ba553a150cd3880b887cb 100644
--- a/ee/app/services/epics/related_epic_links/create_service.rb
+++ b/ee/app/services/epics/related_epic_links/create_service.rb
@@ -80,9 +80,7 @@ def create_synced_work_item_links!
       end
 
       def sync_to_work_item?
-        !params[:synced_epic] &&
-          issuable.group.epic_sync_to_work_item_enabled? &&
-          issuable.work_item && referenced_issuables.any?(&:issue_id)
+        !params[:synced_epic] && issuable.work_item && referenced_issuables.any?(&:issue_id)
       end
 
       def referenced_synced_work_items
diff --git a/ee/app/services/epics/reopen_service.rb b/ee/app/services/epics/reopen_service.rb
index 1819edf986ed4ad0a9c26298601fcb0f5f67faef..9a393c7bbf9cc19d34eb76af18721ba39a32e2c7 100644
--- a/ee/app/services/epics/reopen_service.rb
+++ b/ee/app/services/epics/reopen_service.rb
@@ -11,7 +11,7 @@ def execute(epic)
     private
 
     def reopen_epic(epic)
-      work_item = epic.work_item if epic.group.epic_sync_to_work_item_enabled? && epic.work_item
+      work_item = epic.work_item if epic.work_item
 
       ApplicationRecord.transaction do
         epic.reopen!
diff --git a/ee/app/services/epics/strategies/base_dates_strategy.rb b/ee/app/services/epics/strategies/base_dates_strategy.rb
index 4cd79fce313e3dcd1a7ad1a16abcb66939823630..48994b935d2585a51d5b6b13b4bbc89fc3896e4b 100644
--- a/ee/app/services/epics/strategies/base_dates_strategy.rb
+++ b/ee/app/services/epics/strategies/base_dates_strategy.rb
@@ -16,8 +16,6 @@ def source_milestones_query
       # rubocop: enable CodeReuse/ActiveRecord
 
       def update_epic_work_items(epics)
-        return unless Feature.enabled?(:sync_epic_to_work_item_dates)
-
         work_items_dates = build_work_items_date_sources(epics)
         return if work_items_dates.blank?
 
diff --git a/ee/app/services/epics/tree_reorder_service.rb b/ee/app/services/epics/tree_reorder_service.rb
index fb8be47b8e1e999e27c3c500e4b8a94da3dbe13f..191fd93f690913b64746d02753c5fc0b44eafa94 100644
--- a/ee/app/services/epics/tree_reorder_service.rb
+++ b/ee/app/services/epics/tree_reorder_service.rb
@@ -194,7 +194,6 @@ def find_object(id)
     end
 
     def sync_move_to_work_item!
-      return unless Feature.enabled?(:sync_epic_work_item_order, base_epic.group)
       return if new_parent_has_no_adjacent_item? || not_all_items_have_a_work_item?
 
       result = WorkItems::ParentLinks::ReorderService.new(work_item_parent, current_user,
diff --git a/ee/config/feature_flags/gitlab_com_derisk/sync_epic_to_work_item_dates.yml b/ee/config/feature_flags/gitlab_com_derisk/sync_epic_to_work_item_dates.yml
deleted file mode 100644
index 2cb5af3a5d20b707ada2e5dfd226067211f8a4be..0000000000000000000000000000000000000000
--- a/ee/config/feature_flags/gitlab_com_derisk/sync_epic_to_work_item_dates.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: sync_epic_to_work_item_dates
-feature_issue_url:
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149590
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/456979
-milestone: '17.0'
-group: group::product planning
-type: gitlab_com_derisk
-default_enabled: false
diff --git a/ee/config/feature_flags/gitlab_com_derisk/sync_epic_work_item_order.yml b/ee/config/feature_flags/gitlab_com_derisk/sync_epic_work_item_order.yml
deleted file mode 100644
index e8b228b5e078f40c49216967f507725cc1a0b5fe..0000000000000000000000000000000000000000
--- a/ee/config/feature_flags/gitlab_com_derisk/sync_epic_work_item_order.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: sync_epic_work_item_order
-feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/441273
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/147059
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/449044
-milestone: '16.11'
-group: group::product planning
-type: gitlab_com_derisk
-default_enabled: false
diff --git a/ee/config/feature_flags/wip/sync_epic_to_work_item.yml b/ee/config/feature_flags/wip/sync_epic_to_work_item.yml
deleted file mode 100644
index cf3f6455b7e00f651e48f62c7284cb78100959e8..0000000000000000000000000000000000000000
--- a/ee/config/feature_flags/wip/sync_epic_to_work_item.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: sync_epic_to_work_item
-feature_issue_url:
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/140232
-rollout_issue_url:
-milestone: '16.9'
-group: group::product planning
-type: wip
-default_enabled: false
diff --git a/ee/spec/models/ee/group_spec.rb b/ee/spec/models/ee/group_spec.rb
index 7abca7ba9c1d171ebb87567fa5cee06c1c8089f8..fa1d4a25d76aa875fb562eea692b3c0b53f939db 100644
--- a/ee/spec/models/ee/group_spec.rb
+++ b/ee/spec/models/ee/group_spec.rb
@@ -3566,20 +3566,6 @@ def webhook_headers
     end
   end
 
-  describe '#epic_sync_to_work_item_enabled?' do
-    subject { group.epic_sync_to_work_item_enabled? }
-
-    it { is_expected.to be true }
-
-    context 'when feature flag is disabled' do
-      before do
-        stub_feature_flags(sync_epic_to_work_item: false)
-      end
-
-      it { is_expected.to be false }
-    end
-  end
-
   describe '#work_item_sync_to_epic_enabled?' do
     subject { group.work_item_sync_to_epic_enabled? }
 
diff --git a/ee/spec/models/epic_spec.rb b/ee/spec/models/epic_spec.rb
index 81c068fb1376836316d97f93a89cfaee1157473c..a1dccee5f4fffb8a079888e1c68de4136eb798ae 100644
--- a/ee/spec/models/epic_spec.rb
+++ b/ee/spec/models/epic_spec.rb
@@ -1582,17 +1582,5 @@ def as_item(item)
 
       epic.sync_work_item_updated_at
     end
-
-    context 'when sync_epic_to_work_item feature flag is disabled' do
-      before do
-        stub_feature_flags(sync_epic_to_work_item: false)
-      end
-
-      it 'does not update the updated_at column on the work item' do
-        expect(epic.work_item).not_to receive(:update_column)
-
-        epic.sync_work_item_updated_at
-      end
-    end
   end
 end
diff --git a/ee/spec/services/ee/work_items/related_work_item_links/create_service_spec.rb b/ee/spec/services/ee/work_items/related_work_item_links/create_service_spec.rb
index fcd721598f0f98ecb3ca7e71ebf6a10420f3a37b..50b430023105458d5e169cb7931289b885d0b9fa 100644
--- a/ee/spec/services/ee/work_items/related_work_item_links/create_service_spec.rb
+++ b/ee/spec/services/ee/work_items/related_work_item_links/create_service_spec.rb
@@ -158,7 +158,7 @@
           )
         end
 
-        context 'when sync_epic_to_work_item feature flag is disabled' do
+        context 'when sync_work_item_to_epic feature flag is disabled' do
           before do
             stub_feature_flags(sync_work_item_to_epic: false)
           end
diff --git a/ee/spec/services/epic_issues/create_service_spec.rb b/ee/spec/services/epic_issues/create_service_spec.rb
index 87cf40194ed06f39de693f0d451af09b790255fb..ff41fe5d9fe91f69ee1fc443fa29c55f9769fca6 100644
--- a/ee/spec/services/epic_issues/create_service_spec.rb
+++ b/ee/spec/services/epic_issues/create_service_spec.rb
@@ -256,15 +256,6 @@ def assign_issue(references)
                     expect(issue.reload.epic).to eq(another_epic)
                     expect(WorkItem.find(issue.id).work_item_parent).to eq(another_epic.work_item)
                   end
-
-                  context 'when :sync_epic_to_work_item FF is disabled' do
-                    it 'deletes old parent link' do
-                      stub_feature_flags(sync_epic_to_work_item: false)
-
-                      expect { subject }.to change { WorkItems::ParentLink.count }.by(-1)
-                      expect(WorkItems::ParentLink.where(work_item_id: issue.id)).to be_empty
-                    end
-                  end
                 end
 
                 context 'and new parent does not have associated work item' do
@@ -335,20 +326,6 @@ def assign_issue(references)
                 end
               end
 
-              context 'when sync_epic_to_work_item feature flag is disabled' do
-                before do
-                  stub_feature_flags(sync_epic_to_work_item: false)
-                end
-
-                it 'create relationship only for the epic' do
-                  expect { subject }.to change { EpicIssue.count }.by(1)
-                    .and(not_change { WorkItems::ParentLink.count })
-
-                  expect(created_link).to have_attributes(epic: epic)
-                  expect(epic.work_item.child_links).to be_empty
-                end
-              end
-
               context 'when synced_epic parameter is true' do
                 let(:params) { { issuable_references: [valid_reference], synced_epic: true } }
 
diff --git a/ee/spec/services/epic_issues/destroy_service_spec.rb b/ee/spec/services/epic_issues/destroy_service_spec.rb
index 7b0fcec907f79c95f5d7a801da91fb7e18772505..0c057157530fd8cfc853c7cc0535c6b7fe0de585 100644
--- a/ee/spec/services/epic_issues/destroy_service_spec.rb
+++ b/ee/spec/services/epic_issues/destroy_service_spec.rb
@@ -151,17 +151,6 @@
             expect(epic.reload.updated_at).to eq(epic.work_item.updated_at)
           end
 
-          context 'when feature flag is disabled' do
-            before do
-              stub_feature_flags(sync_epic_to_work_item: false)
-            end
-
-            it 'removes the epic and work item link' do
-              expect { subject }.to change { EpicIssue.count }.by(-1)
-                .and(change { WorkItems::ParentLink.count }.by(-1))
-            end
-          end
-
           it_behaves_like 'removes relationship with the issue' do
             let(:issue) { child_issue }
           end
diff --git a/ee/spec/services/epics/close_service_spec.rb b/ee/spec/services/epics/close_service_spec.rb
index 9e2921af080b1b2910e1145c6f00c041381f141b..f76ff6f2fefa02fff4386e19a5a072240e75aa37 100644
--- a/ee/spec/services/epics/close_service_spec.rb
+++ b/ee/spec/services/epics/close_service_spec.rb
@@ -85,19 +85,6 @@
                 expect(epic.reload.state).to eq('opened')
               end
             end
-
-            context 'when feature flag is disabled' do
-              before do
-                stub_feature_flags(sync_epic_to_work_item: false)
-              end
-
-              it 'does not change the work item' do
-                subject
-
-                expect(epic.reload.state).to eq('closed')
-                expect(work_item.reload.state).to eq('opened')
-              end
-            end
           end
 
           it 'creates a resource state event' do
diff --git a/ee/spec/services/epics/epic_links/create_service_spec.rb b/ee/spec/services/epics/epic_links/create_service_spec.rb
index eee6a30872d525dd9c5d01eed49c2c72310b6361..46d57c6d78b9e01e92fa65d2e7f82dca234c316a 100644
--- a/ee/spec/services/epics/epic_links/create_service_spec.rb
+++ b/ee/spec/services/epics/epic_links/create_service_spec.rb
@@ -687,20 +687,6 @@ def add_epic(references)
           it_behaves_like 'rollback changes when creation fails'
         end
 
-        context 'when sync_epic_to_work_item feature flag is disabled' do
-          before do
-            stub_feature_flags(sync_epic_to_work_item: false)
-          end
-
-          it 'create relationship only for the epic' do
-            expect { create_link }.to change { parent_epic.children.count }.by(1)
-              .and(not_change { WorkItems::ParentLink.count })
-
-            expect(parent_epic.reload.children).to include(child_epic)
-            expect(parent_work_item.reload.work_item_children).to be_empty
-          end
-        end
-
         context 'when synced_epic parameter is true' do
           let(:synced_epic_param) { true }
 
diff --git a/ee/spec/services/epics/epic_links/destroy_service_spec.rb b/ee/spec/services/epics/epic_links/destroy_service_spec.rb
index e4a7a8449699fd7760b075410610be39ab6453d3..46dfa6cf89af872b4bf43cd4d43c92c294a855b0 100644
--- a/ee/spec/services/epics/epic_links/destroy_service_spec.rb
+++ b/ee/spec/services/epics/epic_links/destroy_service_spec.rb
@@ -224,20 +224,6 @@ def remove_epic_relation(child_epic)
             end
           end
 
-          context 'when sync_epic_to_work_item feature flag is disabled' do
-            before do
-              stub_feature_flags(sync_epic_to_work_item: false)
-            end
-
-            it 'removes epic relationship and destroy work item parent link' do
-              expect { remove_epic_relation(child_epic) }.to change { parent_epic.children.count }.by(-1)
-                .and(change { WorkItems::ParentLink.count }.by(-1))
-
-              expect(parent_epic.reload.children).not_to include(child_epic)
-              expect(parent.reload.work_item_children).not_to include(child)
-            end
-          end
-
           context 'when synced_epic argument is true' do
             subject(:destroy_link) { described_class.new(child_epic, user, synced_epic: true).execute }
 
diff --git a/ee/spec/services/epics/epic_links/update_service_spec.rb b/ee/spec/services/epics/epic_links/update_service_spec.rb
index cdb131e41a8a1f3c24b00e85dad5be70395bf2d4..24d5f10fa8792cd593523a63ee9c47b3a0823ef7 100644
--- a/ee/spec/services/epics/epic_links/update_service_spec.rb
+++ b/ee/spec/services/epics/epic_links/update_service_spec.rb
@@ -197,22 +197,6 @@ def create_child_epic(relative_position)
           end
         end
 
-        context 'when sync_epic_to_work_item feature flag is disabled' do
-          before do
-            stub_feature_flags(sync_epic_to_work_item: false)
-          end
-
-          it_behaves_like 'reordering without syncing relative positions'
-        end
-
-        context 'when sync_epic_work_item_order feature flag is disabled' do
-          before do
-            stub_feature_flags(sync_epic_work_item_order: false)
-          end
-
-          it_behaves_like 'reordering without syncing relative positions'
-        end
-
         context 'when moving child does not have a synced work item parent link' do
           before do
             WorkItems::ParentLink.where(work_item_id: epic_to_move.issue_id).delete_all
diff --git a/ee/spec/services/epics/related_epic_links/create_service_spec.rb b/ee/spec/services/epics/related_epic_links/create_service_spec.rb
index 2d26db7990e9bac9e429755e750eb7ef05f11ef0..a055f135be8b4c13694f6b1456c45e72a5fa03ca 100644
--- a/ee/spec/services/epics/related_epic_links/create_service_spec.rb
+++ b/ee/spec/services/epics/related_epic_links/create_service_spec.rb
@@ -129,149 +129,135 @@
         let_it_be(:epic_a) { create(:epic, :with_synced_work_item, group: group) }
         let_it_be(:epic_b) { create(:epic, :with_synced_work_item, group: group) }
 
-        context 'when feature flag is disabled' do
-          before do
-            stub_feature_flags(sync_epic_to_work_item: false)
-          end
-
-          it_behaves_like 'only creates an epic link'
+        it_behaves_like 'syncs all data from an epic to a work item' do
+          let(:epic) { epic_a }
         end
 
-        context 'when feature flag is enabled' do
-          before do
-            stub_feature_flags(sync_epic_to_work_item: group)
-          end
-
-          it_behaves_like 'syncs all data from an epic to a work item' do
-            let(:epic) { epic_a }
-          end
+        it 'creates a link for the epics and the synced work item' do
+          expect { execute }.to change { Epic::RelatedEpicLink.count }.by(1)
+            .and change { WorkItems::RelatedWorkItemLink.count }.by(1)
 
-          it 'creates a link for the epics and the synced work item' do
-            expect { execute }.to change { Epic::RelatedEpicLink.count }.by(1)
-              .and change { WorkItems::RelatedWorkItemLink.count }.by(1)
+          expect(WorkItems::RelatedWorkItemLink.find_by!(target: epic_b.work_item))
+            .to have_attributes(source: epic_a.work_item, link_type: IssuableLink::TYPE_RELATES_TO)
 
-            expect(WorkItems::RelatedWorkItemLink.find_by!(target: epic_b.work_item))
-              .to have_attributes(source: epic_a.work_item, link_type: IssuableLink::TYPE_RELATES_TO)
-
-            expect(epic_a.reload.updated_at).to eq(epic_a.work_item.updated_at)
-            expect(epic_b.reload.updated_at).to eq(epic_b.work_item.updated_at)
-          end
+          expect(epic_a.reload.updated_at).to eq(epic_a.work_item.updated_at)
+          expect(epic_b.reload.updated_at).to eq(epic_b.work_item.updated_at)
+        end
 
-          context 'when synced_epic parameter is true' do
-            let(:params) { { issuable_references: [epic_b.to_reference(full: true)], link_type: IssuableLink::TYPE_BLOCKS, synced_epic: true } }
+        context 'when synced_epic parameter is true' do
+          let(:params) { { issuable_references: [epic_b.to_reference(full: true)], link_type: IssuableLink::TYPE_BLOCKS, synced_epic: true } }
 
-            it 'does not try to create a synced work item link' do
-              expect(WorkItems::RelatedWorkItemLinks::CreateService).not_to receive(:new)
+          it 'does not try to create a synced work item link' do
+            expect(WorkItems::RelatedWorkItemLinks::CreateService).not_to receive(:new)
 
-              execute
-            end
+            execute
+          end
 
-            it 'bypasses permission checks' do
-              new_user = create(:user)
-              service = described_class.new(epic_a, new_user, params)
+          it 'bypasses permission checks' do
+            new_user = create(:user)
+            service = described_class.new(epic_a, new_user, params)
 
-              expect { service.execute }.to change { Epic::RelatedEpicLink.count }.by(1)
-                .and not_change { WorkItems::RelatedWorkItemLink.count }
-            end
+            expect { service.execute }.to change { Epic::RelatedEpicLink.count }.by(1)
+              .and not_change { WorkItems::RelatedWorkItemLink.count }
           end
+        end
 
-          context 'when link type is blocking' do
-            let(:params) { { issuable_references: [epic_b.to_reference(full: true)], link_type: IssuableLink::TYPE_BLOCKS } }
+        context 'when link type is blocking' do
+          let(:params) { { issuable_references: [epic_b.to_reference(full: true)], link_type: IssuableLink::TYPE_BLOCKS } }
 
-            it 'creates a blocking link' do
-              execute
+          it 'creates a blocking link' do
+            execute
 
-              expect(WorkItems::RelatedWorkItemLink.find_by!(target: epic_b.work_item))
-                .to have_attributes(source: epic_a.work_item, link_type: IssuableLink::TYPE_BLOCKS)
-            end
+            expect(WorkItems::RelatedWorkItemLink.find_by!(target: epic_b.work_item))
+              .to have_attributes(source: epic_a.work_item, link_type: IssuableLink::TYPE_BLOCKS)
           end
+        end
 
-          context 'when link type is blocked by' do
-            let(:params) { { issuable_references: [epic_b.to_reference(full: true)], link_type: IssuableLink::TYPE_IS_BLOCKED_BY } }
+        context 'when link type is blocked by' do
+          let(:params) { { issuable_references: [epic_b.to_reference(full: true)], link_type: IssuableLink::TYPE_IS_BLOCKED_BY } }
 
-            it 'creates a blocking link' do
-              execute
+          it 'creates a blocking link' do
+            execute
 
-              expect(WorkItems::RelatedWorkItemLink.find_by!(target: epic_a.work_item))
-                .to have_attributes(source: epic_b.work_item, link_type: IssuableLink::TYPE_BLOCKS)
-            end
+            expect(WorkItems::RelatedWorkItemLink.find_by!(target: epic_a.work_item))
+              .to have_attributes(source: epic_b.work_item, link_type: IssuableLink::TYPE_BLOCKS)
           end
+        end
 
-          context 'when multiple epics are referenced' do
-            let_it_be(:epic_c) { create(:epic, :with_synced_work_item, group: group) }
+        context 'when multiple epics are referenced' do
+          let_it_be(:epic_c) { create(:epic, :with_synced_work_item, group: group) }
 
-            let(:params) { { issuable_references: [epic_b.to_reference(full: true), epic_c.to_reference(full: true)] } }
+          let(:params) { { issuable_references: [epic_b.to_reference(full: true), epic_c.to_reference(full: true)] } }
 
-            it 'creates a link for the epics and the synced work item' do
-              expect { execute }.to change { Epic::RelatedEpicLink.count }.by(2)
-                .and change { WorkItems::RelatedWorkItemLink.count }.by(2)
+          it 'creates a link for the epics and the synced work item' do
+            expect { execute }.to change { Epic::RelatedEpicLink.count }.by(2)
+              .and change { WorkItems::RelatedWorkItemLink.count }.by(2)
 
-              expect(WorkItems::RelatedWorkItemLink.where(source: epic_a.work_item)).to include(
-                an_object_having_attributes(target: epic_b.work_item, link_type: IssuableLink::TYPE_RELATES_TO),
-                an_object_having_attributes(target: epic_c.work_item, link_type: IssuableLink::TYPE_RELATES_TO)
-              )
-            end
+            expect(WorkItems::RelatedWorkItemLink.where(source: epic_a.work_item)).to include(
+              an_object_having_attributes(target: epic_b.work_item, link_type: IssuableLink::TYPE_RELATES_TO),
+              an_object_having_attributes(target: epic_c.work_item, link_type: IssuableLink::TYPE_RELATES_TO)
+            )
+          end
 
-            context 'when epic does not have a synced work item' do
-              let_it_be(:epic_c) { create(:epic, :without_synced_work_item, group: group) }
+          context 'when epic does not have a synced work item' do
+            let_it_be(:epic_c) { create(:epic, :without_synced_work_item, group: group) }
 
-              it 'does create related work item links for the rest' do
-                expect { execute }.to change { Epic::RelatedEpicLink.count }.by(2)
-                  .and change { WorkItems::RelatedWorkItemLink.count }.by(1)
-              end
+            it 'does create related work item links for the rest' do
+              expect { execute }.to change { Epic::RelatedEpicLink.count }.by(2)
+                .and change { WorkItems::RelatedWorkItemLink.count }.by(1)
             end
           end
+        end
 
-          context 'when creating related work item links fails' do
-            before do
-              allow_next_instance_of(WorkItems::RelatedWorkItemLinks::CreateService) do |instance|
-                allow(instance).to receive(:execute).and_return({ status: :error, message: "Some error" })
-              end
+        context 'when creating related work item links fails' do
+          before do
+            allow_next_instance_of(WorkItems::RelatedWorkItemLinks::CreateService) do |instance|
+              allow(instance).to receive(:execute).and_return({ status: :error, message: "Some error" })
             end
+          end
 
-            it 'does not create an epic link nor a work item link' do
-              expect(Gitlab::EpicWorkItemSync::Logger).to receive(:error)
-                .with({
-                  message: "Not able to create work item links",
-                  error_message: "Some error",
-                  group_id: group.id,
-                  epic_id: epic_a.id
-                })
-
-              expect(Gitlab::ErrorTracking).to receive(:track_exception).with(
-                instance_of(Epics::SyncAsWorkItem::SyncAsWorkItemError),
-                { epic_id: epic_a.id }
-              )
-
-              expect { execute }.to not_change { Epic::RelatedEpicLink.count }
-                .and not_change { WorkItems::RelatedWorkItemLink.count }
-            end
+          it 'does not create an epic link nor a work item link' do
+            expect(Gitlab::EpicWorkItemSync::Logger).to receive(:error)
+              .with({
+                message: "Not able to create work item links",
+                error_message: "Some error",
+                group_id: group.id,
+                epic_id: epic_a.id
+              })
+
+            expect(Gitlab::ErrorTracking).to receive(:track_exception).with(
+              instance_of(Epics::SyncAsWorkItem::SyncAsWorkItemError),
+              { epic_id: epic_a.id }
+            )
+
+            expect { execute }.to not_change { Epic::RelatedEpicLink.count }
+              .and not_change { WorkItems::RelatedWorkItemLink.count }
+          end
 
-            it 'returns an error' do
-              expect(execute)
-                .to eq({ status: :error, message: "Couldn't create link due to an internal error.", http_status: 422 })
-            end
+          it 'returns an error' do
+            expect(execute)
+              .to eq({ status: :error, message: "Couldn't create link due to an internal error.", http_status: 422 })
           end
+        end
 
-          context 'when creating related epic link fails' do
-            before do
-              allow_next_instance_of(Epic::RelatedEpicLink) do |instance|
-                allow(instance).to receive(:save).and_return(false)
+        context 'when creating related epic link fails' do
+          before do
+            allow_next_instance_of(Epic::RelatedEpicLink) do |instance|
+              allow(instance).to receive(:save).and_return(false)
 
-                errors = ActiveModel::Errors.new(instance).tap { |e| e.add(:source, 'error message') }
-                allow(instance).to receive(:errors).and_return(errors)
-              end
+              errors = ActiveModel::Errors.new(instance).tap { |e| e.add(:source, 'error message') }
+              allow(instance).to receive(:errors).and_return(errors)
             end
+          end
 
-            it 'does not create relationship', :aggregate_failures do
-              error_message = "#{epic_b.to_reference} cannot be added: error message"
-              service_result = execute
+          it 'does not create relationship', :aggregate_failures do
+            error_message = "#{epic_b.to_reference} cannot be added: error message"
+            service_result = execute
 
-              expect { service_result }.to not_change { Epic::RelatedEpicLink.count }
-                .and not_change { WorkItems::RelatedWorkItemLink.count }
+            expect { service_result }.to not_change { Epic::RelatedEpicLink.count }
+              .and not_change { WorkItems::RelatedWorkItemLink.count }
 
-              expect(service_result).to eq(message: error_message, status: :error, http_status: 422)
-            end
+            expect(service_result).to eq(message: error_message, status: :error, http_status: 422)
           end
         end
       end
diff --git a/ee/spec/services/epics/related_epic_links/destroy_service_spec.rb b/ee/spec/services/epics/related_epic_links/destroy_service_spec.rb
index 63106a16bfe2e8c3ceae2e58f28e290336d015a6..9c2aee77424f65ebc2d3b2e34af02d75721a7f0a 100644
--- a/ee/spec/services/epics/related_epic_links/destroy_service_spec.rb
+++ b/ee/spec/services/epics/related_epic_links/destroy_service_spec.rb
@@ -32,96 +32,79 @@
         let(:epic) { source }
       end
 
-      context 'when feature flag is disabled' do
-        before do
-          stub_feature_flags(sync_epic_to_work_item: false)
-        end
-
-        it 'removes the epic and the work item relation' do
+      context 'when epic is the source' do
+        it 'removes the epic and the work item relation and does not create system notes' do
           expect { subject }.to change { issuable_link.class.count }.by(-1)
-            .and change { WorkItems::RelatedWorkItemLink.count }.by(-1)
+          .and change { WorkItems::RelatedWorkItemLink.count }.by(-1)
+
+          expect(source.reload.work_item.notes).to be_empty
+          expect(target.reload.work_item.notes).to be_empty
+          expect(source.updated_at).to eq(source.work_item.updated_at)
+          expect(target.updated_at).to eq(target.work_item.updated_at)
         end
       end
 
-      context 'when feature flag is enabled' do
-        before do
-          stub_feature_flags(sync_epic_to_work_item: group)
-        end
+      context 'when epic is the target' do
+        subject(:execute) { described_class.new(issuable_link, issuable_link.target, user).execute }
 
-        context 'when epic is the source' do
-          it 'removes the epic and the work item relation and does not create system notes' do
-            expect { subject }.to change { issuable_link.class.count }.by(-1)
-            .and change { WorkItems::RelatedWorkItemLink.count }.by(-1)
+        it 'removes the epic and the work item relation and does not create system notes' do
+          expect { subject }.to change { issuable_link.class.count }.by(-1)
+          .and change { WorkItems::RelatedWorkItemLink.count }.by(-1)
 
-            expect(source.reload.work_item.notes).to be_empty
-            expect(target.reload.work_item.notes).to be_empty
-            expect(source.updated_at).to eq(source.work_item.updated_at)
-            expect(target.updated_at).to eq(target.work_item.updated_at)
-          end
+          expect(source.reload.work_item.notes).to be_empty
+          expect(target.reload.work_item.notes).to be_empty
         end
+      end
 
-        context 'when epic is the target' do
-          subject(:execute) { described_class.new(issuable_link, issuable_link.target, user).execute }
-
-          it 'removes the epic and the work item relation and does not create system notes' do
-            expect { subject }.to change { issuable_link.class.count }.by(-1)
-            .and change { WorkItems::RelatedWorkItemLink.count }.by(-1)
+      context 'when the source has no synced work item' do
+        let_it_be_with_reload(:source) { create(:epic, :without_synced_work_item, group: group) }
+        let_it_be_with_refind(:issuable_link) { create(:related_epic_link, source: source, target: target) }
 
-            expect(source.reload.work_item.notes).to be_empty
-            expect(target.reload.work_item.notes).to be_empty
-          end
+        it 'removes the epic but not the work item relation' do
+          expect { subject }.to change { issuable_link.class.count }.by(-1)
+          .and not_change { WorkItems::RelatedWorkItemLink.count }
         end
+      end
 
-        context 'when the source has no synced work item' do
-          let_it_be_with_reload(:source) { create(:epic, :without_synced_work_item, group: group) }
-          let_it_be_with_refind(:issuable_link) { create(:related_epic_link, source: source, target: target) }
+      context 'when the target has no synced work item' do
+        let_it_be_with_reload(:target) { create(:epic, :without_synced_work_item, group: group) }
+        let_it_be_with_refind(:issuable_link) { create(:related_epic_link, source: source, target: target) }
 
-          it 'removes the epic but not the work item relation' do
-            expect { subject }.to change { issuable_link.class.count }.by(-1)
-            .and not_change { WorkItems::RelatedWorkItemLink.count }
-          end
+        it 'removes the epic but not the work item relation' do
+          expect { subject }.to change { issuable_link.class.count }.by(-1)
+          .and not_change { WorkItems::RelatedWorkItemLink.count }
         end
+      end
 
-        context 'when the target has no synced work item' do
-          let_it_be_with_reload(:target) { create(:epic, :without_synced_work_item, group: group) }
-          let_it_be_with_refind(:issuable_link) { create(:related_epic_link, source: source, target: target) }
-
-          it 'removes the epic but not the work item relation' do
-            expect { subject }.to change { issuable_link.class.count }.by(-1)
-            .and not_change { WorkItems::RelatedWorkItemLink.count }
+      context 'when destroying the work item link fails' do
+        before do
+          allow_next_instance_of(WorkItems::RelatedWorkItemLinks::DestroyService) do |instance|
+            allow(instance).to receive(:execute).and_return({ status: :error, message: "Some error" })
           end
         end
 
-        context 'when destroying the work item link fails' do
-          before do
-            allow_next_instance_of(WorkItems::RelatedWorkItemLinks::DestroyService) do |instance|
-              allow(instance).to receive(:execute).and_return({ status: :error, message: "Some error" })
-            end
-          end
+        it 'does not create an epic link nor a work item link', :aggregate_failures do
+          expect(Gitlab::EpicWorkItemSync::Logger).to receive(:error)
+            .with({
+              message: "Not able to destroy work item links",
+              error_message: "Some error",
+              group_id: group.id,
+              source_id: source.id,
+              target_id: target.id
+            })
 
-          it 'does not create an epic link nor a work item link', :aggregate_failures do
-            expect(Gitlab::EpicWorkItemSync::Logger).to receive(:error)
-              .with({
-                message: "Not able to destroy work item links",
-                error_message: "Some error",
-                group_id: group.id,
-                source_id: source.id,
-                target_id: target.id
-              })
-
-            expect(Gitlab::ErrorTracking).to receive(:track_exception).with(
-              instance_of(Epics::SyncAsWorkItem::SyncAsWorkItemError),
-              { epic_id: source.id }
-            )
-
-            expect { execute }.to not_change { Epic::RelatedEpicLink.count }
-              .and not_change { WorkItems::RelatedWorkItemLink.count }
-          end
+          expect(Gitlab::ErrorTracking).to receive(:track_exception).with(
+            instance_of(Epics::SyncAsWorkItem::SyncAsWorkItemError),
+            { epic_id: source.id }
+          )
 
-          it 'returns an error' do
-            expect(execute)
-              .to eq({ status: :error, message: "Couldn't delete link due to an internal error.", http_status: 422 })
-          end
+          expect { execute }.to not_change { Epic::RelatedEpicLink.count }
+            .and not_change { WorkItems::RelatedWorkItemLink.count }
+        end
+
+        it 'returns an error' do
+          expect(execute)
+            .to eq({ status: :error, message: "Couldn't delete link due to an internal error.", http_status: 422 })
         end
       end
     end
diff --git a/ee/spec/services/epics/reopen_service_spec.rb b/ee/spec/services/epics/reopen_service_spec.rb
index 990783c8db9b34a4bf6872b44ef493e678df646b..f638576ffa74ee63478eeb2c7aa6cc2ae72af4d7 100644
--- a/ee/spec/services/epics/reopen_service_spec.rb
+++ b/ee/spec/services/epics/reopen_service_spec.rb
@@ -115,19 +115,6 @@
                 expect(epic.reload.state).to eq('closed')
               end
             end
-
-            context 'when feature flag is disabled' do
-              before do
-                stub_feature_flags(sync_epic_to_work_item: false)
-              end
-
-              it 'does not change the work item' do
-                subject
-
-                expect(epic.reload.state).to eq('opened')
-                expect(work_item.reload.state).to eq('closed')
-              end
-            end
           end
 
           context 'when project bot it logs audit events' do
diff --git a/ee/spec/services/epics/tree_reorder_service_spec.rb b/ee/spec/services/epics/tree_reorder_service_spec.rb
index 656c3f53042d0a8fd50a69e92078443c1ecf6412..54522421f5fe5ec6a62ea3f5d80a9134ea7bc3f5 100644
--- a/ee/spec/services/epics/tree_reorder_service_spec.rb
+++ b/ee/spec/services/epics/tree_reorder_service_spec.rb
@@ -277,18 +277,6 @@
                     expect(new_parent.updated_at).to eq(new_parent.work_item.updated_at)
                   end
 
-                  context 'when feature flag is turned off' do
-                    before do
-                      stub_feature_flags(sync_epic_work_item_order: false)
-                    end
-
-                    it 'only sets the new parent for the epic_issue' do
-                      expect { subject }.to change { moving_epic_issue.reload.epic }.from(old_parent).to(new_parent)
-                      expect { subject }.to not_change { moving_parent_link.reload.work_item_parent }
-                      expect(subject[:status]).to eq(:success)
-                    end
-                  end
-
                   context 'when the new parent has no synced work item' do
                     let_it_be_with_reload(:new_parent) { create(:epic, group: group) }
 
@@ -812,19 +800,6 @@
                     end
                   end
 
-                  context 'when the feature flag is turned off' do
-                    before do
-                      stub_feature_flags(sync_epic_work_item_order: false)
-                    end
-
-                    it 'only changes the position of the epics' do
-                      expect { subject }.to change { moving_epic.reload.relative_position }
-                        .and not_change { moving_object_parent_link.reload.relative_position }
-
-                      expect(subject[:status]).to eq(:success)
-                    end
-                  end
-
                   context 'when the moving epic has no correlating work item' do
                     let_it_be_with_reload(:moving_epic) do
                       create(:epic, group: group, parent: parent, relative_position: 20)
diff --git a/ee/spec/services/epics/update_dates_service_spec.rb b/ee/spec/services/epics/update_dates_service_spec.rb
index 0ace0935eeda0ba7433505b0e94e77aa77d69659..8b5bd9490b0dbaae6821877369977635c7d5c50c 100644
--- a/ee/spec/services/epics/update_dates_service_spec.rb
+++ b/ee/spec/services/epics/update_dates_service_spec.rb
@@ -58,18 +58,6 @@
           end
 
           it_behaves_like 'syncs all data from an epic to a work item'
-
-          context 'when sync_epic_to_work_item_dates is disabled' do
-            before do
-              stub_feature_flags(sync_epic_to_work_item_dates: false)
-            end
-
-            it 'does not upsert WorkItems::DatesSource' do
-              expect(WorkItems::DatesSource).not_to receive(:upsert_all)
-
-              described_class.new([epic]).execute
-            end
-          end
         end
 
         context 'without due date' do
diff --git a/ee/spec/services/epics/update_service_spec.rb b/ee/spec/services/epics/update_service_spec.rb
index c903be9580773ed9cd75257c8e7cbe6c5ced76d0..6f7ab26cde454bb225a65a84661bf2ce4012473f 100644
--- a/ee/spec/services/epics/update_service_spec.rb
+++ b/ee/spec/services/epics/update_service_spec.rb
@@ -965,16 +965,6 @@ def update_issuable(update_params)
                     expect(work_item.reload.description).to eq('- [ ] Task')
                   end
                 end
-
-                context 'when feature flag is disabled' do
-                  before do
-                    stub_feature_flags(sync_epic_to_work_item: false)
-                  end
-
-                  it 'does not propagate changes' do
-                    expect { subject }.to change { epic.reload.description }.and not_change { work_item.reload.description }
-                  end
-                end
               end
 
               context 'when unchecking a task' do
@@ -1002,16 +992,6 @@ def update_issuable(update_params)
                 end
               end
             end
-
-            context 'when feature flag is disabled' do
-              before do
-                stub_feature_flags(sync_epic_to_work_item: false)
-              end
-
-              it 'does not propagate changes' do
-                expect { subject }.to change { epic.reload.title }.and not_change { work_item.reload.title }
-              end
-            end
           end
 
           context 'when changes are invalid', :aggregate_failures do
diff --git a/ee/spec/services/work_items/parent_links/create_service_spec.rb b/ee/spec/services/work_items/parent_links/create_service_spec.rb
index 5fa85e7177715ba00454ebe1b0c83e10dc6f7cfe..2afb5def1bcad59771cc686592ebcb76a3d4fb5f 100644
--- a/ee/spec/services/work_items/parent_links/create_service_spec.rb
+++ b/ee/spec/services/work_items/parent_links/create_service_spec.rb
@@ -206,7 +206,7 @@
                 .to eq("added #{parent_work_item.to_reference} as parent epic")
             end
 
-            context 'when sync_epic_to_work_item feature flag is disabled' do
+            context 'when sync_work_item_to_epic feature flag is disabled' do
               before do
                 stub_feature_flags(sync_work_item_to_epic: false)
               end
@@ -320,7 +320,7 @@
               expect(child_work_item.notes.last.note).to eq("added #{parent_work_item.to_reference} as parent epic")
             end
 
-            context 'when sync_epic_to_work_item feature flag is disabled' do
+            context 'when sync_work_item_to_epic feature flag is disabled' do
               before do
                 stub_feature_flags(sync_work_item_to_epic: false)
               end