Problem
When creating or modifying computer rooms via Manage Computer Rooms in the Univention Management Console (UMC), saving fails with an internal server error.
The following traceback is shown:
Interner Server-Fehler in "schoolrooms/put".
Request: schoolrooms/put
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/univention/management/console/base.py", line 388, in __error_handling
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/univention/management/console/base.py", line 285, in execute
function.__func__(self, request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/univention/management/console/modules/decorators.py", line 189, in _response
return function(self, request)
File "/usr/lib/python3/dist-packages/ucsschool/lib/school_umc_ldap_connection.py", line 156, in wrapper_func
return func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/univention/management/console/modules/schoolrooms/__init__.py", line 151, in put
ldap_user_write,
File "/usr/lib/python3/dist-packages/univention/management/console/modules/schoolrooms/__init__.py", line 193, in _set_teacher_computers
computer.modify(ldap_user_write)
File "/usr/lib/python3/dist-packages/ucsschool/lib/models/base.py", line 619, in modify
success = self.modify_without_hooks(lo, validate, move_if_necessary)
File "/usr/lib/python3/dist-packages/ucsschool/lib/models/computer.py", line 308, in modify_without_hooks
self.create_network(lo)
File "/usr/lib/python3/dist-packages/ucsschool/lib/models/computer.py", line 342, in create_network
network.create(lo)
File "/usr/lib/python3/dist-packages/ucsschool/lib/models/base.py", line 552, in create
success = self.create_without_hooks(lo, validate)
File "/usr/lib/python3/dist-packages/ucsschool/lib/models/network.py", line 69, in create_without_hooks
dns_reverse_zone.create(lo)
File "/usr/lib/python3/dist-packages/ucsschool/lib/models/base.py", line 552, in create
success = self.create_without_hooks(lo, validate)
File "/usr/lib/python3/dist-packages/ucsschool/lib/models/base.py", line 567, in create_without_hooks
raise ValidationError(self.errors.copy())
ucsschool.lib.models.attributes.ValidationError: {'name': ['Ein Subnetz für den Reverse Lookup besteht aus den ersten 1 bis 3 Oktetten einer IPv4-Adresse (z.B. "192.168.0") oder den ersten 1 bis 31 Nibbles einer vollständigen (mit führenden Nullen und ohne die ::-Ersetzung) IPv6-Adresse (z.B. "2001:0db8:010" für "2001:db8:100::/44").']}
Root Cause
Known Bug 51846
The error originates from the put method in the schoolrooms module and occurs during the modification of computer objects. Specifically, it fails in:
ucsschool.lib.models.computer.create_network()
Due to dns_reverse_zone.create() validation logic.
If the computer object has no valid network assigned, the method raises a ValidationError. The system expects:
IPv4: a subnet in the form X.X.X
IPv6: a full address prefix of 1–31 nibbles (e.g., 2001:0db8:010)
Any value outside these constraints (including None) will halt the operation.
Debugging Instructions
1: Increase Debug Logging
ucr set umc/module/debug/level=4
2: Restart UMC Server
systemctl restart univention-management-console-server.service
3: Review Logs
Check detailed logs at:
/var/log/univention/management-console-module-schoolrooms.log
Look for errors related to create_network, dns_reverse_zone.create, or missing network attributes.
Solution
1. Use a filtered list to extract potentially affected computers without network assignment.
udm computers/windows list --filter '(!(network=*))' | less
Example:
(!(network=*))
DN: cn=WIN10-CLIENT-01,cn=computers,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
description: None
domain: None
fqdn: None
groups: cn=Windows Hosts,cn=groups,dc=ucs5schoolhejne,dc=intranet
groups: cn=mejneschool2-Raum-Mejne2,cn=raeume,cn=groups,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
inventory-number: None
inventoryNumber: 01
mac: 52:54:00:0a:15:02
name: WIN10-CLIENT-01
network: None
networkAccess: 1
ntCompatibility: None
operatingSystem: Windows 10 Pro
operatingSystemVersion: 10.0 (19045)
primaryGroup: cn=Windows Hosts,cn=groups,dc=ucs5schoolhejne,dc=intranet
sambaRID: 6470
serial-number: None
shell: /bin/false
ucsschoolRole: win_computer:school:mejneschool2
ucsschoolRole: teacher_computer:school:mejneschool2
unixhome: /dev/null
2. List networks
You will need the DN from the network you want to set for the object.
udm networks/network list | less
Example:
DN: cn=mejneschool2-10.200.30.0,cn=networks,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
dhcpEntryZone: cn=mejneschool2,cn=dhcp,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
dnsEntryZoneForward: zoneName=ucs5schoolhejne.intranet,cn=dns,dc=ucs5schoolhejne,dc=intranet
dnsEntryZoneReverse: zoneName=30.200.10.in-addr.arpa,cn=dns,dc=ucs5schoolhejne,dc=intranet
name: mejneschool2-10.200.30.0
netmask: 24
network: 10.200.30.0
nextIp: 10.200.30.3
3. Use a loop to assign a correct network object. Replace placeholders with your pseudonymized values as needed:
udm computers/windows list --filter '(!(network=*))' | \
grep '^DN: ' | \
while read -r line; do
DN=$(echo "$line" | sed 's/^DN: //')
HOSTNAME=$(udm computers/windows list --dn "$DN" | grep '^ name: ' | awk '{print $2}')
echo "Network is set correctly for:"
echo "$HOSTNAME"
udm computers/windows modify \
--dn "$DN" \
--set network="cn=mejneschool2-10.200.30.0,cn=networks,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet"
done
Example:
Network is set correctly for:
WIN10-CLIENT-02
WIN10-CLIENT-03
WIN10-CLIENT-01
WIN11-CLIENT-05
Object modified: cn=WIN10-CLIENT-01,cn=computers,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
This assigns the correct reverse lookup-compatible subnet for affected computers and solve the problem.
Example:
udm computers/windows list --filter cn=WIN10-Client-01
DN: cn=WIN10-CLIENT-01,cn=computers,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
description: None
dhcpEntryZone: cn=mejneschool2,cn=dhcp,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet 10.200.30.4 52:54:00:0a:15:02
dnsEntryZoneForward: zoneName=ucs5schoolhejne.intranet,cn=dns,dc=ucs5schoolhejne,dc=intranet 10.200.30.4
dnsEntryZoneReverse: zoneName=30.200.10.in-addr.arpa,cn=dns,dc=ucs5schoolhejne,dc=intranet 10.200.30.4
domain: ucs5schoolhejne.intranet
fqdn: WIN10-CLIENT-01.ucs5schoolhejne.intranet
groups: cn=Windows Hosts,cn=groups,dc=ucs5schoolhejne,dc=intranet
groups: cn=mejneschool2-Raum-Mejne2,cn=raeume,cn=groups,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
inventory-number: None
inventoryNumber: 01
ip: 10.200.30.4
mac: 52:54:00:0a:15:02
name: WIN10-CLIENT-01
network: cn=mejneschool2-10.200.30.0,cn=networks,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
networkAccess: 1
ntCompatibility: None
operatingSystem: Windows 10 Pro
operatingSystemVersion: 10.0 (19045)
primaryGroup: cn=Windows Hosts,cn=groups,dc=ucs5schoolhejne,dc=intranet
sambaRID: 6470
serial-number: None
shell: /bin/false
ucsschoolRole: win_computer:school:mejneschool2
ucsschoolRole: teacher_computer:school:mejneschool2
unixhome: /dev/null
(Optional) Change the IP Address
udm computers/windows modify --dn 'cn=WIN10-CLIENT-01,cn=computers,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet' --set ip=10.200.30.31
Object modified: cn=WIN10-CLIENT-01,cn=computers,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
cn=WIN10-Client-01
DN: cn=WIN10-CLIENT-01,cn=computers,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
description: None
dhcpEntryZone: cn=mejneschool2,cn=dhcp,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet 10.200.30.31 52:54:00:0a:15:02
dnsEntryZoneForward: zoneName=ucs5schoolhejne.intranet,cn=dns,dc=ucs5schoolhejne,dc=intranet 10.200.30.31
dnsEntryZoneReverse: zoneName=30.200.10.in-addr.arpa,cn=dns,dc=ucs5schoolhejne,dc=intranet 10.200.30.31
domain: ucs5schoolhejne.intranet
fqdn: WIN10-CLIENT-01.ucs5schoolhejne.intranet
groups: cn=Windows Hosts,cn=groups,dc=ucs5schoolhejne,dc=intranet
groups: cn=mejneschool2-Raum-Mejne2,cn=raeume,cn=groups,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
inventory-number: None
inventoryNumber: 01
ip: 10.200.30.31
mac: 52:54:00:0a:15:02
name: WIN10-CLIENT-01
network: cn=mejneschool2-10.200.30.0,cn=networks,ou=mejneschool2,dc=ucs5schoolhejne,dc=intranet
networkAccess: 1
ntCompatibility: None
operatingSystem: Windows 10 Pro
operatingSystemVersion: 10.0 (19045)
primaryGroup: cn=Windows Hosts,cn=groups,dc=ucs5schoolhejne,dc=intranet
sambaRID: 6470
serial-number: None
shell: /bin/false
ucsschoolRole: win_computer:school:mejneschool2
ucsschoolRole: teacher_computer:school:mejneschool2
unixhome: /dev/null