Go-Live Checklist
Configuration items required before TrakNet goes live

Vercel Environment Variables

VariablePurposeStatus
MICROSOFT_CLIENT_IDMS365 SSO + email sending✅ Set
MICROSOFT_TENANT_IDMS365 SSO + email sending✅ Set
MICROSOFT_CLIENT_SECRETMS365 SSO + email sending✅ Set
UPSTASH_REDIS_REST_URLDistributed rate limiting⬜ Add from upstash.com
UPSTASH_REDIS_REST_TOKENDistributed rate limiting⬜ Add from upstash.com
CRON_SECRETEmail-to-ticket ingest security⬜ Generate random string

One-Time Database Migrations

MigrationHow to runStatus
Add job_id to tickets tableRun POST /api/tickets?action=migrate-job-link in browser console (admin session)✅ Done

Live Tracking Setup

VariablePurposeStatus
TRACCAR_API_TOKENTraccar API bearer token used by the fleet map and reports. Traccar auth is Bearer, not a query token.⬜ Set in Vercel

One-time database migrations. Each is run once by an admin via an authenticated POST — the Bearer token comes from the logged-in admin session. A plain browser tab is anonymous and will be rejected.

MigrationCreatesEndpoint
Geofence tablesgeofence_state, geofence_events, geofences.vehicle_idsPOST /api/dashboard?action=tracking-geo-migrate
Patrol requirementspatrol_requirements tablePOST /api/dashboard?action=tracking-patrol-migrate
Vehicle share tokensvehicle_share_tokens table (required before the "Live link" share button works)POST /api/vehicle-share?action=migrate

Weekly SLA reports

Azure App Registration — API Permissions

PermissionTypeStatus
Mail.SendApplication✅ Granted
Mail.ReadApplication✅ Granted
User.ReadDelegated✅ Granted
Sites.ReadWrite.AllApplication✅ Granted

Email Configuration

infotech@copelandgroup.co.uk

Microsoft Graph API — uses existing MS365 credentials, no extra cost

Ticket created, ticket reply, ticket resolved/closed, job completed