ms-ai-architect/skills/ms-ai-advisor/references/copilot-extensibility/copilot-connectors-design-patterns.md
Kjell Tore Guttormsen 781d98f62f chore(privacy): scrub real-org references from plugin internals (phase 2)
Same bulk replacement applied to plugin-internal KB, examples, fixtures,
tests, and docs. Real organization names, persona names, internal system
identifiers, and domain-specific terms replaced with fictional generic
public-sector entity (DDT) and generic terminology.

Scope:
- okr/ — examples, governance, framework, integrations, sources
- ms-ai-architect/ — KB references (engineering, governance, security,
  infrastructure, advisor), tests/fixtures, agents, docs
- linkedin-thought-leadership/ — voice samples, network-builder,
  examples (genericized identifying headlines to "[your organization]")
- llm-security/ — research notes, scan report

Manual genericization beyond bulk replace:
- okr SKILL.md "Primary user / Domain" — generic Norwegian public sector
- linkedin-voice SKILL.md headline placeholder
- network-builder.md headline placeholder
- high-engagement-posts.md voice sample employer line + hashtag

Phase 3 (factual-attribution review) remains: a few KB files attribute
publicly known transport-sector docs/datasets (e.g. håndbok V440, NVDB)
to the fictional DDT after bulk replace. Needs manual semantic review
to either remove or restore correct citation without re-introducing
affiliation references.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-03 04:28:15 +02:00

23 KiB

Copilot Connectors - Implementation Patterns

Last updated: 2026-04 | Verified: MCP 2026-04-10 Status: GA (Synced Connectors) / Early Access Preview (Federated Connectors) Category: Copilot Extensibility & Integration


Introduksjon

Copilot-koblinger (tidligere Microsoft Graph-koblinger) er Microsofts primære mønster for å bringe eksterne data inn i Microsoft 365-økosystemet. De utvider rekkevidden til Microsoft 365 Copilot, Microsoft Search, Context IQ og andre intelligente opplevelser ved å koble til data utover Microsoft 365-grensene.

Det finnes to fundamentalt forskjellige arkitekturer for Copilot-koblinger: synced connectors (synkroniserte koblinger) som indekserer data inn i Microsoft Graph, og federated connectors (fødererte koblinger) som henter data i sanntid uten indeksering. Valget mellom disse påvirker sikkerhetsmodellen, ytelsen, kostnadene og brukeropplevelsen.

I tillegg finnes det spesialiserte implementeringsmønstre for integrasjon med Copilot Studio (via Power Platform connectors) og for people data-scenarier. Denne kunnskapsreferansen dekker alle implementeringsmønstrene med fokus på når hvert mønster passer, tekniske kompromisser, og offentlig sektor-konsekvenser.

Kjernekomponenter

Connector-typer og forskjeller

Feature Synced Connectors Federated Connectors (Preview) Power Platform Connectors
Data-håndtering Indeksert i Microsoft Graph Hentet live uten indeksering Brukt via Power Platform actions
Tilgangsmodell Organisasjonsnivå (org-wide) Brukernivå (per-user) Agent-nivå (Copilot Studio)
Oppsett Admin konfigurerer Admin enabler, brukere autentiserer Maker/developer konfigurerer
Status GA (Generally Available) Early Access Preview (Frontier) GA
Bruksscenario Bred indeksering, static data Sensitiv, dynamisk, live data Low-code bot-integrasjon
Skriveoperasjoner Nei (read-only) Nei (read-only) Ja (via actions)
Custom connector-støtte Ja (Graph API, SDK) Nei (kun Microsoft-leverte) Ja (OpenAPI, custom code)
Kostnadsmodell Item quota (indekserte items) Ukjent (preview) Per API-kall (variable)

Microsoft 365 Copilot Connector-arkitektur

Synced connector-flyt:

Eksterne data → Connector (crawl/index) → Microsoft Graph → Copilot/Search

Federated connector-flyt:

Brukerforespørsel → Copilot → MCP API → Ekstern kilde (live) → Respons til Copilot

Power Platform connector-flyt:

Brukerforespørsel → Copilot Studio agent → Power Platform connector → ISV API → Respons til agent

Byggeklosser for custom synced connector

Fire obligatoriske steg (via Microsoft Graph API):

  1. Entra ID app-registrering Oppretter applikasjonidentitet med nødvendige Graph-tillatelser (ExternalConnection.ReadWrite.OwnedBy, ExternalItem.ReadWrite.OwnedBy).

  2. External connection Logisk container for eksterne data. Krever unikt ID, navn og beskrivelse.

  3. Schema-registrering Definerer strukturen på eksterne data (properties, attributter, semantic labels). Langvarig operasjon (async).

  4. Item ingestion Transformerer og sender eksterne items til Microsoft Graph med ACL (access control list).

Semantic labels og property attributes

Semantic labels (viktige for ranking og relevans):

Label Formål Påkrevd for
title Dokumenttittel Search, Context IQ, Copilot
url Link til originaldokument Search, Context IQ
iconUrl Ikon for dokument Context IQ
authors Forfatter(e) Search relevance
lastModifiedBy Sist endret av Search, audit
lastModifiedDateTime Sist endret Ranking, freshness

Property attributes (søkefunksjonalitet):

Attribute Beskrivelse Eksempel
isSearchable Fulltext-søkbar Dokumentinnhold
isQueryable Kan filtreres/sorteres Dato, forfatter
isRetrievable Vises i resultater Tittel, sammendrag
isRefinable Faceted search Kategori, avdeling

Arkitekturmønstre

Mønster 1: Synced Connector (Broad Indexing)

Beskrivelse: Crawl og indekser eksterne data inn i Microsoft Graph for bred søkbarhet og Copilot-resonnering. Dataen blir indeksert én gang og er deretter tilgjengelig for alle Microsoft 365-opplevelser.

Når å bruke:

  • Du har statiske eller semi-statiske data (dokumenter, policies, FAQs, knowledge bases)
  • Dataene er ikke svært sensitive (kan indekseres i Microsoft 365)
  • Du trenger høy ytelse (Copilot trenger ikke vente på ekstern API)
  • Du vil samle data fra flere kilder til én søkeindeks
  • Du har tilstrekkelig item quota (lisensiert)

Fordeler:

  • Rask responstid (data er pre-indeksert)
  • Rik semantic search med AI-resonnering
  • Støtter full-text search, facets, ranking
  • Enhetlig brukeropplevelse på tvers av M365-apps
  • Ingen run-time avhengighet av kildesystemet

Ulemper:

  • Data kan bli utdatert mellom crawls (latency)
  • Krever item quota (kostnad per 1000 items)
  • Dataen kopieres inn i Microsoft 365 (data residency-bekymringer)
  • Kompleks ACL-modellering hvis kilde har finkornet tilgangskontroll

Implementering:

// Steg 1: Opprett connection
var connection = new ExternalConnection
{
    Id = "contoso-policies",
    Name = "Contoso Internal Policies",
    Description = "Company policies and procedures"
};
await graphClient.External.Connections.PostAsync(connection);

// Steg 2: Registrer schema
var schema = new Schema
{
    BaseType = "microsoft.graph.externalItem",
    Properties = new List<Property>
    {
        new Property { Name = "title", Type = PropertyType.String, IsSearchable = true },
        new Property { Name = "url", Type = PropertyType.String },
        new Property { Name = "lastModified", Type = PropertyType.DateTime, IsQueryable = true }
    }
};
await graphClient.External.Connections["contoso-policies"].Schema.PatchAsync(schema);

// Steg 3: Ingest items
var item = new ExternalItem
{
    Id = "policy-001",
    Acl = new List<Acl>
    {
        new Acl { Type = AclType.Everyone, Value = "everyone", AccessType = AccessType.Grant }
    },
    Properties = new
    {
        title = "Remote Work Policy",
        url = "https://intranet.contoso.com/policies/remote-work",
        lastModified = DateTime.UtcNow
    },
    Content = new ExternalItemContent
    {
        Type = ExternalItemContentType.Text,
        Value = "Full policy text here..."
    }
};
await graphClient.External.Connections["contoso-policies"].Items[item.Id].PutAsync(item);

Beslutningsveiledning:

  • Bruk hvis data endrer sjeldnere enn hver time
  • Bruk hvis du trenger faceted search eller ranking
  • Ikke bruk for sanntidsdata (stock prices, live inventory)
  • Ikke bruk hvis data ikke kan forlate kildesystemet (legal/compliance)

Mønster 2: Federated Connector (Real-Time Access)

Beskrivelse: Koble til eksterne data i sanntid via Model Context Protocol (MCP) uten å indeksere innhold i Microsoft 365. Data forblir i kildesystemet og hentes kun når brukeren spør.

Når å bruke:

  • Du har svært sensitive data (må ikke indekseres i M365)
  • Du trenger sanntidsdata (live priser, inventory, status)
  • Du har dynamiske data som endrer kontinuerlig
  • Du vil minimere data residency-risiko (data forblir i kilden)
  • Du har strenge compliance-krav (GDPR, Schrems II)

Fordeler:

  • Data forblir i kildesystemet (data sovereignty)
  • Alltid oppdatert (ingen stale data)
  • Ingen item quota-kostnad (ingen indeksering)
  • Enklere ACL-modell (kildesystemet håndterer autorisasjon)
  • OAuth 2.0-basert brukernivå-autentisering

Ulemper:

  • Krever live-tilkobling til kildesystemet (latency + availability)
  • Begrenset til Microsoft-leverte connectors (ingen custom)
  • Ingen faceted search eller avansert ranking
  • Kun i Early Access Preview (ikke produksjonsgaranti)
  • Potensielt dyrere (per-query API-kall til kilde)

Arkitektur:

[M365 Copilot]
    ↓ (brukerforespørsel)
[MCP Protocol]
    ↓ (OAuth 2.0 token)
[Federated Connector]
    ↓ (API-kall)
[Ekstern datakilde]
    ↓ (live data)
[Respons til Copilot]

Tekniske krav:

  • Ekstern kilde må støtte OAuth 2.0
  • API må returnere data i MCP-kompatibelt format
  • Admin må enable connector i M365 admin center
  • Brukere må autentisere individuelt

Beslutningsveiledning:

  • Bruk for PII, financial data, health records
  • Bruk hvis data endrer kontinuerlig (live dashboards)
  • Bruk hvis kildesystemet allerede har robust ACL
  • Ikke bruk hvis du trenger historical search eller trending
  • Ikke bruk hvis kildesystemet har lav availability (< 99%)

Mønster 3: Power Platform Connector (Low-Code Agents)

Beskrivelse: Bruk Power Platform custom connectors til å utvide Copilot Studio-agenter med ISV-data og actions. Lavkodemønster for rask integrasjon med eksisterende APIer.

Når å bruke:

  • Du bygger Copilot Studio-agenter (ikke M365 Copilot-plugins)
  • Du trenger read + write-operasjoner (ikke bare søk)
  • Du har REST APIer med OpenAPI-spec (swagger)
  • Du vil ha rask time-to-value (low-code)
  • Du trenger workflow-integrasjon (Power Automate flows)

Fordeler:

  • Lavkode-utvikling (visual designer)
  • Støtter både read og write operations
  • 500+ forhåndsbygde connectors tilgjengelig (standard og premium)
  • Kan bruke Power Automate flows som actions
  • Maker-provided credentials: Maker kan konfigurere connector med egne credentials — brukere behøver ikke autentisere seg individuelt

Ulempler:

  • Kun for Copilot Studio (ikke M365 Copilot direkte)
  • Krever Power Platform-lisens (standard connectors inkludert, premium connectors krever plan)
  • Ikke fullt integrert med M365 Search
  • Lavere semantic search-kvalitet enn Graph connectors
  • SSO-begrensning (Verified): SSO støttes IKKE for connectors når agenten bruker custom Active Directory-autentisering og er deployert til Microsoft Teams — brukere må autentisere manuelt

Connector-typer:

  • Standard connectors: Inkludert i alle Copilot Studio-planer (f.eks. SharePoint, Office 365)
  • Premium connectors: Krever spesifikk Copilot Studio-plan (f.eks. Salesforce, ServiceNow)
  • Custom connectors: Bygd fra egne OpenAPI-spesifikasjoner

Implementering:

# OpenAPI spec for custom connector
openapi: 3.0.0
info:
  title: Contoso CRM Connector
  version: 1.0.0
paths:
  /customers/{id}:
    get:
      summary: Get customer details
      operationId: GetCustomer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Customer data
          content:
            application/json:
              schema:
                type: object
                properties:
                  name: { type: string }
                  email: { type: string }
                  status: { type: string }

Copilot Studio-integrasjon:

  1. Opprett custom connector i Power Apps (fra OpenAPI)
  2. Legg til connector som "tool" i Copilot Studio agent
  3. Konfigurer authentication (OAuth, API key, eller maker credentials)
  4. Test action i agent-dialog

Beslutningsveiledning:

  • Bruk for chat bots med business logic
  • Bruk hvis du allerede har Power Platform
  • Bruk for workflows (create ticket, update record)
  • Ikke bruk for M365 Copilot-extensibility (bruk Graph connector)
  • Ikke bruk kun for read-only search (synced connector er bedre)

Mønster 4: Copilot Connector for People Data

Beskrivelse: Spesialiserte connectors for å berike profiler i Microsoft 365 med HR-data fra eksterne systemer (Workday, SAP SuccessFactors, etc.). Unifier people-data på tvers av kilder.

Når å bruke:

  • Du vil berike M365-profiler med HR-data
  • Du har autoritativ people data i eksternt system
  • Du trenger unified identity view (org chart, skills, location)
  • Du vil forbedre Copilot-resonnering om folk

Fordeler:

  • Oppdaterer profile cards i M365
  • Forbedrer Org Explorer
  • Bedre Copilot-svar på "who"-spørsmål
  • Synkronisert view (data forblir authoritative i kilde)

Ulempler:

  • Kun for people data (ikke dokumenter eller andre entiteter)
  • Krever identity mapping (Entra ID ↔ HR system)

Beslutningsveiledning:

  • Bruk hvis HR-system har mer data enn Entra ID
  • Ikke bruk for non-people data

Beslutningsveiledning

Velg riktig connector-type

Har du sensitiv data som ikke kan indekseres i M365?
    Ja → Federated Connector
    Nei → ↓

Trenger du write operations eller workflows?
    Ja → Power Platform Connector
    Nei → ↓

Er data people-centric (HR, skills, org chart)?
    Ja → People Data Connector
    Nei → ↓

Er data statisk eller semi-statisk?
    Ja → Synced Connector
    Nei → Federated Connector (hvis live data)

Vanlige feil

Feil Konsekvens Løsning
Indekserer sensitive PII i synced connector GDPR-brudd, data residency-risiko Bruk federated connector
Bruker federated for static data Dårlig ytelse, høye API-kostnader Bruk synced connector
Glemmer å sette semantic labels Dårlig ranking, ingen Context IQ Legg til title, url, iconUrl
Feil ACL-modellering Brukere ser data de ikke skal Test ACL med ulike brukerroller
Ikke planlegger for item quota Løper tom for quota Kjøp mer quota eller prioriser innhold

Røde flagg

⚠️ Data residency-risiko: Synced connectors kopierer data til Microsoft Graph. Hvis kildesystemet er on-prem eller i annet land, kan dette bryte compliance.

⚠️ Latency i federated connectors: Hvis kildesystemet har >500ms responstid, vil Copilot oppleves treg.

⚠️ Bing Custom Search i Copilot Studio: Bing Custom Search kan brukes som knowledge source i Copilot Studio, men er IKKE tilgjengelig i generativ modus (generative answers node). For Bing Custom Search: bruk klassisk modus med eksplisitt generative answers-node i et topic.

⚠️ ACL-kompleksitet: Hvis kildesystemet har finkornet ACL (document-level, paragraph-level), kan det være vanskelig å modellere i Graph connector.

⚠️ Item quota-kostnad: 1 million items koster ~$5000/år (varierer). Plan for volumet.

Integrasjon med Microsoft-stakken

Hvor Copilot connectors brukes

Microsoft-produkt Connector-type Bruksscenario
Microsoft 365 Copilot Synced, Federated Grounding for Copilot-svar (citations)
Microsoft Search Synced Søk på Office.com, Bing at Work, SharePoint
Context IQ (Outlook) Synced Inline suggestions i epost (/)
Copilot Studio Power Platform Custom agents, workflows
Profile cards People Data Berike profilkort med HR-data

Integrasjon med Semantic Kernel

Semantic Kernel kan bruke Graph connectors som data sources for RAG-mønster:

// Semantic Kernel + Graph Connector
var kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(deploymentName, endpoint, apiKey)
    .Build();

// Hent data fra Graph connector via Microsoft Graph API
var graphClient = new GraphServiceClient(credentials);
var searchResults = await graphClient.Search.Query(new SearchRequestBody
{
    Requests = new List<SearchRequest>
    {
        new SearchRequest
        {
            EntityTypes = new List<EntityType> { EntityType.ExternalItem },
            Query = new SearchQuery { QueryString = "remote work policy" },
            From = 0,
            Size = 5
        }
    }
}).PostAsync();

// Bruk resultater som context i Semantic Kernel
var context = string.Join("\n", searchResults.Value[0].HitsContainers[0].Hits.Select(h => h.Summary));
var result = await kernel.InvokePromptAsync($"Basert på dette: {context}\n\nSpørsmål: {userQuestion}");

M365 Copilot + Copilot Studio-kombinasjon

Du kan kombinere:

  • M365 Copilot med synced/federated connectors (for search/grounding)
  • Copilot Studio agent som plugin i M365 Copilot (via Power Platform connector)

Dette gir både search-grounding OG business logic i samme Copilot-opplevelse.

Offentlig sektor (Norge)

GDPR og Schrems II

Synced connectors: Kopierer data til Microsoft Graph (US eller EU-region avhengig av tenant). Dette kan være Schrems II-problematisk hvis kildesystemet er on-prem eller i Norge.

Løsning:

  • Bruk federated connectors hvis data må forbli i Norge
  • Valider at Microsoft 365 tenant er i EU-region (ikke US)
  • Vurder on-prem Graph connector agent (for hybrid)

AI Act-konsekvenser

EU AI Act krever transparens om AI-beslutninger. Copilot connectors må logge:

  • Hvilken connector ble brukt for et svar?
  • Hvilke items ble returnert (audit trail)?
  • Har brukeren tilgang til kildedata?

Microsoft Graph har innebygd audit logging for connector-queries.

Forvaltningsloven §13a (automatiserte vedtak)

Hvis Copilot-svar brukes til vedtak i offentlig sektor, må:

  • Kilde-data være verifiserbar (citations)
  • Copilot-svar ikke være eneste grunnlag (menneske må validere)
  • Synced connectors være bedre enn federated (audit trail i Graph)

Datasuverenitet

Kritisk: Offentlig sektor må verifisere:

  • Hvor er Microsoft Graph datasenteret? (EU vs US)
  • Kan data forlate Norge? (compliance-vurdering)
  • Hvilke Microsoft-underleverandører har tilgang?

Anbefaling for DDT:

  • Synced connectors kun for ikke-sensitive data (public policies, FAQs)
  • Federated connectors for sensitive data (saksdokumenter, brukerdata)
  • On-prem connector agent for høyeste data sovereignty

Kostnad og lisensiering

Synced Connector-kostnader

Komponent Kostnad Basis
Item quota (base) Inkludert 500-10 000 items per M365 Copilot-lisens (varierer)
Ekstra quota ~$5/1000 items/år Per indexed item
Development Gratis Graph API er inkludert i M365-lisenser
Connector agent Gratis Hvis du bruker Microsoft SDK

Estimering:

  • 10 000 policies → ~$50/år (hvis utover base quota)
  • 1 million documents → ~$5000/år

Federated Connector-kostnader

Ingen item quota (ingen indeksering), men:

  • API-kostnader til kildesystem (per query)
  • Latency-kostnad (brukere venter på svar)

Power Platform Connector-kostnader

  • Power Apps/Automate-lisens påkrevd ($20-40/bruker/måned)
  • Premium connectors kan ha ekstra kostnad
  • API-kall til eksternt system (variabelt)

Optimaliseringstips

  1. Synced connectors:

    • Bruk isRetrievable: false for properties som ikke trengs i resultater
    • Crawl kun nødvendige dokument-typer (filtrer ut bilder, store filer)
    • Bruk incremental crawl fremfor full crawl
  2. Federated connectors:

    • Cache API-respons i kildesystem (reduser redundante kall)
    • Implementer rate limiting på kildesystem-API
  3. Power Platform connectors:

    • Bruk "maker-provided credentials" for å unngå per-user auth
    • Kombiner flere API-kall i én action (reduser round-trips)

For arkitekten (Cosmo)

Spørsmål å stille

  1. Data-sensitivitet: "Er dataene sensitive nok til at de ikke kan indekseres i Microsoft 365?" (GDPR, PII, Schrems II)

  2. Data-dynamikk: "Hvor ofte endrer dataene seg? Timer, dager, eller måneder?" (Synced vs Federated)

  3. Tilgangsmodell: "Har kildesystemet finkornet ACL (document-level), eller er det org-wide?" (ACL-kompleksitet)

  4. Integrasjonsmål: "Er målet søk (M365 Copilot) eller workflow (Copilot Studio)?" (Connector-type)

  5. Volumestimering: "Hvor mange items skal indekseres? 1000, 100 000, eller 1 million?" (Quota-planlegging)

  6. Kildesystem-API: "Har kildesystemet REST API med OAuth 2.0?" (Federated/Power Platform feasibility)

  7. Compliance-krav: "Er det juridiske begrensninger på hvor data kan lagres?" (Data residency)

  8. Kostnadsbudsjett: "Hva er budsjettet for item quota og API-kall?" (TCO-analyse)

Fallgruver per modenhetsnivå

Begynner (pilot):

  • Starter med custom connector (komplisert). Start med Microsoft-leverte connectors først.
  • Indekserer alt (quota-sprekk). Start med 100-1000 items.
  • Glemmer å teste ACL. Alltid test med restricted-user.

Middels (produksjon):

  • Ikke planlegger for schema changes. Schema er vanskelig å endre etter deployment.
  • Ikke overvåker crawl failures. Sett opp alerting i M365 admin center.
  • Hardcoder credentials. Bruk Entra ID managed identity eller Key Vault.

Avansert (enterprise-scale):

  • Ikke optimaliserer for latency. Federated connectors må ha <500ms responstid.
  • Ikke planlegger for multi-geo. Hvis organisasjon er i flere land, trenger du multi-geo strategy.
  • Ikke integrerer med Purview. Connector-data må inkluderes i Purview DLP policies.

Anbefalinger per modenhetsnivå

Pilot (1-3 måneder):

  1. Start med synced connector til SharePoint eller knowledge base (Microsoft-levert)
  2. Test med 100-500 items
  3. Valider ACL med 3-5 test-brukere
  4. Mål Copilot-respons-kvalitet (feedback survey)

Produksjon (3-12 måneder):

  1. Bygg custom synced connector til primary line-of-business system
  2. Skalér til 10 000-100 000 items
  3. Implementér incremental crawl (hver time/dag)
  4. Sett opp Purview-integrasjon (DLP, retention)

Enterprise (12+ måneder):

  1. Kombiner synced (documents) + federated (live data)
  2. Integrér med Semantic Kernel for custom RAG
  3. Multi-geo deployment
  4. Custom connector SDK for on-prem sources

Kilder og verifisering

Microsoft Learn (Verified - MCP-research):

Code samples (Verified - MCP):

Konfidensnivå per seksjon:

  • Introduksjon, Kjernekomponenter, Arkitekturmønstre: Verified (fra MCP-research)
  • Offentlig sektor, Kostnad: Baseline (modellkunnskap + Microsoft-prising)
  • Semantic Kernel-integrasjon: Baseline (custom pattern, ikke Microsoft-dokumentert)

Denne referansen er oppdatert basert på Microsoft Learn-dokumentasjon per april 2026. Federated connectors er i preview og kan endre seg før GA. Maker-provided credentials og SSO-begrensninger verifisert MCP 2026-04-10.