diff --git a/ee/app/controllers/ee/projects/security/configuration_controller.rb b/ee/app/controllers/ee/projects/security/configuration_controller.rb
index f866e8f97fd11fb66428507862af1821a6510092..74d38252dc471d21873b2220a2162b864306874a 100644
--- a/ee/app/controllers/ee/projects/security/configuration_controller.rb
+++ b/ee/app/controllers/ee/projects/security/configuration_controller.rb
@@ -47,11 +47,13 @@ def show
         # rubocop:enable Gitlab/ModuleWithInstanceVariables
 
         def auto_fix
-          service = ::Security::Configuration::SaveAutoFixService.new(project, auto_fix_params[:feature])
+          service = ::Security::Configuration::SaveAutoFixService
+                      .new(project, auto_fix_params[:feature])
+                      .execute(enabled: auto_fix_params[:enabled])
 
-          return respond_422 unless service.execute(enabled: auto_fix_params[:enabled])
+          return respond_422 unless service.success?
 
-          render status: :ok, json: auto_fix_settings
+          render status: :ok, json: service.payload
         end
 
         private
@@ -77,15 +79,6 @@ def check_feature_flag!
           render_404 if ::Feature.disabled?(:security_auto_fix, project)
         end
 
-        def auto_fix_settings
-          setting = project.security_setting
-
-          {
-            dependency_scanning: setting.auto_fix_dependency_scanning,
-            container_scanning: setting.auto_fix_container_scanning
-          }
-        end
-
         def security_dashboard_feature_enabled?
           vulnerable.feature_available?(:security_dashboard)
         end
diff --git a/ee/app/services/security/configuration/save_auto_fix_service.rb b/ee/app/services/security/configuration/save_auto_fix_service.rb
index eb8d69dd70029acec23b5816a427b1ab2176ef25..11e3e803b9093f812c1b7e1de6d79a75eb6813e8 100644
--- a/ee/app/services/security/configuration/save_auto_fix_service.rb
+++ b/ee/app/services/security/configuration/save_auto_fix_service.rb
@@ -13,15 +13,32 @@ def initialize(project, feature)
       end
 
       def execute(enabled:)
-        return unless valid?
+        return error("Auto fix is not available for #{feature} feature") unless valid?
+        return error("Project has no security setting") unless setting
 
-        project&.security_setting&.update(toggle_params(enabled))
+        if setting&.update(toggle_params(enabled))
+          success(updated_setting)
+        else
+          error('Error during updating the auto fix param')
+        end
       end
 
       private
 
       attr_reader :enabled, :feature, :project
 
+      def error(message)
+        ServiceResponse.error(message: message)
+      end
+
+      def setting
+        @setting ||= project&.security_setting
+      end
+
+      def success(payload)
+        ServiceResponse.success(payload: payload)
+      end
+
       def toggle_params(enabled)
         if feature == 'all'
           {
@@ -37,6 +54,13 @@ def toggle_params(enabled)
         end
       end
 
+      def updated_setting
+        {
+          container_scanning: setting.auto_fix_container_scanning,
+          dependency_scanning: setting.auto_fix_dependency_scanning
+        }
+      end
+
       def valid?
         SUPPORTED_SCANNERS.include?(feature)
       end
diff --git a/ee/spec/controllers/projects/security/configuration_controller_spec.rb b/ee/spec/controllers/projects/security/configuration_controller_spec.rb
index 30d12b6d1fbda64b67c7087d382232c8b9c34d9a..4ae4093687581e0bdbecedaaaf09f1d910114a13 100644
--- a/ee/spec/controllers/projects/security/configuration_controller_spec.rb
+++ b/ee/spec/controllers/projects/security/configuration_controller_spec.rb
@@ -140,20 +140,13 @@
       context 'with sufficient permissions' do
         let(:user) { maintainer }
 
-        it 'shows auto fix disable for dependency scanning for json format' do
-          get :show, params: { namespace_id: project.namespace, project_id: project, format: :json }
-
-          expect(response).to have_gitlab_http_status(:ok)
-          expect(json_response['auto_fix_enabled']).to include({ 'dependency_scanning' => false })
-        end
-
         context 'with setup feature param' do
           let(:feature) { :dependency_scanning }
 
           it 'processes request and updates setting' do
             expect(response).to have_gitlab_http_status(:ok)
             expect(project.security_setting.reload.auto_fix_dependency_scanning).to be_falsey
-            expect(response[:dependency_scanning]).to be_falsey
+            expect(json_response['dependency_scanning']).to be(false)
           end
         end
 
@@ -166,7 +159,8 @@
             expect(response).to have_gitlab_http_status(:ok)
             expect(setting.auto_fix_dependency_scanning).to be_falsey
             expect(setting.auto_fix_dast).to be_falsey
-            expect(response[:container_scanning]).to be_falsey
+            expect(json_response['dependency_scanning']).to be(false)
+            expect(json_response['container_scanning']).to be(false)
           end
         end
 
diff --git a/ee/spec/services/security/configuration/save_auto_fix_service_spec.rb b/ee/spec/services/security/configuration/save_auto_fix_service_spec.rb
index 136937b5e1cea8cc3f2adc8f4d8ca18aa38275bf..e9be8853d2760ce0675b08bbb56ba3e8f47ec9ea 100644
--- a/ee/spec/services/security/configuration/save_auto_fix_service_spec.rb
+++ b/ee/spec/services/security/configuration/save_auto_fix_service_spec.rb
@@ -6,16 +6,21 @@
   describe '#execute' do
     let_it_be_with_reload(:project) { create(:project) }
 
-    subject(:service) { described_class.new(project, feature) }
+    let(:service) { described_class.new(project, feature) }
 
-    before do
-      service.execute(enabled: false)
-    end
+    subject(:response) { service.execute(enabled: false) }
 
     context 'with supported scanner type' do
       let(:feature) { 'dependency_scanning' }
 
+      it 'returns success status' do
+        expect(response).to be_success
+        expect(response.payload).to eq({ container_scanning: true, dependency_scanning: false })
+      end
+
       it 'changes setting' do
+        response
+
         expect(project.security_setting.auto_fix_dependency_scanning).to be_falsey
       end
     end
@@ -23,7 +28,13 @@
     context 'with all scanners' do
       let(:feature) { 'all' }
 
+      it 'returns success status' do
+        expect(response).to be_success
+      end
+
       it 'changes setting' do
+        response
+
         expect(project.security_setting.auto_fix_dependency_scanning).to be_falsey
         expect(project.security_setting.auto_fix_container_scanning).to be_falsey
       end
@@ -33,7 +44,8 @@
       let(:feature) { :dep_scan }
 
       it 'does not change setting' do
-        expect(project.security_setting.auto_fix_dependency_scanning).to be_truthy
+        expect(response).to be_error
+        expect(response.message).to eq('Auto fix is not available for dep_scan feature')
       end
     end
   end