| Executive surface |
Teams app (Azure Bot Service) + React web on Container Apps |
Azure · platform |
Copilot Studio, standalone portal only |
Executives already live in Teams for approvals; the web app carries the depth Teams cards cannot. |
ADR-05 |
| Global edge and WAF |
Azure Front Door Premium |
Azure · platform |
Application Gateway + Cloudflare |
Anycast edge, WAF and Private Link to an internal-mode gateway in one managed service. |
ADR-06 |
| API gateway |
API Management Premium, internal VNet mode |
Azure · platform |
Container Apps ingress + custom middleware |
Per-tenant quota, token budgets and one enforced contract per surface, without writing a gateway. |
ADR-06 |
| Application hosting |
Azure Container Apps |
Azure · platform |
AKS, App Service, Functions only |
A handful of stateless services with spiky, briefing-shaped load. AKS is a documented exit, not a rewrite. |
ADR-11 |
| Long-running investigations |
Durable Functions |
Azure · platform |
Service Bus + custom state machine |
An investigation is a resumable orchestration with checkpoints, not a long HTTP request. |
ADR-07 |
| Agent runtime |
Azure AI Foundry Agent Service with Semantic Kernel in the host |
Azure · AI |
LangGraph, AutoGen, a hand-rolled loop |
Managed threads, tool calling, tracing and evaluation in the same governance and network boundary as the models. |
ADR-08 |
| Language models |
Azure OpenAI — a reasoning model for planning and composition, a small model for routing and classification |
Azure · AI |
One large model for everything; open-weight models on managed compute |
Most turns need routing, not reasoning. Two model classes is the single biggest lever on both latency and cost. |
ADR-10 |
| Enterprise retrieval |
Azure AI Search — hybrid vector + BM25, semantic ranker, index-side security filters |
Azure · AI |
pgvector on PostgreSQL, Elasticsearch, a vector-only store |
Executive questions mix concepts with exact identifiers, and the security filter must run before scoring. |
ADR-12 |
| Embeddings |
Azure OpenAI text-embedding-3-large |
Azure · AI |
A smaller embedding model, or a domain-tuned one |
In-region deployment alongside the other models, and no separate residency argument to make. |
ADR-12 |
| Content safety and grounding |
Azure AI Content Safety — prompt shields, groundedness detection, protected material |
Azure · AI |
A second LLM as judge, or open-source guardrail libraries |
Managed, in-boundary, and versioned separately from the generating model, which is what makes the check independent. |
ADR-04 |
| Analytical foundation |
Microsoft Fabric — OneLake, Lakehouse, Warehouse, Data Factory, Real-Time Intelligence |
Azure · platform |
Synapse + ADLS, Azure Databricks |
One capacity, one storage layer, one security model, and shortcuts to the customer's existing lake instead of copying it. |
ADR-15 |
| KPI definitions |
Power BI semantic model with DAX measures and row-level security |
Azure · platform |
dbt metrics, a hand-built metric service over SQL |
The finance team already owns it, and the platform and existing BI must not disagree about a number. |
ADR-17 |
| Cross-domain relationships |
Azure Cosmos DB for Apache Gremlin |
Azure · platform |
Recursive SQL, a triple store, no graph at all |
The flagship question is a multi-hop traversal over supplier, contract, purchase order and project. |
ADR-18 |
| Forecasting and anomaly detection |
Azure Machine Learning managed online endpoints |
Azure · platform |
Asking the language model; Fabric Data Science notebooks in-line |
A forecast needs a registered, versioned, testable artefact with an interval — three things a prompt cannot provide. |
ADR-19 |
| Decision and audit store |
Azure SQL Database — elastic pool when pooled, single database when siloed |
Azure · platform |
Cosmos DB NoSQL, PostgreSQL Flexible Server |
The decision record is relational, transactional and needs row-level security, point-in-time restore and a strong backup story. |
ADR-01 |
| Evidence custody |
Azure Blob Storage with an immutability policy and legal hold |
Azure · platform |
Keeping evidence in the database; a third-party WORM archive |
Immutability enforced by the storage service, not by application logic, so an application compromise cannot rewrite history. |
ADR-31 |
| Conversation state and semantic cache |
Azure Cache for Redis Enterprise |
Azure · platform |
State in the decision store; no cache |
Turn state is ephemeral and hot; the cache key includes the caller's permission fingerprint, which is what makes it safe. |
ADR-14 |
| Batch and change-data ingestion |
Fabric Data Factory pipelines with a self-hosted integration runtime |
Azure · platform |
Azure Data Factory standalone, Logic Apps for ingestion, third-party ELT |
Same capacity, same lineage, and the self-hosted runtime is what reaches a ministry data centre. |
ADR-20 |
| Event ingestion |
Fabric Eventstream over Event Hubs |
Azure · platform |
Event Grid, Service Bus topics |
High-throughput, replayable, and lands in the same lake as everything else. |
ADR-20 |
| Action queue |
Azure Service Bus, peek-lock with dead-lettering |
Azure · platform |
Storage queues, a database-backed outbox |
An approved action must survive a crash exactly once. Peek-lock plus an idempotency key is what makes that true. |
ADR-21 |
| Execution plane |
Logic Apps Standard, one connector identity per target system |
Azure · platform |
Custom connector services, direct calls from the agent |
Hundreds of enterprise connectors, and a blast radius bounded to one system per identity. |
ADR-21 |
| Identity |
Microsoft Entra ID — OBO flow, Conditional Access, PIM, managed identities |
Azure · platform |
A privileged service principal with application-side filtering |
The AI must inherit the caller's authority. A read-everything identity makes every application bug a data breach. |
ADR-28 |
| Keys and secrets |
Azure Key Vault Managed HSM, customer-managed keys per tenant |
Azure · platform |
Standard Key Vault, platform-managed keys |
The customer holding the key makes revocation a real control rather than a contractual promise. |
ADR-27 |
| Catalogue, classification and lineage |
Microsoft Purview |
Azure · platform |
A spreadsheet, or lineage inferred from pipeline metadata |
Sensitivity labels captured at ingestion are what the retrieval filter and the egress DLP both act on. |
ADR-13 |
| Networking |
Hub-and-spoke VNet, private endpoints on every PaaS service, Azure Firewall Premium, ExpressRoute |
Azure · platform |
Service endpoints, public endpoints with IP restrictions |
One controlled egress path is what makes an exfiltration claim defensible. |
ADR-27 |
| Observability |
Azure Monitor, Application Insights, OpenTelemetry GenAI traces, Foundry tracing |
Azure · platform |
A third-party APM, or logs only |
A turn must be readable end to end — plan, tool calls, model version, grounding verdict — without leaving the boundary. |
ADR-32 |
| Security posture and SIEM |
Microsoft Defender for Cloud and Microsoft Sentinel |
Azure · platform |
The customer's existing SIEM with log forwarding |
Native signal from the AI and data services, and reading a decision record is itself an audited event. |
ADR-31 |
| Landing zone and governance |
Management groups, Azure Policy, Bicep, Azure Deployment Environments |
Azure · platform |
Terraform, manual subscription setup |
Residency and isolation are enforced by policy at the boundary, so a developer cannot deploy out of country. |
ADR-27 |
| Tenant provisioning |
Bicep-driven onboarding pipeline reading a tenant registry |
This design |
Manual provisioning, or a per-tenant repository fork |
A tier is a deployment parameter. Onboarding tenant twelve must not cost what tenant two cost. |
ADR-25 |
| Tool plane |
Typed tool contracts behind API Management, resolved per role |
This design |
Direct database access from the agent; generated SQL |
The one door between the model and the data, and therefore the one place authorisation can be audited. |
ADR-02 |
| Decision engine |
Situation → evidence → root cause → forecast → options → recommendation, as a service |
This design |
Prompting the model to produce a recommendation directly |
Options with cost, risk and delay are what let an executive decide. A single recommendation asks them to trust instead. |
ADR-22 |
| Proactive detection |
Scheduled deterministic detectors over gold-zone measures and the graph |
This design |
An agent that continuously monitors the business |
Repeatable, affordable and explainable. A model that watches is a model you cannot test. |
ADR-24 |
| Tenant configuration |
Versioned, schema-checked configuration artefacts in Git, promoted through rings |
This design |
Configuration rows in a database edited through an admin UI |
"Configuration, not custom code" only holds if the configuration is engineered, reviewable and reversible. |
ADR-26 |
| Evaluation |
Golden-question suites per tenant, run as a release gate in the pipeline |
This design |
Manual spot checks, or vendor benchmark scores |
Retrieval and generation are scored separately so a regression has a stage rather than a shrug. |
ADR-30 |