diff --git a/TODO-documentation.md b/TODO-documentation.md
index 6aaa341..0ee07ea 100644
--- a/TODO-documentation.md
+++ b/TODO-documentation.md
@@ -3,7 +3,177 @@
**Branch:** `v20260207-02-wiki-documentation`
**Date Started:** 2026-02-07
**Date Updated:** 2026-02-08 (Latest: Per-job review corrections)
-**Status:** In Progress - 19 of 33 pages complete (58%)
+**Status:** Review Required - full documentation verification against current UI/flows
+
+---
+
+## โ
Validation Update (2026-03-26)
+
+This TODO was re-checked against the current codebase and documentation templates.
+
+Findings:
+- The progress metrics in this file are outdated (`19/33`) and no longer reflect the repository state.
+- The documentation template tree currently contains **39 files** under `containers/backupchecks/src/templates/documentation`.
+- Because the app layout and multiple workflows changed after the original documentation wave, **all documentation pages require content review** for functional correctness (not only layout styling).
+
+Decision:
+- Keep this TODO active.
+- Treat this as a full documentation audit task: verify each page against current UI/routes/behavior and update screenshots/text where needed.
+
+---
+
+## ๐งพ Review Checklist (2026-03-26)
+
+Gebruik deze lijst voor de volledige inhoudsreview tegen de huidige applicatie.
+
+**Legenda**
+- `P1` = hoge prioriteit (kritieke workflows / grootste kans op afwijkingen)
+- `P2` = normale prioriteit
+- `P3` = lage prioriteit
+
+### Global checks (voor elke pagina)
+- [ ] Route, paginatitel en navigatiepad kloppen met huidige UI
+- [ ] Terminologie klopt met huidige labels/knoppen in de app
+- [ ] Screenshots zijn actueel (nieuwe layout) of vervangen/verwijderd
+- [ ] Tekst verwijst niet naar verwijderde/gewijzigde functies
+- [ ] Role-based behavior (admin/operator/viewer/reporter) klopt
+
+### Missing documentation topics (new pages required)
+- [x] `[P1]` Cove Accounts + Cove run detail flow documenteren
+- [x] `[P1]` Veeam Cloud Connect accounts/run flow documenteren
+- [x] `[P1]` Run Checks Autotask "Link existing" gedrag updaten (incl. cross-company)
+- [ ] `[P1]` Sidebar layout v2 consistent door alle docs verwerken
+
+### Page-by-page review
+#### Getting Started
+- [ ] `[P2]` getting-started/what-is-backupchecks
+- [ ] `[P2]` getting-started/first-login
+- [ ] `[P2]` getting-started/quick-start
+
+#### User Management
+- [ ] `[P2]` users/users-and-roles
+- [ ] `[P2]` users/login-authentication
+- [ ] `[P2]` users/profile-settings
+
+#### Customers & Jobs
+- [ ] `[P2]` customers-jobs/managing-customers
+- [ ] `[P2]` customers-jobs/configuring-jobs
+- [ ] `[P2]` customers-jobs/approved-jobs
+- [ ] `[P2]` customers-jobs/job-schedules
+
+#### Mail & Import
+- [ ] `[P1]` mail-import/setup
+- [ ] `[P1]` mail-import/inbox-management
+- [ ] `[P1]` mail-import/mail-parsing
+- [ ] `[P1]` mail-import/auto-import
+
+#### Backup Review
+- [ ] `[P1]` backup-review/approving-backups
+- [ ] `[P1]` backup-review/daily-jobs
+- [ ] `[P1]` backup-review/run-checks-modal
+- [ ] `[P1]` backup-review/overrides
+- [ ] `[P1]` backup-review/remarks-tickets
+
+#### Reports
+- [ ] `[P1]` reports/creating-reports
+- [ ] `[P1]` reports/relative-periods
+- [ ] `[P1]` reports/scheduling
+- [ ] `[P1]` reports/exporting-data
+
+#### Autotask Integration
+- [x] `[P1]` autotask/setup-configuration
+- [x] `[P1]` autotask/company-mapping
+- [x] `[P1]` autotask/creating-tickets
+- [x] `[P1]` autotask/ticket-management
+
+#### Settings
+- [x] `[P1]` settings/general
+- [x] `[P1]` settings/mail-configuration
+- [x] `[P1]` settings/autotask-integration
+- [x] `[P1]` settings/entra-sso
+- [x] `[P1]` settings/reporting-settings
+- [x] `[P1]` settings/user-management
+- [x] `[P1]` settings/maintenance
+
+#### Troubleshooting
+- [ ] `[P2]` troubleshooting/common-issues
+- [ ] `[P2]` troubleshooting/faq
+- [ ] `[P2]` troubleshooting/support-contact
+
+---
+
+## ๐ Batch 1 Findings (P1) โ 2026-03-26
+
+### A. Immediate correctness fixes (existing content)
+- [x] `documentation/backup-review/daily-jobs.html`
+ - Remove/replace incorrect claim that successful jobs are automatically reviewed.
+ - Align workflow text with current behavior: review is handled via Run Checks job-level review.
+- [x] `documentation/backup-review/approving-backups.html`
+ - Replace wording "select multiple runs" with "select multiple jobs" where bulk review is described.
+ - Re-verify Daily Jobs vs Run Checks role split text for current operational flow.
+- [x] `documentation/backup-review/run-checks-modal.html`
+ - Fix broken cross-link: `url_for('documentation.page', section='autotask', page='overview')` does not exist.
+ - Replace with valid links to existing Autotask pages.
+- [x] `documentation/backup-review/remarks-tickets.html`
+ - Fix same broken `autotask/overview` link.
+ - Re-check Autotask behavior section against current link-existing/create/resolve-note flow.
+
+### B. Placeholder pages that require full rewrite (currently "Coming Soon")
+- [ ] `documentation/reports/creating-reports.html`
+- [ ] `documentation/reports/relative-periods.html`
+- [ ] `documentation/reports/scheduling.html`
+- [ ] `documentation/reports/exporting-data.html`
+- [x] `documentation/autotask/setup-configuration.html`
+- [x] `documentation/autotask/company-mapping.html`
+- [x] `documentation/autotask/creating-tickets.html`
+- [x] `documentation/autotask/ticket-management.html`
+- [x] `documentation/settings/general.html`
+- [x] `documentation/settings/mail-configuration.html`
+- [x] `documentation/settings/autotask-integration.html`
+- [x] `documentation/settings/reporting-settings.html`
+- [x] `documentation/settings/user-management.html`
+- [x] `documentation/settings/maintenance.html`
+
+### C. Pages with content present but requiring targeted re-validation
+- [x] `documentation/settings/entra-sso.html`
+ - Verify navigation path labels (Integrations wording/layout) against current settings UI.
+ - Keep untested warning unless production validation has been completed.
+- [ ] `documentation/mail-import/setup.html`
+ - Re-check exact settings navigation wording and folder-browser flow against current UI labels.
+- [ ] `documentation/mail-import/auto-import.html`
+ - Re-check references to Logging page path/wording and Imports section labels.
+
+---
+
+## ๐ Batch 2 Findings (P1) โ 2026-03-26 (Completed)
+
+### A. Autotask docs rewritten from placeholders
+- [x] `documentation/autotask/setup-configuration.html`
+- [x] `documentation/autotask/company-mapping.html`
+- [x] `documentation/autotask/creating-tickets.html`
+- [x] `documentation/autotask/ticket-management.html`
+
+### B. Autotask behavior alignment fixes
+- [x] Documented `Link existing` cross-company behavior for shared/umbrella tickets.
+- [x] Removed references to non-existent `autotask/overview` page and replaced broken links.
+- [x] Re-validated ticket lifecycle notes (create/link/resolve note) against current Run Checks behavior.
+
+---
+
+## ๐ Batch 3 Findings (P1) โ 2026-03-26 (Completed)
+
+### A. Settings docs rewritten from placeholders
+- [x] `documentation/settings/general.html`
+- [x] `documentation/settings/mail-configuration.html`
+- [x] `documentation/settings/autotask-integration.html`
+- [x] `documentation/settings/reporting-settings.html`
+- [x] `documentation/settings/user-management.html`
+- [x] `documentation/settings/maintenance.html`
+
+### B. Settings content alignment notes
+- [x] Re-validated `documentation/settings/entra-sso.html` against current Settings -> Integrations navigation and field names.
+- [x] Reporting page updated to explicitly document current status: no dedicated Reporting settings card is available in Settings.
+- [x] Removed all placeholder text from Settings documentation pages.
---
@@ -67,17 +237,17 @@
### Remaining Work ๐ง
-**Phase 4: Advanced Features (0/14 pages - PLACEHOLDER)**
+**Phase 4: Advanced Features (10/14 pages complete)**
- Reports (0/4 pages)
-- Autotask Integration (0/4 pages)
-- Settings (0/6 pages)
+- Autotask Integration (4/4 pages - COMPLETE)
+- Settings (6/6 pages - COMPLETE)
- Troubleshooting (0/3 pages)
**Progress Summary:**
-- โ
19 of 33 pages complete (58%)
-- โ
10 screenshots added
-- โ
All completed pages reviewed and corrected based on actual UI
-- โณ 14 pages remaining (placeholders created)
+- โ
Batch 1 documentation updates completed (Integrations + critical Run Checks wording/link fixes).
+- โ
Batch 2 documentation updates completed (Autotask section rewritten and aligned with current behavior).
+- โ
Batch 3 documentation updates completed (Settings section rewritten and revalidated).
+- โณ Remaining focus: Mail Import re-validation pages, Troubleshooting pages, and final Sidebar Layout v2 consistency pass.
---
diff --git a/TODO-notification-system.md b/TODO-notification-system.md
index 52d6c6d..9f306ae 100644
--- a/TODO-notification-system.md
+++ b/TODO-notification-system.md
@@ -6,6 +6,18 @@
---
+## โ
Validation Update (2026-03-26)
+
+Status re-checked against current codebase: this TODO is still open and not implemented yet.
+
+Confirmed as NOT present:
+- `operator_notifications` table/model
+- Notification inbox routes/UI (e.g. `/notifications`)
+- Notification lifecycle audit events (`notification_created`, `notification_read`, `notification_handled`)
+- Dedicated mailbox alias ingestion flow for `backups+notification@...`
+
+---
+
## ๐ฏ Goal
Maak een notificatieflow waarbij collega's een email sturen naar `backups+notification@...`, waarna Backupchecks deze berichten ophaalt en de operator informeert in de applicatie (optioneel ook via email).
diff --git a/TODO-reports-improvements.md b/TODO-reports-improvements.md
index 08cdfd9..46602b9 100644
--- a/TODO-reports-improvements.md
+++ b/TODO-reports-improvements.md
@@ -6,6 +6,20 @@
---
+## โ
Validation Update (2026-03-26)
+
+Status re-checked against current codebase: this TODO is still open and largely not implemented yet.
+
+Confirmed as NOT present (core planned scope):
+- Reporting settings extension in Settings (`reporting_*` fields, branding/email configuration)
+- Relative period engine (`period_type`, `relative_period`, timezone-aware calculator)
+- Report model extensions for scheduling metadata and per-report email template fields
+- Scheduling execution/retry flow for automatic report delivery
+
+Note: only small earlier UI items at the top of this TODO appear completed; the main roadmap sections remain open.
+
+---
+
## โ
Wat is al gedaan
- โ
Scheduling placeholder verwijderd van reports overview pagina (reports.html)
diff --git a/containers/backupchecks/src/backend/app/main/routes_documentation.py b/containers/backupchecks/src/backend/app/main/routes_documentation.py
index 718f9b6..60afd29 100644
--- a/containers/backupchecks/src/backend/app/main/routes_documentation.py
+++ b/containers/backupchecks/src/backend/app/main/routes_documentation.py
@@ -51,6 +51,14 @@ DOCUMENTATION_STRUCTURE = {
{'slug': 'auto-import', 'title': 'Auto-Import Configuration'},
]
},
+ 'integrations': {
+ 'title': 'Integrations',
+ 'icon': '๐',
+ 'pages': [
+ {'slug': 'cove-data-protection', 'title': 'Cove Data Protection'},
+ {'slug': 'veeam-cloud-connect', 'title': 'Veeam Cloud Connect'},
+ ]
+ },
'backup-review': {
'title': 'Backup Review',
'icon': 'โ
',
diff --git a/containers/backupchecks/src/templates/documentation/autotask/company-mapping.html b/containers/backupchecks/src/templates/documentation/autotask/company-mapping.html
index 21cc65c..9865172 100644
--- a/containers/backupchecks/src/templates/documentation/autotask/company-mapping.html
+++ b/containers/backupchecks/src/templates/documentation/autotask/company-mapping.html
@@ -4,16 +4,65 @@
- Map customers to Autotask companies.
+ Map each Backupchecks customer to the correct Autotask company.
-
-
๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+
+ Required for Autotask actions:
+ Creating or linking Autotask tickets from Run Checks requires a valid customer mapping status.
-
Content
+
Where to Manage Mappings
-
Detailed content will be added here in a future update.
+
+ - Open Customers.
+ - Use Edit on a customer.
+ - In the Autotask mapping section:
+
+ - Search Autotask companies
+ - Select result
+ - Set mapping / Refresh status / Clear mapping
+
+
+
+
Mapping Status Values
+
+
+ - OK: mapping is valid.
+ - Renamed: company still exists but name changed in Autotask.
+ - Missing: temporary lookup/API issue.
+ - Invalid: mapped company no longer exists (e.g. 404).
+ - Not mapped: no company ID set.
+
+
+
Refresh Operations
+
+
+ - Per customer: Refresh status in the edit modal.
+ - Bulk: Refresh all Autotask mappings on Customers page.
+
+
+
Import/Export Behavior
+
+
+ - Customer CSV supports optional Autotask ID/name columns.
+ - Import can include mapping IDs only when explicit option is enabled.
+ - After import with IDs, mapping status is revalidated via refresh.
+
+
+
Troubleshooting
+
+
+ - If company search fails, verify integration setup in Settings.
+ - If status stays Missing, check API connectivity/permissions.
+ - If status is Invalid, remap to the current Autotask company.
+
+
+
Next Steps
+
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/autotask/creating-tickets.html b/containers/backupchecks/src/templates/documentation/autotask/creating-tickets.html
index 5aee350..3d042e5 100644
--- a/containers/backupchecks/src/templates/documentation/autotask/creating-tickets.html
+++ b/containers/backupchecks/src/templates/documentation/autotask/creating-tickets.html
@@ -4,16 +4,63 @@
Creating Tickets
- Manually create tickets for failed backups.
+ Use Run Checks to create new Autotask tickets or link existing ones to active runs.
- ๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+ Where:
+ Ticket actions are available in the Run Checks modal for admin/operator roles.
-
Content
+
Before You Start
-
Detailed content will be added here in a future update.
+
+ - Autotask integration enabled and configured.
+ - Customer has a valid Autotask mapping (OK or Renamed).
+ - Run is selected in Run Checks modal.
+
+
Create New Ticket
+
+
+ - Open Run Checks and select a run.
+ - Click Create (or Create new when previous linked ticket is resolved/deleted).
+ - Backupchecks creates ticket using configured queue/source/status/priority defaults.
+ - Ticket info is stored on the run and visible in the modal.
+
+
+
Link Existing Ticket
+
+
+ - Click Link existing.
+ - Search tickets by title/number.
+ - Select and confirm Link.
+
+
+
Behavior:
+
+ - Link propagates to all active (unreviewed) runs of the same job.
+ - Terminal/completed tickets are blocked from linking.
+ - Cross-company linking is allowed for overarching/shared tickets.
+ - Backupchecks attempts to post a note on the linked Autotask ticket.
+
+
+
Internal Ticket Relationship
+
+
When Autotask tickets are created/linked, Backupchecks also keeps internal ticket linkage for consistent indicators and history behavior.
+
+
Troubleshooting
+
+
+ - No tickets found: verify customer mapping and search terms.
+ - Link blocked: check whether ticket is terminal/completed.
+ - Create fails: validate default queue/source/status configuration in settings.
+
+
+
Next Steps
+
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/autotask/setup-configuration.html b/containers/backupchecks/src/templates/documentation/autotask/setup-configuration.html
index 68c4fc9..c50675d 100644
--- a/containers/backupchecks/src/templates/documentation/autotask/setup-configuration.html
+++ b/containers/backupchecks/src/templates/documentation/autotask/setup-configuration.html
@@ -4,16 +4,66 @@
Setup & Configuration
- Configure Autotask PSA integration.
+ Configure Autotask PSA integration so operators can create and link PSA tickets from Run Checks.
- ๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+ Scope:
+ This page covers technical setup in Backupchecks Settings. Customer-to-company mapping is documented separately.
-
Content
+
Prerequisites
-
Detailed content will be added here in a future update.
+
+ - Autotask API user with access to tickets and companies.
+ - Autotask API integration tracking identifier.
+ - Backupchecks admin access to Settings.
+
+
Step 1: Enable Integration
+
+
+ - Open Settings.
+ - In the Autotask section, enable integration.
+ - Select environment (
production or sandbox).
+ - Fill in username, password, and tracking identifier.
+ - Optional: set Autotask Base URL for links in notes/details.
+
+
+
Step 2: Configure Ticket Defaults
+
+
Backupchecks ticket creation needs default values from Autotask reference data.
+
+
+ - Default queue
+ - Default ticket source
+ - Default ticket status
+ - Priority for warning and error conditions
+
+
+
Use the reference-data refresh action if dropdowns are empty.
+
+
Step 3: Validate Connection
+
+
+ - Use the Test connection action in settings.
+ - Confirm the API call succeeds.
+ - If test fails, re-check credentials, environment, and integration code.
+
+
+
Operational Notes
+
+
+ - Passwords are stored in settings but not shown back in plain text.
+ - Settings changes are audit logged in Backupchecks logging.
+ - Ticket creation in Run Checks depends on customer mapping being valid.
+
+
+
Next Steps
+
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/autotask/ticket-management.html b/containers/backupchecks/src/templates/documentation/autotask/ticket-management.html
index ee3bbff..4a7afec 100644
--- a/containers/backupchecks/src/templates/documentation/autotask/ticket-management.html
+++ b/containers/backupchecks/src/templates/documentation/autotask/ticket-management.html
@@ -4,16 +4,61 @@
Ticket Management
- Manage and track Autotask tickets.
+ Understand ticket lifecycle, synchronization behavior, and operator actions after linking.
-
- ๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
-
+
Lifecycle in Run Checks
-
Content
+
+ - Linked ticket info is shown per run (ticket number/state).
+ - If linked ticket is resolved or deleted in PSA, state is reflected in Backupchecks.
+ - When a linked ticket is resolved/deleted, operators can create a new ticket for the same run.
+
-
Detailed content will be added here in a future update.
+
Resolve Note Action
+
+ - In Run Checks modal, click Resolve on Autotask ticket section.
+ - Backupchecks posts a user-visible update note to the PSA ticket.
+ - If ticket has no time entries, Autotask can close it; otherwise it may stay open.
+
+
+
Propagation and Scope
+
+
+ - Link-existing operation propagates to all active runs of the job.
+ - New runs can inherit open ticket context through the link-based internal ticket model.
+ - Resolved internal ticket state stops propagation to future runs.
+
+
+
Deleted vs Resolved
+
+
+ - Resolved: ticket still exists in PSA but is closed/completed.
+ - Deleted: ticket was removed in PSA; deletion metadata is stored on runs.
+
+
+
Operational Best Practices
+
+
+ - Use Link existing for umbrella incidents affecting multiple customers/jobs.
+ - Use Create when no suitable active PSA ticket exists.
+ - Always complete Run Checks review after ticket actions.
+
+
+
Troubleshooting
+
+
+ - If resolve note fails, ticket link can still remain valid; check warning message.
+ - If state looks stale, refresh Run Checks details and verify PSA accessibility.
+ - If no Autotask actions appear, verify role permissions and integration settings.
+
+
+
See Also
+
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/backup-review/approving-backups.html b/containers/backupchecks/src/templates/documentation/backup-review/approving-backups.html
index c79d3df..f0bf6d8 100644
--- a/containers/backupchecks/src/templates/documentation/backup-review/approving-backups.html
+++ b/containers/backupchecks/src/templates/documentation/backup-review/approving-backups.html
@@ -207,7 +207,7 @@
โ ๏ธ Always Mark as Reviewed:
- Regardless of which action you take (override, remark, or ticket), you must always mark the run as reviewed afterwards. If you don't, the run will remain in the Run Checks list and can show the wrong status the next day (only the first unreviewed status is displayed).
+ Regardless of which action you take (override, remark, or ticket), you must always mark the job as reviewed afterwards. If you don't, the run will remain in the Run Checks list and can show the wrong status the next day (only the first unreviewed status is displayed).
Stage 7: Mark as Reviewed
@@ -217,7 +217,7 @@
What Happens
- - Click Mark as reviewed in the Run Checks modal (or select multiple runs and mark all at once)
+ - Click Mark as reviewed in the Run Checks modal (or select multiple jobs and mark all at once)
- The run is marked with a review timestamp
- The run disappears from the Run Checks page
- A review audit record is created (visible to Admins)
@@ -225,7 +225,7 @@
๐ก Goal: Empty Run Checks Page:
- The objective is to have the Run Checks page completely empty - this means all runs have been reviewed. Even successful backups must be marked as reviewed, because they haven't been looked at, but they still need to be marked to clear the Run Checks page. You can select multiple runs and mark them all as reviewed at once for efficiency.
+ The objective is to have the Run Checks page completely empty - this means all runs have been reviewed. Even successful backups must be marked as reviewed, because they haven't been looked at, but they still need to be marked to clear the Run Checks page. You can select multiple jobs and mark them all as reviewed at once for efficiency.
Bulk Review
@@ -245,11 +245,11 @@
- Start with Run Checks every day: Open Run Checks page first thing every morning - this is your primary workflow
- - Goal: Empty Run Checks page: Mark all runs as reviewed (even successful ones) until the page is completely empty
+ - Goal: Empty Run Checks page: Mark all jobs as reviewed (including successful ones) until the page is completely empty
- Approve inbox emails quickly: New customer emails won't appear in Run Checks until approved
- Triage by status: Review red (Failed) before yellow (Warning) before green (Success)
- - Use bulk review for successes: Select multiple successful runs and mark them all at once
- - Always mark as reviewed: Even after creating tickets/remarks/overrides, you must still mark the run as reviewed
+ - Use bulk review for successes: Select multiple successful jobs and mark them all at once
+ - Always mark as reviewed: Even after creating tickets/remarks/overrides, you must still mark the job as reviewed
- Use overrides for recurring acceptable warnings: Don't mark the same warning as reviewed every day - create an override
- Create tickets for customer action items: Formal tracking ensures followup
- Use remarks for temporary notes: Don't create tickets for short-term issues
diff --git a/containers/backupchecks/src/templates/documentation/backup-review/daily-jobs.html b/containers/backupchecks/src/templates/documentation/backup-review/daily-jobs.html
index 74e8ac3..b0231fb 100644
--- a/containers/backupchecks/src/templates/documentation/backup-review/daily-jobs.html
+++ b/containers/backupchecks/src/templates/documentation/backup-review/daily-jobs.html
@@ -235,7 +235,7 @@
๐ก Review Workflow:
- Only jobs with warnings or failures need to be reviewed. Successful jobs are automatically considered reviewed. The Run Checks workflow is designed to help you quickly triage and acknowledge known issues.
+ Jobs with warnings or failures typically need investigation first. Successful runs can also appear in Run Checks until they are explicitly marked as reviewed (often via bulk review). The Run Checks workflow helps you triage and clear the unreviewed queue.
Common Workflows
diff --git a/containers/backupchecks/src/templates/documentation/backup-review/remarks-tickets.html b/containers/backupchecks/src/templates/documentation/backup-review/remarks-tickets.html
index a45c672..db19ff0 100644
--- a/containers/backupchecks/src/templates/documentation/backup-review/remarks-tickets.html
+++ b/containers/backupchecks/src/templates/documentation/backup-review/remarks-tickets.html
@@ -384,7 +384,7 @@
BackupChecks monitors Autotask for ticket status changes and can automatically resolve internal tickets when the corresponding Autotask ticket is resolved or deleted.
-See Autotask Integration for details on setup and PSA ticket synchronization.
+See Autotask Integration for details on setup and PSA ticket synchronization.
Troubleshooting
@@ -423,7 +423,7 @@
- Daily Jobs View - See how ticket and remark indicators appear in daily monitoring
- Run Checks Modal - Create tickets and remarks while reviewing job runs
- Overrides & Exceptions - Handle known issues with automated rules
- - Autotask Integration - Learn about PSA integration and ticket synchronization
+ - Autotask Integration - Learn about PSA integration and ticket synchronization
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/backup-review/run-checks-modal.html b/containers/backupchecks/src/templates/documentation/backup-review/run-checks-modal.html
index 5ade716..b3815e3 100644
--- a/containers/backupchecks/src/templates/documentation/backup-review/run-checks-modal.html
+++ b/containers/backupchecks/src/templates/documentation/backup-review/run-checks-modal.html
@@ -170,7 +170,7 @@
๐ก Autotask Integration:
- Autotask ticket information only appears if the Autotask integration is enabled in Settings and a ticket was created for this run. See
Autotask Integration for details.
+ Autotask ticket information only appears if the Autotask integration is enabled in Settings and a ticket was created for this run. See
Autotask Integration for details.
Review Actions
diff --git a/containers/backupchecks/src/templates/documentation/integrations/cove-data-protection.html b/containers/backupchecks/src/templates/documentation/integrations/cove-data-protection.html
new file mode 100644
index 0000000..518c5f7
--- /dev/null
+++ b/containers/backupchecks/src/templates/documentation/integrations/cove-data-protection.html
@@ -0,0 +1,65 @@
+{% extends "documentation/base.html" %}
+
+{% block doc_content %}
+Cove Data Protection
+
+
+ Integrate N-able Cove backup accounts into Backupchecks using the Cove API.
+
+
+
+ Scope:
+ Cove integration is API-based (not email-based). Accounts are staged first, then linked to jobs.
+
+
+How the Cove Flow Works
+
+
+ - Cove import reads account statistics from the Cove API.
+ - Accounts are upserted into the Cove staging table.
+ - Unlinked accounts appear on Cove Accounts.
+ - Operator links account to an existing job or creates a new job.
+ - After linking, an immediate import runs so new Cove runs appear right away.
+
+
+Open Cove Accounts
+
+
+ - Open Cove Accounts.
+ - Review unmatched accounts first.
+ - Link each account to a job (create or existing).
+
+
+Settings and Operations
+
+
+ - Configure Cove under Settings โ Integrations.
+ - Use Test connection to validate credentials and partner access.
+ - Use Run import now for manual sync.
+ - Background import runs on configured interval when enabled.
+
+
+Run Visibility
+
+
+ - Cove runs are stored as API runs (
source_type = cove_api).
+ - Cove run details are visible in Job Detail and Run Checks with a Cove summary panel.
+ - No mail message is required for Cove runs.
+ - Historical backfill can create runs from Cove 28-day colorbar data.
+
+
+Troubleshooting
+
+
+ - If Cove Accounts is empty, run a manual import and check credentials.
+ - If a linked account shows no runs, verify link target job and import logs.
+ - If statuses look outdated, run Run import now and refresh Run Checks/Job Detail.
+
+
+See Also
+
+
+{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/integrations/veeam-cloud-connect.html b/containers/backupchecks/src/templates/documentation/integrations/veeam-cloud-connect.html
new file mode 100644
index 0000000..54981d6
--- /dev/null
+++ b/containers/backupchecks/src/templates/documentation/integrations/veeam-cloud-connect.html
@@ -0,0 +1,63 @@
+{% extends "documentation/base.html" %}
+
+{% block doc_content %}
+Veeam Cloud Connect
+
+
+ Review and link Cloud Connect tenant rows from shared report emails to Backupchecks jobs.
+
+
+
+ Scope:
+ Cloud Connect imports from report emails, stages accounts, then creates runs only for linked accounts.
+
+
+How the Cloud Connect Flow Works
+
+
+ - Cloud Connect report emails are parsed from Inbox mail storage.
+ - Per-tenant rows are upserted into Cloud Connect Accounts.
+ - Unlinked rows are reviewed and linked to jobs.
+ - On link, historical report mails are re-processed for that account/job mapping.
+
+
+Open Cloud Connect Accounts
+
+
+ - Open Cloud Connect Accounts.
+ - Use Scan inbox to re-process stored Cloud Connect report mails.
+ - Link each account row to an existing job or create a new one.
+
+
+Important Mapping Notes
+
+
+ - Rows are account-level; one user can have multiple repositories.
+ - Repository-level linking is supported (separate rows/jobs where needed).
+ - Unlinking removes mapping only; historical runs remain as records.
+
+
+Run Visibility
+
+
+ - Cloud Connect runs are stored with
source_type = cloud_connect.
+ - Run Checks and Job Detail show structured Cloud Connect summaries.
+ - Shared source report email can still be inspected from detail UI.
+
+
+Troubleshooting
+
+
+ - If expected rows are missing, run Scan inbox and verify report mail type.
+ - If runs are missing after link, re-link check + scan inbox again.
+ - If one tenant has multiple repos, verify each repo row is linked as intended.
+
+
+See Also
+
+
+{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/settings/autotask-integration.html b/containers/backupchecks/src/templates/documentation/settings/autotask-integration.html
index 760f738..5ae1e20 100644
--- a/containers/backupchecks/src/templates/documentation/settings/autotask-integration.html
+++ b/containers/backupchecks/src/templates/documentation/settings/autotask-integration.html
@@ -4,16 +4,58 @@
Autotask Integration
- Configure Autotask API settings.
+ Configure Autotask connectivity and ticket defaults used by Run Checks ticket actions.
-
๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+
Where:
+ Open
Settings -> Integrations and use the
Autotask cards.
-Content
+Autotask Connection Settings
-Detailed content will be added here in a future update.
+
+ - Enable Autotask integration
+ - Environment: Sandbox or Production
+ - API Username
+ - API Password (leave empty to keep stored password)
+ - Tracking Identifier (Integration Code)
+ - Backupchecks Base URL: used for links in ticket notes/details
+
+Ticket Defaults
+
+Required for ticket creation from Run Checks:
+
+
+ - Default Queue
+ - Ticket Source
+ - Default Ticket Status
+ - Priority for Warning
+ - Priority for Error
+
+
+Diagnostics & Reference Data
+
+
+ - Test connection: validates API credentials/access.
+ - Refresh reference data: reloads queues, sources, statuses, priorities.
+ - When cache is missing and integration is valid, reference data can auto-load on Settings page open.
+
+
+Operational Notes
+
+
+ - Customer mappings are configured in Customers, not in Settings.
+ - Settings updates are audit logged (password never logged).
+ - If dropdowns are empty, refresh reference data first.
+
+
+Related Pages
+
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/settings/entra-sso.html b/containers/backupchecks/src/templates/documentation/settings/entra-sso.html
index 14a5f90..ec50110 100644
--- a/containers/backupchecks/src/templates/documentation/settings/entra-sso.html
+++ b/containers/backupchecks/src/templates/documentation/settings/entra-sso.html
@@ -2,120 +2,77 @@
{% block doc_content %}
Microsoft Entra SSO
-Use Microsoft Entra ID (Azure AD) to let users sign in with their Microsoft account.
+
+
+ Configure Microsoft Entra sign-in so users can authenticate with their Microsoft account.
+
- Status: Untested in Backupchecks.
- This SSO implementation has not yet been end-to-end validated in Backupchecks itself.
- Treat this page as implementation guidance for future rollout, not as a confirmed production setup.
+ Status:
+ This flow is configurable in Settings and available in the application, but should still be validated in your own tenant before production rollout.
-
Scope: this page explains the setup for Backupchecks and Microsoft Entra.
- It does not replace your internal identity/security policies.
+
Where:
+ Open
Settings -> Integrations and use the
Microsoft Entra SSO card.
Prerequisites
+
- - Admin access to your Microsoft Entra tenant.
- - Admin access to Backupchecks Settings โ Integrations.
- - A stable HTTPS URL for Backupchecks (recommended for production).
+ - Admin access to Microsoft Entra (Azure AD).
+ - Admin access to Backupchecks Settings.
+ - Stable HTTPS URL for Backupchecks.
-Step 1: Register an app in Microsoft Entra
-
- - Open Microsoft Entra admin center โ App registrations.
- - Create a new registration (single-tenant is typical for internal use).
- - Set a name, for example
Backupchecks SSO.
- - After creation, copy:
-
- - Application (client) ID
- - Directory (tenant) ID
-
-
-
-
-Step 2: Configure redirect URI
-
- - In the app registration, open Authentication.
- - Add a Web redirect URI:
-
- https://your-backupchecks-domain/auth/entra/callback
-
-
- - Save the authentication settings.
-
-
-Step 3: Create client secret
-
- - Open Certificates & secrets in the app registration.
- - Create a new client secret.
- - Copy the secret value immediately (it is shown only once).
-
-
-Step 4: Configure Backupchecks
-
- - Open Settings โ Integrations โ Microsoft Entra SSO.
- - Enable Microsoft sign-in.
- - Fill in:
-
- - Tenant ID
- - Client ID
- - Client Secret
- - Redirect URI (optional override, leave empty to auto-use callback URL)
- - Allowed domain/tenant (optional restriction)
- - Allowed Entra Group Object ID(s) (optional but recommended)
-
-
- - Optional: enable Auto-provision unknown users as Viewer.
- - Save settings.
-
-
-Security Group Restriction (recommended)
-You can enforce that only members of one or more specific Entra security groups can sign in.
+Entra App Registration
- - Create or choose a security group in Entra (for example
Backupchecks-Users).
- - Add the allowed users to that group.
- - Copy the group Object ID (not display name).
- - Paste one or more group object IDs in:
-
- - Settings โ Integrations โ Microsoft Entra SSO โ Allowed Entra Group Object ID(s)
-
-
- - In the Entra app registration, configure Token configuration to include the
groups claim in ID tokens.
+ - Create an app registration in Entra.
+ - Capture Tenant ID and Client ID.
+ - Create and copy a Client Secret.
+ - Add redirect URI:
https://your-domain/auth/entra/callback.
-
- Important: if users are member of many groups, Entra may return a "group overage" token without inline
- groups list. In that case Backupchecks cannot verify membership and login is blocked by design.
-
+Backupchecks Fields
-Step 5: Test sign-in
-
- - Open /auth/login in a private/incognito browser session.
- - Click Sign in with Microsoft.
- - Authenticate with an allowed account.
- - Confirm you are redirected back into Backupchecks.
-
-
-User mapping behavior
- - Backupchecks first tries to match Entra user to local user by username/email.
- - If no match exists:
+
- Enable Microsoft sign-in
+ - Tenant ID
+ - Client ID
+ - Client Secret (leave empty to keep stored secret)
+ - Redirect URI (optional override)
+ - Allowed domain/tenant (optional restriction)
+ - Allowed Entra Group Object ID(s) (optional hard access gate)
+ - Auto-provision unknown users as Viewer (optional)
+
+
+Group Restriction Notes
+
+
+ - Use Entra security group object IDs (not display names).
+ - User must be member of at least one configured group.
+ - Ensure ID token includes
groups claim.
+ - When Entra returns group overage tokens without inline groups, access is denied by design.
+
+
+User Mapping Behavior
+
+
+ - Existing users are matched by username/email mapping logic.
+ - If no local user exists:
- - With auto-provision disabled: login is rejected.
- - With auto-provision enabled: a new local user is created with Viewer role.
+ - Auto-provision disabled: login is rejected.
+ - Auto-provision enabled: user is created with Viewer role.
Troubleshooting
+
- - Redirect URI mismatch: ensure Entra app URI exactly matches Backupchecks callback URI.
- - SSO button not visible: check that SSO is enabled and Tenant/Client/Secret are saved.
- - Account not allowed: verify tenant/domain restriction in Allowed domain/tenant.
- - Group restricted login fails: verify group object IDs and ensure the ID token includes a
groups claim.
- - No local user mapping: create a matching local user or enable auto-provision.
+ - Button not visible: verify SSO enabled and required IDs/secrets saved.
+ - Redirect mismatch: ensure callback URL matches Entra app configuration exactly.
+ - Access denied: verify allowed domain/tenant and group membership settings.
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/settings/general.html b/containers/backupchecks/src/templates/documentation/settings/general.html
index d5d106d..3573835 100644
--- a/containers/backupchecks/src/templates/documentation/settings/general.html
+++ b/containers/backupchecks/src/templates/documentation/settings/general.html
@@ -4,16 +4,61 @@
General Settings
- Configure general system settings.
+ Use the General tab to configure core application behavior, display defaults, and safety features.
-
๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+
Where:
+ Open
Settings -> General.
-Content
+System Status
-Detailed content will be added here in a future update.
+
+ - Database size: current database footprint.
+ - Free disk space: highlighted in red when low; mail import is blocked below 2 GB.
+
+Daily Jobs
+
+
+ - Daily Jobs start date: defines when missed-run checks start.
+ - Older runs are still used to learn schedules.
+
+
+Display
+
+
+ - Timezone: controls timestamp rendering across UI pages (Logging, Jobs, Daily Jobs, Run Checks).
+
+
+Navigation
+
+
+ - Require dashboard visit on first page view each day: forces first daily navigation to Dashboard.
+
+
+Environment
+
+
+ - Sandbox/Development environment: shows a visual non-production banner across the app.
+
+
+Security
+
+
+ - Enable login captcha: requires users to solve a simple math challenge on login.
+ - Enabled by default for new and migrated installations.
+
+
+Audit Logging
+
+General settings changes are written to the admin audit log for traceability.
+
+Related Pages
+
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/settings/mail-configuration.html b/containers/backupchecks/src/templates/documentation/settings/mail-configuration.html
index da5018c..cf0e773 100644
--- a/containers/backupchecks/src/templates/documentation/settings/mail-configuration.html
+++ b/containers/backupchecks/src/templates/documentation/settings/mail-configuration.html
@@ -4,16 +4,68 @@
Mail Configuration
- Configure Graph API mail settings.
+ Configure Microsoft Graph access and import behavior for backup report emails.
-
๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+
Where:
+ Credentials and folders are in
Settings -> General.
+ Import behavior is in
Settings -> Imports.
-Content
+Graph Connection (General tab)
-Detailed content will be added here in a future update.
+
+ - Tenant ID
+ - Client ID
+ - Client secret (leave empty to keep stored secret)
+ - Mailbox address
+
+Folder Selection (General tab)
+
+
+ - Incoming folder: source folder read by import.
+ - Processed folder: destination after processing.
+ - Use Browse... to load folder tree via Graph and select the exact path.
+
+
+Automatic Import (Imports tab)
+
+
+ - Enable automatic mail import
+ - Interval (minutes)
+ - Automatic importer cutoff date: older messages are ignored.
+ - Manual import batch size: configurable between 1 and 50.
+
+
+EML Retention (Imports tab)
+
+
+ - Store EML for debugging: Off, 7 days, or 14 days.
+ - When set to Off, stored EML blobs are cleared.
+
+
+Manual Import
+
+
+ - Use Run import in Settings -> Imports for one-time import.
+ - Manual import is blocked when free disk space is below 2 GB.
+ - Results and errors are shown via notifications and logged in Logging.
+
+
+Operational Notes
+
+
+ - Automatic importer batch size is fixed to 50 items internally.
+ - Secret fields are write-only in the UI.
+ - Mail/import setting changes are audit logged.
+
+
+Related Pages
+
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/settings/maintenance.html b/containers/backupchecks/src/templates/documentation/settings/maintenance.html
index 44415b5..d7203eb 100644
--- a/containers/backupchecks/src/templates/documentation/settings/maintenance.html
+++ b/containers/backupchecks/src/templates/documentation/settings/maintenance.html
@@ -4,16 +4,67 @@
Maintenance
- System maintenance and data management.
+ Use Maintenance tools for data migration, cleanup, test data generation, and emergency reset actions.
-
-
๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+
+ Admin only:
+ Several actions on this page are destructive and cannot be undone.
-
Content
+
-
Detailed content will be added here in a future update.
+
Approved Jobs Export / Import
+
+ - Download export (JSON): exports customers/jobs for migration or restore scenarios.
+ - Import jobs: updates existing jobs by key (Customer + Backup + Type + Job name) or creates missing jobs.
+ - Include Autotask IDs: keep disabled when importing into environments with different Autotask datasets.
+
+
+
Object Maintenance
+
+
+ - Backfill objects: rebuilds missing object link data for existing approved runs to repair reporting relationships.
+
+
+
Cleanup Orphaned Jobs
+
+
+ - Preview orphaned jobs: shows jobs without a valid customer link.
+ - Delete orphaned: removes orphaned jobs and related run/email data.
+
+
+
Generate Test Emails
+
+
+ - Generates one Veeam test email per selected status: Success, Warning, or Error.
+ - Useful for parser testing and maintenance validation.
+
+
+
Jobs Maintenance
+
+
+ - Delete all jobs: removes all jobs and job runs.
+ - Related mails are moved back to Inbox (job link removed).
+
+
+
Danger Zone
+
+
+ - Reset application: permanently clears application data and users.
+ - Requires explicit confirmation value
RESET.
+ - After reset, application returns to initial setup flow.
+
+
+
Best Practices
+
+
+ - Always export before destructive operations.
+ - Use orphaned-job preview before deletion.
+ - Run destructive actions in maintenance windows.
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/settings/reporting-settings.html b/containers/backupchecks/src/templates/documentation/settings/reporting-settings.html
index ddef08d..56281d8 100644
--- a/containers/backupchecks/src/templates/documentation/settings/reporting-settings.html
+++ b/containers/backupchecks/src/templates/documentation/settings/reporting-settings.html
@@ -4,16 +4,32 @@
Reporting Settings
- Configure reporting defaults.
+ There is currently no dedicated Reporting configuration card in Settings.
-
-
๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+
+ Current status:
+ Reporting settings in the Settings page are not implemented as a separate configurable section.
-
Content
+
What This Means
-
Detailed content will be added here in a future update.
+
+ - You will not find a Reporting tab/card under Settings.
+ - Global reporting defaults are therefore not managed in Settings at this time.
+
+
Related Functionality
+
+
+ - Object maintenance/backfill actions that support report data quality are available in Settings -> Maintenance.
+ - Reporting feature documentation will be expanded when the reporting module/settings are finalized.
+
+
+
Next Steps
+
+
{% endblock %}
diff --git a/containers/backupchecks/src/templates/documentation/settings/user-management.html b/containers/backupchecks/src/templates/documentation/settings/user-management.html
index d08426f..fcf1bc7 100644
--- a/containers/backupchecks/src/templates/documentation/settings/user-management.html
+++ b/containers/backupchecks/src/templates/documentation/settings/user-management.html
@@ -4,16 +4,62 @@
User Management
- Manage users and roles.
+ Admins can create users, change roles, reset passwords, and remove accounts from Settings.
-
๐ Coming Soon:
- This page is under construction. Full content will be added in a future update.
+
Where:
+ Open
Settings -> Users.
-
Content
+
Available Roles
-
Detailed content will be added here in a future update.
+
+ - Admin
+ - Operator
+ - Reporter
+ - Viewer
+
+
Create User
+
+
+ - Enter Username.
+ - Select one or more roles (default fallback is Viewer).
+ - Set initial password.
+ - Click Create.
+
+
+
Update Roles
+
+
+ - Role changes are saved per user via the inline Save button.
+ - At least one role is always enforced (Viewer fallback).
+ - The last remaining admin cannot lose Admin role.
+
+
+
Password Reset
+
+
+ - Use the per-user reset field in the Actions column.
+ - New password is required.
+
+
+
Delete User
+
+
+ - Use the per-user Delete action.
+ - The last remaining admin account cannot be deleted.
+
+
+
Audit Logging
+
+
User creation, role updates, password resets, and deletions are written to the admin audit log.
+
+
Related Pages
+
+
{% endblock %}
diff --git a/TODO-audit-logging.md b/docs/archive/todo-audit-logging-completed-2026-03-26.md
similarity index 100%
rename from TODO-audit-logging.md
rename to docs/archive/todo-audit-logging-completed-2026-03-26.md
diff --git a/TODO-cove-data-protection.md b/docs/archive/todo-cove-data-protection-completed-2026-03-26.md
similarity index 90%
rename from TODO-cove-data-protection.md
rename to docs/archive/todo-cove-data-protection-completed-2026-03-26.md
index 55b217e..431c9e0 100644
--- a/TODO-cove-data-protection.md
+++ b/docs/archive/todo-cove-data-protection-completed-2026-03-26.md
@@ -1,11 +1,28 @@
# TODO: Cove Data Protection Integration
**Date:** 2026-02-23
-**Status:** Research COMPLETED โ Ready for implementation
+**Status:** COMPLETED (implemented)
**Priority:** Medium
---
+## โ
Completion Update (2026-03-26)
+
+This TODO is now completed and superseded by the implemented Cove integration in the codebase.
+
+Implemented scope includes:
+- Cove API client + importer with deduplication and status mapping
+- Scheduled background polling service with configurable interval
+- Database/model support (`cove_accounts`, `job_runs.source_type`, `job_runs.external_id`, Cove settings fields)
+- Cove settings flows (`test-connection`, `run-now`, credentials + partner ID handling)
+- Cove Accounts inbox-style UI and link/unlink workflow
+- Run Checks + Job Detail Cove run presentation
+- Historical run backfill via 28-day colorbar (`D09F08`)
+
+Remaining items in this file under "Nice to Have" are optional future enhancements, not blockers for Cove integration completion.
+
+---
+
## ๐ฏ Goal
Integrate Cove Data Protection (formerly N-able Backup / SolarWinds Backup) into Backupchecks for backup status monitoring via scheduled API polling. The integration runs server-side within the Backupchecks web application.
diff --git a/docs/changelog-claude.md b/docs/changelog-claude.md
index b35c152..fc1680b 100644
--- a/docs/changelog-claude.md
+++ b/docs/changelog-claude.md
@@ -5,6 +5,10 @@ This file documents all changes made to this project via Claude Code.
## [2026-03-26]
### Fixed
+- Documentation Batch 3 (Settings): replaced Settings "Coming Soon" pages with current operational guidance (General, Mail Configuration, Autotask Integration, User Management, Maintenance) and updated Reporting Settings to explicitly state that no dedicated reporting settings card exists yet.
+- Documentation Batch 2 (Autotask): replaced the four Autotask "Coming Soon" pages with current operational documentation (setup/configuration, company mapping, creating tickets, ticket management), including Run Checks `Link existing` cross-company behavior.
+- Documentation Batch 1: added new documentation section `Integrations` with pages for Cove Data Protection and Veeam Cloud Connect, and linked them into the documentation navigation.
+- Documentation hotfixes (Batch 2): fixed broken documentation links pointing to non-existent `autotask/overview` page, corrected Run Checks/Daily Jobs review wording to match job-level review behavior, and updated TODO-documentation batch checklist progress.
- Run Checks modal mail visibility hotfix: normal mail runs now explicitly clear the `is-cove` modal class before rendering mail content, preventing intermittent hidden mail after navigating from a Cove run; Cove behavior itself remains unchanged.
- Run Checks Autotask "Link existing ticket" now allows linking cross-company tickets (for shared/umbrella tickets that apply to multiple customers):
- Removed the hard company mismatch block in `POST /api/run-checks/autotask-link-existing-ticket` (`containers/backupchecks/src/backend/app/main/routes_run_checks.py`).