Jira is a really popular tool for tracking bugs, issues, and project management activities in general so you would think that the wide range of option it offers are just common knowledge at this point, and the adoption of productive integrations and apps has been exploited to the point where it is really hard to do something more effective anymore. The reality is a bit different, though, and there are a few reasons why most companies do not take advantage of the full potential of Jira, the main ones being:
the inability to master built-in Jira capabilities without spending many months on diving deep into configuration options,
a huge variety of available integrations that can extend the built-in features significantly, which makes it pretty hard to choose those that suit our needs best.
The good news is that Atlassian are working hard on making Jira much more user-friendly with their new “next-gen” projects, and we believe this will ease the pain of complex configurations for new and less technical users in the future. At this point, in March 2019, the “next-gen” configuration projects are not yet suitable for more complex development initiatives due to their limitations in terms of workflow customization, the inability to have multiple boards at the same time, or the lack of automatic roadmap predictions based on previous team velocity. That said, we are looking forward to the next iterations of this easy-to-use concept as it already brings value in multiple projects at our organization.
When it comes to the overwhelming variety of available Jira integrations and apps – hopefully, this article will come in handy and give you an idea of what is possible in terms of organizational improvements by providing you with a list of 5 most important Jira integrations that we currently use and benefit from on a daily basis at Netguru.
1. Jira – Slack
Atlassian announced the forging of a strategic partnership with Slack some time ago while at the same time notifying users that they will discontinue supporting Hipchat and Stride in the future. This shows how much Atlassian believes in Slack as a future-proof communication tool for businesses. Even though we did encounter few issues with Slack since we started using it, we can totally recommend it so if you haven’t used it already, it might be worth checking out. The integration with Jira itself is really well designed and easily configurable.
What are the benefits of using the Jira-Slack integration then? There are two main ones that make collaboration on different projects much more effective: ticket previews and notifications.
The first one is extremely helpful when your workflow involves different people collaborating at different points of a ticket’s lifecycle, while the other one keeps you up to date with the latest changes on Jira without having to monitor it all the time. When people discuss a particular Jira ticket on Slack (for example, when a Quality Assurance specialist checks the ticket and has additional questions to the developer), they may refer to it by using its key which, with the integration turned on, will result in the Jira Cloud Slack app posting a clean preview of the ticket in the conversation allowing for a quick ticket identification. In this scenario, you would see it like this:
It saves the parties involved precious seconds that they would otherwise have to spend on opening Jira and using the sidebar search tool to locate the task and read its description. It’s not a huge time saver, but its positive impact grows with the size of the organization.
Notifications that are provided by Jira Cloud can be configured for different Jira events (such as ticket creation or transition). It might be a good idea to configure them on a separate Slack channel in the case of bigger projects to avoid losing track of human conversations within a pile of automatically generated notifications. Those notifications can look like those visible below:
2. Jira – GitHub
The second important integration that allows you to organize your work better by saving a bit of time during the development process is the Jira-Github integration. What does it offer and how does it save you time? It simply allows your teams to see their branches, commit messages, and pull requests directly from Jira’s ticket view. This way when a ticket is at the “Code Review” stage, for instance, another team member can quickly take a look at its code just by going into the ticket’s details and clicking on the Development section as long as they have the Jira permission called “View Development Tools”. That particular section looks like this:
Another important aspect is the fact that Jira allows you to perform ticket transitions automatically when a pull request is merged on Github. It is a good idea to configure your Jira in a way that would allow you to benefit from this as it really saves your people’s time. One way you can use this to your advantage is to merge pull requests after tickets are checked and accepted by a QA. If that’s the case, you can add a post function in your project’s workflow to automatically transition tickets from the “QA” column to “Merged” or “Done” in Jira, depending on the environment setup you use in the project and your Definition of Done. One question that comes to mind is how Jira knows which merged pull request should trigger a transition of a particular ticket. It happens by matching the Jira ticket issue key and a branch name that should contain that issue key. The practice of naming branches has to be followed for this integration to work flawlessly.
The developers in your team can even use this integration to leave a comment, log the time spent on a ticket or update its status without leaving the command line or GitHub thanks to the “smart commits” feature of the integration.
Our next proposition from iDalko is not an integration, but a Jira app that we use in multiple ways in our organization. What is it? Exalate is marketed as the most flexible synchronization tool for issue trackers and that short definition is pretty accurate from what we have observed so far. It allows you to configure customizable connections that can keep different projects or issues in sync (doable even if projects are stored in different Jira environments). It’s not that easy to imagine what you can achieve with it, so let me give you two scenarios of how Netguru takes advantage of Exalate.
Exalate usage scenario 1:
Netguru has an internal DevOps team that operates on their own internal Jira Service Desk, but we would often like DevOps engineers to work on cases related to our commercial projects. In such cases we want their work to be updated and reflected on our commercial project boards. How does Exalate support this scenario? We configured an Exalate connection and a trigger to make this work. The trigger listens to the content of the “labels” field on all our projects, and whenever it notices that a “Devops-Synchronization” label has been added on a commercial project ticket, it initiates a connection. The connection, on the other hand, takes care of creating a reflection (it does not have to be a 1-to-1 copy) of that particular ticket on DevOps Service Desk where appropriate people take care of its estimation, assignment, and execution. Exalate keeps both tickets in sync. You can even configure which fields should be synced and how, so the commercial project and DevOps teams are always up to date in terms of what they have to do and what their current workload is. This helps them to use the resources and collaborate more effectively.
Exalate usage scenario 2:
Netguru Marketing team wanted to start using Jira as a task tracking and reporting solution. As a team, they receive numerous requests on a daily basis from members of different teams so it seemed to be a good idea to make use of the Jira Service Desk interface for the ticket creation process. The problem was that the size of the Marketing team combined with Jira Service Desk per agent billing rule significantly increased our monthly costs of Atlassian subscription and we felt the need for optimization. What did we do? We were already using Exalate at Netguru so we figured out a way to use it to our advantage here. We created an additional Jira project (not a Service Desk), configured a new Exalate trigger, a connection, and an additional post function in Marketing's Service Desk workflow. How does it work? A trigger listens to the “labels” field and whenever it sees a label called “GSD-GM”, which is automatically being added after ticket creation through the post function on Marketing's Service Desk side, it initiates a connection between Marketing's Service Desk and the Marketing Jira project and creates a synchronized copy on the latter. This way, we do not need all Marketing team members as agents on Marketing's Service Desk. They can work from a standard Jira project, and their stakeholders can still use the beautiful ticket creation interface reserved for Jira Service Desks. This mechanism after configuration allowed us to reduce the monthly costs of Marketing’s Service Desk by around 95%. Some people could say, okay but you just migrated the cost from your Jira Service Desk subscription to your Jira Software subscription, but that is not the case here because at this point all Netguru employees already have a Jira Software seat by default anyway.
Our next tool of choice for increased productivity in Jira is Zapier, a tool with huge automation power and an easy-to-use interface. You don’t really need any technical background to use Zapier with good results. How do we benefit from it? Different teams use Zapier in different ways at Netguru, but in this case, let’s focus on how we combined it with Jira. We use data provided through Jira Service Desk tickets by our employees to update a Google Sheets document used by the team that handles development budgets in our company. In other words, whenever someone wants to visit an interesting conference or buy a book from their development budget, they just raise a ticket on a particular Jira Service Desk. If their ticket gets accepted by an appropriate person, Zapier takes care of updating Google Sheets with a new row that consists of provided data. It may sound complicated, but it actually works well and our employees are used to working with Service Desks. The alternative of storing all data related to budgets of all employees directly in Jira is not the best, especially if you need to update values pretty often with precise calculations. Using Zapier here allowed us to make a semi-automated bridge between an easy-to-use interface provided by the Service Desk in Jira and complicated calculations performed on the side of a safely stored Google Sheet document.
5. Jira Misc Workflow Extensions (JMWE)
This one is a real gem that allows you to perform significant automation procedures on tasks in Jira. It adds more than 20 additional post functions to your workflows and you can get really creative with how to configure them thanks to a well-designed layout, good documentation and a great level of control that is achievable thanks to Nunjucks annotation handling. How do we use it to be more productive? Let me give you a few examples.
We configure a “set field value” post function with a conditional execution when we need tickets of one request type on a particular Service Desk to be forwarded to different assignees depending on the data provided by the Service Desk Customers. In our case, we have a Helpdesk where customers need to choose “City” from a dropdown field when creating a ticket on the Service Desk portal and, depending on the city selected by the user, the ticket gets assigned to whoever handles requests in that particular city.
We also use the “set field value” post function to automatically calculate the priority and impact fields of different tasks on our Service Desks by weighing answers selected by the users from dropdown fields when creating a ticket. Thanks to this, our Service Desk teams know how fast they should respond to a particular ticket and how much time they have to resolve the issue as we combined all this with an SLA calculation.
That was the last one we decided to cover on this occasion. Apps and integrations mentioned in this article turned out to work for us really well, so it feels natural to recommend them here. Who knows, maybe thanks to that more people can benefit from them in the future? That said, it does not mean that there are no better solutions out there. It all depends on your needs, setup, and skills, as different solutions require different means. If you know any better options than those mentioned in this article or have any questions related to this particular topic, feel free to get in touch with us.