diff --git a/app/controllers/projects/service_desk_controller.rb b/app/controllers/projects/service_desk_controller.rb
index ca3cecf5949966a7cee9ef64dadc3f4c2a56daa4..70cb439c4f376d09fe0de55db9f7d76e14f3c8a0 100644
--- a/app/controllers/projects/service_desk_controller.rb
+++ b/app/controllers/projects/service_desk_controller.rb
@@ -29,7 +29,7 @@ def setting_params
   end
 
   def allowed_update_attributes
-    %i[issue_template_key outgoing_name project_key]
+    %i[issue_template_key outgoing_name project_key add_external_participants_from_cc]
   end
 
   def service_desk_attributes
@@ -41,7 +41,8 @@ def service_desk_attributes
       issue_template_key: service_desk_settings&.issue_template_key,
       template_file_missing: service_desk_settings&.issue_template_missing?,
       outgoing_name: service_desk_settings&.outgoing_name,
-      project_key: service_desk_settings&.project_key
+      project_key: service_desk_settings&.project_key,
+      add_external_participants_from_cc: service_desk_settings&.add_external_participants_from_cc
     }
   end
 
diff --git a/app/services/service_desk_settings/update_service.rb b/app/services/service_desk_settings/update_service.rb
index 182022beb1d67a8bec290f4c702e2089d12f5a6c..f8b825923f3745e32a4957d28877822c574f488f 100644
--- a/app/services/service_desk_settings/update_service.rb
+++ b/app/services/service_desk_settings/update_service.rb
@@ -9,6 +9,8 @@ def execute
 
       params[:project_key] = nil if params[:project_key].blank?
 
+      apply_feature_flag_restrictions!
+
       # We want to know when custom email got enabled
       write_log_message = params[:custom_email_enabled].present? && !settings.custom_email_enabled?
 
@@ -20,5 +22,14 @@ def execute
         ServiceResponse.error(message: settings.errors.full_messages.to_sentence)
       end
     end
+
+    private
+
+    def apply_feature_flag_restrictions!
+      return if Feature.enabled?(:issue_email_participants, project)
+      return unless params.include?(:add_external_participants_from_cc)
+
+      params.delete(:add_external_participants_from_cc)
+    end
   end
 end
diff --git a/spec/requests/projects/service_desk_controller_spec.rb b/spec/requests/projects/service_desk_controller_spec.rb
index 05e48c2c5c7ab4af9eed396a3733aea6ada0859c..7d881d8ea62cf2d5d9ac2ae1ef12710bca1f5982 100644
--- a/spec/requests/projects/service_desk_controller_spec.rb
+++ b/spec/requests/projects/service_desk_controller_spec.rb
@@ -88,6 +88,16 @@
       expect(json_response['issue_template_key']).to eq('service_desk')
     end
 
+    it 'sets add_external_participants_from_cc' do
+      put project_service_desk_path(project, format: :json), params: { add_external_participants_from_cc: true }
+      project.reset
+
+      settings = project.service_desk_setting
+      expect(settings).to be_present
+      expect(settings.add_external_participants_from_cc).to eq(true)
+      expect(json_response['add_external_participants_from_cc']).to eq(true)
+    end
+
     it 'returns an error when update of service desk settings fails' do
       put project_service_desk_path(project, format: :json), params: { issue_template_key: 'invalid key' }
 
diff --git a/spec/services/service_desk_settings/update_service_spec.rb b/spec/services/service_desk_settings/update_service_spec.rb
index 27978225bcf36b60829e103a7107af9e0445fdd3..a9e5401207509ea00f1bc023c1f38c2e83532966 100644
--- a/spec/services/service_desk_settings/update_service_spec.rb
+++ b/spec/services/service_desk_settings/update_service_spec.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 require 'spec_helper'
 
-RSpec.describe ServiceDeskSettings::UpdateService, feature_category: :service_desk do
+RSpec.describe ServiceDeskSettings::UpdateService, :aggregate_failures, feature_category: :service_desk do
   describe '#execute' do
     let_it_be(:settings) do
       create(:service_desk_setting, outgoing_name: 'original name', custom_email: 'user@example.com')
@@ -12,14 +12,17 @@
     let_it_be(:user) { create(:user) }
 
     context 'with valid params' do
-      let(:params) { { outgoing_name: 'some name', project_key: 'foo' } }
+      let(:params) { { outgoing_name: 'some name', project_key: 'foo', add_external_participants_from_cc: true } }
 
       it 'updates service desk settings' do
         response = described_class.new(settings.project, user, params).execute
 
         expect(response).to be_success
-        expect(settings.reload.outgoing_name).to eq 'some name'
-        expect(settings.reload.project_key).to eq 'foo'
+        expect(settings.reset).to have_attributes(
+          outgoing_name: 'some name',
+          project_key: 'foo',
+          add_external_participants_from_cc: true
+        )
       end
 
       context 'with custom email verification in finished state' do
@@ -39,6 +42,23 @@
           expect(Gitlab::AppLogger).to have_received(:info).with({ category: 'custom_email' })
         end
       end
+
+      context 'when issue_email_participants feature flag is disabled' do
+        before do
+          stub_feature_flags(issue_email_participants: false)
+        end
+
+        it 'updates service desk setting but not add_external_participants_from_cc value' do
+          response = described_class.new(settings.project, user, params).execute
+
+          expect(response).to be_success
+          expect(settings.reset).to have_attributes(
+            outgoing_name: 'some name',
+            project_key: 'foo',
+            add_external_participants_from_cc: false
+          )
+        end
+      end
     end
 
     context 'when project_key is an empty string' do