https://docs.software-univention.de/developer-reference/5.2/en/join/write-join.html#join-script-exit-codes says that a joinscript should return 1 in case of error. That's ok. But joinscripts also return 1 when they are called directly (e.g. via call_joinscript from in postinst script). That's been irritating to 3rd party developers and to be honest, it's one of those mild pains that I just grew to ignore. E.g. in the terminal output or in term.log or updater.log this looks like this: ``` Preparing to unpack .../univention-keycloak-client_3.2.2A~5.2.2.202507290836_all.deb Unpacking univention-keycloak-client (3.2.2A~5.2.2.202507290836) over (3.2.1) ... Setting up univention-keycloak-client (3.2.2A~5.2.2.202507290836) ... Calling joinscript 49univention-keycloak-client.inst ... 2025-08-03 21:05:16.359110414+02:00 (in joinscript_init) Joinscript 49univention-keycloak-client.inst finished with exitcode 1 ``` This originates here: /var/lib/dpkg/info/univention-keycloak-client.postinst ```bash # run join script on Primary Directory Node and Backup Directory Node if [ "$1" = "configure" ]; then . /usr/share/univention-lib/join.sh && call_joinscript 49univention-keycloak-client.inst || : fi ``` Or directly here: ``` root@master:~# /usr/lib/univention-install/49univention-keycloak-client.inst || echo $? 2025-08-05 12:32:52.428076262+02:00 (in joinscript_init) 1 ``` I think call_joinscript should check if the joinscript status is already "done" (/var/univenion-join/status) and return "ok" in that case. Or even better: joinscripts should return 0 if they are already executed successfully.