diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb
index 0d8f8c6fbee0025adba79f63f3eec2738c78dc6a..79a27f4af7e5a939392261c753b2204505367f94 100644
--- a/app/services/projects/transfer_service.rb
+++ b/app/services/projects/transfer_service.rb
@@ -35,11 +35,9 @@ module Projects
         end
 
         # Apply new namespace id and visibility level
-        project.tap do |p|
-          p.namespace = new_namespace
-          setup_visibility_level(p, new_namespace)
-          p.save!
-        end
+        project.namespace = new_namespace
+        project.visibility_level = new_namespace.visibility_level unless project.visibility_level_allowed_by_group?
+        project.save!
 
         # Notifications
         project.send_move_instructions(old_path)
@@ -71,15 +69,5 @@ module Projects
         namespace.id != project.namespace_id &&
         current_user.can?(:create_projects, namespace)
     end
-
-    private
-
-    def setup_visibility_level(project, new_namespace)
-      return unless new_namespace.is_a?(Group)
-
-      if project.visibility_level > new_namespace.visibility_level
-        project.visibility_level = new_namespace.visibility_level
-      end
-    end
   end
 end