Jira Multi-server Project

Overview of Project

Several large enterprise customers are in a situation where they have multiple Jira servers (cloud and server) but our current plugin version only supports a single server. Large enterprises that acquire smaller companies will likely continue to need support for multiple servers despite some efforts to centralize as an ideal.

This project is intended to “update” the existing Jira plugin to support multiple instances of Jira from within Mattermost. All the major functions that users generally use as part of the jira integration may be affected (as each plugin action needs to ask the user which server the user is referring to).

 

Key Functional Changes:

server-side

client-side

 

server-side

client-side

 

Done

 

Allow a user to create a Jira issue on one of their authenticated/installed Jira servers

Done

 

Allow a user to transition an issue on one of their authenticated/installed Jira servers

Done

 

Allow a user to assign an issue on one of their authenticated/installed Jira servers

Done

 

Allow a user to view an issue on one of their authenticated/installed Jira servers

Done

 

Allow a user to Attach a MM thread to an existing Jira issue on one of their authenticated/installed Jira servers

Tickets filed in ee and OSS

 

Support the new Slash command auto-complete functionality for Jira server selection in commands

Done

Needs UI picker

Allow a channel admin to create a subscription that comes from multiple Jira servers into one channel, so they can keep a team up to speed, even if they use multiple Jira servers.

Ticket filed ee-jira

 

  • Allow an admin to “install” multiple servers as part of the Jira plugin config so the users have a list of servers they can access/authenticate with

    • (Not done) Remove the Jira server URL from config

Done

 

Allow the admin to see a list of configured Jira servers and remove a server that is going offline

Done

 

For each Jira server a user is authenticated to, the JiraBot should notify them of mentions and comments on their assigned issues so they can stay on top of issues across their servers in one place

Done

 

For each Jira server a user is authenticated to, the JiraBot should notify them of mentions and comments on their assigned issues so they can stay on top of issues across their servers in one place

Done

Needs UI picker

Allow a Mattermost user to Authenticate with specific Jira servers (present a list of Jira servers that their administrator has already pre-configured/installed on the MM server - no free-form entry of server URLs etc.) so they can easily connect and get going with the servers they use everyday.

Done

 

Allow a Mattermost user to disconnect one or several of their authenticated Jira accounts if they leave a team.

Ticket filed ee-jira

 

  • Allow a user to set a “default” server which is used if no server is specified in a slash command line so they can complete actions faster, without specifying a server constantly.

    • To make it easier for the user, in most UX interfaces - the last used server should be displayed the next time an action is used. For example: Create a ticket on Server A, then create another ticket…the UX should already select “Server A” for the user. @Asaad Mahmood Thoughts?

Done

 

Allow a user to turn notifications on/off for each server they are authenticated with :question_mark: (low Priority - assume they can disconnect).

Ticket filed ee-jira

 

Return the Jira server/cloud version that is configured in the plugin to Mattermost telemetry systems

Core UX Changes:

Create/Attach Jira Issue

When creating an issue - there should be a server dropdown listed:

 

Defaults:

  • Ideally we store the option the user chose previously and pre-select it for creation, and subscription rules creation.

 

Transition an Issue/Assign/View

When transitioning an issue - the Jira server should be an optional parameter for the command:

/jira transition <serverName> <issueID> <NewState>

if no servername is specified, then the plugin should use the default Server.

 

Subscription Creation

Channel admins who can create subscritions to Jira events in a channel should be able to setup a subscription that pulls from multiple servers into one Mattermost channel. ie: A Bugs channel that contains S1 priority bugs from all the Jira servers.

 

Installing the Jira Plugin

Admin: Install/Uninstall multiple Jira Servers

An admin can run /jira install cloud https://SERVERURL multiple times.

We should consider adding an additional param: ServerName to identify each server

/jira install <cloud|server> <Server_URL> <ServerName>

admin would need to run: /jira install cloud https://serverurl MainJira

Ideally, if the admin forgets to put a “servername” bot a should prompt them? Or ask them to type it again.

Uninstall servers

To remove a server from the configured list of Jira servers - the admin would need to run:

/jira uninstall <ServerName>

 

JiraBot Notifications:

The notifications should also include the name of the server that it was originated from so the user knows the context of the issue easily.

Is this actually valuable to the user??

Connecting/Disconnecting with Jira as a user

Since there are multiple servers available to the user, and they may only need to authenticate with one server (or multiple) - we should make this as seamless as possible without forcing the user to change to the browser if possible.

After typing /jira connect - IF there are multiple servers configured - the user should be presented with a list of servers they can authenticate with:

“Here is a list of Jira servers which you may have access to, click on the link next to it to connect. This integration lets you create, assign, transition and view Jira issues directly from within Mattermost.

 

OR

Just show a dropdown of available servers you can connect with.

Questions:

  • How do we handle Atlassian cloud accounts with access to multiple Jira instances?

Assumptions

  • Code produced as a result of this project will be open-sourced and become part of the standard “Official Mattermost Jira plugin”

  • The maintenance of the code will continue to be supported by Mattermost’s team and the community in the future and should be coded to Mattermost standards (linting, etc.)

  • The solution will support a mix of cloud and on-prem deployments - there may be some issues that arise from this. Parity is not assured, but attempted.

 

Customer Questions:

  • How do you interact with multiple servers? One two? many? GO back and forth? What do they expect for default values?

  • What should we call the servers? Do you need them to be custom?

  • As a user, how do you recognize your different Jira servers(URL?)?

  • Are your Jira project/issue codes unique across servers? (ie: MM)

  • Do you have different accounts linking to multiple servers?

  • DEVELOPERS: Can two separate accounts be logged in at the same time?

  • Version: Do you have a mix of Cloud and Server Jira versions?

  • What’s Customer’s MM cluster setup? (hardware wise)

Competition

Slack and MS teams both support multi-server instances of Jira.