Dynamic Announcement Banners in Atlassian Jira

We’re working with a customer to merge a large number of projects from several Atlassian Jira instances into one. To do this, we migrate a few projects at a time after business hours every other day. What this means is that users see fractured instances for some period of time. To help users understand what is happening, we wanted to give them contextual help. This meant showing an announcement banner that:

  • Gave them directions on where to find their content
  • Was specific, not just “Go to http://NewJiraInstance.com”
  • Only appeared on projects that had been migrated
  • Was easy for us to keep updated as we worked on the project


This was actually fairly easy to put together with some basic HTML and Javascript so we wanted to share this announcement banner drop in snippet with the community:

<!-- Example usage -->
This project's key is: <div class="dynamicProjectKey"></div>
Remember that your content has moved to: https://example.com/jira/projects/<div class="dynamicProjectKey"></div>

$(document).ready(function () { 
	let pkey = ""
	if (document.location.pathname.match("/([A-Z]+)-")[1]){
		pkey = document.location.pathname.match("/([A-Z]+)-")[1]
	else if (document.location.search.match("projectKey=([A-Z]+)")[1]){
		pkey = document.location.search.match("projectKey=([A-Z]+)")[1]
	else if (document.location.pathname.match("/projects/([A-Z]+)")[1]){
		pkey = document.location.pathname.match("/projects/([A-Z]+)")[1]

	let targetProjects = ["ABC", "DEF", "GHI"]

	if (targetProjects.includes(pkey)){
		$(".dynamicProjectKey").each( function(index, element){ 
			$(this)[0].innerText = pkey 

This is a very simplified version of what we did, but we hope that it demonstrates just how easy it is to show dynamic content to your users

If managing complex announcement banners is an ongoing need of yours, you should check out the Announcer for Jira app (they also have a Confluence, and Bitbucket version) on the Marketplace.  A little birdie told me they may be adding project as a variable in the future. 😉

Signup for more Atlassian Jira & Confluence tips and tricks

One easy tip to avoid nuking production in Atlassian Jira and Confluence

In our previous post we discuss some automated steps you can take to help get your staging environment set up correctly. But once you’re there, new risks come up. In this blog, we focus on what you can do in both your production and staging environments to ensure your admins are less likely to confuse the two and break something.

Did you ever delete a scheme and then freak out when you realize you did it on the wrong system? When you’re heads down trying to get things done, it’s easy to lose track of which system you are on.

We’re no different, and have been guilty of this in the past. To help reduce the risk of this kind of mistake we came up with a simple visual cue to help. (more…)

Improving Outage Response in Atlassian

When an outage hits, there are two things more important than getting the system back up. First, you must not make things worse. And second, you have to ensure that you capture all of the necessary information to diagnose the root cause. If you don’t, you’ll have to wait for another outage before you can start your research in earnest.

To help teams deal with these challenges, we have identified two simple improvements that any admin team can quickly implement to improve their response with Atlassian tools.


Grouping attachments in JIRA Cloud

Our customers use JIRA® to track A/B tests in their product. This involves providing multiple screenshots of each of the options they are testing, and JIRA® doesn’t have a simple way to bundle attachments into groups. On server there are apps that can help with this, but in Jira Cloud we had to get creative.


How to snooze issues in Atlassian Jira

I often have to maintain ownership of an issue while waiting on a response from someone else. These issues crowd my board, and I need to make them disappear until I need to follow up on them. So how do we snooze Atlassian Jira issues? (more…)