AI Agent Orchestration Platform  ·  View 16 of 32  ·  3 · Data

Platform Data Model

The entities a governance question actually reads: who ran what, on which version, with whose approval, at what cost.

Editable source SVG draw.io All views
tenant tenant_id PK entra_tenant UQ residency_region quota_profile budget_ceiling project project_id PK tenant_id FK environment monthly_budget capture_prompts agent_version agent_version_id PK project_id FK spec_hash UQ state model_route_id FK workflow_version workflow_version_id PK graph_hash UQ pattern state compat_range policy policy_id PK scope_level scope_ref bundle_hash effective_from execution execution_id PK project_id FK workflow_version_id FK status correlation_id step step_id PK execution_id FK agent_version_id FK attempt checkpoint_ref tool_binding binding_id PK tool_version_id agent_version_id FK sensitivity credential_ref memory_item memory_id PK scope_type scope_ref embedding_ref expires_at cost_record cost_id PK execution_id FK prompt_tokens completion_tokens amount_usd tool_call tool_call_id PK step_id FK idempotency_key UQ outcome duration_ms approval approval_id PK binding_id FK step_id FK decision decided_by 1 : N 1 : N 1 : N N : M 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N governs Platform Data Model — Core Entities tenant_id is the partition key on every execution-plane container. No entity is reachable without it. v 1.0 · owner Data Architecture · date 2026-08

Decisions

  • tenant_id is the partition key on every execution-plane container; no entity is reachable without it
  • agent_version and workflow_version are separate entities with their own hashes, because a workflow can be republished without changing any agent
  • tool_call carries a unique idempotency key, which is what makes at-least-once delivery safe at the data layer rather than only in code

Deliberately not modelled here

  • Message and intermediate result payloads — they live in the artifact store, referenced by id
  • Telemetry spans — they live in Application Insights and Data Explorer, joined by correlation_id
  • Vector embeddings — stored beside their memory item, referenced by embedding_ref

Risks

  • A hot tenant makes its Cosmos partition hot; the mitigation is a synthetic suffix on high-volume containers, which complicates queries
  • Cross-entity reporting spans SQL and Cosmos; the console reads a projection rather than joining across stores at query time