diff --git a/app/services/issues/move_service.rb b/app/services/issues/move_service.rb
new file mode 100644
index 0000000000000000000000000000000000000000..85c0d6192e4ef3e8a50bf7e3abbde539c22bf82d
--- /dev/null
+++ b/app/services/issues/move_service.rb
@@ -0,0 +1,41 @@
+module Issues
+  class MoveService < Issues::BaseService
+    def execute(issue_old, project_new)
+      @issue_old = issue_old
+      @issue_new = issue_old.dup
+      @project_new = project_new
+
+      open_new_issue
+      rewrite_notes
+      close_old_issue
+      notify_participants
+
+      @issue_new
+    end
+
+    private
+
+    def open_new_issue
+      @issue_new.project = @project_new
+      @issue_new.save!
+
+      add_note_moved_from
+    end
+
+    def rewrite_notes
+    end
+
+    def close_old_issue
+      add_note_moved_to
+    end
+
+    def notify_participants
+    end
+
+    def add_note_moved_from
+    end
+
+    def add_note_moved_to
+    end
+  end
+end
diff --git a/spec/services/issues/move_service_spec.rb b/spec/services/issues/move_service_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..27081e76d48b6eb0e1d95a89428ae3835ec21e7a
--- /dev/null
+++ b/spec/services/issues/move_service_spec.rb
@@ -0,0 +1,22 @@
+require 'spec_helper'
+
+describe Issues::MoveService, services: true do
+  let(:user) { create(:user) }
+  let(:issue) { create(:issue, title: 'Some issue', description: 'Some issue description') }
+  let(:current_project) { issue.project }
+  let(:new_project) { create(:project) }
+
+  before do
+    current_project.team << [user, :master]
+  end
+
+  describe '#execute' do
+    let!(:new_issue) do
+      described_class.new(current_project, user).execute(issue, new_project)
+    end
+
+    it 'should create a new issue in a new project' do
+      expect(new_issue.project).to eq new_project
+    end
+  end
+end