Microsoft Teams
Send SAP document notifications and files to Microsoft Teams channels. Supports Incoming Webhooks and Microsoft Graph API modes.
Use Cases
- Finance team notifications for new SAP documents
- Document upload to Teams channel file tabs
- Failure alerts and operational monitoring
Two modes: Incoming Webhooks for simple notification cards, Microsoft Graph API for full document upload + channel messaging.
Pick a mode
| Feature | Webhook | Graph API |
|---|---|---|
| Message notifications | ✓ | ✓ |
| File uploads to channel | ✓ | |
| Adaptive Card formatting | ✓ | ✓ |
| Setup complexity | URL only | Azure AD app |
| Credentials | None | Azure AD client creds |
Webhook for lightweight alerts (deliver the actual file to S3 / SharePoint and use Teams as the notification channel). Graph API when you want the file uploaded directly to the channel's Files tab.
Webhook setup
- In Teams, open the target channel → ⋯ → Manage channel.
- Under Connectors (or Workflows in newer Teams), find Incoming Webhook → Configure.
- Name it (e.g. "FileRelay"), optionally upload an icon → Create → copy the URL.
- In FileRelay, add a Microsoft Teams destination → paste into
webhook_url.
REPLACE: Screenshot of the Teams webhook configuration in FileRelay
Note — Microsoft is migrating from Office 365 Connectors to Workflows-based webhooks. If Incoming Webhooks aren't available, create a Power Automate Workflow with the "When a Teams webhook request is received" trigger and use the generated URL.
Graph API setup
- Azure Portal → Azure AD → App registrations → New registration (e.g. "FileRelay Teams").
- API permissions → add Microsoft Graph application permissions:
ChannelMessage.SendFiles.ReadWrite.All
- Grant admin consent.
- Certificates & secrets → new client secret. Note the client ID, tenant ID, and secret value.
- Find the team and channel IDs (see below).
- In FileRelay, add a Microsoft Teams destination with all four IDs + the secret.
REPLACE: Screenshot of the Graph API configuration in FileRelay
How each mode delivers
Webhook — POSTs an Adaptive Card to the URL containing file name, document type, SAP doc ID, repository name, timestamp. The file itself is not uploaded.
Graph API — auths to Azure AD with client credentials, uploads the document to the channel's Files tab (backed by SharePoint), posts a channel message with a link to the file.
Message placeholders
message supports:
| Placeholder | Description | Example |
|---|---|---|
{doc_id} |
SAP document ID | 4500012345 |
{doc_type} |
Document type | Invoice |
{repo_name} |
Repository name | Vendor Invoices |
{fileName} |
Filename | 4500012345.pdf |
{date} |
Current date (YYYY-MM-DD) | 2026-04-04 |
Webhook mode puts the message in the Adaptive Card body; Graph API posts it as a channel message alongside the file link.
Finding team + channel IDs
Graph Explorer:
GET https://graph.microsoft.com/v1.0/me/joinedTeams
GET https://graph.microsoft.com/v1.0/teams/{team_id}/channels
Teams app: right-click the channel name → Get link to channel. URL contains both:
https://teams.microsoft.com/l/channel/{channel_id}/...?groupId={team_id}&...
URL-decode channel_id from the path segment.
Tips
- Private channels — both modes work. Webhooks must be configured inside the private channel; Graph API needs the app explicitly authorised for it.
- Adaptive Cards — webhook mode renders rich cards with structured fields automatically.
- Rate limits — Graph API throttles per app per tenant. FileRelay handles 429s with backoff.
- Multiple channels — one destination per channel; attach as many to a routing rule as you need.
- Files tab storage — Graph API uploads go to the channel's SharePoint library, so files are searchable, versioned, and reachable from SharePoint too.
- Treat webhook URLs as secrets — anyone with the URL can post. Compromised → delete the webhook in Teams, create a new one.
Configuration Fields
| Field | Type | Required | Description |
|---|---|---|---|
| webhook_url | string | Optional | Incoming Webhook URL (for webhook mode; use this OR team_id + channel_id) |
| team_id | string | Optional | Teams team ID (for Graph API mode; use with channel_id) |
| channel_id | string | Optional | Teams channel ID (for Graph API mode; use with team_id) |
| message | string | Optional | Custom message text (supports placeholders) |
Credentials
| Field | Type | Required | Description |
|---|---|---|---|
| client_id | string | Optional | Azure AD App Client ID (required for Graph API mode) |
| client_secret | string | Optional | Azure AD Client Secret (required for Graph API mode) |
| tenant_id | string | Optional | Azure AD Tenant ID (required for Graph API mode) |
All credentials are encrypted at rest using envelope encryption.
Ready to set up Microsoft Teams?
Create a free account and add this connector in under 2 minutes.