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:

  1. Explain why an AI platform technology stack is now needed.
  2. Define the reference architecture that addresses that need.
  3. Show how the reference architecture maps to the main technology options.
  4. 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

  1. Problem statement: Why enterprise AI now requires its own stack view.
  2. Reference architecture: Define the architecture needed to address that problem.
  3. Technology mappings: Map the reference architecture to the main technology options.
  4. 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 domainTypical team focusTypical historical focusRole in the AI tech stack
Data & ML TeamsDatabricks, Azure Synapse, Microsoft FabricData platforms, data engineering, model development, and model servingProvides governed data, model operations, retrieval, and evaluation inputs
Automation TeamsM365 Copilot, Copilot Studio, Power PlatformWorkflows, low-code tooling, business process automation, and copilotsProvides agent experiences, low-code orchestration, and human-in-the-loop process integration
App & Integration TeamsAzure Foundry, Azure Integration ServicesApplication runtime, APIs, integration services, identity, and operational engineeringProvides secure runtime, enterprise actions, channel delivery, and system connectivity
AI Tech StackShared across all threeOften fragmented across separate architecture viewsProvides 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

LayerComponentDescription
Reusable PatternsAgentic WorkflowsReusable multi-step agent patterns that coordinate tools, branching, approvals, or agent-to-agent execution.
Reusable PatternsConversational AgentsReusable chat-first assistant patterns with dialogue handling, context retention, and response generation.
Experience ChannelsCollaborationShared work surfaces such as team chat, meetings, or collaboration hubs where agents operate.
Experience ChannelsMessagingAsynchronous message surfaces such as email or threaded messaging where AI can read, draft, or respond.
Experience ChannelsWeb ExperienceBrowser-based application surfaces for custom AI applications, copilots, or chat experiences.
Experience ChannelsMobile ExperienceMobile application surfaces for AI experiences delivered through phone or tablet apps.
Experience ChannelsProductivity AppsEmbedded AI experiences inside productivity or business applications such as document, spreadsheet, presentation, inbox, or line-of-business tools.
Experience ChannelsDesktop ExperienceDesktop-native application or operating-system surfaces where AI is delivered outside the browser.
Builder ToolsLow-code BuildVisual or form-based authoring for agents and automations with minimal code.
Builder ToolsConfig-Code BuildManifest, template, YAML, or package-driven authoring where behaviour is defined mostly through managed configuration.
Builder ToolsPro-code BuildSDK, framework, or API-driven engineering where teams own custom logic, testing, and integration code.
Model CapabilitiesCustom ModelsNative support for training, fine-tuning, registering, and serving organisation-specific models or model variants.
Model CapabilitiesGenAI PrebuiltNative access to managed general-purpose foundation or chat models without custom training.
Model CapabilitiesVisionAI PrebuiltNative access to managed image or video analysis, generation, or multimodal vision services.
Model CapabilitiesVoiceAI PrebuiltNative access to managed speech recognition, synthesis, real-time voice, or telephony AI services.
Model CapabilitiesDocAI PrebuiltNative access to managed OCR, layout, extraction, classification, or document reasoning services.
Orchestration ServicesRuntime ServicesNative hosting and execution layer for agents, APIs, web backends, or workflow runtimes.
Orchestration ServicesProvider StrategyNative controls for model selection, routing, fallback, traffic management, or multi-provider governance.
Orchestration ServicesSafety ControlsNative guardrails for content filtering, policy enforcement, prompt protection, or safe tool use.
Orchestration ServicesData PipelinesNative structured data ingestion, orchestration, transformation, and delivery services for tables and streams.
Orchestration ServicesContent PipelinesNative unstructured content ingestion, parsing, chunking, indexing, and retrieval-preparation services.
Knowledge & ToolsAgent ProtocolsNative support for standard agent-to-tool or agent-to-agent protocols such as MCP or A2A.
Knowledge & ToolsEnterprise ActionsNative mechanisms that expose enterprise APIs, functions, connectors, or automations to agents.
Knowledge & ToolsData PlatformNative governed platform services for analytics, warehousing, semantic access, operational business data, or data engineering.
Knowledge & ToolsAI StorageNative stores for vector indexes, memory, conversation state, files, or AI operational datasets.
Platform ControlsIdentity & SecretsNative identity, authentication, authorization, token, and secret handling used by the platform.
Platform ControlsMonitoring & EvalsNative tracing, logs, metrics, experimentation, and quality evaluation for AI solutions.
Platform ControlsLifecycle & DeliveryNative packaging, versioning, deployment, promotion, and environment delivery capabilities.
Platform ControlsGovernance & AuditNative RBAC, policy, compliance, audit, and network-governance controls.
Platform ControlsFinOps ControlsNative 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

LayerComponentReferencesAlignmentComments
Reusable PatternsAgentic WorkflowsFoundry AI solution templates, NeuralOps IPtrueNeuralOps IP for Agentic Workflows.
Reusable PatternsConversational AgentsCopilot Studio agent templates, NeuralOps IPtrueNeuralOps IP for Conversational Agents.
Experience ChannelsCollaborationMicrosoft TeamstrueNeuralOps IP for Teams integration.
Experience ChannelsMessagingOutlook / Exchange Online emailtrueNeuralOps IP for Outlook integration.
Experience ChannelsWeb ExperienceTeams web client, NeuralOps IPtrueNeuralOps IP for Web Experience.
Experience ChannelsMobile ExperienceTeams mobile, NeuralOps IPtrueNeuralOps IP for Mobile Experience.
Experience ChannelsProductivity AppsMicrosoft 365 AppspartialPartial because this layer is delivered through adjacent Microsoft 365 applications rather than a NeuralOps-native experience surface.
Experience ChannelsDesktop ExperienceWindows desktop appspartialPartial because this layer relies on adjacent Windows or Microsoft 365 desktop surfaces rather than a NeuralOps-native desktop shell.
Builder ToolsLow-code BuildMicrosoft Copilot StudiopartialPartial because low-code authoring sits in adjacent Copilot Studio rather than in a native NeuralOps builder surface.
Builder ToolsConfig-Code BuildFoundry Agent Service, NeuralOps IPtrueNeuralOps IP for Config-Code Build.
Builder ToolsPro-code BuildMicrosoft Foundry SDKs, NeuralOps IPtrueNeuralOps IP for Pro-code Build.
Model CapabilitiesCustom ModelsFoundry Model Catalog, Fine-Tuningtrue
Model CapabilitiesGenAI PrebuiltAzure OpenAI, Foundry Model Catalogtrue
Model CapabilitiesVisionAI PrebuiltAzure AI Visiontrue
Model CapabilitiesVoiceAI PrebuiltAzure AI Speech, Azure OpenAI Realtimetrue
Model CapabilitiesDocAI PrebuiltAzure AI Document Intelligencetrue
Orchestration ServicesRuntime ServicesFoundry Agent Service, Azure Functions, Azure App Servicetrue
Orchestration ServicesProvider StrategyFoundry Model Catalog, Azure OpenAItrue
Orchestration ServicesSafety ControlsAzure AI Content SafetytrueNeuralOps IP for Safety Controls.
Orchestration ServicesData PipelinesDatabricks Lakeflow Jobs, Azure Data Factory, Fabric Data FactorypartialPartial because structured data pipelines are provided by connected specialist platforms rather than a NeuralOps-native data pipeline layer.
Orchestration ServicesContent PipelinesAzure Functions, AI Search indexers, NeuralOps IPtrue
Knowledge & ToolsAgent ProtocolsMCP-compatible tool integration, NeuralOps IPtrueNeuralOps IP for Agent Protocols.
Knowledge & ToolsEnterprise ActionsAzure Functions, enterprise APIs, NeuralOps IPtrue
Knowledge & ToolsData PlatformDatabricks, DataversepartialPartial 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 & ToolsAI StorageCosmos DB, Blob Storagetrue
Platform ControlsIdentity & SecretsEntra ID, Key Vaulttrue
Platform ControlsMonitoring & EvalsApplication Insights, Azure Monitor, Foundry Control PlanetrueNeuralOps IP for Monitoring & Evals, with Foundry Control Plane available as an adjacent fleet observability and evaluation surface where adopted.
Platform ControlsLifecycle & DeliveryGitHub Actions, Biceptrue
Platform ControlsGovernance & AuditAzure Policy, Microsoft Entra audit logs, Microsoft Purview, Microsoft Defender, Microsoft Agent 365trueNeuralOps 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 ControlsFinOps ControlsCost Management, Budgetstrue

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

LayerComponentReferencesAlignmentComments
Reusable PatternsAgentic WorkflowsDatabricks Apps templatespartialPartial 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 PatternsConversational AgentsConversational agent templates in AppspartialPartial 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 ChannelsCollaborationNAfalseDatabricks does not provide a native collaboration surface in this comparison.
Experience ChannelsMessagingNAfalseDatabricks does not provide a native messaging surface in this comparison.
Experience ChannelsWeb ExperienceDatabricks AppspartialPartial 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 ChannelsMobile ExperienceNAfalseDatabricks does not provide a native mobile end-user channel in this comparison.
Experience ChannelsProductivity AppsNAfalseDatabricks does not provide a native productivity-suite surface in this comparison.
Experience ChannelsDesktop ExperienceNAfalseDatabricks does not provide a native desktop shell in this comparison.
Builder ToolsLow-code BuildAI PlaygroundpartialPartial 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 ToolsConfig-Code BuildDatabricks Apps, Declarative Automation BundlespartialPartial 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 ToolsPro-code BuildDatabricks SDK, Databricks CLI, Agent FrameworkpartialPartial because the current Databricks CLI and SDK documentation both remain preview or beta scoped.
Model CapabilitiesCustom ModelsMLflow, custom model servingtrue
Model CapabilitiesGenAI PrebuiltFoundation Model APIstrue
Model CapabilitiesVisionAI PrebuiltNAfalseThis comparison does not identify a first-class Databricks-native prebuilt vision capability.
Model CapabilitiesVoiceAI PrebuiltNAfalseThis comparison does not identify a first-class Databricks-native prebuilt voice capability.
Model CapabilitiesDocAI Prebuiltai_parse_document in Public PreviewpartialPartial 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 ServicesRuntime ServicesDatabricks Apps, Agent Framework deploymentspartialPartial 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 ServicesProvider StrategyFoundation Model APIs, External ModelspartialPartial 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 ServicesSafety ControlsAI Gateway guardrails (Beta)partialPartial because AI Gateway is explicitly Beta.
Orchestration ServicesData PipelinesDatabricks Jobs, Lakeflowtrue
Orchestration ServicesContent PipelinesAuto Loader, ai_parse_document in Public PreviewpartialPartial 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 & ToolsAgent ProtocolsExternal MCP, Managed MCP in Public PreviewpartialPartial because managed MCP servers are in Public Preview.
Knowledge & ToolsEnterprise ActionsMCP tools, Unity Catalog functions in Public PreviewpartialPartial because Unity Catalog functions are in Public Preview and have compute and networking constraints.
Knowledge & ToolsData PlatformDelta Lake, Unity Catalog, Databricks SQLtrue
Knowledge & ToolsAI StorageUnity Catalog Volumestrue
Platform ControlsIdentity & SecretsOAuth, service principals, Secret Scopestrue
Platform ControlsMonitoring & EvalsMLflow tracing, data quality monitoringtrue
Platform ControlsLifecycle & DeliveryDatabricks CLI, Declarative Automation BundlespartialPartial because the current Databricks CLI documentation is Public Preview.
Platform ControlsGovernance & AuditUnity Catalog, Audit Logstrue
Platform ControlsFinOps Controlssystem.billing.usagetrue

Geography note: ai_parse_document is 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

LayerComponentReferencesAlignmentComments
Reusable PatternsAgentic WorkflowsFoundry workflowstrue
Reusable PatternsConversational AgentsPrompt agentstrue
Experience ChannelsCollaborationPublished to TeamspartialPartial because Teams is a publishing target rather than a Foundry-native collaboration surface, and published agents currently do not support streaming or citations.
Experience ChannelsMessagingNAfalseFoundry does not provide a native messaging channel in this comparison.
Experience ChannelsWeb ExperiencePublished agent app, Agent ApplicationpartialPartial 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 ChannelsMobile ExperienceNAfalseFoundry does not provide a native mobile end-user channel in this comparison.
Experience ChannelsProductivity AppsPublished to M365 Copilot, Copilot Agents, Dynamics 365 AgentspartialPartial 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 ChannelsDesktop ExperienceNAfalseFoundry does not provide a native desktop shell in this comparison.
Builder ToolsLow-code BuildFoundry portal, Prompt agentstrue
Builder ToolsConfig-Code BuildWorkflow YAML, agent definitionstrue
Builder ToolsPro-code BuildFoundry SDKs, REST API, Hosted agentstrueFoundry 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 CapabilitiesCustom ModelsFoundry Model Catalog, Fine-Tuningtrue
Model CapabilitiesGenAI PrebuiltFoundry Model Catalog, Azure OpenAItrue
Model CapabilitiesVisionAI PrebuiltAzure AI VisionfalseFalse because the capability sits in an adjacent Azure AI service rather than in Foundry itself.
Model CapabilitiesVoiceAI PrebuiltAzure AI Speech, Azure OpenAI Realtime, Voice Live / Voice Native Agents (Public Preview)partialPartial 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 CapabilitiesDocAI PrebuiltAzure AI Document IntelligencefalseFalse because the capability sits in an adjacent Azure AI service rather than in Foundry itself.
Orchestration ServicesRuntime ServicesAgent runtime, Hosted agents in previewpartialPartial 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 ServicesProvider StrategyFoundry Model Catalog, Azure OpenAItrue
Orchestration ServicesSafety ControlsFoundry Guardrails for agents (in preview), content filterspartialPartial because agent guardrails remain preview-scoped.
Orchestration ServicesData PipelinesNAfalseFoundry does not provide a first-class native data pipeline layer in this comparison.
Orchestration ServicesContent PipelinesFoundry IQ, File Search, Content UnderstandingpartialPartial 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 & ToolsAgent ProtocolsMCP, A2A in previewpartialPartial because A2A support remains preview-scoped even though MCP support is documented as first-class.
Knowledge & ToolsEnterprise ActionsFunction calling, OpenAPI tooltrue
Knowledge & ToolsData PlatformDataversepartialPartial 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 & ToolsAI StorageKnowledge bases, vector storestrue
Platform ControlsIdentity & SecretsEntra ID, agent identitytrue
Platform ControlsMonitoring & EvalsAgent tracing, Application Insights, Foundry Evals, Foundry Control PlanetrueFoundry 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 ControlsLifecycle & DeliveryVersioning, publishing, SDK/RESTtrue
Platform ControlsGovernance & AuditRBAC, Azure Policy, Foundry Control Plane, Microsoft Purview, Microsoft Defender, private networking, Microsoft Agent 365partialFoundry 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 ControlsFinOps ControlsAzure Cost Managementtrue

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

LayerComponentReferencesAlignmentComments
Reusable PatternsAgentic WorkflowsCopilot Studio agent flowstrue
Reusable PatternsConversational AgentsDeclarative agent patternstrue
Experience ChannelsCollaborationTeamstrue
Experience ChannelsMessagingOutlooktrue
Experience ChannelsWeb ExperienceCopilot Chattrue
Experience ChannelsMobile ExperienceMicrosoft 365 Copilot app (mobile)true
Experience ChannelsProductivity AppsWord, Excel, PowerPoint, Copilot Agents, Dynamics 365 agentstrueIncludes both Microsoft 365 productivity-app surfaces and Dataverse-backed Dynamics 365 agent experiences.
Experience ChannelsDesktop ExperienceMicrosoft 365 Copilot app (desktop)true
Builder ToolsLow-code BuildCopilot Studio, Agent Buildertrue
Builder ToolsConfig-Code BuildApp manifest, declarative agent manifestfalseFalse because this comparison now treats M365 Copilot as a low-code-first platform rather than a first-class config-code build surface.
Builder ToolsPro-code BuildAgents SDK, Agents Toolkit, Copilot APIsfalseFalse because the pro-code tooling supports extensibility around M365 Copilot rather than a first-class M365 Copilot-native build mode.
Model CapabilitiesCustom ModelsExternal custom engine modelspartialPartial because custom models are provided through external custom engine agents rather than native M365 Copilot model hosting.
Model CapabilitiesGenAI PrebuiltM365 Copilot, Microsoft-managed modelstrue
Model CapabilitiesVisionAI PrebuiltNAfalseM365 Copilot does not provide a first-class native prebuilt vision capability in this comparison.
Model CapabilitiesVoiceAI PrebuiltNAfalseM365 Copilot does not provide a first-class native prebuilt voice capability in this comparison.
Model CapabilitiesDocAI PrebuiltNAfalseRetrieval and grounding over M365 content is not the same as DocAI extraction or understanding.
Orchestration ServicesRuntime ServicesCopilot orchestrator, declarative agentstrue
Orchestration ServicesProvider StrategyMicrosoft-managed subset onlypartialPartial because M365 Copilot is limited to a small subset of Microsoft-managed models rather than a broader native provider-routing strategy.
Orchestration ServicesSafety ControlsM365 security, compliance, Responsible AItrue
Orchestration ServicesData PipelinesNAfalseAgent flows support automation but do not provide native structured data pipelines for this layer.
Orchestration ServicesContent PipelinesSharePoint/OneDrive, Copilot connectors, Graph grounding sourcestrue
Knowledge & ToolsAgent ProtocolsMCP via plugins (in public preview)partialPartial because MCP plugins are explicitly in public preview.
Knowledge & ToolsEnterprise ActionsPluginstrue
Knowledge & ToolsData PlatformDataversepartialPartial because the governed business-data platform is provided through Dataverse and Power Platform rather than through Microsoft 365 workload storage itself.
Knowledge & ToolsAI StorageSharePoint, OneDrive, mailboxestrue
Platform ControlsIdentity & SecretsEntra IDtrue
Platform ControlsMonitoring & EvalsCopilot Analyticstrue
Platform ControlsLifecycle & DeliveryApp package, tenant deploymenttrue
Platform ControlsGovernance & AuditPurview, Compliance Centertrue
Platform ControlsFinOps ControlsMicrosoft 365 Copilot licensing, Copilot Studio meterstrue

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.


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.

---
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

  1. Start with the NeuralOps-aligned component for each part of the reference architecture.
  2. If the NeuralOps alignment is only partial or false, use the Databricks-aligned component where Databricks provides first-class coverage.
  3. If Databricks is also only partial or false, 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 componentRecommended primary technologyWhy it falls outside the default NeuralOps selection
Productivity AppsM365 Copilot, Copilot Agents, and Dynamics 365 AgentsMicrosoft 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 ExperienceM365 CopilotDesktop-native end-user experience is better provided through the Microsoft 365 Copilot app than by extending the broader platform composition layer.
Low-code BuildM365 Copilot with Copilot StudioLow-code authoring is a clearer fit for Copilot Studio and Agent Builder than for the current NeuralOps or Databricks patterns.
Data PipelinesDatabricksStructured data engineering and lakehouse-centred orchestration remain a stronger specialist fit in Databricks than in the broader platform baseline.
Data PlatformDatabricks with DataverseGoverned 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

Foundry

M365 Copilot