Jira plugin not enabling after Jira restart

Sometimes when developing a Jira plugin which creates customfields on installation, it does not enable automatically when Jira app is restarted, the reason being that the code which is used to add the customfields implemented from the class :InitializingBean, maybe with the class :DisposableBean. To remove somethings on plugin disable/uninstall as follows:
Continue Reading →


How to create a dashboard in Jira

Ever wondered how to create a dashboard in Jira? You can create your own dashboard or share a dashboard with your team by adding permissions for specific users, groups or project roles to access your dashboard. The first step will be to create a filter. The filter will be specific information you may require. Dashboards work well if you need a specific view or information on a certain project.

Continue Reading →


The Agile Creative

Creative people are strange

Their brains are like spaghetti at times, and in and amongst those noodles are nuggets of brilliance. Creative people like to dictate their own hours. Well that makes sense, because flashes of brilliance don’t always exist from 9-5. Sometimes ideas will come at odd hours. So how do you introduce a creative person to an Agile tool such as Jira without making them feel like you’re trying to impose the very structure onto them that stifles their creativity?

Continue Reading →


Jira Plugin Development – Making sense of the Jira Technical Ecosystem

This is the first in a series of articles dealing with Jira plugin development.


Jira is a project tracker web application built by Atlassian in Java, and is used for agile software development by thousands of project teams. Jira can either be used as a hosted application (Jira OnDemand), or can be installed on a local server. Jira OnDemand is ideal for smaller companies that do not want to take on the burden of managing their own server. 



The server requirements for a production system are:
[list_icon color=”blue” type=”icon_arrow”]

  • a Linux, Solaris or Microsoft Server based server
  • a suitable Java platform (JDK or JRE)
  • the Apache Tomcat application server
  • Oracle, My SQL, PostgreSQL or Microsoft SQL Server Database


Most modern browsers are supported on the client side, a minimum screen resolution of 1024 x 768 and Javascript support is required. More details on the specific version requirements can be found on the Jira website.


Architectural Overview

Jira is deployed as a standard Java WAR file, and is built on the following:

[list_icon color=”blue” type=”icon_arrow”]

  • WebWork, a Java web application framework (webwork1 is used)
  • Seraph, used for web authentication
  • Embedded Crowd, used for identity and user management
  • PropertySet, used to store key/value pairs
  • Active Objects, a new Object Relational Mapping layer used by plugins
  • 100s of Java classes, used to implement business logic (core and manager classes)
  • Apache Lucene, used for searching
  • JSP and Velocity, used for view templates
  • Quartz, used for job scheduling
  • OSWorkflow, a workflow API providing a very flexible workflow implementation
  • OFBiz (Apache’s Open for Business Project), open source enterprise automation software


In addition to the above, Atlassian has also introduced a Gadget Javascript Framework that can be used for the development of gadgets.


Plugin Development

The Atlassian Marketplace is the preferred distribution channel for custom plugins, both for free open-source or commercial add-ons. Various plugin modules are supported for functional areas such as reporting, workflows, custom fields, searching, remote access, as well as links and tabs. There are different versions of the Atlassian Jira Plugin Development Platform, each with a specific set of component versions. 

The major components in the platform for Jira Plugin Development are:

[list_icon color=”blue” type=”icon_arrow”]

  • Shared Access Layer (SAL), the API for accessing common services
  • Atlassian User Interface (AUI), set of reusable Javascript and CSS UI components
  • Atlassian Template Renderer (ATR), API for rendering textual content
  • Atlassian Event, library that allows plugins to send and consume internal messages
  • Activity Streams, API for sending and consuming activity streams
  • Gadgets, framework for developing OpenSocial gadgets
  • Universal Plugin Manager (UPM), tool for installing and managing plugins
  • Atlassian REST Plugin Module, create plugins points easily by exposing service and data entities
  • Trusted Apps, protocol for authenticating Atlassian applications
  • Application Links (AppLinks), a module that allows connection to external Atlassian applications
  • OAuth, the Atlassian implementation for accepting and sending authenticated requests
  • Plugin Framework, the framework that executes the plugins and manages available plugin modules
  • Active Objects, an ORM layer used for plugin data storage
  • SpeakEasy, an experimental extension mechanism for plugin prototyping
  • Jira Issue Collector, library for collecting user feedback from any page


Some Trivia

Jira is pronounced ‘JEEra’, based on the pronunciation of Kujira, which is Japanese for ‘whale’. Jira is used by companies such as NASA, Cisco, BMW and Facebook to manage their product development teams.


Jira Developer Resources

[list_icon color=”blue” type=”icon_arrow”]



Enhanced by Zemanta

Online Agile Project Management Tools

There are a number of online agile applications to assist with the management of agile software development projects. We’ll focus on agile tools that we’ve used on internal and external projects, namely Jira/Greenhopper, Pivotal Tracker and Trello.

Jira with Greenhopper

Greenhopper Agile tool

At Infoware Studios, we use Jira for all our projects. Jira is built around issues, which are captured, prioritised and assigned to team members. It is arguably the most powerful of the three systems. It allows one to customise workflow steps, manage teams and integrate with git, to name but a few features. 

Greenhopper then adds a wide selection of agile project management capabilities to Jira, for example:

[list_icon color=”blue” type=”icon_arrow”]

  • it can be used for scrum or Kanban projects
  • facilitates the building of a backlog by creating user stories
  • stories can be prioritised in the backlog by dragging and dropping, and estimated with ease
  • team members can visually update progress by moving stories
  • visualise processes across multiple Jira projects on a single board


Jira does not have any free pricing options, and starts at $50 per month. GreenHopper starts at $10 per month (pricing as at time of writing).

Pivotal Tracker

Pivotal Tracker agile toolPivotal Tracker has similar features to Jira/GreenHopper, the most obvious difference is the presentation of stories. It is a great tool for distributed teams, offering real-time collaboration with one of the best overview or dashboard displays. 

Pivotal tracker is free for public projects, individuals, non-profits and academic institutions. Pricing for teams start at $7/month for 3 collaborators (pricing as at time of writing).


trello agile tool

trello agile tool1

Trello has a very simple Kanban interface, making it a great tool for smaller projects and teams. 

It has some nice features for teams, such as voting, notifications and real-time collaboration. The default lists (swimlanes) are set up for Kanban, but one can easily add new lists for customized workflows. 

Trello offers a free version as well, and a single Business Class option for $25/month (pricing as at time of writing).

We recommend Jira with GreenHopper, here is an easy to use comparison tool between GreenHopper and some of the other options, such as Pivotal Tracker, Rally and VersionOne:


 Additional Resources:

[list_icon color=”blue” type=”icon_arrow”]


What others are saying: 

[list_icon color=”blue” type=”icon_arrow”]



Enhanced by Zemanta

Agile Marketing – JIRA project management tool

The agile way

At Infoware Studios, everything we do is managed by using an agile approach, including our marketing department. Not only are we fiercely passionate about agile, but we practise what we preach as well and follow agile principles in all our projects.

As someone who is new to agile, software development and the like, I speak from a non-technical perspective. As the marketer for Infoware Studios, I found that agile was a really productive way of managing and executing tasks and that it could apply to any field or industry, not just software development.

Using JIRA

So we implemented an agile approach in our marketing activities primarily using JIRA, the project and issue tracking software by Atlassian. JIRA is an excellent project management tool that allows you to create high level topics (called Epics), and then create tasks to be actioned under those topics (called Issues). Tasks can be assigned to people in your team. You can then create a weekly (or bi-weekly if you want) to-do list known as a Sprint, where you add all the tasks that need to be actioned in this time frame.  You then move the tasks, based on your activity, through the To-Do, In Progress and Done columns. Columns can be added, removed and renamed, so they don’t need to necessarily be the same as those mentioned. JIRA also allows you to draw reports and include more than one project on your overall view.

JIRA has much more functionality than the above basics and is often used in software development. However, for someone in a non-IT related field, it works perfectly for project management and can help you increase your productivity and manage your time, as well as creating visibility on the work that you do.

Find out more

Infoware Studios offers JIRA training for those who are interested in utilising this agile tool within your own businesses. Feel free to contact us if you are keen.


Enhanced by Zemanta

Increasing JIRA memory

(Seeing OutOfMemoryErrors in the logs or Jira slows down is symptomatic of this.)

Java applications like JIRA and Confluence run in a “Java virtual machine” (JVM), instead of directly within an operating system. When started, the Java virtual machine is allocated a certain amount of memory, which it makes available to applications like JIRA. By default, Java virtual machines are allocated 64 MB of memory, no matter how many gigabytes of memory your server may actually have available. 64 MB is inadequate for medium to large JIRA installations, and so therefore JIRA memory needs to be increased.

Step 1: Diagnosis


Determine JIRA usage patterns

To determine the JIRA usage patterns:
Choose the cog icon at top right of the screen, then choose JIRA Admin. Then choose System > Troubleshooting and Support > System Info (tab) to open the ‘System Info’ page. Then scroll down the page to view the Java VM Memory Statistics section and look at the memory graph during times of peak usage:

Increasing JIRA Memory1

This server has been allocated a maximum of 768 MB and a minimum of 256 MB (typically defined in the setenv script which is executed by running the start-jira script). If you are trying to see whether your settings are being picked up by JIRA, this is where to look. Here, you can see that JIRA has reserved 742 MB, or which 190 MB is actually in use. If this JIRA instance were running out of memory, it would have reserved the maximum available (768 MB), and would be using an amount close to this.

Determine available system memory on Windows

From the Close Programs Dialogue (Press ctrl-alt-delete), select the Performance tab:

Increasing JIRA memory Performance tab

The amount marked Available is the amount in kilobytes you have free to allocate to JIRA. On this server we should allocate at most 214 MB.


As a rule of thumb, if you have fewer than 5000 issues, JIRA should run well with the default 768 MB. Granting JIRA too much memory can impact performance negatively, so it is best to start with 768 MB and make modest increases as necessary. As another data point, 40,000 works well with 768 MB to 1 GB.

Step 2: Increasing available JIRA memory


Windows Service

There are two ways to configure system properties when starting Running JIRA as a Service, either via command line or in the Windows Registry.

Setting Properties for Windows Services via Command Line as an administrator

Identify the name of the service that JIRA is installed as in Windows (Control Panel > Administrative Tools > Services):

Increasing JIRA memory - control panel

In the above example, the SERVICENAME is: JIRA120312230938

[list_icon color=”blue” type=”icon_arrow”]

  • Open the command window from Start > Run > type in ‘cmd’ > press ‘Enter’
  • cd to the bin subdirectory of your JIRA Installation Directory (or the bin subdirectory of your Tomcat installation directory if your are running the JIRA WAR distribution). For Example:
    cd C:\Program Files\Atlassian\JIRA\bin
  • For JIRA 5.1 or below:
    tomcat6w //ES//%SERVICENAME%
  • For JIRA 5.2 or above:
    tomcat7w //ES//%SERVICENAME%


In the above example, it would be tomcat6w //ES//JIRA120312230938

Increasing JIRA memory - command prompt

[list_icon color=”blue” type=”icon_arrow”]

  • Click on the Java tab to see the list of current start-up options:

Increasing JIRA memory - Java tab

  • Set the maximum memory allocation here.



Enhanced by Zemanta


Permissions and Security

What is an issue ‘security level’?

Issue security levels allow you to control who can see individual issues within a project.

A security level’s members may consist of:

[list_icon color=”blue” type=”icon_arrow”]

  • Individual users
  • Groups
  • Project roles
  • Issue roles such as ‘Reporter’, ‘Project Lead’, and ‘Current Assignee’
  • ‘Anyone’ (eg. to allow anonymous access)
  • A (multi-)user picker custom field.
  • A (multi-)group picker custom field.


Here is a list the different global permissions and the functions they secure:

[list_icon color=”blue” type=”icon_arrow”]

  • JIRA System Administrators – Permission to perform all JIRA administration functions.
  • JIRA Administrators – Permission to perform most JIRA administration functions. A user with JIRA Administrators will be able to log in to JIRA without the JIRA Users permission, but may not be able to perform all regular user functions (e.g. edit their profile) unless they also belong to a group that has the JIRA Users permission.
  • JIRA Users – Permission to log in to JIRA.
  • Browse Users – Permission to view a list of all JIRA user names and group names.


Creating an issue security scheme

1. Depending on the Jira version, Choose Issues > Issue Security Schemes to open the ‘Issue Security Schemes’ page, which lists all the issue security schemes currently available in your JIRA installation.

JIRA permissions and security - admin

2. Click the Add Issue Security Scheme button

JIRA permissions and security - security schemes

3. In the Add Issue Security Scheme form, enter a name for the issue security scheme, and a short description of the scheme. Then click the Add button.

4. You will return to the Issue Security Schemes page, which now contains the newly added scheme.

JIRA permissions and security - issue security schemes

Adding a security level to an issue security scheme

[list_icon color=”blue” type=”icon_arrow”]

  • Choose Issues > Issue Security Schemes to open the ‘Issue Security Schemes’ page.
  • Click the name of any scheme, or the link Security Levels (in the Operations column) to open the Edit Issue Security Levels page.
  • In the Add Security Level box, enter a name and description for your new security level and then click Add Security Level.


Setting the Default Security Level for an issue security scheme

You can choose to specify a Default Security Level for your issue security scheme.

The Default Security Level is used when issues are created. If the reporter of an issue does not have the permission ‘Set Issue Security’, then the issue’s security level will be set to the Default Security Level. If the project’s issue security scheme does not have a Default Security Level, then the issue’s security level will be set to ‘None’. (A security level of ‘None’ means that anybody can see the issue.)

1. Choose Issues > Issue Security Schemes to open the ‘Issue Security Schemes’ page.

2. Click the name of any scheme or the link Security Levels to open the Edit Issue Security Levels page.

[list_icon color=”blue” type=”icon_arrow”]

  • To set the ‘default’ security level for an issue security scheme, locate the appropriate Security Level and click its Default link (in the Operations column).
  • To remove the ‘default’ security level from an issue security scheme, click the ‘Change default security level to “None”‘ link (near the top of the page).


Adding users/groups/project roles to a security level

[list_icon color=”blue” type=”icon_arrow”]

  • Choose Issues > Issue Security Schemes to open the ‘Issue Security Schemes’ page.
  • Click the name of any scheme or the link Security Levels to open the Edit Issue Security Levels page.
  • Locate the appropriate security level and click its Add link (in the Operations column), which opens the Add User/Group/Project Role to Issue Security Level page.
  • Select the appropriate user, group or project role, then click the Add button.
  • Repeat steps 4 and 5 until all appropriate users and/or groups and/or project roles have been added to the security level.


Assigning an issue security scheme to a project

1. Choose Projects > Projects to open the ‘Projects’ page. Select the name of the project of interest. The Project Summary page is displayed.

JIRA permissions and security - projects

2. In the Permissions section of the Project Summary page, click the link corresponding to the Issues label to open the Associate Issue Security Scheme to Project page. This will either be the name of the project’s current issue security scheme, or the word None.

JIRA permissions and security - permissions

3. Select the issue security scheme that you want to associate with this project.

JIRA permissions and security -associate scheme

4. If there are no previously secured issues (or if the project did not previously have an issue security scheme), skip the next step.

5. If there are any previously secured issues, select a new security level to replace each old level. All issues with the security level from the old scheme will now have the security level from the new scheme. You can choose ‘None’ if you want the security to be removed from all previously secured issues.

6. Click the ‘Associate‘ button to associate the project with the issue security scheme.

JIRA permissions and security -associate security

Deleting an issue security scheme

1. Choose Issues > Issue Security Schemes to open the ‘Issue Security Schemes’ page, which lists all the issue security schemes currently available in your JIRA installation.

2. Click the Delete link (in the Operations column) for the scheme that you want to delete. You cannot delete an issue security scheme if it is associated with a project. To do so, you must first remove any associations between the issue security scheme and projects in your JIRA installation.


Enhanced by Zemanta

How to write a simple plugin that adds a new tab in JIRA

How to write a simple plugin that adds a new tab (section) to JIRA’s top-level menu, with a number of menu items in the section. The menu items link to specific web pages. 

You can use this sort of plugin to add links from JIRA to other locations in your environment, such as your company’s intranet or your Confluence site.

In order to do this, you will create a JIRA plugin consisting of the following components:

[list_icon color=”blue” type=”icon_arrow”]

  • A plugin descriptor to enable the plugin module in JIRA.
  • The required plugin modules that define the new menu section and menu items.


Step 1. Create the Plugin Project

Use the appropriate atlas-create-application-plugin command to create your plugin. For example, atlas-create-jira-plugin or atlas-create-confluence-plugin.
[list_icon color=”blue” type=”icon_arrow”]

  • Follow the instructions in the above SDK documents to set up your plugin development environment.
  • Follow the instructions in the above SDK documents to run atlas-create-jira-plugin. This will create your skeleton plugin. You will be prompted for some information to identify your plugin. Enter the following information:

group-id: com.infowarestudios.plugins.MaintainSLA
artifact-id: jira-MaintainSLAMene-items
version: 1.0
package: com.infowarestudios.plugins.MaintainSLA


When the script finishes, open your new local instance of JIRA in your browser at http://localhost:2990/jira.

Your plugin skeleton is already installed and running in JIRA. Take a look at it now, by following these steps:
[list_icon color=”blue” type=”icon_arrow”]

  • Click the downward-pointing arrow next to ‘Administration‘ in JIRA’s top menu bar.
  • Select ‘Plugins‘ from the dropdown list.
  • The ‘Current Plugins’ page opens. Search for ‘jira-menu-items‘ and click the link.

The detail for the plugin will appear

Step 2. Add Plugin Metadata to the POM

Now you need to edit your POM (Project Object Model definition file) to add some metadata about your plugin and your company or organisation.
[list_icon color=”blue” type=”icon_arrow”]

  • Edit the pom.xml file in the root folder of your plugin.
  • Add your company or organisation name and your website to the <organization> element:
<organization>    <name>Infoware Studios</name>    <url>http://infowarestudio.co.za/</url></organization>
  • Update the <description> element:
<description>This plugin adds a new section and items to JIRA's menu</description>
  • Save the file.


Step 3. Register the Plugin Modules in the Plugin Descriptor

Next you will add the required plugin modules to your plugin descriptor at src/main/resources/atlassian-plugin.xml. The plugin descriptor is an XML file that identifies the plugin to JIRA and defines the functionality that the plugin requires.

Here’s a basic plugin descriptor:








Note that some of the information from the POM is transferred to the plugin descriptor using variable names such as${project.artifactId}.

You will need the following plugin modules:

[list_icon color=”blue” type=”icon_arrow”]

  • web section to define the new tab (section) in your JIRA top navigation bar.
  • A number of web items to add the links and menu items to the new section.


Follow these instructions to add the new section and menu items:

[list_icon color=”blue” type=”icon_arrow”]

  • Edit your plugin descriptor at src/main/resources/atlassian-plugin.xml.
  • Add the following web section into your plugin descriptor. This defines the top-level section where we will put all our menu items and links:
<web-sectionkey="my_links_section"name="My Links MainSection”location=”my_links_link”weight=”10″/>
  • The weight attribute determines the order in which web items appear. Items are displayed top to bottom or left to right in order of ascending weight. The ‘lightest’ weight is displayed first, the ‘heaviest’ weights sink to the bottom. The weights for most applications’ system sections start from 100, and the weights for the links generally start from 10. The weight is incremented by 10 for each in sequence so that there is ample space to insert your own sections and links.
  • Add the following web item. This defines the link on the top-level section, with text ‘My Company’. We have pointed the link at the company website:
<web-itemkey="my_links_link"name="Link on My Links MainSection”section=”system.top.navigation.bar”weight=”47″>    <label>Maintanance</label>


  •  The linkId is optional, and provides an XML id for the link being generated.
  • Add another web item, to create a single menu item with text ‘Web Site’ that links to your company website.
<web-item key="website_link" name="my client" section="my_links_link/my_links_section" weight="10"><label>Client details</label><link linkId="website_link">http://localhost:8084/MaintainClient/</link></web-item>
  • Add another web item, to create a menu item with text ‘Documentation’ that links to your documentation website.
<web-item key="documentation_link" name="my SLA" section="my_links_link/my_links_section" weight="10"><label>SLA</label><link linkId="documentation_link">http://localhost:8084/MaintainSLA/</link></web-item>
  • Save the file.


Here’s what your atlassian-plugin.xml file looks like now:

<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-version="2"><plugin-info>



<vendor name="${project.organization.name}" url="${project.organization.url}" />

<param name="plugin-icon">images/pluginIcon.png</param>

<param name="plugin-logo">images/pluginLogo.png</param>



      <web-section key="my_links_section" name="My Links Main Section" location="my_links_link" weight="10"/>


<web-item key="my_links_link" name="Link on My Links Main Section" section="system.top.navigation.bar" weight="47">





<web-item key="website_link" name="my client" section="my_links_link/my_links_section" weight="10">

<label>Client details</label>

<link linkId="website_link">http://localhost:8084/MaintainClient/</link>



<web-item key="documentation_link" name="my SLA" section="my_links_link/my_links_section" weight="10">


<link linkId="documentation_link">http://localhost:8084/MaintainSLA/</link>



      <web-item key="documentation_link" name="Line of Business" section="my_links_link/my_links_section" weight="10">

<label>Line of Business</label>

<link linkId="documentation_link">http://localhost:8084/MaintainLOB/ </link>



<web-item key="documentation_link" name="Application" section="my_links_link/my_links_section" weight="10">


<link linkId="documentation_link">http://localhost:8084/MaintainApplication/ </link>



      <web-item key="documentation_link" name="Root Cause" section="my_links_link/my_links_section" weight="10">

<label>Root Cause</label>

<link linkId="documentation_link">http://localhost:8084/MaintainRootCause/ </link>



Step 4. Build, Install and Run the Plugin

Follow these steps to build and install your plugin, so that you can test your code. If you have not already started the application, start it now:

[list_icon color=”blue” type=”icon_arrow”]

  • Open a command window and go to the plugin root folder (where the pom.xml is located).
  • Run atlas-run (or atlas-debug if you might want to launch the debugger in your IDE).



Enhanced by Zemanta
Page 1 of 2 12