03-Jun-2026 — Backup and Committee-settings: 1 feature and 1 fix #282
build 666 — commit 26696e9
backup: scheduled all-environments backup task (#282)
Related issue: #282 - Scheduled all-environments backup
NGX can now back up every environment automatically on a schedule, running the same backup you get from the Backup page but across all configured environments in one job. The job is off by default and is only available on an environment that can administer the others (staging), so ordinary group sites never run it.
- A new All-environments backup scheduled task backs up every configured environment's MongoDB database and S3 objects to the shared backup bucket.
- It is disabled by default and must be turned on deliberately.
- It only appears on platform-admin environments, the same restriction as the Backup page. On any other site it is not registered and cannot run.
- Environments are backed up one at a time, so the job never runs many heavy backups at once.
- Each environment produces its own entry on the Backup History tab, marked as a scheduled run so you can tell it apart from a backup you started by hand.
- If one environment fails, the rest still run, and the job records which ones failed.
Open Admin > System Settings > Scheduled Tasks (/admin/system-settings?tab=scheduled-tasks) on the platform-admin environment and choose the All-environments backup tab. From there you can:
- turn the job on or off,
- run it immediately with Run now,
- change when it runs using the schedule dropdowns (it defaults to daily at 3am),
- review a history of recent runs with how long each took and whether every environment succeeded.
The backups themselves appear in Admin > Environment Management > Backup on the History tab, one per environment, the same as a manually started backup.
- Each environment is backed up in turn: its MongoDB database is dumped, uploaded to the shared backup bucket, and its S3 objects are backed up alongside it.
- The job waits for each environment to finish before starting the next, with a 45-minute safety timeout so a stuck backup cannot hold up the rest forever.
- Sites are never scaled down by the scheduled job, so they stay online while the backup runs.
- A run is marked as failed if any environment failed, with a summary naming the ones that did; the successful environments are still backed up.
Only an environment set up to administer the others (staging) holds the details needed to reach every environment's database and storage. The task follows the same rule as the Backup page: it is registered only where platform administration is switched on, and it stays off until an administrator turns it on.
server/lib/cron/all-environments-backup-job.ts(new) registers the task only when platform administration is enabled, defaults to off, and backs up each environment in turn with completion tracking and a per-environment timeout.server/lib/backup/backup-service-factory.ts(new) shares one backup-service builder between the Backup page's controller and the scheduled job, including backup-completion notifications.server/lib/backup/backup-controller.tsnow uses the shared builder.server/lib/backup/backup-and-restore-service.tsrecords who started a backup via a new triggeredBy option, so scheduled runs are saved as "scheduled" rather than "web".scheduled-task.model.tsand the Scheduled Tasks page add the new task id and an All-environments backup tab.server/lib/server.tsschedules the task at start-up alongside the other recurring jobs.
- On the platform-admin environment, open Admin > System Settings > Scheduled Tasks and select the All-environments backup tab.
- Confirm it is present and switched off.
- Confirm the same task does not appear on an ordinary group site.
- Choose Run now and wait for the run to finish.
- Open Admin > Environment Management > Backup > History and confirm one backup per environment, each marked as a scheduled run.
- Optionally change the schedule with the dropdowns and confirm the plain-English description updates.
Administrators on the staging environment can now back up every site on a schedule from one place, with a single off-by-default job that runs each environment's backup in turn, records the outcome per environment, and stays unavailable on sites that cannot administer the others.
committee-settings: stop email-forward tooltip wrapping on inbound-forwarding tab
The Email Forward column badges (Active, Catch-all, Multiple) show the forwarding rule in a tooltip, e.g. "membership-co-ordinator@ngx-ramblers.org.uk -> eastkentwalkinggroup@gmail.com". ngx-bootstrap's default .tooltip-inner caps width at 200px, so the address wrapped across several lines.
Add a containerClass="email-forward-tooltip" to those three badges and a scoped :host ::ng-deep style lifting max-width and setting white-space: nowrap so the rule stays on one line.