Trust Centre › 4. Backups and restore
Backups and restore
In short
A full backup of the database is made every day and kept for 14 days. Since 18 October 2026, DIANO can also take the database back to how it was at any minute in the last 7 days. This is called point-in-time recovery.
What is backed up, and how often
- A weekly backup is made every Sunday and kept for 8 weeks.
- Every night at 03:00 South African time, a full copy is also saved to separate storage in africa-south1 and kept for 90 days.
- That nightly copy is copied again to europe-west1 (Belgium) every day and kept there for 30 days.
- Each company also gets its own backup every night, kept for 90 days.
- When an uploaded file is replaced or deleted, the old version is kept, and a deleted file can be recovered for 7 days.
- The database is protected so that it cannot be deleted by mistake.
Where the copies are
- The daily and weekly backups, the nightly copies and each company's own backup are kept in africa-south1.
- One more copy of the nightly backup is kept in Google's europe-west1 region in Belgium, in case the whole South African region fails.
What is locked, and what is not
- The audit trail archive is locked for 7 years. Until then nobody can change or delete it, not even DIANO.
- The other backups are not locked yet. Someone with full control of DIANO's Google Cloud project could delete them.
How to get records back
- To get records back, a Company Admin asks in Settings, under Backups, and gives a reason. The platform owner checks and approves the request.
- A restore makes a new copy of your company. Your live company is not changed, so you can compare before anything is copied back.
In your request, say what is wrong, which records, and the date and time it went wrong. If you are not sure, e-mail info@diale.co.za and we will help.
Tested restores
- On 10 October 2026 a full copy of the live database was restored into a separate test database. All 22 kinds of records matched the original exactly, and the test database was then deleted.
- That test restore of 478 records took under 3 minutes. A larger database takes longer.
- On 8 October 2026 a company restore was tested on DIANO's test system. The new copy matched the original record for record, and the original was unchanged.
- A restore from point-in-time recovery or from the scheduled backups has not been tested yet.
Roadmap: planned, not true yet
- Planned — target December 2026: Our lawyer advises on SARS's rule about where tax records must be kept. Then the backup copy in Belgium is either locked, so nobody can delete it early, or moved.
- Planned — target October 2026: Restores from point-in-time recovery and from the scheduled backups are tested, and the results are published here.
- Planned — target November 2026: Written times for restore requests are added to this page.
Targets can move. When an item is done, it moves up into the page with its proof. The whole roadmap.
For your IT team / auditor
Each statement on this page, how it was checked and when. Every check was read-only. The full evidence (commands and their output) is available to auditors on request.
| Statement | How it was checked | Checked |
|---|---|---|
| A full backup of the database is made every day and kept for 14 days. | Google Cloud backup schedules (read-only check, 2026-10-20) (daily: retention 14 days). | 2026-10-19 |
| Since 18 October 2026, DIANO can also take the database back to how it was at any minute in the last 7 days. This is called point-in-time recovery. | Google Cloud database settings (read-only check, 2026-10-20) (POINT_IN_TIME_RECOVERY_ENABLED, versionRetentionPeriod 604800s, earliestVersionTime 2026-10-18T14:19:00Z). | 2026-10-19 |
| A weekly backup is made every Sunday and kept for 8 weeks. | Google Cloud backup schedules (read-only check, 2026-10-20) (weekly SUNDAY: retention 56 days). | 2026-10-19 |
| Every night at 03:00 South African time, a full copy is also saved to separate storage in africa-south1 and kept for 90 days. | Google Cloud scheduled jobs (read-only check, 2026-10-20) (dia-firestore-export 0 1 * * * UTC = 03:00 SAST); Google Cloud storage settings (read-only check, 2026-10-20) (firestore-exports: lifecycle Delete age 90). | 2026-10-19 |
| That nightly copy is copied again to europe-west1 (Belgium) every day and kept there for 30 days. | Google Cloud scheduled jobs (read-only check, 2026-10-20) (dia-firestore-export-dr, 86400s); Google Cloud storage settings (read-only check, 2026-10-20) (dr-europe-west1: retention 30 days, lifecycle Delete age 31). | 2026-10-19 |
| Each company also gets its own backup every night, kept for 90 days. | Google Cloud scheduled jobs (read-only check, 2026-10-20) (dia-company-backups 30 1 * * *; 20 Oct 01:30 UTC run: "companyBackup: done" 10 times, 0 failed, for the 10 companies of that night; 11 at the 02:25 UTC collection -- a test company of the running production gate set -- so the next run backs up 11). Reread 20 Oct 02:30 SAST (MAIN): claim holds. | 2026-10-19 |
| When an uploaded file is replaced or deleted, the old version is kept, and a deleted file can be recovered for 7 days. | Google Cloud storage settings (read-only check, 2026-10-20) (dia-accounting.firebasestorage.app: versioning True, soft delete 7 days). | 2026-10-19 |
| The database is protected so that it cannot be deleted by mistake. | Google Cloud database settings (read-only check, 2026-10-20) (DELETE_PROTECTION_ENABLED). | 2026-10-19 |
| The daily and weekly backups, the nightly copies and each company's own backup are kept in africa-south1. | Google Cloud backup schedules (read-only check, 2026-10-20) (backups in africa-south1); Google Cloud storage settings (read-only check, 2026-10-20) (firestore-exports, company-backups: AFRICA-SOUTH1). Google: "A backup resides in the same location as the source database." | 2026-10-19 |
| One more copy of the nightly backup is kept in Google's europe-west1 region in Belgium, in case the whole South African region fails. | Google Cloud scheduled jobs (read-only check, 2026-10-20) (transfer job dia-firestore-export-dr: firestore-exports → dr-europe-west1, daily); Google Cloud storage settings (read-only check, 2026-10-20) (dr-europe-west1: EUROPE-WEST1). europe-west1 = St. Ghislain, Belgium (Google regions page). | 2026-10-19 |
| The audit trail archive is locked for 7 years. Until then nobody can change or delete it, not even DIANO. | Google Cloud storage settings (read-only check, 2026-10-20) (dia-accounting-audit-logs: retention 2556 days LOCKED); Google Bucket Lock page ("permanently preventing the policy from being reduced or removed"). | 2026-10-19 |
| The other backups are not locked yet. Someone with full control of DIANO's Google Cloud project could delete them. | Google Cloud storage settings (read-only check, 2026-10-20) (dr-europe-west1: 30 days not locked; firestore-exports, company-backups: retention none); Firestore backups have no lock option. | 2026-10-19 |
| To get records back, a Company Admin asks in Settings, under Backups, and gives a reason. The platform owner checks and approves the request. | DIANO's published pages (requestCompanyRestore with a reason; the platform owner approves); Google Cloud server functions (read-only check, 2026-10-20) (requestCompanyRestore, ownerApproveCompanyRestore on production). | 2026-10-19 |
| A restore makes a new copy of your company. Your live company is not changed, so you can compare before anything is copied back. | DIANO's live server code (restoreToNewCompany: "the source is never written"); DIANO's records 12/12 (8 Oct 2026, staging). | 2026-10-19 |
| On 10 October 2026 a full copy of the live database was restored into a separate test database. All 22 kinds of records matched the original exactly, and the test database was then deleted. | DIANO's release record of 2026-10-12 (B5: restore-test-202610100703, 478 documents, "22 collections compared, 0 differ", scratch database deleted). | 2026-10-19 |
| That test restore of 478 records took under 3 minutes. A larger database takes longer. | DIANO's release record of 2026-10-12 (B5 07:02–07:05 UTC: export finished 07:03:03, import and comparison done by 07:05). | 2026-10-19 |
| On 8 October 2026 a company restore was tested on DIANO's test system. The new copy matched the original record for record, and the original was unchanged. | DIANO's release record of 2026-10-08 (backup-restore.mjs 12/12). | 2026-10-19 |
| A restore from point-in-time recovery or from the scheduled backups has not been tested yet. | DIANO's backup and recovery plan (Layer 6 restore drill: "to do"); both were switched on 18 Oct 2026. | 2026-10-19 |