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 |
|
---|---|---|
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 |
|
|
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 |
|
|
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.
Available Servers
Server A (Click here to Connect your account)
Small Server (Click Here to Connect your account)
Servers you are Already Connected to
OtherServer (Your Default Server) (Disconnect Account)
OtherOtherServer (Set as default server) (Disconnect Account)
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.