<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Better Software and beyond... &#187; JIRA</title>
	<atom:link href="http://www.thorsten-kamann.de/tag/jira/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thorsten-kamann.de</link>
	<description>About architecture, development, quality and more</description>
	<lastBuildDate>Tue, 25 Oct 2011 20:16:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>[Agile Backoffice Series] Introduction</title>
		<link>http://www.thorsten-kamann.de/2011/06/23/agile-backoffice-series-introduction/</link>
		<comments>http://www.thorsten-kamann.de/2011/06/23/agile-backoffice-series-introduction/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 22:24:24 +0000</pubDate>
		<dc:creator>thorque</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Agile BackOffice]]></category>
		<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Continuous Deployment]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Jenkins]]></category>
		<category><![CDATA[JIRA]]></category>

		<guid isPermaLink="false">http://www.thorsten-kamann.de/?p=509</guid>
		<description><![CDATA[<a href="http://www.thorsten-kamann.de/2011/06/23/agile-backoffice-series-introduction/" title="[Agile Backoffice Series] Introduction"></a>This article series describes the Agile Backoffice environment. STOP! Agile&#8230; what? Ok. Let us start with some details about the Agile Backoffice. The Agile Backoffice If you start working agile &#8211; mostly you use Scrum as first agile method &#8211; &#8230;<p class="read-more"><a href="http://www.thorsten-kamann.de/2011/06/23/agile-backoffice-series-introduction/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thorsten-kamann.de/2011/06/23/agile-backoffice-series-introduction/" title="[Agile Backoffice Series] Introduction"></a><p>This article series describes the Agile Backoffice environment. STOP! Agile&#8230; what? Ok. Let us start with some details about the Agile Backoffice.</p>
<h3>The Agile Backoffice</h3>
<p>If you start working agile &#8211; mostly you use Scrum as first agile method &#8211; you and your team are very motivated to do this in a very agile way. The tasks are all pinned on a wall or a whiteboard, a continuous integration will be setup, the project know how will be shared in internal discussions. This works fine for a small team workingalways together in one location.</p>
<p>If you take a look around you see a lot of companies where this optimal conditions not exists. The teams are divided in different locations &#8211; different rooms, different floors, different locations. If your team splitted i such a way a whiteboard with pinned tasks are not a reasonable solution. Additionally to this you have a management interested in the progress of your work. For this requirements you need some tools supporting you. But you should use tools adaptable to your processes and not tools you must adaptable your processes to.</p>
<p>The central tool I choose for the Agile Backoffice is Atlassian Jira. It is the single proint of interest. In this tool you can see all requirements, the stories and the belonging tasks. Additionally you can get informations about changed (re)sources, running builds and &#8211; the most important &#8211; the status of a task, a story or requirement. You have a powerful reporting and a wide support for development tools: Eclipse, IntelliJ, Visual Studio.</p>
<p>Bit only with Jira you can&#8217;t get the result you wish. You need a continuous integration, a source control management, a repository for the deployable artifacts. Additionally you want to review and mesure the quality of your code. For this approaches there are tools but this tools should all be connected together, so there are based on the same data.</p>
<p>This is the goal of the Agile Backoffice and this series of articles. So stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thorsten-kamann.de/2011/06/23/agile-backoffice-series-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Atlassian Jira with Tomcat 6</title>
		<link>http://www.thorsten-kamann.de/2010/06/18/installing-atlassian-jira-with-tomcat-6-2/</link>
		<comments>http://www.thorsten-kamann.de/2010/06/18/installing-atlassian-jira-with-tomcat-6-2/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 13:46:07 +0000</pubDate>
		<dc:creator>thorque</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://blog.kamann.info/?p=360</guid>
		<description><![CDATA[<a href="http://www.thorsten-kamann.de/2010/06/18/installing-atlassian-jira-with-tomcat-6-2/" title="Installing Atlassian Jira with Tomcat 6"></a>Do you need a tracking system to track your requirements, issues and tasks? So you can look around &#8211; and maybe &#8211; your eyes keep on the famous Atlassian Jira. At first Jira is a bug tracker. You can create, &#8230;<p class="read-more"><a href="http://www.thorsten-kamann.de/2010/06/18/installing-atlassian-jira-with-tomcat-6-2/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thorsten-kamann.de/2010/06/18/installing-atlassian-jira-with-tomcat-6-2/" title="Installing Atlassian Jira with Tomcat 6"></a><p>Do you need a tracking system to track your requirements, issues and tasks? So you can look around &#8211; and maybe &#8211; your eyes keep on the famous <a href="http://www.atlassian.com/software/jira/" target="_blank">Atlassian Jira</a>. At first Jira is a bug tracker. You can create, manage and close bugs with Jira. But there is more:</p>
<ul>
<li>Bug tracking</li>
<li>Manage your projects with Jira</li>
<li>Create your own workflows for tasks and issues</li>
<li>Powerful Reporting</li>
<li>Extensible with plugins</li>
</ul>
<p>You can <a href="http://www.atlassian.com/software/jira/JIRADownloadCenter.jspa" target="_blank">download a standalone version</a> bundled with a Tomcat 5.5. With this download you can start directly. But typically you already have an infrastructure. For such scenarios it&#8217;s much better to use the WAR/EAR-Edition of Jira.</p>
<p>This article describes the installation with Apache Tomcat 6 on a Linux box. If you plan to do this on windows you only must change paths and &#8211; of course &#8211; shell against Windows Batch.</p>
<h3>Install Tomcat</h3>
<p>You can get <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">Tomcat from the official projectsite</a>. You get a ZIP- or TAR.GZ-Archive. Now you can extract the archive and do a testrun by browsing to <em>http://localhost:8080</em>.</p>
<p>If you want to deploy Jira to this instance of Tomcat you need some additional Jars not included in the web archive you will later deploy. You can get the additional jars from <a href="http://confluence.atlassian.com/download/attachments/200709089/jira-jars-tomcat6.zip?">here</a>. Create a new directory in you Tomcat installation directory: <em>ext/jira/lib</em>. Copy all Jars into this directory.</p>
<p>Finally you must Tomcat announce the new libraries. For this you edit the conf/catalina-properties by changing the common.loader property (the property is a single line; here are only breaks due to layout reasons):</p>
<pre>common.loader=${catalina.base}/ext/jira/lib/*.jar,
       ${catalina.base}/lib,${catalina.base}/lib/*.jar,
       ${catalina.home}/lib,${catalina.home}/lib/*.jar</pre>
<p>Jira needs a lot of memory. Sometimes Jira needs more than Tomcat can deliver. So you should add mor memory to Tomcat. This and some other properties you should set, before the next restart of Tomcat.</p>
<pre>export JAVA_OPTS="-XX:MaxPermSize=256m -Xmx1024m</pre>
<pre>       -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true</pre>
<pre>       -Dmail.mime.decodeparameters=true"</pre>
<p>The first both options gives more memory to Tomcat. The last both options are needed by Jira. The 3rd is needed to avoid a memory leak of Tomcat and the last option is needed to send attachments with another encoding than the default encoding.</p>
<p>You must restart Tomcat to activate your changes.</p>
<h3>Installing Jira</h3>
<p>The archive you get as <a href="http://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-enterprise-4.1.2.tar.gz">WAR-Edition</a> contains the binaries you need to deploy it to Tomcat. But the archive contains the binaries for the EAR-Edition too. And for older Tomcats and Resin and so on&#8230; Additionally this archive enables you to do customizations like configurations, templates,  additionally sources to compile and JARs. After you downloaded the archive and extract it you must change one property pointing to the data directory used by Jira by editing<em> edit-webapp/WEB-INF/classes/jira-application.properties</em>.</p>
<p>Now you can build the web archive you can use to deploy to Tomcat. In the root directory the is a build script (<em>build.sh</em> and <em>build.bat</em>) you can use to archieve this. After some time the script is ready and a new directory is created: <em>dist-tomcat/tomcat-6</em>. There you find the web archive and the deployment descriptor for Tomcat 6. You can simple copy this descriptor to <em>&lt;&lt;tomcat-install-directory&gt;&gt;/conf/Catalina/localhost</em>. Tomcat will install Jira and you can browse to <em>http://localhost:8080/jira</em>.</p>
<h3>Customizing the web archive</h3>
<p>You can overwrite every file the web archive contains. The can archieved vy copying the file into the edit-webapp directory. Please remember to create the same directory structure. For instance if you want to customize the file<em> webapp/WEB-INF/classes/log4j.properties</em> you must copy it to <em>edit-webapp/WEB-INF/classes/log4j.properties</em>. After running the build script you can reload the webapplication with Tomcat&#8217;s Manager or simply restarting Tomcat.</p>
<h3>Speed up the build script</h3>
<p>The build script create web archive for all tomcat versions and a generic web archive for other servlet containers. If you plan to deploy to Tomcat 6 it would be enough to build the archive for Tomcat 6. To do this you must only change the target <em>war</em> in the build.xml:</p>
<pre>
<div id="_mcePaste">&lt;target name="war" depends="clean, compile" description="Packages the WAR file"&gt;</div>
<div id="_mcePaste">  &lt;!-- Build the war file --&gt;</div>
<div id="_mcePaste">  &lt;jar jarfile="${dist-generic}/${name}-${version}.war"&gt;</div>
<div id="_mcePaste">    &lt;fileset dir="${build.war}"/&gt;</div>
<div id="_mcePaste">  &lt;/jar&gt;</div>
<div id="_mcePaste">  &lt;!-- Tomcat-6-specific .war --&gt;</div>
<div id="_mcePaste">  &lt;jar jarfile="${dist-tomcat}/tomcat-6/${name}-${version}.war"&gt;</div>
<div id="_mcePaste">    &lt;fileset dir="${build.war}"&gt;</div>
<div id="_mcePaste">      &lt;exclude name="WEB-INF/lib/commons-logging*.jar"/&gt;</div>
<div id="_mcePaste">      &lt;exclude name="WEB-INF/lib/log4j-*.jar"/&gt;</div>
<div id="_mcePaste">    &lt;/fileset&gt;</div>
<div id="_mcePaste">  &lt;/jar&gt;</div>
<div id="_mcePaste">  &lt;copy file="etc/tomcat-6-jira.xml" tofile="${dist-tomcat}/tomcat-6/jira.xml"&gt;</div>
<div id="_mcePaste">    &lt;filterset&gt;</div>
<div id="_mcePaste">      &lt;filter token="JIRA_HOME" value="${basedir}"/&gt;</div>
<div id="_mcePaste">      &lt;filter token="JIRA_WEBAPP" value="${basedir}${slash}${dist-tomcat}${slash}tomcat-6${slash}${name}-${version}.war"/&gt;</div>
<div id="_mcePaste">    &lt;/filterset&gt;</div>
<div id="_mcePaste">  &lt;/copy&gt;</div>
<div id="_mcePaste">  &lt;echo&gt;</div>
<div id="_mcePaste">--------------------------------------------------</div>
<div id="_mcePaste">Deployable WARs generated:</div>
<div id="_mcePaste">TOMCAT:  ${basedir}${slash}${dist-tomcat}${slash}${name}-${version}.war</div>
<div id="_mcePaste">GENERIC: ${basedir}${slash}${dist-generic}${slash}${name}-${version}.war</div>
<div id="_mcePaste">See http://www.atlassian.com/software/jira/docs/latest/servers/ for install instructions</div>
<div id="_mcePaste">--------------------------------------------------</div>
<div id="_mcePaste">  &lt;/echo&gt;</div>
<div id="_mcePaste">&lt;/target&gt;</div>
</pre>
<h3>Conclusion</h3>
<p>Now your Jira is up and running. The next steps are configuration of projects and users, but this isn&#8217;t the focus of this article.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thorsten-kamann.de/2010/06/18/installing-atlassian-jira-with-tomcat-6-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How can a development environment looks like</title>
		<link>http://www.thorsten-kamann.de/2010/05/04/how-can-a-development-environment-looks-like-2/</link>
		<comments>http://www.thorsten-kamann.de/2010/05/04/how-can-a-development-environment-looks-like-2/#comments</comments>
		<pubDate>Tue, 04 May 2010 20:03:05 +0000</pubDate>
		<dc:creator>thorque</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[archiva]]></category>
		<category><![CDATA[artifactory]]></category>
		<category><![CDATA[Bamboo]]></category>
		<category><![CDATA[bazaar]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[GIT]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[mantis]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[nexus]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[revision control system]]></category>
		<category><![CDATA[sonatype]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[TeamCity]]></category>
		<category><![CDATA[ticketing system]]></category>
		<category><![CDATA[trac]]></category>
		<category><![CDATA[youtrack]]></category>

		<guid isPermaLink="false">http://blog.kamann.info/?p=326</guid>
		<description><![CDATA[<a href="http://www.thorsten-kamann.de/2010/05/04/how-can-a-development-environment-looks-like-2/" title="How can a development environment looks like"></a>What do I mean with development environment? Not only the developer workstation with Eclipse and the common tools like JDK, Maven, Ant and so on, but the environment you need for producing high quality software. The following article is a &#8230;<p class="read-more"><a href="http://www.thorsten-kamann.de/2010/05/04/how-can-a-development-environment-looks-like-2/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thorsten-kamann.de/2010/05/04/how-can-a-development-environment-looks-like-2/" title="How can a development environment looks like"></a><p>What do I mean with development environment? Not only the developer workstation with Eclipse and the common tools like JDK, Maven, Ant and so on, but the environment you need for producing high quality software.<br />
The following article is a kind of proposal for such an environment. I think every organization has its own needs but overall this could be a starting point, if you want to build it for your organization.</p>
<div class="img size-full wp-image-327  alignnone" style="width:674px;">
	<a href="http://www.bobdveloper.de/wp-content/uploads/2010/04/structure.png"><img src="http://www.bobdveloper.de/wp-content/uploads/2010/04/structure.png" alt="Structure of a development environment" width="674" height="504" /></a>
	<div>Structure of a development environment</div>
</div>
<h2>Which roles are involved?</h2>
<p>There are developers (in figure 1 in the top left corner), the QA (in the bottom right corner) and &#8211; of course - the customer (not shown). Of course there a many more roles in a software project &#8211; you know them as stakeholders, too.<br />
But you know the ditch between developers and the QA-Guys? You can work well with the QA if the software they test has a good quality. But for this you need some components.</p>
<h2>What components do you need?</h2>
<table style="border: 1px solid #000000;" border="1" cellspacing="1" cellpadding="5" frame="void" rules="rows">
<caption></caption>
<thead>
<tr style="background-color: #7e817f;">
<td><span style="color: #ffffff;">Component</span></td>
<td><span style="color: #ffffff;">Description</span></td>
</tr>
</thead>
<tbody>
<tr valign="top">
<td>Ticketing System</td>
<td>This is a must have. This component you need to track your tickets during development.</p>
<ul>
<li><a title="Trac" href="http://trac.edgewall.org/" target="_blank">Trac</a></li>
<li><a title="Jetbrains YouTrack" href="http://www.jetbrains.com/youtrack/index.html" target="_blank">Jetbrains YouTrack</a></li>
<li><a title="Atlassian Jira" href="http://www.atlassian.com/software/jira/" target="_blank">Atlassian Jira</a></li>
<li><a title="Bugzilla" href="http://www.bugzilla.org/" target="_blank">Bugzilla</a></li>
<li><a title="Mingle" href="http://www.thoughtworks-studios.com/mingle-agile-project-management" target="_blank">Mingle</a></li>
<li><a title="Mantis" href="http://www.mantisbt.org/" target="_blank">Mantis</a></li>
<li>&#8230;</li>
</ul>
</td>
</tr>
<tr valign="top">
<td>Revision Control System</td>
<td>This component you need for versioning your source files. The is a great number of such systems:</p>
<ul>
<li><a title="Subversion" href="http://subversion.apache.org/" target="_blank">Subversion</a></li>
<li><a title="CVS" href="http://www.nongnu.org/cvs/" target="_blank">CVS</a></li>
<li><a title="Bazaar" href="http://bazaar.canonical.com/en/" target="_blank">Bazaar</a></li>
<li><a title="Mercurial" href="http://mercurial.selenic.com/" target="_blank">Mercurial</a></li>
<li><a title="Git" href="http://git-scm.com/" target="_blank">Git</a></li>
<li><a title="Rational Clearcase" href="http://www-01.ibm.com/software/awdtools/clearcase/" target="_blank">Clearcase</a></li>
<li>&#8230;</li>
</ul>
</td>
</tr>
<tr valign="top">
<td>Wiki</td>
<td>You need something as documentation storage. Something that is agile enough not to block the development process.<br />
A Wiki can help you. But remember not every wiki is a good wiki <img src='http://www.thorsten-kamann.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </td>
</tr>
<tr valign="top">
<td>Continuous Integration</td>
<td>To produce high quality you need an automatically build and tests. Only with this you can verify your changes not breaking<br />
already existing features. With a CI-System you can achieve this. Some of this CI-Systems are:</p>
<ul>
<li><a title="Hudson" href="http://hudson-ci.org/" target="_blank">Hudson</a></li>
<li><a title="Cruise Control" href="http://cruisecontrol.sourceforge.net/" target="_blank">Cruise Control</a></li>
<li><a title="Atlassian Bamboo" href="http://www.atlassian.com/software/bamboo/" target="_blank">Atlassian Bamboo</a></li>
<li><a title="Jetbrains Teamcity" href="http://www.jetbrains.com/teamcity/" target="_blank">Jetbrains Teamcity</a></li>
<li><a title="Cruise" href="http://www.thoughtworks-studios.com/cruise-release-management" target="_blank">Cruise</a></li>
<li>&#8230;</li>
</ul>
</td>
</tr>
<tr valign="top">
<td>Artifact Repository</td>
<td>You need always a repository where you can deploy the artifacts you build. The meaning of artifact in this context are archives like<br />
JARs, WARs, EARs but DLLs, too. Of cource you can deploy them to your Revision Control System. But it is always an good idea to<br />
have a mechanism you can resolve dependencies you have automatically. With Maven and Ivy you have Buildtools that do this for you.</p>
<p>An Artifact Repository is a simple (or not so) storage for deployable artifacts. You can choose between 3 well-known OpenSource Products:</p>
<ul>
<li><a title="Archiva" href="http://archiva.apache.org/" target="_blank">Archiva</a></li>
<li><a title="Sonatype Nexus" href="http://nexus.sonatype.org/" target="_blank">Sonatype Nexus</a></li>
<li><a title="Artifactory" href="http://www.jfrog.org/products.php" target="_blank">Artifactory</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<h2>And now&#8230;</h2>
<p>Every component must communicate with every other component. But let&#8217;s us begin with the developers. Developers working directly with the Ticketing and the Revision Control System. They need the Ticketing System to manage the development orders (or tasks or Sprint Backlog Items if you are familary with Scrum). Changes at the sources of the project will be committed to the Revision Control System. If you have a full featured Ticketing System you can log this commits and show the relevant commits in the tickets. So you can track all changes needed for the resolving of a ticket.</p>
<p>The Continuous Integration System (CI) is polling the Revision Control System to get notified for changes. If there are one or more changes the automatically build will be started. After the &#8211; hopefully &#8211; successful build all tests are executed &#8211; and hopefully green &#8211; and the artifacts can be deployed to the Artifact Repository. At the same time the revision (in Subversion) or the commit (in Git) can be tagged. So you have a marker for the sources the CI used to build and create the artifacts. With this tag it is every time reproducable. If you add the Ticket-ID in the commit messages the CI can add a comment to the ticket, so you can see if the buidl was successfully or not.</p>
<p>After some time the developer can resolve a ticket. At this time the CI should create a QA-Release. This is a special release because if the QA-Process is green this build should use for a release. The QA-Team gets notification for a testable build from the Ticket System. After the test the QA mark the ticket as tested or reopen the ticket. In the second case the developer should fix the errors or problems.</p>
<h2>Conclusion</h2>
<p>This was a quick view of a possible solution to build a development environment. Such an environment you need to use Scrum successfully. I am very interested in your opionion. Please leave a comment&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thorsten-kamann.de/2010/05/04/how-can-a-development-environment-looks-like-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Translate JIRA Transitions</title>
		<link>http://www.thorsten-kamann.de/2009/11/19/translate-jira-transitions/</link>
		<comments>http://www.thorsten-kamann.de/2009/11/19/translate-jira-transitions/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 17:20:25 +0000</pubDate>
		<dc:creator>thorque</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JIRA]]></category>

		<guid isPermaLink="false">http://www.thorsten-kamann.de/wordpress/?p=249</guid>
		<description><![CDATA[<a href="http://www.thorsten-kamann.de/2009/11/19/translate-jira-transitions/" title="Translate JIRA Transitions"></a>If you are using the famous Issue tracker JIRA by Atlassian you are able to change the workflow. Workflows are used to define the status an issue can get. Between the 2 statuses there are a transition. In JIRA you &#8230;<p class="read-more"><a href="http://www.thorsten-kamann.de/2009/11/19/translate-jira-transitions/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thorsten-kamann.de/2009/11/19/translate-jira-transitions/" title="Translate JIRA Transitions"></a><p>If you are using the famous <a href="http://www.atlassian.com/software/jira/" target="_blank">Issue tracker JIRA by Atlassian</a> you are able to change the workflow. Workflows are used to define the status an issue can get. Between the 2 statuses there are a transition. In JIRA you can translate the statuses (Administration | Status | Translate).</p>
<div class="img alignnone size-medium wp-image-250" style="width:300px;">
	<img src="http://www.thorsten-kamann.de/wordpress/wp-content/uploads/2009/11/jira_translate_statuses-300x282.jpg" alt="Translate statuses in JIRA" width="300" height="282" />
	<div>Translate statuses in JIRA</div>
</div>
<p>But for transitions there is not such a dialog. But there is an solution for this. You can modify the language property file. If you use an script you can do this automatically. But one step after another <img src='http://www.thorsten-kamann.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>1. Locate the language library</h3>
<p>In JIRA all language files are bundled in a library. This library you find in <em>WEB-INF/lib</em> in your JIRA installation.For the german translation the library is named <em>language_de_DE.jar</em>.</p>
<h3>2. Extract the JAR and edit the JiraWebActionSupport_de_DE.properties</h3>
<p>The <em>JiraWebActionSupport_de_DE.properties</em> is in the package <em>com/atlassian/jira/web/action</em>. You can edit this file with a simple editor. For every transititon you must add one or two properties:</p>
<ul>
<li>for the title</li>
<li>for the submit button, if you transition needs a dialog (e.g. the reopen issue has a dialog where you can leave a comment)</li>
</ul>
<p>For instance you have a transition Test Issue. This transition doesn&#8217;t need a dialog. So you need only one property:</p>
<pre>testissue.title=Testen</pre>
<p>As an exteded example you have a transition named Issue tested. For this you need a dialog the user can leave a comment. In this case you need 2 properties:</p>
<pre>issuetested.title=Getested
issuetested.submit=Test abschliessen</pre>
<p>After you finished the modification you can repackage the JAR.</p>
<h3>3. Restart JIRA</h3>
<p>This you should really do before you start with the next steps.</p>
<h3>4. Add the needed properties to the transitions</h3>
<p>The next step is to create a relation between JIRA and the properties. This can be done in the panel for modifying transitions (<em>Administration | Workflows | Steps (of the workflow you want to change) |¬† Click on the transition | Properties of the transition</em>). In the page loaded then you can add the needed properties.</p>
<div class="img alignnone size-medium wp-image-251" style="width:300px;">
	<img src="http://www.thorsten-kamann.de/wordpress/wp-content/uploads/2009/11/jira_add_properties_to_transitions-300x222.jpg" alt="Add properties to transitions" width="300" height="222" />
	<div>Add properties to transitions</div>
</div>
<p>What you need to add is a key-value pair. The key is for JIRA. With this key JIRA knows what kind of i18n text this property represents. The both relevant key are:</p>
<ul>
<li><em>jira.i18n.title</em> (for the title)</li>
<li><em>jira.i18n.submit</em> (for the submit button)</li>
</ul>
<p>As value you can add the properties you add to the language file (JiraWebActionSupport_de_DE.properties). After you are done you can close every dialog and activate the workflow.</p>
<p>As a result you see something similar to this:</p>
<div class="img alignnone size-full wp-image-252" style="width:213px;">
	<img src="http://www.bobdveloper.de/wp-content/uploads/2009/11/jira_translated_transition.jpg" alt="Translated Transition" width="213" height="99" />
	<div>Translated Transition</div>
</div>
<h3>Hmm&#8230;there are many steps&#8230;is there a chance to simplify this?</h3>
<p>Yes, of course. You can create a script to do this automatically. For example I have one written in Groovy doing all steps automatically:</p>
<pre lang="groovy">//Points to the language_de_DE.jar
def langPack = new File("...")

//Points to the folder the modified JAR should be copied to
def targetDir = new File("...")

//Points to the folder the langPack should be extracted to
def tempDir = new File(System.properties["java.io.tmpdir"]+"/language_pack")

def langFile = new File(tempDir, "com/atlassian/jira/web/action/JiraWebActionSupport_de_DE.properties")

//Create the antbuild for some common tasks
def ant = new AntBuilder()

if (tempDir.exists()){
    ant.delete(dir:tempDir)
}

ant.mkdir(dir:tempDir)
ant.unzip(src:langPack, dest:tempDir)

//Using Groovy's multiline strings
def t = """
issuetested.title=Getested
issuetested.submit=Getested
"""

//Append the existing content with our extended properties
langFile.text = langFile.text + t
ant.zip(basedir:tempDir, destfile:new File(targetDir, "language_de_DE.jar"))
ant.delete(dir:tempDir)

//Build JIRA
"cd /opt/jira".execute()
"build.bat".execute()

//Restart Tomcat
"cd /opt/tomcat/bin".execute()
"catalina.sh start".execute()</pre>
<p>With this simple script you can do all steps automatically. One thing isn&#8217;t really nice. The properties you append to the original languagge file are saved in the script. This should be changed if there are more than a handful properties.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thorsten-kamann.de/2009/11/19/translate-jira-transitions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

