Skip to content

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

TablePurposeWritten by
scheduledEventsScheduled events/meetings (participants, notes, status, hasRecording, hasChat)hvc-api, hvc-sinkapi
virtualMeetingRoomsPexip VMR assignments (assignedOn, eventId)hvc-api, hvc-sinkapi
eventInstancesOne row per finalized conference (pexipConferenceId)hvc-sinkapi
scheduledEventLogEntriesEvent logs (joined/left/started/ended)hvc-sinkapi
pexipDataEntriesCarries generated SQL for deferred tenant-DB executionhvc-sinkapi
contactsUsers/contacts (incl. specialty, department, ownership)hvc-api
emailOutboxEntriesQueued emails for hvc-services to sendhvc-api
chatGroups / chatGroupParticipants / chatMessagesChat groups, membership, messageshvc-api
deletedChatMessages / readChatMessages / chatMessageStatusesChat bookkeepinghvc-api
eventChatGroups / privateEventChatGroupsMeeting-scoped chat groupshvc-api
files / MediaFileEvent attachments / media recordshvc-api, hvc-services
fileSharesShared media recordshvc-api, hvc-services
tenantsTenant identity + connection info (dbStoreType, dbConnectionString)hvc-admin-api

Admin DB

TablePurposeWritten by
tenantsPlatform tenant records (externalTenantId ↔ tenant DB)hvc-admin-api
MeetingsCross-tenant meeting analytics (aggregated from tenant DBs)hvc-sinkapi
MeetingParticipantsPer-participant meeting analyticshvc-sinkapi
EnvironmentsDeployment tiers (dev/test/prod)hvc-admin-api
PlansBilling planshvc-admin-api
RegionsDeployment regionshvc-admin-api
EmailConfigurationsSMTP 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 via POST /api/admin/migrate/{domainPrefix} on hvc-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).
  • [Services — Data](/services/hvcServices/data/ and [Sink Data](/services/hvcSinkApi/data/ — the tables each service touches.
  • Admin — where the admin DB is managed.

Released under the MIT License.