Problem: Schoolimport Username XXX is already in use

Problem:

Der Import gibt folgende Fehlermeldung zurück:

2024-08-26 12:13:04 ERROR user_import.create_and_modify_users:278  Entry #0: Username 'chri.schei' is already in use by 'uid=chri.schei,cn=lehrer,cn=users,ou=sun,dc=schein,dc=me' (source_uid: 'csv-teacher', record_uid: 'christinascheinig01234').
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/ucsschool/importer/mass_import/user_import.py", line 197, in create_and_modify_users
    check_username=True,
  File "/usr/lib/python3/dist-packages/ucsschool/importer/models/import_user.py", line 1357, in validate
    self._check_username_uniqueness()
  File "/usr/lib/python3/dist-packages/ucsschool/importer/models/import_user.py", line 1369, in _check_username_uniqueness
    self.name, uut.dn, uut.source_uid, uut.record_uid
ucsschool.importer.exceptions.UniqueIdError: Username 'chri.schei' is already in use by 'uid=chri.schei,cn=lehrer,cn=users,ou=sun,dc=schein,dc=me' (source_uid: 'cs
v-teacher', record_uid: 'christinascheinig01234').

Investigation:

Einen Benutzer darf es nur einmal geben, er darf aber an mehreren Schule sein. Damit er an eine weitere Schule importiert wird, muss dieser die Rollen
ucsschoolRole und ucsschoolSchool von seiner Stammschule haben und die RecordUid muss übereinstimmen
Step1: Attribute am Benutzer prüfen

univention-ldapsearch -LLL uid=chri.schei ucsschoolSchool ucsschoolRole ucsschoolRecordUID
dn: uid=chri.schei,cn=lehrer,cn=users,ou=sun,dc=schein,dc=me 
ucsschoolSchool: sun
ucsschoolRole: teacher:school:sun
ucsschoolRecordUID: christinascheinig43210

Step2: Eintrag in der Counterliste prüfen
Sollte die RecordUid passen und auch die Attribute richtig gesetzt sein, dann müsste ein neuer Benutzer angelegt werden mit einer Nummer, insofern in der import Config sowas zu finden ist:

'username': {'default': '<firstname:umlauts,lower>[0:5].<lastname:umlauts,lower>[0:5][COUNTER2]'}}'

Ist das auch gegeben muss geschaut werden, ob der Benutzer einen Eintag hat. Dieser Eintrag wird beim ersten Import erzeugt. Ist der Eintrag nicht vorhanden, ist der Benutzer ggf manuell angelegt worden.

univention-ldapsearch -LLL -b cn=unique-usernames,cn=ucsschool,cn=univention,"$(ucr get ldap/base)" cn=chri.schei

Solution:

Legen Sie ein Counter Objekt an und importieren das ins ldap:

cat > unique.ldif
dn: cn=chri.schei,cn=unique-usernames,cn=ucsschool,cn=univention,dc=schein,dc=me 
objectClass: ucsschoolUsername 
ucsschoolUsernameNextNumber: 2 
cn: chri.schei
^C

ldapadd  -x -D "cn=admin,$(ucr get ldap/base)" -w "$(</etc/ldap.secret)" < unique.ldif

See also for counter issues:

1 Like
Mastodon