Some checks failed
CI / Backend Unit Tests (pull_request) Failing after 4m12s
CI / fail2ban Regex (pull_request) Successful in 39s
CI / Unit & Component Tests (pull_request) Failing after 2m50s
CI / OCR Service Tests (pull_request) Successful in 16s
CI / Compose Bucket Idempotency (pull_request) Successful in 58s
CI / Unit & Component Tests (push) Has been cancelled
CI / OCR Service Tests (push) Has been cancelled
CI / Backend Unit Tests (push) Has been cancelled
CI / fail2ban Regex (push) Has been cancelled
CI / Compose Bucket Idempotency (push) Has been cancelled
Closes #518. UserDataInitializer.initAdminUser was doing groupRepository.save(adminGroup) unconditionally. If a previous boot had seeded the group but failed before creating the admin user (or if the operator deleted just the admin row to retry with a corrected APP_ADMIN_USERNAME), the next seed attempt violated user_groups_name_key and aborted the context. Switch to the same findByName(...).orElseGet(...) pattern initE2EData already uses for the "Leser" group. Tests in AdminSeedFailClosedTest: - reuses_existing_Administrators_group_when_seeding_a_new_admin - creates_Administrators_group_when_seeding_admin_on_a_fresh_database Plus updated existing tests to stub groupRepository.save now that the seed path also exercises it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>