ms-ai-architect/skills/ms-ai-advisor/references/copilot-extensibility/m365-copilot-plugins-ecosystem.md
Kjell Tore Guttormsen 712a143e58 fix(ms-ai-architect): RX-KB1 strip stale plain-Verified pipe-tails (87) + audit-deteksjon [skip-docs]
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).
2026-07-16 20:04:52 +02:00

449 lines
21 KiB
Markdown

# M365 Copilot Plugins - Ecosystem and Distribution
**Last updated:** 2026-06-19
**Status:** GA
**Category:** Copilot Extensibility & Integration
---
## Introduksjon
Microsoft 365 Copilot plugins (også kalt "agents") opererer innenfor et omfattende økosystem som spenner over hele Microsoft 365-plattformen. Plugins er ikke bare isolerte tillegg, men integrerte komponenter som kan nå over 350 millioner daglige brukere på tvers av Teams, Outlook, Word, Excel, PowerPoint og Microsoft 365 Copilot-appen.
Det sentrale prinsippet er **"write once, run anywhere"** — utviklere bygger én gang og plugins distribueres automatisk på tvers av alle Microsoft 365 host-applikasjoner. Microsoft 365 Copilot orkestrerer integrasjon av plugins med sine eksisterende ferdigheter og kunnskapsbase, uten at utviklere må integrere direkte med individuelle Microsoft 365-apper.
Plugins pakkes, distribueres og administreres gjennom en **unified app model** som bruker samme manifest-skjema og pakkeformat som Teams-apper, Outlook Add-ins og SharePoint Framework-løsninger. Dette gir enhetlig distribusjon via Microsoft 365 admin center, Teams admin center og Microsoft Commercial Marketplace (Partner Center).
## Kjernekomponenter
### 1. App Package (Pakkeformat)
M365 Copilot plugins distribueres som en `.zip`-fil som inneholder:
| Komponent | Fil | Krav |
|-----------|-----|------|
| **App manifest** | `manifest.json` | Beskriver konfigurasjon, capabilities, ressurser og attributter |
| **Color icon** | `color.png` | 192x192 px, full-color ikon (120x120 px safe region) |
| **Outline icon** | `outline.png` | 32x32 px, hvit med transparent bakgrunn (kreves for validering) |
| **Declarative agent** | `declarativeAgent.json` | (Valgfri) Agent-definisjon med instruksjoner og actions |
| **API plugin** | `plugin.json` | (Valgfri) API-capabilities og OpenAPI-referanse |
| **Localization files** | `en.json`, `nb.json` etc. | (Valgfri) Språkfiler for internasjonalisering |
**Eksempel: App manifest (forenklet)**
```json
{
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json",
"manifestVersion": "1.28" // Verified 2026-06: v1.28 er seneste GA (mai 2026); v1.29 dokumentert (juni 2026),
"version": "1.0.0",
"id": "00000000-0000-0000-0000-000000000000",
"developer": {
"name": "Northwind Traders",
"websiteUrl": "https://www.example.com",
"privacyUrl": "https://www.example.com/privacy",
"termsOfUseUrl": "https://www.example.com/terms"
},
"name": {
"short": "Northwind Inventory",
"full": "Northwind Inventory App"
},
"description": {
"short": "Find and update product inventory",
"full": "Northwind Inventory is the ultimate tool for managing your product inventory..."
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"accentColor": "#3690E9",
"copilotAgents": {
"declarativeAgents": [
{
"id": "agent1",
"file": "declarativeAgent.json"
}
]
}
}
```
### 2. Plugin-typer og tilgjengelighet
| Plugin-type | Microsoft 365-produkter | Ekstra tilgjengelighet |
|-------------|------------------------|------------------------|
| **Copilot connectors** | M365 Copilot, Power Automate, Power Apps, Azure Logic Apps | Microsoft Search, Context IQ (Outlook/web) |
| **Microsoft 365 Copilot connectors** (Graph) | M365 Copilot, Microsoft Search | M365 Copilot app (microsoft365.com) |
| **Declarative agents** | M365 Copilot, Teams, Outlook, Word, Excel, PowerPoint | M365 Copilot app |
| **Custom engine agents** | M365 Copilot, Teams | M365 Copilot app |
### 3. In-context vs. Immersive Experience
| Opplevelse | Beskrivelse | Brukerinteraksjon |
|------------|-------------|-------------------|
| **In-context** | Plugin tilgjengelig i eksisterende Copilot Chat-kontekst | Brukere `@`-mention plugin i Teams-chat eller Word-dokument |
| **Immersive** | Full plugin-opplevelse i M365 Copilot-appen | 1:1 samtale med plugin, skreddersydd til dens capabilities |
Declarative agents støtter begge moduser. Actions (API plugins) er kun tilgjengelig in-context og må legges til en declarative agent.
## Arkitekturmønstre
### Mønster 1: Declarative Agent med API Plugin (Anbefalt)
**Fordeler:**
- Low-code / no-code tilnærming
- Rask time-to-market
- Microsoft 365 Copilot håndterer orchestration
- Automatisk tilgjengelighet på tvers av M365-apper
**Ulemper:**
- Begrenset til forhåndsdefinerte capabilities
- Mindre kontroll over conversation flow
- Avhengig av Microsofts orchestration-logikk
**Bruksområder:**
- LOB-applikasjoner med REST API
- Enterprise data-integration
- Standardiserte workflows
**Arkitektur:**
```
App Manifest (manifest.json)
├─> Declarative Agent (declarativeAgent.json)
│ ├─> Instructions (system prompt)
│ ├─> Conversation starters
│ ├─> Capabilities (WebSearch, OneDrive, CodeInterpreter)
│ └─> Actions
│ └─> API Plugin (plugin.json)
│ ├─> OpenAPI definition
│ └─> Authentication config
└─> Icons (color.png, outline.png)
```
### Mønster 2: Custom Engine Agent (Bot Framework)
**Fordeler:**
- Full kontroll over conversational AI
- Egendefinert reasoning og orchestration
- Integrasjon med eksisterende bot-infrastruktur
- Avanserte dialog management-capabilities
**Ulemper:**
- Høyere utviklingskompleksitet
- Krever hosting-infrastruktur
- Mer vedlikeholdskrevende
- Må implementere egen sikkerhet og compliance
**Bruksområder:**
- Komplekse multi-turn samtaler
- Domene-spesifikk reasoning
- Legacy bot migration
- Spesialiserte LLM-workflows
**Arkitektur:**
```
App Manifest (manifest.json)
├─> Bot registration (Azure Bot Service)
│ ├─> Bot endpoint (HTTPS)
│ ├─> Messaging endpoint
│ └─> Authentication (OAuth 2.0)
├─> copilotAgents.customEngineAgents
│ └─> Bot ID reference
└─> Bot Framework SDK (C#, TypeScript, Python)
```
### Mønster 3: Graph Connector for Microsoft 365 Copilot
**Fordeler:**
- Indeksering av ekstern data i Microsoft Graph
- Automatisk grounding i Copilot
- Ingen custom code nødvendig (low-code)
- Security-trimmed search results
**Ulemper:**
- Kun data retrieval (ikke actions)
- Krever crawling-infrastruktur
- Schema mapping-overhead
- Latency i indeksering
**Bruksområder:**
- Enterprise document repositories
- Tredjepartssystemer med bulk data
- Knowledge bases og wikis
- CRM/ERP-data grounding
## Beslutningsveiledning
### Når velge hvilken plugin-type?
| Scenario | Anbefalt type | Begrunnelse |
|----------|--------------|-------------|
| Integrasjon med REST API | Declarative agent + API plugin | Rask utvikling, ingen hosting, auto-orchestration |
| Kompleks dialog management | Custom engine agent | Full kontroll over conversation flow |
| Ekstern dataindeksering | Graph connector | Automatisk grounding uten custom code |
| Teams bot migration | Custom engine agent | Gjenbruk eksisterende bot-kode |
| Low-code requirement | Declarative agent i Copilot Studio | Grafisk designer, ingen kode |
### Vanlige feil
| Feil | Konsekvens | Løsning |
|------|------------|---------|
| API plugin uten declarative agent | Plugin fungerer ikke i M365 Copilot | API plugins må wrappes i declarative agent |
| Manglende beskrivelser i manifest | Dårlig LLM skill-selection | Inkluder detaljerte `shortDescription` og `longDescription` |
| Ikon-feil (feil størrelse) | Validering feiler i Partner Center | Color: 192x192px, Outline: 32x32px |
| Hardkodet localhost i produksjon | Plugin feiler utenfor dev-miljø | Bruk miljøvariabler for URLs |
| Manglende Responsible AI-compliance | Avvist i store submission | Test med RAI validation checks før innsending |
### Røde flagg
- **Secrets i manifest:** Aldri inkluder API keys eller secrets i `manifest.json` — bruk Azure Key Vault eller miljøvariabler
- **Overly broad permissions:** Be kun om nødvendige Microsoft Graph-permissions — overly broad scope gir compliance-problemer
- **Ingen error handling:** Plugin må håndtere API-feil gracefully — Copilot viser feilmeldinger til brukere
- **Manglende localization:** Plugins uten lokalisering har dårlig user experience i internasjonale org
## Integrasjon med Microsoft-stakken
### 1. Microsoft 365 Admin Center
**Rolle:** Sentral hub for plugin-administrasjon i enterprise
| Funksjon | Beskrivelse |
|----------|-------------|
| **Integrated Apps** | Godkjenn, deploy og administrer plugins på org-nivå |
| **App governance** | Kontroller hvilke plugins er enabled per bruker/gruppe |
| **Usage analytics** | Overvåk plugin-bruk og performance |
| **Policy enforcement** | Implementer data loss prevention (DLP) policies |
**Workflow:**
1. Admin mottar plugin submission fra ISV eller LOB-utvikler
2. Review permissions og compliance status
3. Approve/reject via Integrated Apps-seksjonen
4. Assign til security groups eller organization-wide
5. Plugin blir tilgjengelig i M365 Copilot, Teams, Outlook etc.
### 2. Teams Admin Center
**Rolle:** Kontroll av Teams-spesifikke plugin-capabilities
| Funksjon | Beskrivelse |
|----------|-------------|
| **App permission policies** | Definer hvilke plugins som er tillatt per bruker-gruppe |
| **App setup policies** | Pin plugins til Teams-appen for spesifikke brukere |
| **App centric management** | GA (fra 2025) — forenklet org-wide app-management |
| **Custom app upload** | Sideload plugins til organisasjonens app catalog |
### 3. Microsoft Partner Center (Microsoft 365 and Copilot Program)
**Rolle:** Distribusjon til Microsoft Commercial Marketplace
**Sertifiseringskrav (viktige "Must fix"-krav):**
- [Microsoft Commercial Marketplace certification policies](https://learn.microsoft.com/legal/marketplace/certification-policies)
- [Microsoft 365 store validation guidelines for agents](https://learn.microsoft.com/microsoftteams/platform/concepts/deploy-and-publish/appsource/prepare/review-copilot-validation-guidelines)
- [Responsible AI validation checks](https://learn.microsoft.com/microsoft-365-copilot/extensibility/rai-validation)
- (Valgfri) [Microsoft 365 App Compliance Program certification](https://learn.microsoft.com/microsoft-365-app-certification/docs/certification)
**Tekniske minstekrav (Must fix — ISV store submission):**
| Krav | Verdi |
|------|-------|
| **Manifest-versjon** | 1.13 eller nyere (seneste GA: v1.28, mai 2026; v1.29 dokumentert juni 2026) (Verified 2026-06) |
| **Responstid** | ≤9 sek (99%), ≤5 sek (75%), ≤2 sek (50%) |
| **Tilgjengelighet** | 99.9% uptime |
| **TLS** | 1.2 eller høyere (alle serverkall) |
| **Prompt starters** | Minst 3 (declarative og custom engine agents) |
| **Navn-konsistens** | `name` i manifest.json, declarativeAgent.json og plugin.json MÅ være identiske |
| **Screenshot** | Minst 1 relatert til M365 Copilot-funksjonalitet |
| **Action disclosure** | Bruker MÅ bekrefte konsekvente operasjoner (Create/Update/Delete) |
| **MCP-servere** | `enable_dynamic_discovery` og `enable_dynamic_client_registration` MÅ settes til false |
**Distribusjonsflyt:**
1. ISV registrerer seg i Partner Center
2. Laster opp app package (.zip med manifest + icons)
3. Microsoft validerer plugin (teknisk + RAI + compliance)
4. Ved godkjenning → publisert i Microsoft AppSource
5. IT-admins enabler plugin i Microsoft 365 admin center
6. Plugin vises i App Store (M365 Copilot, Teams, Outlook etc.)
### 4. Utviklerverktøy
| Verktøy | Type | Bruksområde |
|---------|------|-------------|
| **Microsoft 365 Agents Toolkit** | Pro-code (VS Code / Visual Studio) | Declarative agents, custom engine agents, debugging |
| **Copilot Studio** | Low-code (web app / Teams app) | Grafisk designer for agents og actions |
| **Copilot Developer Mode** | Testing | Debug plugin selection og orchestration |
| **TypeSpec** | Pro-code | Type-safe API plugin definitions |
## Offentlig sektor (Norge)
### GDPR og AI Act
| Krav | Implikasjon for M365 Copilot Plugins |
|------|--------------------------------------|
| **GDPR Art. 5** (Data minimization) | Plugins må kun be om nødvendige Microsoft Graph-permissions. Overly broad scope er non-compliant. |
| **GDPR Art. 32** (Security of processing) | Plugins må implementere encryption at rest/transit. Azure Key Vault anbefales for secrets. |
| **EU AI Act** (Transparency) | Plugins klassifisert som "high-risk AI" må dokumentere decision-making-logikk. |
| **AI Act Art. 52** (Transparency obligations) | Brukere må informeres om at de samhandler med AI. M365 Copilot håndterer dette, men custom engine agents må selv implementere. |
### Schrems II og datasuverenitet
**Utfordring:** EU Court of Justice-avgjørelsen (Schrems II) krever at persondata ikke overføres til USA uten adequate safeguards.
**Løsning for norske org:**
- **EU Data Boundary:** Microsoft 365 Copilot respekterer EU Data Boundary — data processing skjer i EU-regionen hvis konfigurert
- **Azure Norway regions:** Host custom engine agents i Norway East / Norway West for full datasuverenitet
- **Graph Connectors:** Indeksert data i Graph lagres i tenant region (EU for norske org)
**Checklist:**
- [ ] Verifiser at tenant er konfigurert med EU Data Boundary
- [ ] Custom engine agents deployed i Azure Norway regions
- [ ] API plugin endpoints hosted i EU/EEA
- [ ] Data Processing Agreement (DPA) på plass med Microsoft
- [ ] Sub-processor list reviewed (tredjepartstjenester)
### Forvaltningsloven § 11 (automatiserte avgjørelser)
Hvis plugin brukes til å fatte avgjørelser som påvirker individers rettigheter:
- **§ 11a:** Varsling om automatisert saksbehandling
- **§ 11b:** Rett til manuell vurdering hvis ønskelig
- **§ 11c:** Krav til transparens i beslutningsgrunnlag
**Anbefaling:** Declarative agents bør dokumentere hvilke data-kilder og API calls som brukes i decision-making.
## Kostnad og lisensiering
### Lisenskrav for plugin-bruk
| Plugin-type | Lisenskrav (brukere) | Lisenskrav (utviklere) |
|-------------|---------------------|------------------------|
| **Declarative agents** | M365 Copilot license ELLER metered usage tenant | Microsoft 365 Copilot developer license (testing) |
| **Custom engine agents** | M365 Copilot license ELLER metered usage tenant | Microsoft 365 Copilot developer license |
| **Graph connectors** | Ingen Copilot-lisens påkrevd (men anbefalt) | Graph API permissions |
| **API plugins** | M365 Copilot license (må brukes i declarative agent) | Microsoft 365 Copilot developer license |
**Viktig:**
- Noen agent capabilities kun tilgjengelig for tenants med **metered usage** eller brukere med **M365 Copilot license**
- **Developer licenses:** Gratis for testing, men krever production licenses for deployment
### Kostnadsmodell for distribusjon
| Distribusjonsmetode | Kostnad | Bemerkninger |
|---------------------|---------|--------------|
| **Sideload (personal use)** | Gratis | Kun for testing/utvikling |
| **Organizational catalog** | Gratis | Intern distribusjon (LOB apps) |
| **Microsoft Commercial Marketplace** | **$99 USD per year** (Partner Center membership) + **Revenue share** (hvis paid app) | ISV-lisens, Microsoft tar 20% revenue share |
### Optimaliseringstips
1. **Start med organizational catalog:** Test intern før Commercial Marketplace submission
2. **Bruk metered usage tenants for testing:** Unngå å kjøpe Copilot-lisenser for alle testbrukere
3. **Leverage Graph connector for read-only scenarios:** Billigere enn custom engine agents (ingen hosting cost)
4. **Microsoft 365 Agents Toolkit over Copilot Studio:** Toolkit er gratis, Copilot Studio krever Power Platform-lisens for produksjon
## For arkitekten (Cosmo)
### Spørsmål å stille kunden
1. **Hvem er målgruppen for plugin?**
- Intern (LOB) eller ekstern (ISV)?
- Antall brukere? (påvirker distribusjonsmetode)
2. **Hvilken data skal plugin tilgang til?**
- Ekstern API (REST) → Declarative agent + API plugin
- Microsoft Graph data → Graph connector
- Egendefinert conversational logic → Custom engine agent
3. **Hva er customer's modenhetsnivå på AI/Copilot?**
- **Early adopter:** Start med declarative agent (rask POC)
- **Mature org:** Vurder custom engine agent for kontroll
4. **Finnes det compliance-krav?**
- GDPR, AI Act, Forvaltningsloven?
- Data residency requirements (Norge/EU)?
5. **Hva er distribusjonskanalen?**
- Intern → Organizational catalog (gratis)
- Ekstern → Microsoft Commercial Marketplace (Partner Center)
6. **Skal plugin utføre actions eller kun retrieval?**
- Actions → API plugin (mutating operations)
- Retrieval → Graph connector (read-only, indeksert data)
7. **Finnes det eksisterende bot-infrastruktur?**
- Ja → Vurder custom engine agent (gjenbruk)
- Nei → Start med declarative agent
8. **Hva er tidslinje og budsjett?**
- Kort tidslinje + lite budsjett → Declarative agent (low-code)
- Lengre tidslinje + høyere budsjett → Custom engine agent (full kontroll)
### Fallgruver å unngå
1. **Overly complex manifest:**
- Hold manifest minimal — ikke inkluder unødvendige capabilities
- LLM-orchestrator blir forvirret av for mange valg
2. **Manglende plugin description quality:**
- Dårlige beskrivelser → plugin velges sjelden av orchestrator
- Test med Copilot Developer Mode for å se selection rate
3. **Ignoring Responsible AI validation:**
- RAI checks kjører automatisk ved sideload/publish
- Plugins med problematic content blir avvist
4. **Sideloading uten plan for production distribution:**
- Sideload er kun for testing — ikke production-ready
- Plan for organizational catalog eller Marketplace early
5. **Hard dependencies on preview features:**
- Preview manifest versions (`devPreview`) ikke tillatt i production
- Bruk GA manifest versioner (`1.18` eller senere)
6. **Neglisjering av icon design:**
- Ikoner er første inntrykk for brukere i App Store
- Følg [design guidelines](https://learn.microsoft.com/microsoft-365-copilot/extensibility/agent-icon-management)
7. **Manglende error handling i API plugins:**
- API failures vises direkte til brukere
- Implementer graceful degradation
8. **Ingen testing med real users:**
- LLM orchestration er non-deterministic
- Test med ulike prompt-formuleringer og user personas
### Anbefalinger per modenhetsnivå
| Modenhetsnivå | Anbefaling | Reasoning |
|---------------|------------|-----------|
| **Pilot (PoC)** | Declarative agent i Copilot Studio | Raskeste time-to-value, ingen kode, grafisk designer |
| **Production (LOB)** | Declarative agent med API plugin (M365 Agents Toolkit) | Balance mellom kontroll og utviklingshastighet |
| **Advanced (Enterprise)** | Custom engine agent (Bot Framework) | Full kontroll, custom reasoning, egendefinert orchestration |
| **ISV (Marketplace)** | Declarative agent + Commercial Marketplace submission | Skalerbart, Responsible AI-compliant, global distribusjon |
**Best practice for alle nivåer:**
- Start med sideload (testing)
- Promoter til organizational catalog (intern pilot)
- Vurder Commercial Marketplace (ekstern distribusjon) hvis relevant
## Kilder og verifisering
| Seksjon | Kilde | Konfidensnivå |
|---------|-------|---------------|
| **Ecosystem Overview** | [Copilot extensibility in the Microsoft 365 ecosystem](https://learn.microsoft.com/microsoft-365-copilot/extensibility/ecosystem) | ✅ Documented (MCP) |
| **App Package Structure** | [Agents are apps for Microsoft 365](https://learn.microsoft.com/microsoft-365-copilot/extensibility/agents-are-apps) | ✅ Documented (MCP) |
| **Distribution Methods** | [Publish agents for Microsoft 365 Copilot](https://learn.microsoft.com/microsoft-365-copilot/extensibility/publish) | ✅ Documented (MCP) |
| **Manifest Schema** | [Microsoft 365 app manifest schema reference](https://learn.microsoft.com/microsoft-365/extensibility/schema) — seneste GA: v1.28 (mai 2026); v1.29 dokumentert (juni 2026) | ✅ Documented (MCP 2026-06) |
| **Plugin Types** | [Adopt, extend and build Copilot experiences](https://learn.microsoft.com/copilot/roadmap/overview) | ✅ Documented (MCP) |
| **Teams Admin Center** | [Manage apps in Teams admin center](https://learn.microsoft.com/microsoftteams/manage-apps) | ✅ Documented (MCP) |
| **Partner Center** | [Microsoft 365 and Copilot program](https://learn.microsoft.com/partner-center/marketplace/why-publish) | ✅ Documented (MCP) |
| **GDPR Compliance** | EU GDPR Articles 5, 32 | ⚠️ Baseline (legal text) |
| **Schrems II** | CJEU Case C-311/18 | ⚠️ Baseline (legal text) |
| **AI Act** | EU AI Act Articles 52, Annex III | ⚠️ Baseline (legal text) |
| **Forvaltningsloven** | Forvaltningsloven §§ 11a-11c (Norge) | ⚠️ Baseline (legal text) |
| **Licensing** | [Microsoft 365 Copilot developer licenses](https://learn.microsoft.com/microsoft-365-copilot/extensibility/prerequisites) | ✅ Documented (MCP) |
**Konfidensnivå-definisjon:**
-**Documented:** Hentet direkte fra Microsoft Learn via MCP (oppdatert per januar 2026)
- ⚠️ **Baseline:** Basert på modellkunnskap (legal/regulatory tekster, ikke Microsoft-dokumentasjon)
**Siste oppdatering av Microsoft-dokumentasjon:** Juni 2026 (reflektert i MCP-kall 2026-06-19) — Manifest v1.28 seneste GA, v1.29 dokumentert