feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command
Add /ultraresearch-local for structured research combining local codebase analysis with external knowledge via parallel agent swarms. Produces research briefs with triangulation, confidence ratings, and source quality assessment. New command: /ultraresearch-local with modes --quick, --local, --external, --fg. New agents: research-orchestrator (opus), docs-researcher, community-researcher, security-researcher, contrarian-researcher, gemini-bridge (all sonnet). New template: research-brief-template.md. Integration: --research flag in /ultraplan-local accepts pre-built research briefs (up to 3), enriches the interview and exploration phases. Planning orchestrator cross-references brief findings during synthesis. Design principle: Context Engineering — right information to right agent at right time. Research briefs are structured artifacts in the pipeline: ultraresearch → brief → ultraplan --research → plan → ultraexecute. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
baa2d0220b
488 changed files with 213221 additions and 0 deletions
|
|
@ -0,0 +1,582 @@
|
|||
# Copilot Connectors - Implementation Patterns
|
||||
|
||||
**Last updated:** 2026-02
|
||||
**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
|
||||
- Kan bruke Power Automate flows som actions
|
||||
- Maker-provided credentials (SSO for agenter)
|
||||
|
||||
**Ulempler:**
|
||||
- Kun for Copilot Studio (ikke M365 Copilot)
|
||||
- Krever Power Platform-lisens
|
||||
- Ikke fullt integrert med M365 Search
|
||||
- Lavere semantic search-kvalitet enn Graph connectors
|
||||
|
||||
**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.
|
||||
|
||||
⚠️ **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 SVV:**
|
||||
- **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 skrevet basert på Microsoft Learn-dokumentasjon per februar 2026. Federated connectors er i preview og kan endre seg før GA.*
|
||||
Loading…
Add table
Add a link
Reference in a new issue