diff --git a/ldap_mapper/core.py b/ldap_mapper/core.py
index c5fcff11428c7e3e8cd5638813a4bbff150ea450..57c8663ec421998c94f147860d3562512d4c15aa 100644
--- a/ldap_mapper/core.py
+++ b/ldap_mapper/core.py
@@ -60,12 +60,14 @@ class AddOperation:
 	def apply_object(self, obj_state):
 		obj_state.dn = self.dn
 		obj_state.attributes = {name: values.copy() for name, values in self.attributes.items()}
+		obj_state.attributes['objectClass'] = obj_state.attributes.get('objectClass', []) + list(self.object_classes)
 
 	def apply_session(self, session_state):
 		assert self.dn not in session_state.objects
 		session_state.objects[self.dn] = self.obj
 		for name, values in self.attributes.items():
 			session_state.ref(self.obj, name, values)
+		session_state.ref(self.obj, 'objectClass', self.object_classes)
 
 	def apply_ldap(self, conn):
 		success = conn.add(self.dn, self.object_classes, self.attributes)
diff --git a/ldap_mapper/relationship.py b/ldap_mapper/relationship.py
index d8e256aa893712e8f219e632991db69968dd7e6a..cf5e42bb055e661bc6a72ba77d14900e38b53b7f 100644
--- a/ldap_mapper/relationship.py
+++ b/ldap_mapper/relationship.py
@@ -28,7 +28,7 @@ class RelationshipSet(MutableSet):
 
 	def __iter__(self):
 		def get(dn):
-			return make_modelobj(self.__ldap_object.session.get(dn, self.__model.ldap_filter_params), self.__destmodel)
+			return make_modelobj(self.__ldap_object.session.get(dn, self.__destmodel.ldap_filter_params), self.__destmodel)
 		dns = set(self.__ldap_object.getattr(self.__name))
 		return iter(filter(lambda obj: obj is not None, map(get, dns)))
 
diff --git a/uffd/user/views_user.py b/uffd/user/views_user.py
index 63f17cf45605ba4356b73799706c55b0dadb4157..18b380b021521813abcc049682a7abc3705456ca 100644
--- a/uffd/user/views_user.py
+++ b/uffd/user/views_user.py
@@ -105,11 +105,11 @@ def csvimport():
 			if not newuser.set_mail(row[1]):
 				flash("invalid mail address, skipped : {}".format(row))
 				continue
+			ldap.session.add(newuser)
 			for role in roles:
 				if (str(role.id) in row[2].split(';')) or role.name in current_app.config["ROLES_BASEROLES"]:
 					role.members.add(newuser)
 			newuser.update_groups()
-			ldap.session.add(newuser)
 			try:
 				ldap.session.commit()
 				db.session.commit()