diff --git a/app/models/university/organization.rb b/app/models/university/organization.rb
index a7cd539fc5a21cbc3fb451a1f7531cfc39419b05..dc384b1076747652b5b4c19ab9777463cd5e6c1f 100644
--- a/app/models/university/organization.rb
+++ b/app/models/university/organization.rb
@@ -74,6 +74,8 @@ class University::Organization < ApplicationRecord
   }
 
   validates_presence_of :name
+  # Organization can be created from extranet with only their name. Be careful for future validators.
+  # There is an attribute accessor above : `created_from_extranet`
 
   enum kind: {
     company: 10,
diff --git a/app/models/university/person/experience.rb b/app/models/university/person/experience.rb
index 5b5ec61adebb1c9ac6805d548b26b2f3067a4538..9a841a781fe2c95c4f0c3326a39c430cd7ea2a97 100644
--- a/app/models/university/person/experience.rb
+++ b/app/models/university/person/experience.rb
@@ -50,11 +50,10 @@ class University::Person::Experience < ApplicationRecord
   def create_organization_if_needed
     if organization.nil? && organization_name.present?
       self.organization_name = self.organization_name.strip
-      self.organization = university.organizations
-                          .where("name ILIKE ?", organization_name)
-                          .or(university.organizations.where(siren: organization_name)).first_or_create do |organization|
-        organization.created_from_extranet = true
-      end
+      orga = university.organizations.find_by("name ILIKE ?", organization_name)
+      orga ||= university.organizations.find_by(siren: organization_name)
+      orga ||= university.organizations.create(name: organization_name, created_from_extranet: true)
+      self.organization = orga if orga.persisted?
     end
   end
 end