Updates and operations
After going live there's little maintenance. Updates go through Vercel automatically; only database migrations you run yourself. This page is also your handbook for when something goes wrong.
Updating
- Merge to mainafter code review
- CI greentests, SQL tests, secret scan
- Vercel deploysall projects
- Migrationsmigrate.sh per database
Migrations are additive: the previous version of the app works with the new schema. After every update, run per installation:
If a migration needs a new setting on the server (like the server gateway), the release notes say so.
Something went wrong after a deploy
- Look at /api/ready first
It tells you whether the database, Microsoft Graph, the server gateway or the license is the problem.
- Roll back
Vercel → Deployments → previous working version → Instant Rollback. It takes seconds. Rolling back a migration is almost never needed.
- Let people know
Turn on the maintenance notice (Security center → Maintenance). Does everything need to close, for example because the database is down? Use the hard maintenance mode:
MAINTENANCE_MODE=onand redeploy.
Security incident
First hour, in this order:
- Revoke sessions for the accounts involved (Security center → Sessions → revoke all). Takes effect immediately.
- Block the account in Entra and remove the team member from the team.
- A leaked booking or portal link? Revoke the links on the project.
- Replace secrets that may have leaked:
| Secret | How to replace it |
|---|---|
| Server gateway | node scripts/gateway-secret.mjs → new secret in Vercel → deploy → new hash in the database |
| Supabase keys | Project Settings → API → roll the JWT secret. Everyone signs in again |
| Graph federation | Delete the federated credential in Entra and create it again |
| Teams webhook | Create a new workflow URL and save it in the Security center |
Then: investigate in the Log and check the audit log chain (Security). Compare the head hash with the value you stored outside the database.
Rollout processes personal data on behalf of your clients. Report a (suspected) data breach to the affected clients without delay. They report to their data protection authority within 72 hours; help them with the facts. Record every breach in your breach register.
Backups and restore test
Supabase Pro makes a backup every day. But a backup is only worth something if you know restoring works. So do the restore test every quarter (its output is in Dutch):
The script restores the backup into an empty test database, checks that every table has Row Level Security and recomputes the audit log chain. It refuses to write over production. Keep the output as evidence.
Offboarding an MSP
- Export or delete data as agreed in the data processing agreement.
- Delete the Vercel project and the Supabase project.
- Remove the domain from Vercel and have the CNAME record deleted (see Your own domain).
- Have the federated credential in the MSP's Entra deleted.