De 87 referansefilene bar en plain-text `| Verified: <dato>`-hale på **Last updated:**-linjen i 500B-header-vinduet — usynlig for den bold-only kontrakt-stacken (kb-headers.mjs / audit RE_VERIFIED), og claimet en verifisering judgen aldri gjorde (samme poison-klasse som de 14 bold **Verified:** MCP Spor 1 fjernet). Uhåndtert springer den også dual-Verified-fellen: R7s insertVerifiedFields ville stemplet en bold-verdi ved siden av den plain → to motstridende provenance-claims per fil. - ny driver strip-stale-verified-pipe.mjs: frosset 87-manifest (18 advisor + 45 eng + 8 gov + 16 sec), pure verdi-bevarende strip (kun ` | Verified: …`-halen; **Last updated:**-dato byte-eksakt), hard per-fil-invariant (linjeantall uendret, body byte-identisk, dato bevart), idempotent, atomicWriteSync (RX-OPS2 recovery-kontrakt). - audit-corpus-headers.mjs: ny plain-Verified-deteksjon (RE_PLAIN_VERIFIED + plainVerifiedPipe) — gjør M4-blindheten synlig så en stale plain-hale ikke kan gjenoppstå stille (non-advisor scope). - 87 filer strippet; plain Verified i vinduet 0/389; live-audit plainVerifiedPipe 0. Mekanisme: +15 tester (12 strip + 3 audit). Suite 875→890 exit 0. validate-plugin.sh 250/0. Utsatt → RX-KB1b: footer-dato-avvik + label-whitelist (annen dialekt, flag-to-human).
590 lines
23 KiB
Markdown
590 lines
23 KiB
Markdown
# Copilot Connectors - Implementation Patterns
|
|
|
|
**Last updated:** 2026-04
|
|
**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:**
|
|
|
|
```csharp
|
|
// 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:**
|
|
|
|
```yaml
|
|
# 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:
|
|
|
|
```csharp
|
|
// 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):**
|
|
- [Microsoft 365 Copilot connectors overview](https://learn.microsoft.com/en-us/microsoftsearch/connectors-overview) — Authoritative oversikt over connector-typer
|
|
- [Work with the Copilot connectors API](https://learn.microsoft.com/en-us/graph/connecting-external-content-connectors-api-overview) — Graph API-detaljer
|
|
- [Search and retrieval patterns (Copilot Studio)](https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/architecture/search-retrieval-patterns) — Arkitekturmønstre
|
|
- [Power Platform Connectors in Copilot Studio](https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-connectors) — Low-code connector-integrasjon
|
|
- [Copilot connectors for people data](https://learn.microsoft.com/en-us/graph/peopleconnectors) — People data-spesialisering
|
|
- [Federated connectors overview](https://learn.microsoft.com/en-us/microsoftsearch/federated-connectors-overview) — MCP-baserte connectors (preview)
|
|
|
|
**Code samples (Verified - MCP):**
|
|
- [Microsoft Graph connector samples](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/samples#microsoft-365-copilot-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.*
|