--- checkId: check.notify.teams.connectivity plugin: stellaops.doctor.notify severity: warn tags: [notify, teams, connectivity, network] --- # Teams Connectivity ## What It Checks Verifies that the configured Microsoft Teams webhook endpoint is reachable. The check: - Sends a minimal Adaptive Card payload to the webhook URL with a 10-second timeout. - Passes if the response is successful (HTTP 2xx). - Warns if an unexpected HTTP status is returned (invalid, expired, or revoked webhook). - Fails on connection timeout or HTTP request exceptions. The check only runs when `Notify:Channels:Teams:WebhookUrl` is set and is a valid absolute URL. ## Why It Matters An unreachable Teams webhook means notifications silently fail to deliver. Operations teams will miss release alerts and security findings if the webhook is broken. ## Common Causes - Invalid or expired webhook URL - Teams connector disabled or deleted - Microsoft 365 tenant configuration changed - Firewall blocking outbound HTTPS to webhook.office.com - Proxy configuration required ## How to Fix ### Docker Compose ```bash docker exec curl -v https://webhook.office.com/ ``` ### Bare Metal / systemd ```bash curl -v https://webhook.office.com/ curl -H 'Content-Type: application/json' \ -d '{"text":"Doctor test"}' \ 'https://YOUR_TENANT.webhook.office.com/webhookb2/...' ``` Check Microsoft 365 service status at https://status.office.com. ### Kubernetes / Helm ```bash kubectl exec -it -- curl -v https://webhook.office.com/ ``` If the webhook is broken, recreate it: Teams channel > Connectors > Incoming Webhook > delete and recreate. ## Verification ``` stella doctor run --check check.notify.teams.connectivity ``` ## Related Checks - `check.notify.teams.configured` — verifies Teams webhook URL is set and valid - `check.notify.queue.health` — verifies the notification delivery queue is healthy