diff --git a/CHANGELOG b/CHANGELOG
index 822fa4be56586b53086a9e939f20bac7436960fd..992f782f80353586d294f6c002788d150261f7dd 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -33,6 +33,7 @@ v 8.8.0 (unreleased)
   - Fix Gravatar hint in user profile when Gravatar is disabled. !3988 (Artem Sidorenko)
   - Expire repository exists? and has_visible_content? caches after a push if necessary
   - Fix unintentional filtering bug in issues sorted by milestone due (Takuya Noguchi)
+  - GitLab project import and export functionality
 
 v 8.7.4
   - Fix always showing build notification message when switching between merge requests
diff --git a/app/helpers/todos_helper.rb b/app/helpers/todos_helper.rb
index 2f066682180e7eadbdc263f765ae61b5060ed21e..5317b55520b256cc45b8fd3b9cd537ea3acf7f13 100644
--- a/app/helpers/todos_helper.rb
+++ b/app/helpers/todos_helper.rb
@@ -9,8 +9,12 @@ module TodosHelper
 
   def todo_action_name(todo)
     case todo.action
-    when Todo::ASSIGNED then 'assigned you'
-    when Todo::MENTIONED then 'mentioned you on'
+      when Todo::ASSIGNED then
+        'assigned you'
+      when Todo::MENTIONED then
+        'mentioned you on'
+      when Todo::IMPORTED then
+        'imported successfully'
     end
   end
 
@@ -27,6 +31,8 @@ module TodosHelper
     if todo.for_commit?
       namespace_project_commit_path(todo.project.namespace.becomes(Namespace), todo.project,
                                     todo.target, anchor: anchor)
+    elsif todo.for_project?
+      namespace_project_path(todo.project.namespace, todo.project)
     else
       polymorphic_path([todo.project.namespace.becomes(Namespace),
                         todo.project, todo.target], anchor: anchor)
diff --git a/app/models/project.rb b/app/models/project.rb
index 5003324f8f87b1f99e7994a52fb2cb2dcac6bca9..3bd5d048e104705249eab8eb8ea1d70566fc7f25 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -94,6 +94,8 @@ class Project < ActiveRecord::Base
   attr_accessor :new_default_branch
   attr_accessor :old_path_with_namespace
 
+  alias_attribute :title, :name
+
   # Relations
   belongs_to :creator, foreign_key: 'creator_id', class_name: 'User'
   belongs_to :group, -> { where(type: Group) }, foreign_key: 'namespace_id'
diff --git a/app/models/todo.rb b/app/models/todo.rb
index d85f7bfdf57219688596245c6b4293f8ff5e18b9..3333e56912a8a6291ca806083f6952c29dde0311 100644
--- a/app/models/todo.rb
+++ b/app/models/todo.rb
@@ -19,6 +19,7 @@
 class Todo < ActiveRecord::Base
   ASSIGNED  = 1
   MENTIONED = 2
+  IMPORTED = 3
 
   belongs_to :author, class_name: "User"
   belongs_to :note
@@ -58,6 +59,10 @@ class Todo < ActiveRecord::Base
     target_type == "Commit"
   end
 
+  def for_project?
+    target_type == "Project"
+  end
+
   # override to return commits, which are not active record
   def target
     if for_commit?
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index 251fba474afa9f2bc011dfbcb25c3a6e0df00b7c..dcb46ad9d19885935eb785e7806d2747c3822c42 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -144,7 +144,7 @@
             = link_to 'Generate new export', export_namespace_project_path(@project.namespace, @project),
                 method: :post, class: "btn btn-default"
 
-            = link_to 'Download export', download_export_namespace_project_path(@project.namespace, @project),
+            = link_to 'Download latest export', download_export_namespace_project_path(@project.namespace, @project),
               method: :post, class: "btn btn-default"
 
 
diff --git a/lib/gitlab/import_export/import_service.rb b/lib/gitlab/import_export/import_service.rb
index acd734f08905032b50a23662a349efe425e6e0d3..79794a4c34f38f6c5f925c6e237b4992aea000fe 100644
--- a/lib/gitlab/import_export/import_service.rb
+++ b/lib/gitlab/import_export/import_service.rb
@@ -17,6 +17,7 @@ module Gitlab
         Gitlab::ImportExport::Importer.import(archive_file: @archive_file,
                                               shared: @shared)
         if [restore_version, restore_project_tree, restore_repo, restore_wiki_repo, restore_uploads].all?
+          Todo.create(attributes_for_todo)
           project_tree.project
         else
           project_tree.project.destroy if project_tree.project
@@ -67,6 +68,18 @@ module Gitlab
       def wiki_repo_path
         File.join(@shared.export_path, 'project.wiki.bundle')
       end
+
+      def attributes_for_todo
+        { user_id: @current_user.id,
+          project_id: project_tree.project.id,
+          target_type: 'Project',
+          target: project_tree.project,
+          action: Todo::IMPORTED,
+          author_id: @current_user.id,
+          state: :pending,
+          target_id: project_tree.project.id
+        }
+      end
     end
   end
 end