diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb
index 8a53f65aec1a82bf4770a1a9d0df637e694113ec..a08c6fcd94b1504cf0be871d804cbd18907ef34c 100644
--- a/app/services/projects/destroy_service.rb
+++ b/app/services/projects/destroy_service.rb
@@ -27,6 +27,8 @@ module Projects
       # Git data (e.g. a list of branch names).
       flush_caches(project, wiki_path)
 
+      Projects::UnlinkForkService.new(project, current_user).execute
+
       Project.transaction do
         project.destroy!
 
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index ffe0641ddd78932daed3f78012dfc1094c4af861..95315d86c4db1d6e8052e826250066b47275b86d 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -181,6 +181,23 @@ describe ProjectsController do
       expect(response).to have_http_status(302)
       expect(response).to redirect_to(dashboard_projects_path)
     end
+
+    context "when project is forked" do
+      let(:project)      { create(:project) }
+      let(:fork_project) { create(:project, forked_from_project: project) }
+      let(:merge_request) do
+               create(:merge_request,
+                 source_project: fork_project,
+                 target_project: project)
+      end
+
+      it "closes all related merge requests" do
+        fork_project.destroy
+
+        expect(fork_project.destroyed?).to be_truthy
+        expect(merge_request.state).to eq('closed')
+      end
+    end
   end
 
   describe "POST #toggle_star" do