SystemAlertMessage.ktSystemAlertMessage is a Kotlin object (singleton) in the root org.projectforge package, making it accessible globally across all modules. It contains a single mutable property:
alertMessage: String? — When non-null, this message is rendered as a banner alert on every page for every authenticated user. When null, no alert is shown.The alert is volatile (in-memory only) — it is lost on application restart. This is intentional: system alerts are intended for temporary operational notices (e.g. "Maintenance window from 10:00 to 10:30"), not for persistent configuration.
This object was extracted from WicketApplication (commit 7def05f87) to make the alert mechanism available to the REST/JSON API layer, which runs outside the Wicket application context. Before this refactoring, alerts were coupled to the Wicket session and inaccessible from REST endpoints. The admin page provides UI controls to set the message (stored in this singleton) and clear it (sets alertMessage to null).
868d6abb7 2025 -> 2026\n63081666f Source file headers: 2024-> 2025.\nb6092df09 Copyright 2023 -> 2024\nab45d51fa Copyright 2001-2022 -> 2001-2023.\n4316a6518 UserFilter.updateRequired removed (flyway is used since years).\n5f7ef41b8 Copyright 2021 -> 2022\nceb63e8a1 Source code header: (C) 2001-2021.\n7c79f1922 Copyright of source header -> 2020.\nc36924d50 AlertMessage: doc.\n7def05f87 Alert message of system moved to SystemAlertMessage (from WicketApplication) for usage in Rest services.\n05244ff19 CopyRight of all Kotlin file-header updated or created.\nbd3a3e824 Module projectforge-jax-rs renamed to projectforge-rest.\na2ad49af9 UI: layoutSettings -> layoutContext renamed.\n204aaae57 WIP: React-Select.\n789935e2d WIP: List filters...\nf2e061289 WIP: List filters...