# Grounding Strategies for Declarative Agents

**Last updated:** 2026-04 | Verified: MCP 2026-04-10
**Status:** GA
**Category:** Copilot Extensibility & Integration

---

## Introduksjon

Grounding er kjernen i å gjøre declarative agents nyttige i en bedriftskontekst. Uten grounding er agenten begrenset til generell AI-kunnskap — med grounding kan den svare på spørsmål om **din organisasjons data**, **dine prosjekter**, og **dine brukeres kontekst**.

Grounding-strategien avgjør hvor agenten henter kunnskap fra, hvordan den filtrerer og prioriterer informasjon, og hvordan den balanserer generell kunnskap mot enterprise-data. Microsoft tilbyr et rikt sett med knowledge sources for declarative agents, fra SharePoint-innhold og Teams-meldinger til eksterne systemer via Copilot connectors og web search.

Denne guiden dekker arkitekturmønstre for grounding, beslutningskriterier for valg av knowledge sources, og praktiske hensyn for offentlig sektor i Norge.

---

## Kjernekomponenter

### Tilgjengelige Knowledge Sources

| Knowledge Source | Beskrivelse | Lisenskrav | Scoping (generativ modus) |
|-----------------|-------------|------------|---------------------------|
| **SharePoint** | Filer, mapper, sites i SharePoint Online | Microsoft 365 Copilot-lisens | 25 URLer (klassisk: 4) | (Verified 2026-04)
| **Documents (opplastede filer)** | Filer lastet opp direkte til agenten (lagres i Dataverse) | Microsoft 365 Copilot-lisens eller metered usage | Generativ: Ubegrenset; klassisk: begrenset av Dataverse-kvote |
| **OneDrive** | Brukerens OneDrive-innhold | Microsoft 365 Copilot-lisens | Ja (via manifest) |
| **Copilot Connectors** | Eksterne systemer (ServiceNow, Salesforce, etc.) via Microsoft Graph | Microsoft 365 Copilot-lisens | Ubegrenset (klassisk: 2) |
| **Teams Messages** | Chat-historikk, meeting transcripts, kanal-meldinger | Microsoft 365 Copilot-lisens | Opptil 5 chats |
| **Teams Meetings** | Meeting metadata, transkripsjon, meeting chats | Microsoft 365 Copilot-lisens | Opptil 5 meetings |
| **Outlook Email** | Brukerens mailbox (full eller delt) | Microsoft 365 Copilot-lisens | Ja (folder-basert) |
| **People** | Org chart, profiler, skills, samarbeidshistorikk | Microsoft 365 Copilot-lisens | Nei |
| **Embedded Files** | Opplastede filer (lagres i SharePoint Embedded) | Microsoft 365 Copilot-lisens eller metered usage | Nei |
| **Web Search** | Bing-indeksert offentlig innhold | Ingen lisenskrav | Alle offentlige sider (klassisk: 4 URLer) |
| **Dataverse** | Dynamics 365 / Power Apps-tabeller | Microsoft 365 Copilot-lisens eller metered usage | Ubegrenset (klassisk: 2 sources, 15 tabeller) |

**Viktig om generativ modus (Verified):** Copilot Studio med generativ orchestration støtter IKKE Bing Custom Search eller Azure OpenAI som knowledge sources i generative answers node. Disse må eksplisitt legges til i en generative answers-node i et topic (klassisk data-alternativ).'



### Manifest-syntax for Knowledge Sources

**SharePoint/OneDrive (JSON manifest):**
```json
{
  "capabilities": [
    {
      "name": "OneDriveAndSharePoint",
      "items_by_url": [
        {
          "url": "https://contoso.sharepoint.com/sites/ProjectX"
        }
      ]
    }
  ]
}
```

**Copilot Connectors (JSON manifest):**
```json
{
  "capabilities": [
    {
      "name": "GraphConnectors",
      "connections": [
        {
          "connection_id": "ServiceNowIncidents"
        }
      ]
    }
  ]
}
```

**Teams Messages (JSON manifest):**
```json
{
  "capabilities": [
    {
      "name": "TeamsMessages",
      "urls": [
        "https://teams.microsoft.com/l/channel/...",
        "https://teams.microsoft.com/l/chat/..."
      ]
    }
  ]
}
```

**Web Search (JSON manifest):**
```json
{
  "capabilities": [
    {
      "name": "WebSearch",
      "sites": [
        {"url": "learn.microsoft.com"}
      ]
    }
  ]
}
```

**Email (JSON manifest):**
```json
{
  "capabilities": [
    {
      "name": "Email",
      "shared_mailbox": "support@contoso.com",
      "folders": [
        {"folder_id": "inbox"}
      ]
    }
  ]
}
```

**People Knowledge (JSON manifest):**
```json
{
  "capabilities": [
    {
      "name": "People",
      "include_related_content": true
    }
  ]
}
```

---

## Arkitekturmønstre

### 1. Single-Source Grounding (Mono-grounding)

**Bruk når:** Agenten har ett klart fokusområde (f.eks. HR-policies, prosjekt-dokumentasjon, CRM-data).

**Eksempel:**
- HR-agent: Kun grounded i SharePoint-site med HR-policyer
- Sales-agent: Kun grounded i Salesforce via Copilot connector
- Prosjekt-agent: Kun grounded i spesifikk Teams-kanal

**Fordeler:**
- Enkel å vedlikeholde
- Forutsigbare svar
- Rask retrieval (mindre search-scope)

**Ulemper:**
- Begrenset kontekst — kan ikke svare utenfor knowledge source
- Kan misse relevant info fra andre systemer

---

### 2. Multi-Source Grounding (Federated grounding)

**Bruk når:** Agenten trenger bredde — f.eks. en "prosjekt-assistent" som må kunne svare om dokumenter, chat-historikk, og CRM-data.

**Eksempel:**
- Prosjekt-agent: SharePoint site + Teams kanal + Azure DevOps connector
- Kundesupport-agent: Email folder + ServiceNow connector + FAQ-site

**Fordeler:**
- Bredere kontekst
- Mer nyttig for komplekse oppgaver
- Kan kryss-referere kilder

**Ulemper:**
- Tregere retrieval (flere API-kall)
- Risiko for "information overload" (agenten må velge riktig kilde)
- Vanskeligere å debugge

**Best practices:**
- Prioriter kilder via instructions (`"Prefer SharePoint policies over general knowledge"`)
- Bruk scoping (f.eks. kun spesifikke SharePoint-mapper, ikke hele site)
- Test grundig med ulike spørsmål for å sikre at riktig kilde brukes

---

### 3. Layered Grounding (Fallback-strategi)

**Bruk når:** Du vil at agenten skal søke i **prioritert rekkefølge** — først intern kunnskap, deretter web.

**Eksempel:**
- Agent søker først i SharePoint → hvis ikke funnet, søk i Web Search
- Agent søker først i Dataverse → hvis ikke funnet, bruk general knowledge

**Fordeler:**
- Balanserer spesifisitet og bredde
- Reduserer "hallucinations" (prioriterer verifisert enterprise-data)

**Ulemper:**
- Krever nøye instructions for å styre fallback-logikk
- Kan gi tregt svar hvis første kilde er tom (må vente på timeout)

**Implementering:**
- Bruk `"Only use specified sources"` i Agent Builder for å **blokkere** general knowledge
- Kombiner med Web Search for fallback til public web
- Eller: Bruk instructions som `"If you cannot find the answer in SharePoint, clearly state 'Not found in internal docs' and do not guess."`

---

### 4. Permission-Aware Grounding (User-scoped retrieval)

**Bruk når:** Agenten deler på tvers av organisasjonen, og ulike brukere skal kun se **sine egne data**.

**Eksempel:**
- SharePoint: Respekterer native permissions — bruker ser kun filer hen har tilgang til
- Email: Hver bruker ser kun sin egen mailbox (ikke delt mellom brukere)
- Teams: Respekterer channel/chat membership

**Fordeler:**
- Ingen risiko for data leakage
- Naturlig compliance med tilgangskontroll

**Ulemper:**
- Embedded files støtter **ikke** Information Barriers (IB) — alle med agenten kan se innhold
- Shared mailboxes krever eksplisitt SMTP-adresse i manifest

**Best practices:**
- Unngå embedded files hvis du har sensitive data og deler agenten bredt
- Bruk SharePoint/OneDrive for permission-aware grounding
- Test med ulike brukerroller for å verifisere tilgangskontroll

---

## Beslutningsveiledning

### Valg av Knowledge Source: Beslutningstabell

| Scenario | Anbefalt Knowledge Source | Begrunnelse |
|----------|--------------------------|-------------|
| Statiske policies/docs (PDF, Word) | SharePoint (site/folder) | Strukturert, permission-aware, god search |
| Sanntidsdiskusjoner om prosjekt | Teams Messages (kanal/chat) | Fanger uformell kunnskap, kontekst fra meetings |
| Eksterne system (ServiceNow, Salesforce) | Copilot Connector | Direkte integrasjon med line-of-business data |
| Brukerens personlige arbeid | OneDrive + Email | User-scoped, ingen deling av data |
| Offentlig informasjon (nyheter, docs) | Web Search | Alltid oppdatert, ingen lisenskrav |
| CRM/Dynamics 365 data | Dataverse | Native integrasjon, supports custom tables |
| Opplastede filer (quick test) | Embedded Files | Rask prototyping, men ikke IB-støtte |
| Org chart og people lookup | People | Kontekst om kollegaer, skills, samarbeid |

### Vanlige Feil (Anti-patterns)

| Feil | Konsekvens | Riktig tilnærming |
|------|------------|-------------------|
| Legge til **hele SharePoint-tenant** som kilde | Treg retrieval, irrelevant noise | Scope til spesifikke sites/folders |
| Bruke **Embedded Files** for sensitive docs | Brukere uten IB ser alt | Bruk SharePoint med native permissions |
| Ikke scope Teams-kunnskap | Agent søker i **all** chat-historikk (treghet) | Velg spesifikke 5 kanaler/chats |
| Bruke **general knowledge** for compliance-svar | Hallucinations, feil policy-tolkning | Sett `"Only use specified sources"` |
| Ikke teste med brukere uten Copilot-lisens | Agent feiler silent for dem | Valider lisenskrav i testing |

### Røde Flagg (Når skal du **ikke** bruke grounding?)

- **Når agenten skal gjøre noe, ikke svare på noe** → Bruk actions/API plugins, ikke knowledge sources
- **Når du vil cache statisk data** → Overvei embedded files (eller hardkode i instructions hvis < 1000 tegn)
- **Når kilde-data oppdateres oftest enn daglig** → Web Search eller Dataverse (ikke SharePoint med treg re-indexing)

---

## Integrasjon med Microsoft-stakken

### SharePoint + Semantic Index (Anbefalt for GA-produksjon)

Hvis tenant har **Microsoft 365 Copilot-lisens**, aktiver **Tenant graph grounding with semantic search** for:
- Støtte for filer opptil **200 MB** i generell bruk (PDF/PPTX/DOCX støtter opptil 512 MB)
- Bedre retrieval-kvalitet (bruker Microsoft Graph semantic index)
- Raskere søk i store SharePoint-sites
- Krever at agent bruker **Authenticate with Microsoft** (ikke andre auth-metoder)
- Aktivert som standard for nye agenter med generativ orchestration

**Trade-off:** Noe høyere latency for enkelte queries. Kan slås av per agent hvis kvaliteten er lavere enn forventet.

**Innholdsstyring (Official sources):** Kunnskapskilder kan merkes som "official source" — agenten indikerer dette i svar. Merk: Per april 2026 er official sources-funksjonen ikke kompatibel med generativ orchestration (krever klassisk modus). (Verified 2026-04)

**Allow ungrounded responses (Verified 2026-04):** Ny innstilling i Generative AI-settings. Når den er AV (default), blokkeres svar der agenten ikke brukte noen knowledge source eller tool i det gjeldende svaret. Gir strammere grounding, men kan blokkere follow-up-svar basert på samtalehistorikk.

### Copilot Connectors vs Power Platform Connectors

| Egenskaper | Copilot Connectors | Power Platform Connectors |
|------------|-------------------|---------------------------|
| Indexering | Ja (til Microsoft Graph) | Nei (real-time API calls) |
| Permissions | Source-level permissions respektert | Maker/service account permissions |
| Grounding-støtte | Ja (native i declarative agents) | Ja (via custom API plugin) |
| Setup | Tenant admin må konfigurere | Maker kan sette opp selv |

**Regel:** Bruk Copilot Connectors for grounding, Power Platform Connectors for **actions**.

### Dataverse Grounding

Kun støttet via **Agents Toolkit** (ikke Agent Builder i Microsoft 365 Copilot ennå per 2026-02).

**Krav:**
- Opprett `DVTableSearch` skill i Dataverse
- Spesifiser `host_name`, `skill`, og `tables` i manifest
- Krever Microsoft 365 Copilot-lisens eller metered usage

---

## Offentlig sektor (Norge)

### GDPR og Datasuverenitet

| Knowledge Source | Data Residency | GDPR-status | Schrems II-vurdering |
|-----------------|----------------|-------------|----------------------|
| SharePoint (EU tenant) | EU (Ireland/Netherlands) | ✅ GDPR-compliant | ✅ OK for offentlig sektor |
| OneDrive (EU tenant) | EU (Ireland/Netherlands) | ✅ GDPR-compliant | ✅ OK for offentlig sektor |
| Copilot Connectors | Avhenger av ekstern kilde | ⚠️ Må vurderes per connector | ⚠️ Sjekk DPA med vendor |
| Web Search (Bing) | USA (Bing service) | ⚠️ **DPA gjelder ikke** | ❌ Ikke for sensitive queries |
| Dataverse (EU tenant) | EU (Norway/West Europe) | ✅ GDPR-compliant | ✅ OK for offentlig sektor |

**Kritisk forskjell:** Web Search-queries sendes til Bing og er **ikke** dekket av Microsoft DPA for enterprise. For sensitive queries, **ikke bruk Web Search**. (Verified 2026-04: Bruk informasjon fra nettet bruker «Grounding with Bing Search»)

### AI Act Compliance

**Risikoklassifisering:** Declarative agents er typisk **begrenset risiko** (Article 52: transparency obligations).

**Grounding-relaterte krav:**
- Dokumenter hvilke knowledge sources brukes → Anbefaling: Hold ADR per agent
- Brukere må informeres om at de snakker med AI → Microsoft håndterer dette i Copilot UX
- Source citations må være synlige → Copilot viser automatisk kildereferanser

### Forvaltningsloven (§ 11b: Automatiserte avgjørelser)

**Hvis agenten brukes til enkeltvedtak**, må du:
- Dokumentere grounding-kilder (auditability)
- Sikre at mennesker kan overstyre agent-svar
- Teste for bias i retrieval (f.eks. hvis SharePoint-innhold har skjevheter)

**Best practice:** Bruk agenter for **rådgivning**, ikke automatiserte vedtak, i offentlig sektor.

---

## Kostnad og lisensiering

### Lisenskrav (Oppsummering)

| Feature | Microsoft 365 Copilot-lisens | Metered Usage | Ingen lisenskrav |
|---------|------------------------------|---------------|------------------|
| SharePoint/OneDrive | ✅ Påkrevd | ❌ | ❌ |
| Copilot Connectors | ✅ Påkrevd | ❌ | ❌ |
| Teams Messages/Meetings | ✅ Påkrevd | ❌ | ❌ |
| Email | ✅ Påkrevd | ❌ | ❌ |
| People | ✅ Påkrevd | ❌ | ❌ |
| Embedded Files | ✅ Påkrevd | ✅ Alternativ | ❌ |
| Dataverse | ✅ Påkrevd | ✅ Alternativ | ❌ |
| Web Search | ❌ | ❌ | ✅ Ingen kostnader |

### Kostnadsoptimalisering

1. **Start med Web Search + Embedded Files** (ingen lisenskrav) for POC
2. **Bruk SharePoint over Embedded Files** for produksjon (bedre permissions + search)
3. **Scope aggressivt** → Færre filer/chats = raskere retrieval = lavere latency
4. **Unngå "all Teams chats"** → Bruk scoped chats (max 5) for relevans

### Tenant Graph Grounding: Kostnad vs. Ytelse

Tenant graph grounding krever **minst én Microsoft 365 Copilot-lisens** i tenant.

**Trade-off:**
- Kostnad: Microsoft 365 Copilot-lisens (ca. $30/user/month i USA, pris varierer)
- Gevinst: Bedre retrieval-kvalitet, støtte for større filer, semantic search

**For offentlig sektor:** Vurder pilot med 10-20 brukere (lisenskostnad ca. $300-600/mnd) før full rollout.

---

## For arkitekten (Cosmo)

### Spørsmål å stille kunden

1. **Datakilder:**
   - "Hvilke systemer inneholder kunnskapen agenten trenger?"
   - "Er dataene strukturerte (SharePoint, Dataverse) eller ustrukturerte (Teams, Email)?"
   - "Ligger dataene i Microsoft 365, eller eksterne systemer?"

2. **Tilgangskontroll:**
   - "Skal alle brukere se samme data, eller user-scoped retrieval?"
   - "Har dere Information Barriers (IB) aktivert i tenant?"
   - "Er det sensitive data som ikke må deles på tvers?"

3. **Lisenser:**
   - "Har brukerne Microsoft 365 Copilot-lisens?"
   - "Hvis ikke, kan dere bruke metered usage for testing?"
   - "Skal agenten fungere for brukere uten lisens?" (→ Bruk kun Web Search + Code Interpreter)

4. **Datakvalitet:**
   - "Er SharePoint-innhold oppdatert og nøyaktig?"
   - "Hvor ofte oppdateres kildene?" (→ Påvirker re-indexing delay)
   - "Har dere mange duplikater eller utdaterte docs?" (→ Vurder cleanup før grounding)

5. **Compliance:**
   - "Skal agenten brukes i GDPR-regulert kontekst?"
   - "Kan dere bruke Bing Web Search, eller må alt være on-premises/EU?"
   - "Kreves audit-logging av alle spørringer?" (→ Microsoft 365 audit log dekker dette)

### Fallgruver å unngå

| Fallgruve | Hvorfor det feiler | Mitigering |
|-----------|-------------------|------------|
| Grounding i **hele SharePoint tenant** | Treg retrieval, irrelevante svar | Scope til site/folder-nivå |
| Bruke **Embedded Files** for produksjon | Ingen Information Barriers | Bruk SharePoint med native permissions |
| Ikke teste med brukere **uten lisens** | Agent feiler silent (ingen feilmelding til bruker) | Test med demo-bruker uten Copilot-lisens |
| Forvente **sanntids-oppdateringer** fra SharePoint | Re-indexing tar minutter til timer | Bruk Dataverse eller Web Search for real-time |
| Bruke **all Teams chats** som kilde | Treghet + irrelevant noise | Scope til max 5 spesifikke chats |

### Anbefalinger per modenhetsnivå

**Prototype/POC:**
- Bruk **Embedded Files** + **Web Search** (ingen lisenskrav)
- Test med Agent Builder (low-code, rask iterasjon)
- Ikke bekymre deg for permissions ennå

**Pilot (10-50 brukere):**
- Migrer til **SharePoint** (permission-aware)
- Legg til **Teams Messages** (scope til 1-2 kanaler)
- Kjøp Microsoft 365 Copilot-lisenser for pilot-gruppe
- Aktiver **Tenant graph grounding** hvis tenant har lisens

**Produksjon (> 100 brukere):**
- Bruk **Copilot Connectors** for eksterne systemer
- Implementer **layered grounding** (SharePoint → Web fallback)
- Sett opp **audit-logging** (Microsoft Purview)
- Dokumenter grounding-strategi i ADR

**Enterprise (> 1000 brukere):**
- Vurder **Dataverse** for strukturert data (CRM, Power Apps)
- Implementer **permission-aware grounding** med Information Barriers
- Bruk **Copilot Studio** (ikke Agent Builder) for avansert orchestration
- Sett opp **cost monitoring** (per-agent usage tracking)

---

## Kilder og verifisering

### Microsoft Learn (Verified — MCP research 2026-04)

- [Add knowledge sources to your declarative agent](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/knowledge-sources) — Oversikt over alle knowledge sources
- [Add knowledge sources in Agent Builder](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/agent-builder-add-knowledge) — UI-guide for Agent Builder
- [Best practices for building declarative agents](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/declarative-agent-best-practices) — Grounding-strategi-veiledning
- [Declarative agent manifest v1.6](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/declarative-agent-manifest-1.6) — JSON-syntax for knowledge sources
- [Microsoft 365 Copilot connectors overview](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/overview-copilot-connector) — Graph connectors for external data
- [Copilot Studio: Add Copilot connectors as knowledge](https://learn.microsoft.com/en-us/microsoft-copilot-studio/knowledge-copilot-connectors) — Copilot Studio-spesifikk guide
- [Copilot Studio: Knowledge sources summary](https://learn.microsoft.com/en-us/microsoft-copilot-studio/knowledge-copilot-studio) — Inkludert Tenant graph grounding, Allow ungrounded responses, Web Search (Verified 2026-04)
- [Data, privacy, and security for web search](https://learn.microsoft.com/en-us/microsoft-copilot-studio/data-privacy-security-web-search) — Bing integration, GDPR, DPA
- [Quotas and limits for Copilot Studio](https://learn.microsoft.com/en-us/microsoft-copilot-studio/requirements-quotas) — File size, connector limits

### Konfidensnivå per seksjon

| Seksjon | Konfidens | Kilde |
|---------|-----------|-------|
| Kjernekomponenter (tabell knowledge sources) | **Verified** | MCP: knowledge-sources, agent-builder-add-knowledge |
| Manifest-syntax (JSON examples) | **Verified** | MCP: declarative-agent-manifest-1.6, code samples |
| Arkitekturmønstre (mono-/multi-/layered) | **Baseline** | Utledet fra best practices docs + modellkunnskap |
| Permission-Aware Grounding | **Verified** | MCP: best practices, embedded files IB limitation |
| Beslutningstabell (valg av source) | **Baseline** | Syntetisert fra best practices + modellkunnskap |
| Offentlig sektor (GDPR, AI Act) | **Baseline** | Modellkunnskap (2025-01 cutoff) + MCP (data-privacy-security-web-search) |
| Kostnad og lisensiering | **Verified** | MCP: knowledge-sources (license requirements table) |
| Tenant Graph Grounding | **Verified** | MCP: knowledge-copilot-studio#tenant-graph-grounding |

**Sist verifisert:** 2026-04-10
**MCP-kall:** 7 (3 search, 3 fetch, 1 code sample search)
**Unike kilder:** 9 Microsoft Learn-dokumenter
