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>
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):
-
Entra ID app-registrering Oppretter applikasjonidentitet med nødvendige Graph-tillatelser (
ExternalConnection.ReadWrite.OwnedBy,ExternalItem.ReadWrite.OwnedBy). -
External connection Logisk container for eksterne data. Krever unikt ID, navn og beskrivelse.
-
Schema-registrering Definerer strukturen på eksterne data (properties, attributter, semantic labels). Langvarig operasjon (async).
-
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:
- Opprett custom connector i Power Apps (fra OpenAPI)
- Legg til connector som "tool" i Copilot Studio agent
- Konfigurer authentication (OAuth, API key, eller maker credentials)
- 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
-
Synced connectors:
- Bruk
isRetrievable: falsefor properties som ikke trengs i resultater - Crawl kun nødvendige dokument-typer (filtrer ut bilder, store filer)
- Bruk incremental crawl fremfor full crawl
- Bruk
-
Federated connectors:
- Cache API-respons i kildesystem (reduser redundante kall)
- Implementer rate limiting på kildesystem-API
-
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
-
Data-sensitivitet: "Er dataene sensitive nok til at de ikke kan indekseres i Microsoft 365?" (GDPR, PII, Schrems II)
-
Data-dynamikk: "Hvor ofte endrer dataene seg? Timer, dager, eller måneder?" (Synced vs Federated)
-
Tilgangsmodell: "Har kildesystemet finkornet ACL (document-level), eller er det org-wide?" (ACL-kompleksitet)
-
Integrasjonsmål: "Er målet søk (M365 Copilot) eller workflow (Copilot Studio)?" (Connector-type)
-
Volumestimering: "Hvor mange items skal indekseres? 1000, 100 000, eller 1 million?" (Quota-planlegging)
-
Kildesystem-API: "Har kildesystemet REST API med OAuth 2.0?" (Federated/Power Platform feasibility)
-
Compliance-krav: "Er det juridiske begrensninger på hvor data kan lagres?" (Data residency)
-
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):
- Start med synced connector til SharePoint eller knowledge base (Microsoft-levert)
- Test med 100-500 items
- Valider ACL med 3-5 test-brukere
- Mål Copilot-respons-kvalitet (feedback survey)
Produksjon (3-12 måneder):
- Bygg custom synced connector til primary line-of-business system
- Skalér til 10 000-100 000 items
- Implementér incremental crawl (hver time/dag)
- Sett opp Purview-integrasjon (DLP, retention)
Enterprise (12+ måneder):
- Kombiner synced (documents) + federated (live data)
- Integrér med Semantic Kernel for custom RAG
- Multi-geo deployment
- Custom connector SDK for on-prem sources
Kilder og verifisering
Microsoft Learn (Verified - MCP-research):
- Microsoft 365 Copilot connectors overview — Authoritative oversikt over connector-typer
- Work with the Copilot connectors API — Graph API-detaljer
- Search and retrieval patterns (Copilot Studio) — Arkitekturmønstre
- Power Platform Connectors in Copilot Studio — Low-code connector-integrasjon
- Copilot connectors for people data — People data-spesialisering
- Federated connectors overview — MCP-baserte connectors (preview)
Code samples (Verified - MCP):
- Microsoft Graph connector samples — TypeScript, .NET, Python-implementeringer
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.