--- checkId: check.notify.teams.configured plugin: stellaops.doctor.notify severity: warn tags: [notify, teams, quick, configuration] --- # Teams Configuration ## What It Checks Verifies that the Microsoft Teams notification channel is properly configured. The check reads `Notify:Channels:Teams` and validates: - **Webhook URL** (`WebhookUrl`): must be set and non-empty. - **URL format**: validates that the URL belongs to a Microsoft domain (`webhook.office.com` or `microsoft.com`). - **Enabled flag** (`Enabled`): if explicitly `false`, reports a warning. The check only runs when the `Notify:Channels:Teams` configuration section exists. ## Why It Matters Teams is a common enterprise notification channel. Without a valid webhook URL, notifications about release decisions, policy violations, and security findings cannot reach Teams channels. ## Common Causes - Teams webhook URL not set in configuration - Webhook URL is not from a Microsoft domain (malformed or legacy URL) - Teams notifications explicitly disabled - Environment variable not bound to configuration ## How to Fix ### Docker Compose ```yaml environment: Notify__Channels__Teams__WebhookUrl: "https://YOUR_TENANT.webhook.office.com/webhookb2/..." ``` > **Security note:** Teams webhook URLs are secrets. Use Docker secrets or a vault. ### Bare Metal / systemd ```json { "Notify": { "Channels": { "Teams": { "WebhookUrl": "https://YOUR_TENANT.webhook.office.com/webhookb2/..." } } } } ``` ### Kubernetes / Helm ```yaml notify: channels: teams: webhookUrlSecret: "stellaops-teams-webhook" ``` To create the webhook in Teams: Channel > Connectors > Incoming Webhook > Create. ## Verification ``` stella doctor run --check check.notify.teams.configured ``` ## Related Checks - `check.notify.teams.connectivity` — tests whether the Teams webhook endpoint is reachable - `check.notify.queue.health` — verifies the notification delivery queue is healthy