Skip to content
RolloutDocs
NL
Using and running Rollout

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

A new version
  1. Merge to main
    after code review
  2. CI green
    tests, SQL tests, secret scan
  3. Vercel deploys
    all projects
  4. Migrations
    migrate.sh per database

Migrations are additive: the previous version of the app works with the new schema. After every update, run per installation:

Terminal
$ DATABASE_URL='postgresql://postgres:…@db.<ref>.supabase.co:5432/postgres' ./deploy/migrate.sh
-> 0018_example.sql
Klaar: 1 nieuwe migratie(s).

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

  1. Look at /api/ready first

    It tells you whether the database, Microsoft Graph, the server gateway or the license is the problem.

  2. Roll back

    Vercel → Deployments → previous working version → Instant Rollback. It takes seconds. Rolling back a migration is almost never needed.

  3. 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=on and redeploy.

Security incident

First hour, in this order:

  1. Revoke sessions for the accounts involved (Security center → Sessions → revoke all). Takes effect immediately.
  2. Block the account in Entra and remove the team member from the team.
  3. A leaked booking or portal link? Revoke the links on the project.
  4. Replace secrets that may have leaked:
SecretHow to replace it
Server gatewaynode scripts/gateway-secret.mjs → new secret in Vercel → deploy → new hash in the database
Supabase keysProject Settings → API → roll the JWT secret. Everyone signs in again
Graph federationDelete the federated credential in Entra and create it again
Teams webhookCreate 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.

Data breach: tell your client

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):

Terminal
$ pg_dump -Fc "$DATABASE_URL" -f rollout-$(date +%F).dump
$ BACKUP_FILE=rollout-2026-11-04.dump RESTORE_DATABASE_URL='postgresql://…@testdb:5432/restore_test' ./deploy/restore-test.sh
== Rollout hersteltest 2026-11-04T09:12:44Z
Hersteld in 14 s
== Auditlog-keten per organisatie (moet 0 gebroken zijn)
== Beveiliging in de herstelde database
RESULTAAT: OK. De back-up is volledig terug te zetten en het auditlog is onvervalst.

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

  1. Export or delete data as agreed in the data processing agreement.
  2. Delete the Vercel project and the Supabase project.
  3. Remove the domain from Vercel and have the CNAME record deleted (see Your own domain).
  4. Have the federated credential in the MSP's Entra deleted.
Updates and operations · Rollout Docs