LogoLogo
Login to CortexBook a DemoCortex Academycortex.io
  • Cortex Docs
  • Cortex Quick Start
  • Ingesting data into Cortex
    • Managing Entities
      • Adding entities
        • Add services
        • Add domains
        • Add teams
        • Add custom entity types
        • Defining dependencies
      • Entity details page
      • Defining ownership
      • Defining relationship types
      • Grouping entities
      • Adding external documentation
      • Adding Deploy data
      • Adding custom data
      • Viewing discovered entities
      • Archiving entities
      • Relationship graph
      • Using On-call Assistant for incidents
      • Managing Terraform infra in Cortex
    • Managing Catalogs
    • Integrations
      • Internally hosted integrations
      • ArgoCD
      • AWS
      • Azure DevOps
      • Azure Resources
      • BambooHR
      • Bitbucket
      • BugSnag
      • Buildkite
      • Checkmarx
      • CircleCI
      • ClickUp
      • Codecov
      • Coralogix
      • Custom webhook integrations
      • Datadog
      • Dynatrace
      • Entra ID (Azure AD)
      • FireHydrant
      • GitHub
      • GitLab
      • Google
      • Grafana
      • incident.io
      • Instana
      • Jenkins
      • Jira
      • Kubernetes
      • LaunchDarkly
      • Lightstep
      • Mend
      • Microsoft Teams
      • New Relic
      • Okta
      • Opsgenie
      • PagerDuty
      • Prometheus
      • Rollbar
      • Rootly
      • Sentry
      • Semgrep
      • ServiceNow
      • Slack
      • Snyk
      • SonarQube
      • Splunk Observability Cloud (SignalFx)
      • Splunk On-Call (VictorOps)
      • Sumo Logic
      • Veracode
      • Wiz
      • Workday
      • xMatters
  • Scorecards
    • Initiatives and Action items
      • Creating issues based on Initiatives
    • Scorecard rule exemptions
    • Scorecard rule filters
    • Scorecard examples
    • Scorecards as code
  • Reports
    • Executive report
    • All Scorecards report
    • Bird's eye report
    • Progress report
    • Report card
  • Eng Intelligence
    • Custom Metrics
    • Jira Metrics
    • Metrics Explorer (Beta)
    • Velocity dashboard (Beta)
  • Cortex Query Language (CQL)
    • Running and saving CQL queries
    • Using CQL reports
    • Using JQ in Cortex
  • Workflows
    • Creating a Workflow
      • Workflows as code
    • Blocks
    • Running a Workflow
    • Registering a Scaffolder template
      • Scaffolder advanced usage
    • Using a Workflow to sync in ArgoCD
    • Kicking off a Jenkins pipeline in a Workflow
    • Calling internal service endpoints in a Workflow
  • Plugins
    • Creating a plugin
      • Creating a plugin proxy
    • Migrating Backstage plugins to Cortex
  • Engineering homepage
  • Workspace Settings
    • Using GitOps for Cortex
      • GitOps logs
    • Managing users
      • Roles and permissions
        • Custom roles
        • Team ownership entity editing
      • Configuring SSO
        • Microsoft Entra ID
        • Google
        • Other OIDC providers
        • Okta
          • Okta SCIM
      • Configuring identity mappings
      • Onboarding management
    • API keys, secrets, and tokens
      • Secrets
      • Personal tokens
    • Audit logs
    • Entity settings
      • Data verification
      • Auto archiving entities
    • IP allowlist
    • Notifications
      • Notification logs
    • Customizing your workspace
    • Using search in Cortex
  • Cortex API
    • REST API operations
      • API Keys
      • Audit Logs
      • Catalog Entities
      • Custom Data
        • Custom Data (Advanced)
      • Custom Events
      • Custom Metrics
      • Dependencies
      • Deploys
      • Discovery Audit
      • Docs
      • Eng Intel: User Labels
      • Entity Relationship Types (Beta)
      • Entity Relationships (Beta)
      • Entity Types
      • GitOps Logs
      • Groups
      • Initiatives
      • Integrations APIs
        • Azure Active Directory (Entra ID) API
        • Azure Resources API
        • AWS API
        • Azure DevOps API
        • CircleCI API
        • Coralogix API
        • Datadog API
        • GitHub API
        • GitLab API
        • incident.io API
        • LaunchDarkly API
        • New Relic API
        • PagerDuty API
        • Prometheus API
        • SonarQube API
      • IP Allowlist
      • Notification Logs
      • On call
      • Packages
      • Plugins
      • Queries
      • SCIM
      • Scorecards
      • Secrets
      • Team Hierarchies
      • Teams
      • Workflows
Powered by GitBook
On this page
  • Setup instructions​
  • Create the app​
  • Connect your Cortex instance​

Was this helpful?

Export as PDF
  1. Self-managed Cortex

Self-managed Microsoft Teams

Last updated 3 months ago

Was this helpful?

Our Microsoft Teams integration requires a Teams app, which needs to be configured in your own Teams workspace when using Cortex Self-Managed.

Setup instructions

Create the app

  1. Use existing OAuth credentials or create a new Enterprise application in Azure. The following environment variables are referred to later on.

    MICROSOFT_TEAMS_CLIENT_ID - the Application ID

    MICROSOFT_TEAMS_CLIENT_SECRET - the Client Secret

    MICROSOFT_TEAMS_REDIRECT_URI - the Redirect URI, "[Cortex Frontend URL]/oauth/internal/microsoft_teams"

  2. Create a Bot Service in Azure. The following environment variables are referred to later on.

    MICROSOFT_TEAMS_BOT_APP_ID - the Microsoft App ID for the bot

    MICROSOFT_TEAMS_BOT_APP_PASSWORD - the Bot Password

  3. Create/Upload the Teams App

    Use the following manifest to create a new Teams app in your workspace.

    Make sure to replace the URLs found in [] with the .

    {
      "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
      "manifestVersion": "1.16",
      "version": "1.0.0",
      "id": "[MICROSOFT_TEAMS_BOT_APP_ID]",
      "developer": {
        "name": "Cortex",
        "websiteUrl": "https://www.cortex.io",
        "privacyUrl": "https://www.cortex.io/legal/privacy-policy",
        "termsOfUseUrl": "https://www.cortex.io/legal/terms-of-service",
        "mpnId": "6762083"
      },
      "name": {
        "short": "Cortex",
        "full": "Cortex | Internal Developer Portal"
      },
      "description": {
        "short": "Stay on top of your Cortex Scorecard scores & Initiatives",
        "full": "Cortex Scorecards and Initiatives help your team establish best practices and improve quality. We’ll send you a weekly notification to let you know what’s on your plate for the week as well as notifications for any new Initiatives, upcoming Initiative deadlines, and score changes for services that you own. Book a demo: https://www.cortex.io/demo?utm_source=docs\nContact sales: https://go.cortex.io/contact-sales-request.html\nSupport hub: https://support.getcortexapp.com/hc/en-us\nSupport email: support@cortex.io\nGet started: https://docs.cortex.io"
      },
      "icons": {
        "outline": "cortex32x32.png",
        "color": "cortex192x192.png"
      },
      "accentColor": "#25074D",
      "bots": [
        {
          "botId": "[MICROSOFT_TEAMS_BOT_APP_ID]",
          "scopes": [
            "personal"
          ],
          "needsChannelSelector": false,
          "isNotificationOnly": false,
          "supportsFiles": false,
          "supportsCalling": false,
          "supportsVideo": false,
          "commandLists": []
        }
      ],
      "validDomains": [
        "[Cortex Backend URL]"
      ],
      "showLoadingIndicator": false,
      "isFullScreen": false,
      "defaultBlockUntilAdminAction": false,
      "defaultInstallScope": "personal",
      "configurableProperties": [],
      "webApplicationInfo": {
        "id": "[MICROSOFT_TEAMS_CLIENT_ID]"
      }
    }

  4. Configure the Messaging endpoint - "[Cortex API URL]/api/v1/microsoft/teams/webhook"

  5. Upload a zipped manifest along with the icons to your Teams instance. Note: only Teams admins can do this.

If your Cortex Self-Managed installation is not available from the public internet, the Microsoft Teams notifications will not work, as Microsoft Teams needs to be able to hit the Cortex API when a command is run.

You'll need to configure your on-prem deployment to be able to talk your Teams App.

  1. Create a k8s secret and add the secret in your values.yaml file for the Helm chart. You may already have a secret set up if you had configured a persistent store previously, so be sure to verify in your Helm chart.

  2. Add the follow key/values to the secret (keeping in mind they need to be base64 encoded in k8s):

    1. MICROSOFT_TEAMS_CLIENT_ID

    2. MICROSOFT_TEAMS_CLIENT_SECRET

    3. MICROSOFT_TEAMS_REDIRECT_URI

    4. MICROSOFT_TEAMS_BOT_APP_ID

    5. MICROSOFT_TEAMS_BOT_APP_PASSWORD

  3. Restart your Cortex backend deployment

Connect your Cortex instance

​
​
URLs you set up
Download cortex32x32.png
Download cortex192x192.png
​