Document toolboxDocument toolbox

Fundamentals Jira Server / Data Center

Connecting a self-hosted version of Jira (Server or Data Center) with a cloud-based solution like Microsoft Teams in both directions is not an easy task and requires some trade-offs.

Microsoft Teams for Jira - Smart Connect cannot run locally on Jira Server like most other Atlassian apps. It requires a constant access to public services.

If you are running a Jira Server behind the firewall without access to the internet, Microsoft Teams for Jira - Smart Connect is not the right solution for you.

Connectivity with Teams

The tricky part is to have a secure and validated connection between Jira and Microsoft Teams. We do not expose any admin access or use service accounts. All actions are done via the official Rest API and in scope of the current user. That’s why users need to login to Teams and Jira at the same time so the app gets a trusted connection for the Teams and Jira user.

  • For the Microsoft Login we use MSAL

  • For the Jira Login, we use OAuth 1a.

yasoon is hosting the app

The Server/Data Center version is basically the same as the Cloud version - just packaged for Jira Server & Data Center. That means, yasoon is hosting the app, all contents are processed by yasoon services and settings are stored in the yasoon database.

You can validate that by analyzing the issue view. You will see that the Teams panel is embedded as an iFrame hosted on *

This is by design and an important part of ensuring the app is secure. For on-premise systems, it’s practically impossible to establish a trusted connection to our cloud systems, without relying on certain browser security features. Therefore, we need to host the app on our domain.

A side benefit: Microsoft Teams is being updated constantly and probably one of the fastest evolving software of all times. On average there is a new feature rolled out every 3 days. We keep a close eye on all their changes and we can update the app whenever necessary.


Jira is sending updates into Teams channels based on certain events. This is enabled by registering a webhook. You can check the registered webhook(s) for your instance as described here: