Appearance
Data Model
An overview of the main database tables in the HVC platform. There are two kinds of database:
- Tenant DB — one per tenant; holds all tenant data (events, contacts, chat, media).
- Admin DB — one platform-wide database used by the admin console (tenants, plans, environments, meetings, billing).
Tenant DB
| Table | Purpose | Written by |
|---|---|---|
scheduledEvents | Scheduled events/meetings (participants, notes, status, hasRecording, hasChat) | hvc-api, hvc-sinkapi |
virtualMeetingRooms | Pexip VMR assignments (assignedOn, eventId) | hvc-api, hvc-sinkapi |
eventInstances | One row per finalized conference (pexipConferenceId) | hvc-sinkapi |
scheduledEventLogEntries | Event logs (joined/left/started/ended) | hvc-sinkapi |
pexipDataEntries | Carries generated SQL for deferred tenant-DB execution | hvc-sinkapi |
contacts | Users/contacts (incl. specialty, department, ownership) | hvc-api |
emailOutboxEntries | Queued emails for hvc-services to send | hvc-api |
chatGroups / chatGroupParticipants / chatMessages | Chat groups, membership, messages | hvc-api |
deletedChatMessages / readChatMessages / chatMessageStatuses | Chat bookkeeping | hvc-api |
eventChatGroups / privateEventChatGroups | Meeting-scoped chat groups | hvc-api |
files / MediaFile | Event attachments / media records | hvc-api, hvc-services |
fileShares | Shared media records | hvc-api, hvc-services |
tenants | Tenant identity + connection info (dbStoreType, dbConnectionString) | hvc-admin-api |
Admin DB
| Table | Purpose | Written by |
|---|---|---|
tenants | Platform tenant records (externalTenantId ↔ tenant DB) | hvc-admin-api |
Meetings | Cross-tenant meeting analytics (aggregated from tenant DBs) | hvc-sinkapi |
MeetingParticipants | Per-participant meeting analytics | hvc-sinkapi |
Environments | Deployment tiers (dev/test/prod) | hvc-admin-api |
Plans | Billing plans | hvc-admin-api |
Regions | Deployment regions | hvc-admin-api |
EmailConfigurations | SMTP configs (encrypted) | hvc-admin-api |
How the databases relate
- Tenants are created in the admin DB by
hvc-admin-api; a tenant DB is provisioned and migrated viaPOST /api/admin/migrate/{domainPrefix}onhvc-api. - The sink maps tenant DB records to admin DB records via
tenants.externalTenantId(tenant DB) →tenants.id(admin DB). - All tenant data is scoped per tenant — the API swaps the connection string per request (
MultiTenantConnectionInterceptor).
Related
- [Services — Data](/services/hvcServices/data/ and [Sink Data](/services/hvcSinkApi/data/ — the tables each service touches.
- Admin — where the admin DB is managed.