
Query forms: persist the cross-installation search checkbox per user Customer feedback from training: the Anlagen- und Gebaeude-uebergreifend suchen checkbox at the top of the query forms (Keys, Cylinders, Copies, Issues, History) resets to unchecked every time the form opens. The five query types share one form (_frmSucheErsetzen with fArt switch) and one checkbox (chb_FA_Master). The state is read at search time but never written to or read from CUSTOMIZE. Add per-user persistence so customers who routinely work across all installations can default the checkbox to on, mirroring the US_LastRessource_OBJ_ID pattern already used in the same form.
CAD plan: colour-code cylinders by installation Customer feedback from training: when two installations share a CAD plan, operators cannot visually tell installation G cylinders from installation H cylinders. The CAD viewer renders markers from imported DXF/DWG layer colour; no code path varies cylinder marker colour by Anlage_ID. Add an installation-level colour assignment that drives marker rendering on the plan.
Buildings: surface the existing many-to-many relationship to installations in the UI Customer feedback from training: customers want to associate one physical building with multiple installations. The data model already supports this via the RE_ANLAGE_GEBAEUDE join table, but the building form does not offer a clear path to add a building to a second installation, and the derived getAnlagenliste() reads from the cylinders that live in the building (group by Anlage_ID on ZYLINDER) rather than from the join table. Expose the M:N relationship in the building form so operators can attach one building to multiple installations directly.
Audit log: in-app browser for user actions Customer feedback from training: every insert, update and delete is already captured in the JOURNAL table with operator, field, old value, new value, action type and timestamp. There is no in-app form to query this. Customers asking for a user-action audit trail get pointed at SQL today. This ticket covers a queryable in-app browser of the existing JOURNAL data with filters by date range, user, table and entity.
Reminder report: operator-triggered actions on selected rows Customer feedback from training: the Reminder form shows upcoming key return deadlines and end-of-activity dates but is read-only. Operators want to act on selected rows directly from the grid: send a one-off reminder email to a specific key holder, log a contact attempt, or mark a follow-up. Distinct from the automated scheduled-reminder engine in progress; this ticket covers manual operator-triggered actions on the form itself.
Reminder report: keep persons with outstanding keys regardless of end-of-activity window Customer feedback from training: the Reminder grid filter is a window of (Today minus 100 days, Today plus nTage), so a person whose EndeDatum is more than 100 days in the past drops out of the report even if they still hold outstanding issued Exemplare. The report should keep persons visible for as long as they hold outstanding keys, independent of the date window on EndeDatum.
Automated personnel sync from a corporate directory A new sync subsystem fetches personnel data automatically from a corporate directory over a secure REST API. Supports initial bulk import and incremental updates with reconciliation against the local personnel table. Personnel records, supervisors and exit dates stay in step with the source system, removing repeated manual imports. Initial implementation targets one directory protocol; the architecture supports adding further protocols as customer demand emerges.
Personnel form: exit-date highlight and source indicator Personnel records gain two visual cues. An exit-date highlight flags departed employees and stages them for routine cleanup. A source indicator shows whether a record came from manual entry or an automated sync. Reduces the time operators spend identifying who still needs follow-up and where each record came from.
Personnel and key assignment CSV export Operator-triggered export of personnel data together with their key assignments to a structured CSV file. UTF-8 with BOM, system-dependent delimiter, ready for HR and ERP downstream consumption. Available from Companion as a one-click action; recurring schedules will follow on top of the scheduled-task engine.
Scheduled tasks and service status panel in Companion A new always-on background service runs scheduled jobs (reminders, exports, sync) without manual triggering. Companion gets a task management page where operators can create, configure, pause and inspect scheduled tasks. A status panel shows service health, last run, next run and recent errors at a glance.