diff --git a/app/models/project.rb b/app/models/project.rb
index 242ad19b115f5f5ed2d0f144085a951c9430ebc2..a1aa1d5fdbc31b5c427b24125bcb0fac53445540 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -406,8 +406,7 @@ class Project < ActiveRecord::Base
 
   def import_url=(value)
     import_url = Gitlab::ImportUrl.new(value)
-    # deletes any existing import_data
-    create_import_data(credentials: import_url.credentials)
+    create_or_update_import_data(import_url.credentials)
     super(import_url.sanitized_url)
   end
 
@@ -420,6 +419,13 @@ class Project < ActiveRecord::Base
     end
   end
 
+  def create_or_update_import_data(credentials)
+    project_import_data = import_data || ProjectImportData.new
+    project_import_data.credentials = credentials
+    project_import_data.project_id = id
+    project_import_data.save
+  end
+
   def import?
     external_import? || forked?
   end
diff --git a/lib/gitlab/import_url.rb b/lib/gitlab/import_url.rb
index adcbcc43d24da1148b56fbdad6701686f1d2b147..5b18d67ddc3fe93494a00ae2e87a9082869070d1 100644
--- a/lib/gitlab/import_url.rb
+++ b/lib/gitlab/import_url.rb
@@ -20,10 +20,10 @@ module Gitlab
     private
 
     def generate_full_url
-      return @url unless @credentials
+      return @url unless credentials
       @full_url = @url.dup
-      @full_url.user = @credentials[:user]
-      @full_url.password = @credentials[:password]
+      @full_url.user = credentials[:user]
+      @full_url.password = credentials[:password]
       @full_url
     end