Enterprise AI Platform Reference Architecture
Reference architecture, technology comparison, and recommended composed approach for enterprise AI delivery
This paper sets out why an enterprise AI platform technology stack is now needed, defines the reference architecture that addresses that need, compares the main technology options against it, and concludes with a recommended composed approach.
Executive summary
- Enterprise AI is no longer delivered by one technology tower. It now sits at the intersection of Data & ML, Automation, and App & Integration teams and skill domains.
- Existing architecture views usually describe those domains separately. That makes it harder to design, govern, and operate end-to-end AI solutions across teams.
- A dedicated AI platform reference architecture provides the shared design frame needed to integrate those domains into one coherent stack.
- A NeuralOps-led composed architecture, combined with selective use of Databricks and M365 Copilot where those platforms are strongest, is the recommended direction.
- Databricks, Foundry, and M365 Copilot remain important technology options, but they are better treated as platform strengths within the broader stack than as like-for-like end-to-end replacements.
Purpose of this paper
The paper has four objectives:
- Explain why an AI platform technology stack is now needed.
- Define the reference architecture that addresses that need.
- Show how the reference architecture maps to the main technology options.
- Explain why a NeuralOps-led composed architecture that leverages existing Databricks and M365 Copilot strengths is the recommended approach.
It is intentionally platform-level. It does not replace solution-specific architecture, implementation guidance, or client-specific decision rationale.
How this paper is structured
- Problem statement: Why enterprise AI now requires its own stack view.
- Reference architecture: Define the architecture needed to address that problem.
- Technology mappings: Map the reference architecture to the main technology options.
- Recommendation: Present the recommended composed architecture and explain why a NeuralOps-led approach that deliberately leverages existing platform strengths is preferred.
This paper is intentionally standalone. Client-specific decisions and decision-record links should sit in a separate companion document.
1. Why an AI platform technology stack is now needed
Enterprise AI no longer fits neatly inside a single platform category. In most organisations, modern AI solutions are assembled across team and skill domains that were historically planned, funded, and operated separately.
Converging teams and skill domains
The colours below intentionally mirror the domain cues used elsewhere in this document: orange for Data & ML Teams, purple for Automation Teams, and blue for App & Integration Teams.
flowchart TB subgraph DOMAINS["<b>Teams & skills</b>"] direction TB D(("<b>Data & ML Teams</b><br/><i>data platforms, model <br/> lifecycle, evaluation</i>")) A(("<b>Automation Teams</b><br/><i>low-code, workflows,<br/>process automation</i>")) I(("<b>App & Integration Teams</b><br/><i>apps, APIs, runtime,<br/>integrations</i>")) end S{{"<b>AI Tech Stack</b><br/><i>shared reference architecture <br/> for enterprise AI delivery</i>"}} DOMAINS --> S classDef data fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px classDef auto fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px classDef app fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px classDef stack fill:#0f172a,stroke:#0f172a,color:#f8fafc,stroke-width:0px classDef group fill:#1e293b,stroke:#1e293b,color:#f8fafc,stroke-width:0px class D data class A auto class I app class S stack class DOMAINS group
A modern AI solution rarely depends on only one of these teams or skill domains. In practice, the combined contribution of these domains creates the AI Tech Stack: the shared reference architecture used to organise reusable patterns, stack layers, and platform controls for enterprise AI delivery.
- Data & ML Teams contribute governed data, model, retrieval, and evaluation capabilities.
- Automation Teams contribute agent experiences, workflow automation, and low-code orchestration capabilities.
- App & Integration Teams contribute application runtime, APIs, enterprise actions, and operational connectivity.
Section 2 translates that combined stack into a reference architecture.
Why traditional architecture views are no longer enough
Traditional architecture views usually describe these domains separately. That makes three things harder than they should be:
- identifying how end-to-end AI solutions are assembled across platforms
- defining where shared controls such as safety, identity, lifecycle, and governance should sit
- helping established teams understand how their responsibilities connect in one integrated operating model
The result is avoidable fragmentation: disconnected solution patterns, unclear ownership, duplicated controls, and inconsistent technology decisions.
What this means for teams
The AI stack does not replace existing teams. It gives them a common language and shared reference frame for enterprise AI delivery.
| Team and skill domain | Typical team focus | Typical historical focus | Role in the AI tech stack |
|---|---|---|---|
| Data & ML Teams | Databricks, Azure Synapse, Microsoft Fabric | Data platforms, data engineering, model development, and model serving | Provides governed data, model operations, retrieval, and evaluation inputs |
| Automation Teams | M365 Copilot, Copilot Studio, Power Platform | Workflows, low-code tooling, business process automation, and copilots | Provides agent experiences, low-code orchestration, and human-in-the-loop process integration |
| App & Integration Teams | Azure Foundry, Azure Integration Services | Application runtime, APIs, integration services, identity, and operational engineering | Provides secure runtime, enterprise actions, channel delivery, and system connectivity |
| AI Tech Stack | Shared across all three | Often fragmented across separate architecture views | Provides the integrated blueprint required to design, govern, and operate enterprise AI solutions |
2. The AI platform reference architecture
The reference architecture below addresses the problem described in Section 1. It provides a shared technology structure that teams can use to align responsibilities, structure decisions, and compare technology options consistently.
Design principles
- Separate experience, builder, model, orchestration, knowledge, and control concerns.
- Prefer managed, native capabilities where they materially improve security, operability, and time to value.
- Keep provider strategy, safety controls, and lifecycle controls explicit rather than implicit.
- Treat data pipelines and content pipelines as distinct architectural concerns.
- Compare platforms by first-class native coverage, not by what can be assembled indirectly from adjacent services.
Reference architecture
--- config: fontSize: 15 block: padding: 1 --- block-beta columns 10 t0["<b>Reusable</b></br><b>Patterns</b>"]:1 block:patterns:9 columns 2 rp1["<b>Agentic</b></br><b>Workflows</b>"] rp2["<b>Conversational</b></br><b>Agents</b>"] end t1["<b>Experience</b></br><b>Channels</b>"]:1 block:channels:9 columns 6 ux1["<b>Collaboration</b>"] ux2["<b>Messaging</b>"] ux3["<b>Web</b></br><b>Experience</b>"] ux4["<b>Mobile</b></br><b>Experience</b>"] ux5["<b>Productivity</b></br><b>Apps</b>"] ux6["<b>Desktop</b></br><b>Experience</b>"] end t2["<b>Builder</b></br><b>Tools</b>"]:1 block:builder:9 columns 3 ap1["<b>Low-code</b></br><b>Build</b>"] ap2["<b>Config-Code</b></br><b>Build</b>"] ap3["<b>Pro-code</b></br><b>Build</b>"] end t3["<b>Model</b></br><b>Capabilities</b>"]:1 block:modelcaps:9 columns 5 i1["<b>Custom</b></br><b>Models</b>"] i2["<b>GenAI</b></br><b>Prebuilt</b>"] i3["<b>VisionAI</b></br><b>Prebuilt</b>"] i4["<b>VoiceAI</b></br><b>Prebuilt</b>"] i5["<b>DocAI</b></br><b>Prebuilt</b>"] end t3b["<b>Orchestration</b></br><b>Services</b>"]:1 block:orchestration:9 columns 5 i6["<b>Runtime</b></br><b>Services</b>"] i7["<b>Provider</b></br><b>Strategy</b>"] i8["<b>Safety</b></br><b>Controls</b>"] i9["<b>Data</b></br><b>Pipelines</b>"] i10["<b>Content</b></br><b>Pipelines</b>"] end t4["<b>Knowledge &</b></br><b>Tools</b>"]:1 block:kdi:9 columns 4 k1["<b>Agent</b></br><b>Protocols</b>"] k2["<b>Enterprise</b></br><b>Actions</b>"] k3["<b>Data</b></br><b>Platform</b>"] k4["<b>AI</b></br><b>Storage</b>"] end t5["<b>Platform</b></br><b>Controls</b>"]:1 block:controls:9 columns 5 pc1["<b>Identity &</b></br><b>Secrets</b>"] pc2["<b>Monitoring &</b></br><b>Evals</b>"] pc3["<b>Lifecycle &</b></br><b>Delivery</b>"] pc4["<b>Governance &</b></br><b>Audit</b>"] pc5["<b>FinOps</b></br><b>Controls</b>"] end style t0 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t1 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t2 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3b fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t4 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t5 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style patterns fill:#0f172a,stroke:#0f172a,stroke-width:0px style channels fill:#0f172a,stroke:#0f172a,stroke-width:0px style builder fill:#0f172a,stroke:#0f172a,stroke-width:0px style modelcaps fill:#0f172a,stroke:#0f172a,stroke-width:0px style orchestration fill:#0f172a,stroke:#0f172a,stroke-width:0px style kdi fill:#0f172a,stroke:#0f172a,stroke-width:0px style controls fill:#0f172a,stroke:#0f172a,stroke-width:0px style rp1 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style rp2 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ux1 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ux2 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ux3 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ux4 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ux5 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ux6 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ap1 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ap2 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style ap3 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i1 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i2 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i3 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i4 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i5 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i6 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i7 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i8 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i9 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style i10 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style k1 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style k2 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style k3 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style k4 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style pc1 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style pc2 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style pc3 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style pc4 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px style pc5 fill:#475569,stroke:#475569,color:#f8fafc,stroke-width:0px
| Layer | Component | Description |
|---|---|---|
| Reusable Patterns | Agentic Workflows | Reusable multi-step agent patterns that coordinate tools, branching, approvals, or agent-to-agent execution. |
| Reusable Patterns | Conversational Agents | Reusable chat-first assistant patterns with dialogue handling, context retention, and response generation. |
| Experience Channels | Collaboration | Shared work surfaces such as team chat, meetings, or collaboration hubs where agents operate. |
| Experience Channels | Messaging | Asynchronous message surfaces such as email or threaded messaging where AI can read, draft, or respond. |
| Experience Channels | Web Experience | Browser-based application surfaces for custom AI applications, copilots, or chat experiences. |
| Experience Channels | Mobile Experience | Mobile application surfaces for AI experiences delivered through phone or tablet apps. |
| Experience Channels | Productivity Apps | Embedded AI experiences inside productivity or business applications such as document, spreadsheet, presentation, inbox, or line-of-business tools. |
| Experience Channels | Desktop Experience | Desktop-native application or operating-system surfaces where AI is delivered outside the browser. |
| Builder Tools | Low-code Build | Visual or form-based authoring for agents and automations with minimal code. |
| Builder Tools | Config-Code Build | Manifest, template, YAML, or package-driven authoring where behaviour is defined mostly through managed configuration. |
| Builder Tools | Pro-code Build | SDK, framework, or API-driven engineering where teams own custom logic, testing, and integration code. |
| Model Capabilities | Custom Models | Native support for training, fine-tuning, registering, and serving organisation-specific models or model variants. |
| Model Capabilities | GenAI Prebuilt | Native access to managed general-purpose foundation or chat models without custom training. |
| Model Capabilities | VisionAI Prebuilt | Native access to managed image or video analysis, generation, or multimodal vision services. |
| Model Capabilities | VoiceAI Prebuilt | Native access to managed speech recognition, synthesis, real-time voice, or telephony AI services. |
| Model Capabilities | DocAI Prebuilt | Native access to managed OCR, layout, extraction, classification, or document reasoning services. |
| Orchestration Services | Runtime Services | Native hosting and execution layer for agents, APIs, web backends, or workflow runtimes. |
| Orchestration Services | Provider Strategy | Native controls for model selection, routing, fallback, traffic management, or multi-provider governance. |
| Orchestration Services | Safety Controls | Native guardrails for content filtering, policy enforcement, prompt protection, or safe tool use. |
| Orchestration Services | Data Pipelines | Native structured data ingestion, orchestration, transformation, and delivery services for tables and streams. |
| Orchestration Services | Content Pipelines | Native unstructured content ingestion, parsing, chunking, indexing, and retrieval-preparation services. |
| Knowledge & Tools | Agent Protocols | Native support for standard agent-to-tool or agent-to-agent protocols such as MCP or A2A. |
| Knowledge & Tools | Enterprise Actions | Native mechanisms that expose enterprise APIs, functions, connectors, or automations to agents. |
| Knowledge & Tools | Data Platform | Native governed platform services for analytics, warehousing, semantic access, operational business data, or data engineering. |
| Knowledge & Tools | AI Storage | Native stores for vector indexes, memory, conversation state, files, or AI operational datasets. |
| Platform Controls | Identity & Secrets | Native identity, authentication, authorization, token, and secret handling used by the platform. |
| Platform Controls | Monitoring & Evals | Native tracing, logs, metrics, experimentation, and quality evaluation for AI solutions. |
| Platform Controls | Lifecycle & Delivery | Native packaging, versioning, deployment, promotion, and environment delivery capabilities. |
| Platform Controls | Governance & Audit | Native RBAC, policy, compliance, audit, and network-governance controls. |
| Platform Controls | FinOps Controls | Native usage metering, quotas, budgets, rate limits, or spend-visibility controls. |
In the technology-specific diagrams, a coloured component indicates the platform natively provides that capability as a first-class part of the stack. Grey indicates the capability is in preview, external, adjacent, or only indirectly addressed.
Colour key used across the technology-specific diagrams: blue for NeuralOps, orange for Databricks, teal for Foundry, purple for M365 Copilot, grey for preview / adjacent / indirect / NA.
Reading guide
- The reference architecture shows the full target architecture without vendor preference.
- The technology-specific views show coverage, not just compatibility.
- A component should only be coloured when the platform provides that capability as a native, first-class part of its operating model.
- Preview-labelled components remain grey until they are generally available as first-class native capability.
- Grey components may still be achievable in practice, but they depend on adjacent products, external integrations, or platform extensions rather than the platform itself.
3. Mapping the reference architecture to technology options
The comparison sections — NeuralOps, Databricks, Foundry, and M365 Copilot — test the reference architecture against the major platform options. Each one asks the same question: how well does this platform help an organisation assemble, govern, and operate the full AI stack across the converging team and skill domains described in Section 1.
For readability, this paper uses Databricks as shorthand for Azure Databricks, Foundry as shorthand for Microsoft Foundry, and M365 Copilot as shorthand for Microsoft 365 Copilot; where relevant, the M365 view includes Copilot Studio and Dataverse-backed business application surfaces because those provide the low-code builder, agent-flow, and business-data experience layers for that option. NeuralOps refers to a composed enterprise architecture pattern, not a standalone product, that packages Azure-native services and selected adjacent platform capabilities into a reusable delivery baseline. Where Microsoft documentation distinguishes between Foundry-native portal coverage, Foundry Tools, and adjacent Azure AI services, this paper keeps those boundaries explicit rather than collapsing them into one implied platform tier.
In the technology-specific tables, when Alignment is true it means the row is coloured in the diagram, partial means the row stays grey because it is preview-scoped, adjacent, indirect, or materially limited, and false means no first-class aligned capability is identified.
NeuralOps Reference Architecture
NeuralOps is shown first because it represents the broadest architectural stance in this paper. It is a composed enterprise baseline that incorporates Azure-native services and selected adjacent platform strengths, rather than a standalone product decision. That makes it the most direct response to the need described in Section 1: a shared enterprise stack that can span data, automation, and application delivery concerns.
Blue indicates capability that NeuralOps treats as first-class inside the composed baseline, whether it is delivered through packaged NeuralOps IP or through standardised use of underlying Azure services.
--- config: fontSize: 15 block: padding: 1 --- block-beta columns 10 t0["<b>Reusable</b></br><b>Patterns</b>"]:1 block:patterns:9 columns 2 rp1["<b>Agentic</b></br><b>Workflows</b></br><i>(Foundry AI</br>solution</br>templates,</br>NeuralOps IP)</i>"] rp2["<b>Conversational</b></br><b>Agents</b></br><i>(Copilot Studio</br>agent</br>templates,</br>NeuralOps IP)</i>"] end t1["<b>Experience</b></br><b>Channels</b>"]:1 block:channels:9 columns 6 ux1["<b>Collaboration</b></br><i>(Microsoft</br>Teams)</i>"] ux2["<b>Messaging</b></br><i>(Outlook /</br>Exchange</br>Online email)</i>"] ux3["<b>Web</b></br><b>Experience</b></br><i>(NeuralOps IP,</br>Teams web</br>client)</i>"] ux4["<b>Mobile</b></br><b>Experience</b></br><i>(NeuralOps IP,</br>Teams</br>mobile)</i>"] ux5["<b>Productivity</b></br><b>Apps</b></br><i>(NA)</i>"] ux6["<b>Desktop</b></br><b>Experience</b></br><i>(NA)</i>"] end t2["<b>Builder</b></br><b>Tools</b>"]:1 block:builder:9 columns 3 ap1["<b>Low-code</b></br><b>Build</b></br><i>(NA)</i>"] ap2["<b>Config-Code</b></br><b>Build</b></br><i>(Foundry Agent</br>Service,</br>NeuralOps IP)</i>"] ap3["<b>Pro-code</b></br><b>Build</b></br><i>(Microsoft</br>Foundry SDKs,</br>NeuralOps IP)</i>"] end t3["<b>Model</b></br><b>Capabilities</b>"]:1 block:modelcaps:9 columns 5 i1["<b>Custom</b></br><b>Models</b></br><i>(Foundry Model</br>Catalog,</br>Fine-Tuning)</i>"] i2["<b>GenAI</b></br><b>Prebuilt</b></br><i>(Azure OpenAI,</br>Foundry Model</br>Catalog)</i>"] i3["<b>VisionAI</b></br><b>Prebuilt</b></br><i>(Azure AI Vision)</i>"] i4["<b>VoiceAI</b></br><b>Prebuilt</b></br><i>(Azure AI</br>Speech,</br>Azure OpenAI</br>Realtime)</i>"] i5["<b>DocAI</b></br><b>Prebuilt</b></br><i>(Azure AI</br>Document</br>Intelligence)</i>"] end t3b["<b>Orchestration</b></br><b>Services</b>"]:1 block:orchestration:9 columns 5 i6["<b>Runtime</b></br><b>Services</b></br><i>(Foundry Agent</br>Service,</br>Azure</br>Functions,</br>Azure App</br>Service)</i>"] i7["<b>Provider</b></br><b>Strategy</b></br><i>(Foundry Model</br>Catalog,</br>Azure OpenAI)</i>"] i8["<b>Safety</b></br><b>Controls</b></br><i>(Azure AI</br>Content Safety,</br>NeuralOps</br>safety</br>patterns)</i>"] i9["<b>Data</b></br><b>Pipelines</b></br><i>(NA)</i>"] i10["<b>Content</b></br><b>Pipelines</b></br><i>(Azure</br>Functions,</br>AI Search</br>indexers,</br>NeuralOps IP)</i>"] end t4["<b>Knowledge &</b></br><b>Tools</b>"]:1 block:kdi:9 columns 4 k1["<b>Agent</b></br><b>Protocols</b></br><i>(MCP-compatible</br>tool</br>integration,</br>NeuralOps IP)</i>"] k2["<b>Enterprise</b></br><b>Actions</b></br><i>(Azure</br>Functions,</br>enterprise</br>APIs,</br>NeuralOps IP)</i>"] k3["<b>Data</b></br><b>Platform</b></br><i>(Databricks,</br>Dataverse)</i>"] k4["<b>AI</b></br><b>Storage</b></br><i>(Cosmos DB,</br>Blob</br>Storage)</i>"] end t5["<b>Platform</b></br><b>Controls</b>"]:1 block:controls:9 columns 5 pc1["<b>Identity &</b></br><b>Secrets</b></br><i>(Entra ID,</br>Key Vault)</i>"] pc2["<b>Monitoring &</b></br><b>Evals</b></br><i>(Application</br>Insights,</br>Azure Monitor,</br>NeuralOps eval</br>patterns)</i></br><i>adjacent:</br>Foundry Control</br>Plane</i>"] pc3["<b>Lifecycle &</b></br><b>Delivery</b></br><i>(GitHub</br>Actions,</br>Bicep)</i>"] pc4["<b>Governance &</b></br><b>Audit</b></br><i>(Azure Policy,</br>Microsoft</br>Entra</br>audit logs)</i></br><i>adjacent:</br>Purview,</br>Defender,</br>Agent 365</i>"] pc5["<b>FinOps</b></br><b>Controls</b></br><i>(Cost</br>Management,</br>Budgets)</i>"] end style t0 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t1 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t2 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3b fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t4 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t5 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style patterns fill:#0f172a,stroke:#0f172a,stroke-width:0px style channels fill:#0f172a,stroke:#0f172a,stroke-width:0px style builder fill:#0f172a,stroke:#0f172a,stroke-width:0px style modelcaps fill:#0f172a,stroke:#0f172a,stroke-width:0px style orchestration fill:#0f172a,stroke:#0f172a,stroke-width:0px style kdi fill:#0f172a,stroke:#0f172a,stroke-width:0px style controls fill:#0f172a,stroke:#0f172a,stroke-width:0px style rp1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style rp2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux3 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux4 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux5 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux6 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ap1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ap2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ap3 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i3 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i4 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i5 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i6 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i7 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i8 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i9 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i10 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style k1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style k2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style k3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k4 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc3 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc4 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc5 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px
| Layer | Component | References | Alignment | Comments |
|---|---|---|---|---|
| Reusable Patterns | Agentic Workflows | Foundry AI solution templates, NeuralOps IP | true | NeuralOps IP for Agentic Workflows. |
| Reusable Patterns | Conversational Agents | Copilot Studio agent templates, NeuralOps IP | true | NeuralOps IP for Conversational Agents. |
| Experience Channels | Collaboration | Microsoft Teams | true | NeuralOps IP for Teams integration. |
| Experience Channels | Messaging | Outlook / Exchange Online email | true | NeuralOps IP for Outlook integration. |
| Experience Channels | Web Experience | Teams web client, NeuralOps IP | true | NeuralOps IP for Web Experience. |
| Experience Channels | Mobile Experience | Teams mobile, NeuralOps IP | true | NeuralOps IP for Mobile Experience. |
| Experience Channels | Productivity Apps | Microsoft 365 Apps | partial | Partial because this layer is delivered through adjacent Microsoft 365 applications rather than a NeuralOps-native experience surface. |
| Experience Channels | Desktop Experience | Windows desktop apps | partial | Partial because this layer relies on adjacent Windows or Microsoft 365 desktop surfaces rather than a NeuralOps-native desktop shell. |
| Builder Tools | Low-code Build | Microsoft Copilot Studio | partial | Partial because low-code authoring sits in adjacent Copilot Studio rather than in a native NeuralOps builder surface. |
| Builder Tools | Config-Code Build | Foundry Agent Service, NeuralOps IP | true | NeuralOps IP for Config-Code Build. |
| Builder Tools | Pro-code Build | Microsoft Foundry SDKs, NeuralOps IP | true | NeuralOps IP for Pro-code Build. |
| Model Capabilities | Custom Models | Foundry Model Catalog, Fine-Tuning | true | — |
| Model Capabilities | GenAI Prebuilt | Azure OpenAI, Foundry Model Catalog | true | — |
| Model Capabilities | VisionAI Prebuilt | Azure AI Vision | true | — |
| Model Capabilities | VoiceAI Prebuilt | Azure AI Speech, Azure OpenAI Realtime | true | — |
| Model Capabilities | DocAI Prebuilt | Azure AI Document Intelligence | true | — |
| Orchestration Services | Runtime Services | Foundry Agent Service, Azure Functions, Azure App Service | true | — |
| Orchestration Services | Provider Strategy | Foundry Model Catalog, Azure OpenAI | true | — |
| Orchestration Services | Safety Controls | Azure AI Content Safety | true | NeuralOps IP for Safety Controls. |
| Orchestration Services | Data Pipelines | Databricks Lakeflow Jobs, Azure Data Factory, Fabric Data Factory | partial | Partial because structured data pipelines are provided by connected specialist platforms rather than a NeuralOps-native data pipeline layer. |
| Orchestration Services | Content Pipelines | Azure Functions, AI Search indexers, NeuralOps IP | true | — |
| Knowledge & Tools | Agent Protocols | MCP-compatible tool integration, NeuralOps IP | true | NeuralOps IP for Agent Protocols. |
| Knowledge & Tools | Enterprise Actions | Azure Functions, enterprise APIs, NeuralOps IP | true | — |
| Knowledge & Tools | Data Platform | Databricks, Dataverse | partial | Partial because the governed data platform is intentionally supplied by connected specialist platforms rather than by NeuralOps itself. Databricks covers analytics, warehousing, and engineering-heavy scenarios, while Dataverse covers governed operational business data for low-code and business application agent scenarios. |
| Knowledge & Tools | AI Storage | Cosmos DB, Blob Storage | true | — |
| Platform Controls | Identity & Secrets | Entra ID, Key Vault | true | — |
| Platform Controls | Monitoring & Evals | Application Insights, Azure Monitor, Foundry Control Plane | true | NeuralOps IP for Monitoring & Evals, with Foundry Control Plane available as an adjacent fleet observability and evaluation surface where adopted. |
| Platform Controls | Lifecycle & Delivery | GitHub Actions, Bicep | true | — |
| Platform Controls | Governance & Audit | Azure Policy, Microsoft Entra audit logs, Microsoft Purview, Microsoft Defender, Microsoft Agent 365 | true | NeuralOps can incorporate these adjacent Microsoft governance and security control planes into the composed baseline, but some Agent 365 and Foundry-linked management experiences remain preview- or rollout-scoped. |
| Platform Controls | FinOps Controls | Cost Management, Budgets | true | — |
Databricks Reference Architecture
Databricks is presented here as the strongest data- and ML-centric interpretation of the stack. It is most compelling where the centre of gravity is the lakehouse, model lifecycle, governed data, and AI-enabled applications built from that estate. Current documentation also shows defined builder and app patterns through AI Playground and Databricks Apps, but those paths carry enough operational constraint to warrant a conservative rating in this comparison.
Documentation also indicates that features relying on ai_parse_document, external models, and some Foundation Model API modes require closer scrutiny in regulated geographies because preview status, regional availability, and cross-geography processing can materially affect deployment posture. The same review shows that Databricks Apps and AI Playground carry operational constraints around serverless regional support, authorization mode, compute sizing, preview enablement, and exported deployment paths.
--- config: fontSize: 16 block: padding: 1 --- block-beta columns 10 t0["<b>Reusable</b></br><b>Patterns</b>"]:1 block:patterns:9 columns 2 rp1["<b>Agentic</b></br><b>Workflows</b></br><i>(Databricks Apps</br>templates)</i>"] rp2["<b>Conversational</b></br><b>Agents</b></br><i>(Conversational</br>agent</br>templates in Apps)</i>"] end t1["<b>Experience</b></br><b>Channels</b>"]:1 block:channels:9 columns 6 ux1["<b>Collaboration</b></br><i>(NA)</i>"] ux2["<b>Messaging</b></br><i>(NA)</i>"] ux3["<b>Web</b></br><b>Experience</b></br><i>(Databricks</br>Apps)</i>"] ux4["<b>Mobile</b></br><b>Experience</b></br><i>(NA)</i>"] ux5["<b>Productivity</b></br><b>Apps</b></br><i>(NA)</i>"] ux6["<b>Desktop</b></br><b>Experience</b></br><i>(NA)</i>"] end t2["<b>Builder</b></br><b>Tools</b>"]:1 block:builder:9 columns 3 ap1["<b>Low-code</b></br><b>Build</b></br><i>(AI Playground)</i>"] ap2["<b>Config-Code</b></br><b>Build</b></br><i>(Databricks</br>Apps,</br>Declarative</br>Automation</br>Bundles)</i>"] ap3["<b>Pro-code</b></br><b>Build</b></br><i>(Databricks</br>SDK/CLI,</br>Agent</br>Framework)</i>"] end t3["<b>Model</b></br><b>Capabilities</b>"]:1 block:modelcaps:9 columns 5 i1["<b>Custom</b></br><b>Models</b></br><i>(MLflow, custom</br>model serving)</i>"] i2["<b>GenAI</b></br><b>Prebuilt</b></br><i>(Foundation</br>Model APIs)</i>"] i3["<b>VisionAI</b></br><b>Prebuilt</b></br><i>(NA)</i>"] i4["<b>VoiceAI</b></br><b>Prebuilt</b></br><i>(NA)</i>"] i5["<b>DocAI</b></br><b>Prebuilt</b></br><i>(ai_parse_document</br>in Public</br>Preview)</i>"] end t3b["<b>Orchestration</b></br><b>Services</b>"]:1 block:orchestration:9 columns 5 i6["<b>Runtime</b></br><b>Services</b></br><i>(Databricks</br>Apps,</br>Agent</br>Framework</br>deployments)</i>"] i7["<b>Provider</b></br><b>Strategy</b></br><i>(Foundation</br>Model APIs,</br>External</br>Models)</i>"] i8["<b>Safety</b></br><b>Controls</b></br><i>(AI Gateway</br>guardrails</br>(Beta))</i>"] i9["<b>Data</b></br><b>Pipelines</b></br><i>(Databricks Jobs,</br>Lakeflow)</i>"] i10["<b>Content</b></br><b>Pipelines</b></br><i>(Auto Loader,</br>ai_parse_document</br>in Public</br>Preview)</i>"] end t4["<b>Knowledge &</b></br><b>Tools</b>"]:1 block:kdi:9 columns 4 k1["<b>Agent</b></br><b>Protocols</b></br><i>(External MCP,</br>Managed MCP</br>in Public</br>Preview)</i>"] k2["<b>Enterprise</b></br><b>Actions</b></br><i>(MCP tools,</br>Unity Catalog</br>functions</br>in Public</br>Preview)</i>"] k3["<b>Data</b></br><b>Platform</b></br><i>(Delta Lake,</br>Unity Catalog,</br>Databricks SQL)</i>"] k4["<b>AI</b></br><b>Storage</b></br><i>(Unity Catalog</br>Volumes)</i>"] end t5["<b>Platform</b></br><b>Controls</b>"]:1 block:controls:9 columns 5 pc1["<b>Identity &</b></br><b>Secrets</b></br><i>(OAuth,</br>service</br>principals,</br>Secret Scopes)</i>"] pc2["<b>Monitoring &</b></br><b>Evals</b></br><i>(MLflow</br>tracing,</br>data quality</br>monitoring)</i>"] pc3["<b>Lifecycle &</b></br><b>Delivery</b></br><i>(Databricks CLI,</br>Declarative</br>Automation</br>Bundles)</i>"] pc4["<b>Governance &</b></br><b>Audit</b></br><i>(Unity Catalog,</br>Audit Logs)</i>"] pc5["<b>FinOps</b></br><b>Controls</b></br><i>(system.billing.usage)</i>"] end style t0 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t1 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t2 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3b fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t4 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t5 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style patterns fill:#0f172a,stroke:#0f172a,stroke-width:0px style channels fill:#0f172a,stroke:#0f172a,stroke-width:0px style builder fill:#0f172a,stroke:#0f172a,stroke-width:0px style modelcaps fill:#0f172a,stroke:#0f172a,stroke-width:0px style orchestration fill:#0f172a,stroke:#0f172a,stroke-width:0px style kdi fill:#0f172a,stroke:#0f172a,stroke-width:0px style controls fill:#0f172a,stroke:#0f172a,stroke-width:0px style rp1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style rp2 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux2 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux4 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux5 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux6 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ap1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ap2 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ap3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i1 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style i2 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style i3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i4 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i5 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i6 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i7 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i8 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i9 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style i10 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k2 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k3 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style k4 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style pc1 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style pc2 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style pc3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style pc4 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style pc5 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px
| Layer | Component | References | Alignment | Comments |
|---|---|---|---|---|
| Reusable Patterns | Agentic Workflows | Databricks Apps templates | partial | Partial because the Databricks Apps path depends on serverless regional support, workspace preview enablement, fixed app size choices, and preview-scoped user authorization for per-user access. |
| Reusable Patterns | Conversational Agents | Conversational agent templates in Apps | partial | Partial because conversational agent templates inherit Databricks Apps constraints including serverless regional support, limited app capacity, fixed app size choices, and preview-scoped user authorization. |
| Experience Channels | Collaboration | NA | false | Databricks does not provide a native collaboration surface in this comparison. |
| Experience Channels | Messaging | NA | false | Databricks does not provide a native messaging surface in this comparison. |
| Experience Channels | Web Experience | Databricks Apps | partial | Partial because Databricks Apps-based web experiences depend on serverless regional support, workspace preview enablement, limited app capacity, fixed app size choices, and preview-scoped user authorization. |
| Experience Channels | Mobile Experience | NA | false | Databricks does not provide a native mobile end-user channel in this comparison. |
| Experience Channels | Productivity Apps | NA | false | Databricks does not provide a native productivity-suite surface in this comparison. |
| Experience Channels | Desktop Experience | NA | false | Databricks does not provide a native desktop shell in this comparison. |
| Builder Tools | Low-code Build | AI Playground | partial | Partial because AI Playground depends on regional availability across Foundation Model APIs, Unity Catalog, and Agent Framework, and its export path still uses a legacy Model Serving workflow. |
| Builder Tools | Config-Code Build | Databricks Apps, Declarative Automation Bundles | partial | Partial because Declarative Automation Bundles are strong but the Apps-backed delivery path still depends on serverless regional support, workspace preview enablement, fixed app size choices, and preview-scoped user authorization. |
| Builder Tools | Pro-code Build | Databricks SDK, Databricks CLI, Agent Framework | partial | Partial because the current Databricks CLI and SDK documentation both remain preview or beta scoped. |
| Model Capabilities | Custom Models | MLflow, custom model serving | true | — |
| Model Capabilities | GenAI Prebuilt | Foundation Model APIs | true | — |
| Model Capabilities | VisionAI Prebuilt | NA | false | This comparison does not identify a first-class Databricks-native prebuilt vision capability. |
| Model Capabilities | VoiceAI Prebuilt | NA | false | This comparison does not identify a first-class Databricks-native prebuilt voice capability. |
| Model Capabilities | DocAI Prebuilt | ai_parse_document in Public Preview | partial | Partial because ai_parse_document is Public Preview with limited regional availability and, in Australia East, requires cross-geo routing that can process content outside Australian geography. |
| Orchestration Services | Runtime Services | Databricks Apps, Agent Framework deployments | partial | Partial because the Databricks Apps-backed runtime path depends on serverless regional support, workspace preview enablement, fixed app size choices, and preview-scoped user authorization for per-user access. |
| Orchestration Services | Provider Strategy | Foundation Model APIs, External Models | partial | Partial because external models introduce third-party provider dependency, can process data outside the originating region, and some pay-per-token Foundation Model API scenarios require cross-geo routing. |
| Orchestration Services | Safety Controls | AI Gateway guardrails (Beta) | partial | Partial because AI Gateway is explicitly Beta. |
| Orchestration Services | Data Pipelines | Databricks Jobs, Lakeflow | true | — |
| Orchestration Services | Content Pipelines | Auto Loader, ai_parse_document in Public Preview | partial | Partial because Auto Loader is mature but the ai_parse_document parsing path is Public Preview and, in Australia East, can require cross-geo routing outside Australian geography. |
| Knowledge & Tools | Agent Protocols | External MCP, Managed MCP in Public Preview | partial | Partial because managed MCP servers are in Public Preview. |
| Knowledge & Tools | Enterprise Actions | MCP tools, Unity Catalog functions in Public Preview | partial | Partial because Unity Catalog functions are in Public Preview and have compute and networking constraints. |
| Knowledge & Tools | Data Platform | Delta Lake, Unity Catalog, Databricks SQL | true | — |
| Knowledge & Tools | AI Storage | Unity Catalog Volumes | true | — |
| Platform Controls | Identity & Secrets | OAuth, service principals, Secret Scopes | true | — |
| Platform Controls | Monitoring & Evals | MLflow tracing, data quality monitoring | true | — |
| Platform Controls | Lifecycle & Delivery | Databricks CLI, Declarative Automation Bundles | partial | Partial because the current Databricks CLI documentation is Public Preview. |
| Platform Controls | Governance & Audit | Unity Catalog, Audit Logs | true | — |
| Platform Controls | FinOps Controls | system.billing.usage | true | — |
Geography note:
ai_parse_documentis in Public Preview and, in Australia East, is supported only when cross geography routing is enabled, which can route document content outside Australian geography. External models can also process data outside the originating region, and some pay-per-token Foundation Model API scenarios in non-US/EU regions rely on cross-geo routing.
Operational note: Databricks Apps depends on serverless regional support, workspace-level enablement in the Previews page, medium or large app compute, and app authorization by default while user authorization remains in Public Preview; it also requires a Premium tier workspace. AI Playground depends on Foundation Model APIs, Unity Catalog, and Agent Framework regional availability, and its exported notebook currently uses a legacy Model Serving workflow rather than Databricks Apps.
Microsoft Learn now foregrounds the term Declarative Automation Bundles for what older materials often called Asset Bundles. This document uses both terms where helpful for continuity.
Foundry Reference Architecture
Foundry represents the closest native Azure AI and agent-platform view of the stack. It is strongest where the primary need is direct Azure-native agent runtime, model access, tool use, and guardrail capability. The broader Foundry picture now also includes Foundry Control Plane for cross-project fleet governance plus Foundry Tools and adjacent Azure AI services such as Content Understanding and emerging voice-native agent patterns, although Microsoft still draws some GA/preview and native/adjacent boundaries across those experiences.
Grey experience-channel boxes such as Teams and M365 Copilot indicate publishing targets or adjacent surfaces rather than Foundry-native end-user channels.
--- config: fontSize: 15 block: padding: 1 --- block-beta columns 10 t0["<b>Reusable</b></br><b>Patterns</b>"]:1 block:patterns:9 columns 2 rp1["<b>Agentic</b></br><b>Workflows</b></br><i>(Foundry workflows)</i>"] rp2["<b>Conversational</b></br><b>Agents</b></br><i>(Prompt agents)</i>"] end t1["<b>Experience</b></br><b>Channels</b>"]:1 block:channels:9 columns 6 ux1["<b>Collaboration</b></br><i>(Published to</br>Teams)</i>"] ux2["<b>Messaging</b></br><i>(NA)</i>"] ux3["<b>Web</b></br><b>Experience</b></br><i>(Published</br>agent app)</i>"] ux4["<b>Mobile</b></br><b>Experience</b></br><i>(NA)</i>"] ux5["<b>Productivity</b></br><b>Apps</b></br><i>(Published to</br>M365 Copilot,</br>Copilot Agents,</br>Dynamics 365</br>Agents)</i>"] ux6["<b>Desktop</b></br><b>Experience</b></br><i>(NA)</i>"] end t2["<b>Builder</b></br><b>Tools</b>"]:1 block:builder:9 columns 3 ap1["<b>Low-code</b></br><b>Build</b></br><i>(Foundry</br>portal,</br>Prompt agents)</i>"] ap2["<b>Config-Code</b></br><b>Build</b></br><i>(Workflow YAML,</br>agent</br>definitions)</i>"] ap3["<b>Pro-code</b></br><b>Build</b></br><i>(Foundry SDKs,</br>REST API,</br>Hosted agents</br>in preview)</i>"] end t3["<b>Model</b></br><b>Capabilities</b>"]:1 block:modelcaps:9 columns 5 i1["<b>Custom</b></br><b>Models</b></br><i>(Foundry Model</br>Catalog,</br>Fine-Tuning)</i>"] i2["<b>GenAI</b></br><b>Prebuilt</b></br><i>(Foundry Model</br>Catalog,</br>Azure OpenAI)</i>"] i3["<b>VisionAI</b></br><b>Prebuilt</b></br><i>(Azure AI</br>Vision)</i>"] i4["<b>VoiceAI</b></br><b>Prebuilt</b></br><i>(Azure AI</br>Speech,</br>Azure OpenAI</br>Realtime,</br>Voice Live /</br>Voice Native</br>Agents in</br>preview)</i>"] i5["<b>DocAI</b></br><b>Prebuilt</b></br><i>(Azure AI</br>Document</br>Intelligence)</i>"] end t3b["<b>Orchestration</b></br><b>Services</b>"]:1 block:orchestration:9 columns 5 i6["<b>Runtime</b></br><b>Services</b></br><i>(Agent Service,</br>Hosted agents</br>in preview)</i>"] i7["<b>Provider</b></br><b>Strategy</b></br><i>(Foundry Model</br>Catalog,</br>Azure OpenAI)</i>"] i8["<b>Safety</b></br><b>Controls</b></br><i>(Foundry</br>Guardrails for</br>agents (in</br>preview),</br>content</br>filters)</i>"] i9["<b>Data</b></br><b>Pipelines</b></br><i>(NA)</i>"] i10["<b>Content</b></br><b>Pipelines</b></br><i>(Foundry IQ,</br>File Search,</br>Content</br>Understanding,</br>adjacent content</br>services)</i>"] end t4["<b>Knowledge &</b></br><b>Tools</b>"]:1 block:kdi:9 columns 4 k1["<b>Agent</b></br><b>Protocols</b></br><i>(MCP, A2A</br>(A2A in preview))</i>"] k2["<b>Enterprise</b></br><b>Actions</b></br><i>(Function</br>calling,</br>OpenAPI tool)</i>"] k3["<b>Data</b></br><b>Platform</b></br><i>(Dataverse,</br>external)</i>"] k4["<b>AI</b></br><b>Storage</b></br><i>(Knowledge</br>bases,</br>vector stores)</i>"] end t5["<b>Platform</b></br><b>Controls</b>"]:1 block:controls:9 columns 5 pc1["<b>Identity &</b></br><b>Secrets</b></br><i>(Entra ID,</br>agent identity)</i>"] pc2["<b>Monitoring &</b></br><b>Evals</b></br><i>(Agent tracing,</br>Application</br>Insights,</br>Foundry Evals,</br>Foundry Control</br>Plane)</i>"] pc3["<b>Lifecycle &</b></br><b>Delivery</b></br><i>(Versioning,</br>publishing,</br>SDK/REST)</i>"] pc4["<b>Governance &</b></br><b>Audit</b></br><i>(RBAC,</br>Azure Policy,</br>Foundry Control</br>Plane,</br>Purview,</br>Defender,</br>private</br>networking,</br>Agent 365)</i>"] pc5["<b>FinOps</b></br><b>Controls</b></br><i>(Azure Cost</br>Management)</i>"] end style t0 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t1 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t2 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3b fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t4 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t5 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style patterns fill:#0f172a,stroke:#0f172a,stroke-width:0px style channels fill:#0f172a,stroke:#0f172a,stroke-width:0px style builder fill:#0f172a,stroke:#0f172a,stroke-width:0px style modelcaps fill:#0f172a,stroke:#0f172a,stroke-width:0px style orchestration fill:#0f172a,stroke:#0f172a,stroke-width:0px style kdi fill:#0f172a,stroke:#0f172a,stroke-width:0px style controls fill:#0f172a,stroke:#0f172a,stroke-width:0px style rp1 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style rp2 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style ux1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux2 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux4 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux5 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ux6 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ap1 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style ap2 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style ap3 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style i1 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style i2 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style i3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i4 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i5 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i6 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i7 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style i8 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i9 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i10 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k2 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style k3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k4 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style pc1 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style pc2 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style pc3 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style pc4 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px style pc5 fill:#0ea5e9,stroke:#0ea5e9,color:#eff6ff,stroke-width:0px
| Layer | Component | References | Alignment | Comments |
|---|---|---|---|---|
| Reusable Patterns | Agentic Workflows | Foundry workflows | true | — |
| Reusable Patterns | Conversational Agents | Prompt agents | true | — |
| Experience Channels | Collaboration | Published to Teams | partial | Partial because Teams is a publishing target rather than a Foundry-native collaboration surface, and published agents currently do not support streaming or citations. |
| Experience Channels | Messaging | NA | false | Foundry does not provide a native messaging channel in this comparison. |
| Experience Channels | Web Experience | Published agent app, Agent Application | partial | Partial because this is a published output surface rather than a Foundry-native end-user web channel. Agent Applications expose a stable endpoint, but the current Responses API path is stateless and depends on the client to manage conversation state. |
| Experience Channels | Mobile Experience | NA | false | Foundry does not provide a native mobile end-user channel in this comparison. |
| Experience Channels | Productivity Apps | Published to M365 Copilot, Copilot Agents, Dynamics 365 Agents | partial | Partial because M365 Copilot, Copilot Agents, and Dynamics 365 Agents are publishing targets rather than Foundry-native end-user surfaces, and published agents currently do not support streaming or citations. |
| Experience Channels | Desktop Experience | NA | false | Foundry does not provide a native desktop shell in this comparison. |
| Builder Tools | Low-code Build | Foundry portal, Prompt agents | true | — |
| Builder Tools | Config-Code Build | Workflow YAML, agent definitions | true | — |
| Builder Tools | Pro-code Build | Foundry SDKs, REST API, Hosted agents | true | Foundry SDKs and REST API provide a first-class Pro-code build path. Hosted agents add regional, networking, and data-boundary considerations but do not block the core SDK and API capability. |
| Model Capabilities | Custom Models | Foundry Model Catalog, Fine-Tuning | true | — |
| Model Capabilities | GenAI Prebuilt | Foundry Model Catalog, Azure OpenAI | true | — |
| Model Capabilities | VisionAI Prebuilt | Azure AI Vision | false | False because the capability sits in an adjacent Azure AI service rather than in Foundry itself. |
| Model Capabilities | VoiceAI Prebuilt | Azure AI Speech, Azure OpenAI Realtime, Voice Live / Voice Native Agents (Public Preview) | partial | Partial because the primary capability still relies on adjacent Azure AI services. Foundry’s Voice Live / voice-native agent direction is now visible in Public Preview, but it is not yet broad GA first-class coverage across the full voice layer. |
| Model Capabilities | DocAI Prebuilt | Azure AI Document Intelligence | false | False because the capability sits in an adjacent Azure AI service rather than in Foundry itself. |
| Orchestration Services | Runtime Services | Agent runtime, Hosted agents in preview | partial | Partial because the core Foundry agent runtime is production-oriented, but the hosted-agents deployment path remains preview-scoped and adds regional, networking, and data-boundary limitations. |
| Orchestration Services | Provider Strategy | Foundry Model Catalog, Azure OpenAI | true | — |
| Orchestration Services | Safety Controls | Foundry Guardrails for agents (in preview), content filters | partial | Partial because agent guardrails remain preview-scoped. |
| Orchestration Services | Data Pipelines | NA | false | Foundry does not provide a first-class native data pipeline layer in this comparison. |
| Orchestration Services | Content Pipelines | Foundry IQ, File Search, Content Understanding | partial | Partial because Foundry now includes stronger native content tooling and Content Understanding is GA as a Foundry Tool / Azure AI service, but Content Understanding still sits outside the current new-portal GA scope and therefore remains adjacent rather than fully first-class in this comparison. |
| Knowledge & Tools | Agent Protocols | MCP, A2A in preview | partial | Partial because A2A support remains preview-scoped even though MCP support is documented as first-class. |
| Knowledge & Tools | Enterprise Actions | Function calling, OpenAPI tool | true | — |
| Knowledge & Tools | Data Platform | Dataverse | partial | Partial because Foundry does not provide a native data platform. Dataverse is a supported connected data platform for Foundry agents, providing governed, low-code-accessible data and business logic. |
| Knowledge & Tools | AI Storage | Knowledge bases, vector stores | true | — |
| Platform Controls | Identity & Secrets | Entra ID, agent identity | true | — |
| Platform Controls | Monitoring & Evals | Agent tracing, Application Insights, Foundry Evals, Foundry Control Plane | true | Foundry Evaluations are listed as GA in current Microsoft Foundry GA documentation. Foundry Control Plane adds a unified monitoring and fleet-management surface that consolidates inventory, observability, compliance, and security, although some newer Operate experiences remain preview-scoped in the current portal feature comparison. |
| Platform Controls | Lifecycle & Delivery | Versioning, publishing, SDK/REST | true | — |
| Platform Controls | Governance & Audit | RBAC, Azure Policy, Foundry Control Plane, Microsoft Purview, Microsoft Defender, private networking, Microsoft Agent 365 | partial | Foundry provides native RBAC and identity governance at the project and agent layers. Foundry Control Plane now consolidates inventory, observability, compliance, and security into a role-aware interface with Purview and Defender integrations, but Control Plane remains preview-scoped in the current portal comparison and Agent 365 integration is still rollout- and preview-dependent. |
| Platform Controls | FinOps Controls | Azure Cost Management | true | — |
Foundry note: Hosted agents, some guardrails surfaces, A2A, and parts of the new Operate experience still carry preview constraints, while Foundry Evaluations are GA and published Teams and M365 Copilot agents currently have feature gaps such as no streaming or citations. Foundry IQ and File Search remain strong native content capabilities; Content Understanding is now GA as a Foundry Tool / Azure AI service, but is still outside the current new-portal GA scope, and file search also brings extra Azure AI Search-related charges and region-dependent availability.
M365 Copilot Reference Architecture
M365 Copilot, including Copilot Studio, is presented here as the productivity-first and low-code interpretation of the stack. It is strongest where the primary need is Microsoft 365-native end-user productivity, declarative extensibility, and tenant-governed work-data experiences.
Grey boxes indicate capabilities that are preview-only, indirect, or outside the combined M365 Copilot and Copilot Studio first-class native coverage.
--- config: fontSize: 15 block: padding: 1 --- block-beta columns 10 t0["<b>Reusable</b></br><b>Patterns</b>"]:1 block:patterns:9 columns 2 rp1["<b>Agentic</b></br><b>Workflows</b></br><i>(Copilot Studio</br>agent flows)</i>"] rp2["<b>Conversational</b></br><b>Agents</b></br><i>(Declarative</br>agent</br>patterns)</i>"] end t1["<b>Experience</b></br><b>Channels</b>"]:1 block:channels:9 columns 6 ux1["<b>Collaboration</b></br><i>(Teams)</i>"] ux2["<b>Messaging</b></br><i>(Outlook)</i>"] ux3["<b>Web</b></br><b>Experience</b></br><i>(Copilot Chat)</i>"] ux4["<b>Mobile</b></br><b>Experience</b></br><i>(Microsoft 365</br>Copilot app</br>mobile)</i>"] ux5["<b>Productivity</b></br><b>Apps</b></br><i>(Word, Excel,</br>PowerPoint,</br>Copilot Agents,</br>Dynamics 365</br>Agents)</i>"] ux6["<b>Desktop</b></br><b>Experience</b></br><i>(Microsoft 365</br>Copilot app</br>desktop)</i>"] end t2["<b>Builder</b></br><b>Tools</b>"]:1 block:builder:9 columns 3 ap1["<b>Low-code</b></br><b>Build</b></br><i>(Copilot Studio,</br>Agent Builder)</i>"] ap2["<b>Config-Code</b></br><b>Build</b></br><i>(App manifest,</br>declarative</br>agent</br>manifest)</i>"] ap3["<b>Pro-code</b></br><b>Build</b></br><i>(Agents SDK,</br>Agents</br>Toolkit,</br>Copilot APIs)</i>"] end t3["<b>Model</b></br><b>Capabilities</b>"]:1 block:modelcaps:9 columns 5 i1["<b>Custom</b></br><b>Models</b></br><i>(External custom</br>engine models)</i>"] i2["<b>GenAI</b></br><b>Prebuilt</b></br><i>(M365 Copilot,</br>Microsoft-managed</br>models)</i>"] i3["<b>VisionAI</b></br><b>Prebuilt</b></br><i>(NA)</i>"] i4["<b>VoiceAI</b></br><b>Prebuilt</b></br><i>(NA)</i>"] i5["<b>DocAI</b></br><b>Prebuilt</b></br><i>(NA)</i>"] end t3b["<b>Orchestration</b></br><b>Services</b>"]:1 block:orchestration:9 columns 5 i6["<b>Runtime</b></br><b>Services</b></br><i>(Copilot</br>orchestrator,</br>declarative</br>agents)</i>"] i7["<b>Provider</b></br><b>Strategy</b></br><i>(Microsoft-managed</br>subset only)</i>"] i8["<b>Safety</b></br><b>Controls</b></br><i>(M365 security,</br>compliance,</br>Responsible AI)</i>"] i9["<b>Data</b></br><b>Pipelines</b></br><i>(NA)</i>"] i10["<b>Content</b></br><b>Pipelines</b></br><i>(SharePoint/</br>OneDrive,</br>Copilot</br>connectors,</br>Graph</br>grounding</br>sources)</i>"] end t4["<b>Knowledge &</b></br><b>Tools</b>"]:1 block:kdi:9 columns 4 k1["<b>Agent</b></br><b>Protocols</b></br><i>(MCP via</br>plugins</br>(in public</br>preview))</i>"] k2["<b>Enterprise</b></br><b>Actions</b></br><i>(Plugins)</i>"] k3["<b>Data</b></br><b>Platform</b></br><i>(Dataverse)</i>"] k4["<b>AI</b></br><b>Storage</b></br><i>(SharePoint,</br>OneDrive,</br>mailboxes)</i>"] end t5["<b>Platform</b></br><b>Controls</b>"]:1 block:controls:9 columns 5 pc1["<b>Identity &</b></br><b>Secrets</b></br><i>(Entra ID)</i>"] pc2["<b>Monitoring &</b></br><b>Evals</b></br><i>(Copilot Analytics)</i>"] pc3["<b>Lifecycle &</b></br><b>Delivery</b></br><i>(App package,</br>tenant</br>deployment)</i>"] pc4["<b>Governance &</b></br><b>Audit</b></br><i>(Purview,</br>Compliance</br>Center)</i>"] pc5["<b>FinOps</b></br><b>Controls</b></br><i>(Microsoft 365</br>Copilot</br>licensing,</br>Copilot Studio</br>meters)</i>"] end style t0 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t1 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t2 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3b fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t4 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t5 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style patterns fill:#0f172a,stroke:#0f172a,stroke-width:0px style channels fill:#0f172a,stroke:#0f172a,stroke-width:0px style builder fill:#0f172a,stroke:#0f172a,stroke-width:0px style modelcaps fill:#0f172a,stroke:#0f172a,stroke-width:0px style orchestration fill:#0f172a,stroke:#0f172a,stroke-width:0px style kdi fill:#0f172a,stroke:#0f172a,stroke-width:0px style controls fill:#0f172a,stroke:#0f172a,stroke-width:0px style rp1 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style rp2 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ux1 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ux2 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ux3 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ux4 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ux5 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ux6 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ap1 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ap2 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style ap3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i2 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style i3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i4 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i5 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i6 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style i7 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i8 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style i9 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style i10 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style k1 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k2 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style k3 fill:#334155,stroke:#334155,color:#e2e8f0,stroke-width:0px style k4 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style pc1 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style pc2 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style pc3 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style pc4 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style pc5 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px
| Layer | Component | References | Alignment | Comments |
|---|---|---|---|---|
| Reusable Patterns | Agentic Workflows | Copilot Studio agent flows | true | — |
| Reusable Patterns | Conversational Agents | Declarative agent patterns | true | — |
| Experience Channels | Collaboration | Teams | true | — |
| Experience Channels | Messaging | Outlook | true | — |
| Experience Channels | Web Experience | Copilot Chat | true | — |
| Experience Channels | Mobile Experience | Microsoft 365 Copilot app (mobile) | true | — |
| Experience Channels | Productivity Apps | Word, Excel, PowerPoint, Copilot Agents, Dynamics 365 agents | true | Includes both Microsoft 365 productivity-app surfaces and Dataverse-backed Dynamics 365 agent experiences. |
| Experience Channels | Desktop Experience | Microsoft 365 Copilot app (desktop) | true | — |
| Builder Tools | Low-code Build | Copilot Studio, Agent Builder | true | — |
| Builder Tools | Config-Code Build | App manifest, declarative agent manifest | false | False because this comparison now treats M365 Copilot as a low-code-first platform rather than a first-class config-code build surface. |
| Builder Tools | Pro-code Build | Agents SDK, Agents Toolkit, Copilot APIs | false | False because the pro-code tooling supports extensibility around M365 Copilot rather than a first-class M365 Copilot-native build mode. |
| Model Capabilities | Custom Models | External custom engine models | partial | Partial because custom models are provided through external custom engine agents rather than native M365 Copilot model hosting. |
| Model Capabilities | GenAI Prebuilt | M365 Copilot, Microsoft-managed models | true | — |
| Model Capabilities | VisionAI Prebuilt | NA | false | M365 Copilot does not provide a first-class native prebuilt vision capability in this comparison. |
| Model Capabilities | VoiceAI Prebuilt | NA | false | M365 Copilot does not provide a first-class native prebuilt voice capability in this comparison. |
| Model Capabilities | DocAI Prebuilt | NA | false | Retrieval and grounding over M365 content is not the same as DocAI extraction or understanding. |
| Orchestration Services | Runtime Services | Copilot orchestrator, declarative agents | true | — |
| Orchestration Services | Provider Strategy | Microsoft-managed subset only | partial | Partial because M365 Copilot is limited to a small subset of Microsoft-managed models rather than a broader native provider-routing strategy. |
| Orchestration Services | Safety Controls | M365 security, compliance, Responsible AI | true | — |
| Orchestration Services | Data Pipelines | NA | false | Agent flows support automation but do not provide native structured data pipelines for this layer. |
| Orchestration Services | Content Pipelines | SharePoint/OneDrive, Copilot connectors, Graph grounding sources | true | — |
| Knowledge & Tools | Agent Protocols | MCP via plugins (in public preview) | partial | Partial because MCP plugins are explicitly in public preview. |
| Knowledge & Tools | Enterprise Actions | Plugins | true | — |
| Knowledge & Tools | Data Platform | Dataverse | partial | Partial because the governed business-data platform is provided through Dataverse and Power Platform rather than through Microsoft 365 workload storage itself. |
| Knowledge & Tools | AI Storage | SharePoint, OneDrive, mailboxes | true | — |
| Platform Controls | Identity & Secrets | Entra ID | true | — |
| Platform Controls | Monitoring & Evals | Copilot Analytics | true | — |
| Platform Controls | Lifecycle & Delivery | App package, tenant deployment | true | — |
| Platform Controls | Governance & Audit | Purview, Compliance Center | true | — |
| Platform Controls | FinOps Controls | Microsoft 365 Copilot licensing, Copilot Studio meters | true | — |
M365 Copilot note: In this paper, the M365 option includes Copilot Studio plus the Dataverse-backed business application surfaces that expose Copilot Agents and Dynamics 365 Agents. Agent Builder is a lightweight subset of Copilot Studio and is not available on mobile or Teams Chat, agent flows consume Copilot Studio capacity, Dataverse underpins the governed business-data layer for many of these experiences, and both MCP plugins and federated MCP-based Copilot connectors remain preview-scoped.
4. Recommended composed architecture
The recommendation is a NeuralOps-led composed architecture. This is not a single-product standardisation exercise. The objective is to keep one coherent enterprise platform baseline, then use specialist technologies only where the current NeuralOps coverage is intentionally indirect or where another platform is materially better aligned to the organisation’s requirements, constraints, and operating capabilities.
Recommended composed reference architecture
--- config: fontSize: 15 block: padding: 1 --- block-beta columns 10 t0["<b>Reusable</b></br><b>Patterns</b>"]:1 block:patterns:9 columns 2 rp1["<b>Agentic</b></br><b>Workflows</b></br><i>(Foundry AI</br>solution</br>templates,</br>NeuralOps IP)</i>"] rp2["<b>Conversational</b></br><b>Agents</b></br><i>(Copilot Studio</br>agent</br>templates,</br>NeuralOps IP)</i>"] end t1["<b>Experience</b></br><b>Channels</b>"]:1 block:channels:9 columns 6 ux1["<b>Collaboration</b></br><i>(Microsoft</br>Teams,</br>NeuralOps IP)</i>"] ux2["<b>Messaging</b></br><i>(Outlook /</br>Exchange</br>Online email,</br>NeuralOps IP)</i>"] ux3["<b>Web</b></br><b>Experience</b></br><i>(NeuralOps IP,</br>Teams web</br>client)</i>"] ux4["<b>Mobile</b></br><b>Experience</b></br><i>(NeuralOps IP,</br>Teams</br>mobile)</i>"] ux5["<b>Productivity</b></br><b>Apps</b></br><i>(M365 Copilot,</br>Copilot Agents,</br>Dynamics 365</br>Agents)</i>"] ux6["<b>Desktop</b></br><b>Experience</b></br><i>(Microsoft 365</br>Copilot app</br>desktop)</i>"] end t2["<b>Builder</b></br><b>Tools</b>"]:1 block:builder:9 columns 3 ap1["<b>Low-code</b></br><b>Build</b></br><i>(Copilot Studio,</br>Agent Builder)</i>"] ap2["<b>Config-Code</b></br><b>Build</b></br><i>(Foundry Agent</br>Service,</br>NeuralOps IP)</i>"] ap3["<b>Pro-code</b></br><b>Build</b></br><i>(Microsoft</br>Foundry SDKs,</br>NeuralOps IP)</i>"] end t3["<b>Model</b></br><b>Capabilities</b>"]:1 block:modelcaps:9 columns 5 i1["<b>Custom</b></br><b>Models</b></br><i>(Foundry Model</br>Catalog,</br>Fine-Tuning)</i>"] i2["<b>GenAI</b></br><b>Prebuilt</b></br><i>(Azure OpenAI,</br>Foundry Model</br>Catalog)</i>"] i3["<b>VisionAI</b></br><b>Prebuilt</b></br><i>(Azure AI Vision)</i>"] i4["<b>VoiceAI</b></br><b>Prebuilt</b></br><i>(Azure AI</br>Speech,</br>Azure OpenAI</br>Realtime)</i>"] i5["<b>DocAI</b></br><b>Prebuilt</b></br><i>(Azure AI</br>Document</br>Intelligence)</i>"] end t3b["<b>Orchestration</b></br><b>Services</b>"]:1 block:orchestration:9 columns 5 i6["<b>Runtime</b></br><b>Services</b></br><i>(Foundry Agent</br>Service,</br>Azure</br>Functions,</br>Azure App</br>Service)</i>"] i7["<b>Provider</b></br><b>Strategy</b></br><i>(Foundry Model</br>Catalog,</br>Azure OpenAI)</i>"] i8["<b>Safety</b></br><b>Controls</b></br><i>(Azure AI</br>Content Safety,</br>NeuralOps</br>safety</br>patterns)</i>"] i9["<b>Data</b></br><b>Pipelines</b></br><i>(Databricks Jobs,</br>Lakeflow)</i>"] i10["<b>Content</b></br><b>Pipelines</b></br><i>(Azure</br>Functions,</br>AI Search</br>indexers,</br>NeuralOps IP)</i>"] end t4["<b>Knowledge &</b></br><b>Tools</b>"]:1 block:kdi:9 columns 4 k1["<b>Agent</b></br><b>Protocols</b></br><i>(MCP-compatible</br>tool</br>integration,</br>NeuralOps IP)</i>"] k2["<b>Enterprise</b></br><b>Actions</b></br><i>(Azure</br>Functions,</br>enterprise</br>APIs,</br>NeuralOps IP)</i>"] k3["<b>Data</b></br><b>Platform</b></br><i>(Delta Lake,</br>Unity Catalog,</br>Databricks SQL)</i></br><i>paired with</br>Dataverse</i>"] k4["<b>AI</b></br><b>Storage</b></br><i>(Cosmos DB,</br>Blob</br>Storage)</i>"] end t5["<b>Platform</b></br><b>Controls</b>"]:1 block:controls:9 columns 5 pc1["<b>Identity &</b></br><b>Secrets</b></br><i>(Entra ID,</br>Key Vault)</i>"] pc2["<b>Monitoring &</b></br><b>Evals</b></br><i>(Application</br>Insights,</br>Azure Monitor,</br>NeuralOps eval</br>patterns)</i></br><i>adjacent:</br>Foundry Control</br>Plane</i>"] pc3["<b>Lifecycle &</b></br><b>Delivery</b></br><i>(GitHub</br>Actions,</br>Bicep)</i>"] pc4["<b>Governance &</b></br><b>Audit</b></br><i>(Azure Policy,</br>Microsoft</br>Entra</br>audit logs)</i></br><i>adjacent:</br>Purview,</br>Defender,</br>Agent 365</i>"] pc5["<b>FinOps</b></br><b>Controls</b></br><i>(Cost</br>Management,</br>Budgets)</i>"] end style t0 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t1 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t2 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t3b fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t4 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style t5 fill:#0b1220,stroke:#0b1220,color:#f8fafc,stroke-width:0px style patterns fill:#0f172a,stroke:#0f172a,stroke-width:0px style channels fill:#0f172a,stroke:#0f172a,stroke-width:0px style builder fill:#0f172a,stroke:#0f172a,stroke-width:0px style modelcaps fill:#0f172a,stroke:#0f172a,stroke-width:0px style orchestration fill:#0f172a,stroke:#0f172a,stroke-width:0px style kdi fill:#0f172a,stroke:#0f172a,stroke-width:0px style controls fill:#0f172a,stroke:#0f172a,stroke-width:0px style rp1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style rp2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux3 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux4 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ux5 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ux6 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ap1 fill:#7c3aed,stroke:#7c3aed,color:#f5f3ff,stroke-width:0px style ap2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style ap3 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i3 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i4 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i5 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i6 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i7 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i8 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style i9 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style i10 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style k1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style k2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style k3 fill:#f59e0b,stroke:#f59e0b,color:#111827,stroke-width:0px style k4 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc1 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc2 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc3 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc4 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px style pc5 fill:#2563eb,stroke:#2563eb,color:#eff6ff,stroke-width:0px
Diagram key: blue for NeuralOps, orange for Databricks, purple for M365 Copilot (including Copilot Studio).
Many of the blue components in the recommended composed reference architecture are implemented using Azure-native services such as Foundry, Azure Functions, AI Search, Content Safety, and other underlying capabilities, but they are recommended here as part of the NeuralOps baseline rather than as separate platform silos. Where governance, observability, and fleet-management requirements justify it, that composed baseline can also incorporate adjacent Microsoft control planes such as Foundry Control Plane, Microsoft Purview, Microsoft Defender, and Microsoft Agent 365 with the same preview and rollout caveats noted in the technology-specific sections. Foundry therefore does not appear as a separate fallback colour in the recommendation view; the relevant Foundry-aligned capabilities are already absorbed into the NeuralOps baseline where appropriate.
Recommendation logic
- Start with the NeuralOps-aligned component for each part of the reference architecture.
- If the NeuralOps alignment is only
partialorfalse, use the Databricks-aligned component where Databricks provides first-class coverage. - If Databricks is also only
partialorfalse, use the M365 Copilot-aligned component where Microsoft 365-native productivity or low-code capability is the better fit.
This component-level rule preserves shared architecture, control, and reuse while still recognising practical technology limitations, preview boundaries, security and operational constraints, existing investments, and the skill distribution of the organisation.
Where the recommendation deliberately falls back to other platforms
All other components stay NeuralOps-led in the recommended composition.
| Reference architecture component | Recommended primary technology | Why it falls outside the default NeuralOps selection |
|---|---|---|
| Productivity Apps | M365 Copilot, Copilot Agents, and Dynamics 365 Agents | Microsoft 365-native productivity surfaces and Dataverse-backed business application agent surfaces are better served directly in the host applications than by recreating them in the broader platform baseline. |
| Desktop Experience | M365 Copilot | Desktop-native end-user experience is better provided through the Microsoft 365 Copilot app than by extending the broader platform composition layer. |
| Low-code Build | M365 Copilot with Copilot Studio | Low-code authoring is a clearer fit for Copilot Studio and Agent Builder than for the current NeuralOps or Databricks patterns. |
| Data Pipelines | Databricks | Structured data engineering and lakehouse-centred orchestration remain a stronger specialist fit in Databricks than in the broader platform baseline. |
| Data Platform | Databricks with Dataverse | Governed analytics, warehousing, and data engineering remain best served through Databricks, while Dataverse adds the governed operational business-data layer needed for Copilot Studio and Dynamics 365 agent scenarios. |
Why this remains NeuralOps-led
- Most of the reference architecture stays in NeuralOps. The recommendation keeps reusable patterns, config-code and pro-code build, model capabilities, runtime, safety, content pipelines, enterprise actions, AI storage, and platform controls inside one composed baseline.
- The fallback platforms are narrow and deliberate. Databricks is used where specialist governed analytics and engineering capability is structurally stronger. Dataverse complements that where governed operational business data is needed for low-code and business-application agent scenarios. M365 Copilot is used where Microsoft 365-native productivity and low-code experience are structurally stronger.
- This avoids unnecessary platform fragmentation. The recommendation uses Databricks and M365 Copilot where they are best, but it does not let those platforms become separate control planes for the rest of the architecture.
- It fits real organisational capability patterns. Data and ML teams can keep working in Databricks, automation and end-user experience teams can use M365 Copilot, Copilot Studio, and Dataverse-backed Dynamics 365 agent surfaces, and the broader enterprise platform can still standardise lifecycle, safety, governance, and reusable patterns through NeuralOps.
How to apply the recommendation to organisational context
- If the organisation already has a strong Databricks operating model, let Databricks own the analytics-heavy data platform and data pipeline layers, use Dataverse where business application data and low-code agent scenarios are central, and keep the broader control plane and cross-team platform standards in NeuralOps.
- If the primary adoption driver is Microsoft 365 productivity or citizen development, let M365 Copilot including Copilot Studio own low-code and Microsoft 365-native end-user surfaces, but do not expand it into config-code, pro-code, or data-platform roles that it does not cover as first-class capability.
- If existing platform limitations, security constraints, regional constraints, or preview dependencies affect a given component, apply the same component-level decision rule rather than replacing the whole composed architecture.
Recommendation statement
The recommended target state is therefore not a single-product choice. It is a NeuralOps-led composed architecture in which NeuralOps remains the primary enterprise baseline, Databricks with Dataverse is used where specialist governed data platform capability and operational business data are the better fit, and M365 Copilot is used where Microsoft 365-native productivity and low-code capability is the better fit. That approach gives the organisation one coherent platform model while still respecting product limitations, existing investments, and the practical capabilities of its teams.
Selected sources
The architecture views in this document draw on selected vendor documentation and platform analysis. The following sources are the most relevant external references for the current comparison.
Databricks
- AI agent quickstart on Azure Databricks
- Create and manage AI agents on Azure Databricks
- Author an AI agent and deploy it on Databricks Apps
- Databricks Apps
- Declarative Automation Bundles
- Databricks Foundation Model APIs
- External models on Azure Databricks
- ai_parse_document
- Features with limited regional availability
- Azure Geographies: Data residency
- Azure Databricks Jobs
- Model Context Protocol on Databricks
- AI Gateway
Foundry
- What is Microsoft Foundry
- What is Microsoft Foundry Agent Service
- What is Microsoft Foundry Control Plane
- Get started with Microsoft Foundry AI templates
- Microsoft Foundry SDKs and endpoints
- Foundry workflows
- Hosted agents
- Agent tools overview for Microsoft Foundry Agent Service
- What is Foundry IQ
- File Search tool
- Guardrails and controls overview in Microsoft Foundry
- Publish agents to Microsoft 365 Copilot and Microsoft Teams
- Publish an agent as a digital worker in Agent 365
- Content Understanding in Azure AI
- Microsoft Dataverse overview
- Microsoft Defender XDR portal
- Microsoft Purview overview
M365 Copilot
- Agents for Microsoft 365 Copilot
- Declarative agents for Microsoft 365 Copilot
- Declarative agent schema
- Agent flows in Copilot Studio
- Agent Builder
- Custom engine agents
- Copilot connectors
- Plugins for Microsoft 365 Copilot
- Build MCP plugins for Microsoft 365 Copilot
- Overview of Microsoft Copilot Studio
- Microsoft 365 Copilot app overview
- Licensing and cost considerations for Copilot extensibility options