diff --git a/app/services/issues/move_service.rb b/app/services/issues/move_service.rb
index d818ed86020d3e4b5524fb867a55bf9eb153f729..bba972382d97a87f0402362cda8bbb1e35f299a8 100644
--- a/app/services/issues/move_service.rb
+++ b/app/services/issues/move_service.rb
@@ -45,7 +45,8 @@ module Issues
     end
 
     def open_new_issue
-      @issue_new.update(project: @project_new)
+      new_description = rewrite_references(@issue_old, @issue_old.description)
+      @issue_new.update(project: @project_new, description: new_description)
     end
 
     def rewrite_notes
@@ -69,5 +70,19 @@ module Issues
     def add_moved_to_note
       SystemNoteService.noteable_moved(:to, @issue_old, @project_old, @issue_new, @current_user)
     end
+
+    def rewrite_references(mentionable, text)
+      new_content = text.dup
+      references = mentionable.all_references
+
+      [:issues, :merge_requests, :milestones].each do |type|
+        references.public_send(type).each do |mentioned|
+          new_content.gsub!(mentioned.to_reference,
+                            mentioned.to_reference(@project_new))
+        end
+      end
+
+      new_content
+    end
   end
 end
diff --git a/spec/services/issues/move_service_spec.rb b/spec/services/issues/move_service_spec.rb
index 3b81cc90c6109fe580bd8b187fd3438f2702a14c..8d9cc09ffc7ce9a53a1bc299e96cf679195f90a9 100644
--- a/spec/services/issues/move_service_spec.rb
+++ b/spec/services/issues/move_service_spec.rb
@@ -4,8 +4,8 @@ describe Issues::MoveService, services: true do
   let(:user) { create(:user) }
   let(:title) { 'Some issue' }
   let(:description) { 'Some issue description' }
-  let(:old_issue) { create(:issue, title: title, description: description) }
-  let(:old_project) { old_issue.project }
+  let(:old_project) { create(:project) }
+  let(:old_issue) { create(:issue, title: title, description: description, project: old_project) }
   let(:new_project) { create(:project) }
   let(:move_service) { described_class.new(old_project, user, move_params, old_issue) }
 
@@ -61,13 +61,12 @@ describe Issues::MoveService, services: true do
           expect(old_issue.closed?).to be true
         end
 
-        it 'persists changes to old and new issue' do
-          expect(new_issue.changed?).to be false
-          expect(old_issue.changed?).to be false
+        it 'persists new issue' do
+          expect(new_issue.persisted?).to be true
         end
       end
 
-      context 'notes exist' do
+      context 'issue with notes' do
         let(:note_contents) do
           ['Some system note 1', 'Some comment', 'Some system note 2']
         end
@@ -91,6 +90,20 @@ describe Issues::MoveService, services: true do
           expect(new_notes.last).to match /^Moved from/
         end
       end
+
+      describe 'rewritting references' do
+        include_context 'issue move executed'
+
+        context 'issue reference' do
+          let(:another_issue) { create(:issue, project: old_project) }
+          let(:description) { "Some description #{another_issue.to_reference}" }
+
+          it 'rewrites referenced issues creating cross project reference' do
+            expect(new_issue.description)
+              .to eq "Some description #{old_project.to_reference}#{another_issue.to_reference}"
+          end
+        end
+      end
     end
   end