diff --git a/app/services/issues/close_service.rb b/app/services/issues/close_service.rb
index ac846c769a3ce0b682ce44ff9f2c438063c66d8c..084607d8d813e41f972f2aa6547cd36d6a8ea102 100644
--- a/app/services/issues/close_service.rb
+++ b/app/services/issues/close_service.rb
@@ -62,6 +62,7 @@ module Issues
 
     def perform_incident_management_actions(issue)
       resolve_alert(issue)
+      resolve_incident(issue)
     end
 
     def close_external_issue(issue, closed_via)
@@ -91,6 +92,13 @@ module Issues
       end
     end
 
+    def resolve_incident(issue)
+      return unless issue.incident?
+
+      status = issue.incident_management_issuable_escalation_status || issue.build_incident_management_issuable_escalation_status
+      status.resolve
+    end
+
     def store_first_mentioned_in_commit_at(issue, merge_request, max_commit_lookup: 100)
       metrics = issue.metrics
       return if metrics.nil? || metrics.first_mentioned_in_commit_at
diff --git a/spec/services/issues/close_service_spec.rb b/spec/services/issues/close_service_spec.rb
index 93ef046a63246b52f12cbaa2dc63d54edd70fa5b..285eddd4faac8c6b3a232c992f926b855ed10c5f 100644
--- a/spec/services/issues/close_service_spec.rb
+++ b/spec/services/issues/close_service_spec.rb
@@ -83,6 +83,10 @@ RSpec.describe Issues::CloseService do
       service.execute(issue)
     end
 
+    it 'does not change escalation status' do
+      expect { service.execute(issue) }.not_to change { IncidentManagement::IssuableEscalationStatus.where(issue: issue).count }
+    end
+
     context 'issue is incident type' do
       let(:issue) { create(:incident, project: project) }
       let(:current_user) { user }
@@ -90,6 +94,22 @@ RSpec.describe Issues::CloseService do
       subject { service.execute(issue) }
 
       it_behaves_like 'an incident management tracked event', :incident_management_incident_closed
+
+      it 'creates a new escalation resolved escalation status', :aggregate_failures do
+        expect { service.execute(issue) }.to change { IncidentManagement::IssuableEscalationStatus.where(issue: issue).count }.to(1)
+
+        expect(issue.incident_management_issuable_escalation_status).to be_resolved
+      end
+
+      context 'when there is an escalation status' do
+        before do
+          create(:incident_management_issuable_escalation_status, issue: issue)
+        end
+
+        it 'changes escalations status to resolved' do
+          expect { service.execute(issue) }.to change { issue.incident_management_issuable_escalation_status.reload.resolved? }.to(true)
+        end
+      end
     end
   end
 
@@ -237,7 +257,7 @@ RSpec.describe Issues::CloseService do
 
       it 'verifies the number of queries' do
         recorded = ActiveRecord::QueryRecorder.new { close_issue }
-        expected_queries = 27
+        expected_queries = 32
 
         expect(recorded.count).to be <= expected_queries
         expect(recorded.cached_count).to eq(0)