Problem: RuntimeError: Work group '...' does not exist, please create it first. During command line import

Problem

The command line import shows this message:

------ Mass import finished. ------
RuntimeError: Work group '...' does not exist, please create it first.
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/ucsschool/importer/frontend/cmdline.py", line 243, in main
    self.do_import()
  File "/usr/lib/python3/dist-packages/ucsschool/importer/frontend/cmdline.py", line 166, in do_import
    six.reraise(etype, exc, etraceback)
  File "/usr/lib/python3/dist-packages/six.py", line 693, in reraise
    raise value
  File "/usr/lib/python3/dist-packages/ucsschool/importer/frontend/cmdline.py", line 152, in do_import
    importer.mass_import()
  File "/usr/lib/python3/dist-packages/ucsschool/importer/mass_import/mass_import.py", line 88, in mass_import
    self.import_users()
  File "/usr/lib/python3/dist-packages/ucsschool/importer/mass_import/mass_import.py", line 147, in import_users
    raise exception
  File "/usr/lib/python3/dist-packages/ucsschool/importer/mass_import/mass_import.py", line 122, in import_users
    user_import.create_and_modify_users(imported_users)  # 90% - 100%
  File "/usr/lib/python3/dist-packages/ucsschool/importer/mass_import/user_import.py", line 222, in create_and_modify_users
    success = user.modify(lo=self.connection)
  File "/usr/lib/python3/dist-packages/ucsschool/importer/models/import_user.py", line 1081, in modify
    res = super(ImportUser, self).modify(lo, validate, move_if_necessary)
  File "/usr/lib/python3/dist-packages/ucsschool/lib/models/base.py", line 613, in modify
    success = self.modify_without_hooks(lo, validate, move_if_necessary)
  File "/usr/lib/python3/dist-packages/ucsschool/importer/models/import_user.py", line 1121, in modify_without_hooks
    return super(ImportUser, self).modify_without_hooks(lo, validate, move_if_necessary)
  File "/usr/lib/python3/dist-packages/ucsschool/lib/models/base.py", line 640, in modify_without_hooks
    self.do_modify(udm_obj, lo)
  File "/usr/lib/python3/dist-packages/ucsschool/lib/models/user.py", line 334, in do_modify
    mandatory_groups = self.groups_used(lo)
  File "/usr/lib/python3/dist-packages/ucsschool/lib/models/user.py", line 667, in groups_used
    self.get_or_create_group_udm_object(group_dn, lo)
  File "/usr/lib/python3/dist-packages/ucsschool/lib/models/user.py", line 691, in get_or_create_group_udm_object
    raise RuntimeError("Work group '%s' does not exist, please create it first." % group_dn)
RuntimeError: Work group '...' does not exist, please create it first.

But the mentioned work group exists:

univention-ldapsearch -LLL cn=...
dn: ...

Environment (optional)

UCS 5.0-2 and later.

Solution

Broken group objects that lack the ucsschoolRole attribute cause this problem. The solution is to add the ucsschoolRole attribute which can be achieved by running:

udm groups/group modify --dn "..." --set ucsschoolRole="workgroup:school:..." 

Or to automatically fix all school objects:

python3 /usr/share/ucs-school-import/scripts/migrate_ucsschool_roles --modify --all-objects

Background Information

The script mentioned in the solution should have already been run by a migration (35ucs-school-import.inst, version 19). If a group exists without the ucsschoolRole attribute, it’s probably because the migration was skipped or because the group was created manually without the attribute.

2 Likes