Documentation for JIRA 5.0. Documentation for other versions of JIRA is available too.
This page contains a live aggregate of all JIRA upgrade guides since version 3. You can also view the lists of Release Notes or Upgrade Guides for JIRA.
In JIRA 3, email notification 'From' addresses now contain the reporter name, eg. "Joe Bloggs (JIRA) <jira@company.com>", where "jira@company.com" is set by the admin as the SMTP mail server From address. If you have this address to already include a name (eg "Tech Support <jira@company.com>", then email notifications will fail with errors like:
2005-01-06 11:30:53,856 ERROR [atlassian.mail.queue.MailQueueImpl] com.atlassian.mail.MailException: Sending failed; nested exception is: javax.mail.internet.AddressException: Missing '<' in string ``"Joe Bloggs (JIRA)" <Tech Support <jira@company.com>>'' at position 62
The fix is to edit WEB-INF/classes/jira-application.properties
, and change the following property value
to false
:
jira.option.include.user.in.mail.from.address = true
JIRA's recommended upgrade process involves deploying an XML backup of your data. Some users will find that the import fails with this error:
This is usually because the database contains control characters that cannot be
represented in Unicode, and hence XML.
The fix is to follow these instructions to remove the invalid characters from the XML before import.
The size of the descriptor field in the jiraworkflow table has been increased. MySQL users will see warnings when they start their app server. This can be fixed by running the SQL below. This will also allow for Workflows of up to 4GB as opposed to just 64k
alter table jiraworkflows change DESCRIPTOR DESCRIPTOR LONGTEXT;
This has one important effect: if you have a project where:
This can be fixed by creating a user (eg. 'developers') for the email address, making it a member of a group that has 'Browse' permission, and adding it as a recipient of notifications. The raw email address should then be removed from the notification scheme, as it serves no purpose.
This page contains specific information you need to know when upgrading to JIRA 3.3 from JIRA 3.2.x. If upgrading from an older version of JIRA, please go to the complete list of Upgrade Guides, and read the notes for each version you are skipping during the upgrade.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
3.3.x is not a good release for IBM shops:
Websphere or DB2 users, please stick with 3.2.x or move on to 3.4.x or higher, where these problems have been resolved.
conf/server.xml
file to the new installation of JIRA. Please read this document.work/
temporary directory before restarting JIRA, to clear cached JSPs from the old JIRA.This page contains specific information you need to know when upgrading to JIRA 3.3.1 from JIRA 3.3.
If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below:
If you are upgrading to JIRA 3.3.1 from a previous version, due to web browser caches, changes to JIRA's Issue Navigator might appear corrupted or unstyled. Please refresh your browser's cache (press Shift+Reload on the Find Issue's page) for the changes to appear correctly.
This page contains specific information you need to know when upgrading to JIRA 3.4 from JIRA 3.3.3. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Two major new features of JIRA 3.4, wiki renderer previews, and issue types per project require that javascript be enabled to make use of their full functionality. You will still be able to use all the core features of JIRA with javascript disabled.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
jira-application.properties
file from your old JIRA installation. Edit the file that is shipped with JIRA 3.4 and make needed changes. New properties have been added to this file so if you simply copy the old file across the following error would occur JRA-8645.This section contains specific information you need to know when upgrading to JIRA 3.4.1 from JIRA 3.4. If upgrading from JIRA 3.3.3 please read the previous section as well. If upgrading from an older version than JIRA 3.3.3, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
jira-application.properties
file from your old JIRA installation. Edit the file that is shipped with JIRA 3.4 and make needed changes. New properties have been added to this file so if you simply copy the old file across the following error would occur JRA-8645.com.atlassian.jira.issue.customfields.CustomFieldType
interface directly rather than extending one of the Abstract classes that ship with JIRA please read Upgrading Custom Field Types in JIRA 3.4.1.This page contains specific information you need to know when upgrading to JIRA 3.4.2 from JIRA 3.4.1. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
This page contains specific information you need to know when upgrading to JIRA 3.4.3 from JIRA 3.4.2. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
This page contains specific information you need to know when upgrading to JIRA 3.5 (release notes) from JIRA 3.4.3. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
In JIRA 3.5 the getName()
and setName(String name)
methods was added to the com.atlassian.jira.service.JiraService
interface. This method should return and set the name of the service respectively. The name of the service can be used to identify a service uniquely. (Fixed made due to JRA-8352 bug)
Therefore, if you have implemented this interface, you will need to implement these methods and recompile your service(s) before deploying it into JIRA 3.5. If you have extended a JIRA class instead, e.g. com.atlassian.jira.service.AbstractService
or com.atlassian.jira.service.JiraServiceContainer
you do not need to modify your custom services.
JIRA 3.5 introduces the global Bulk Change permission. This permission governs the ability to execute the bulk change operations:
An upgrade task has been added to grant the new Bulk Change permission to all groups with the global JIRA Users permission.
The JIRA documentation includes further details on this new permission.
The decision to grant the Bulk Change permission should be considered carefully - the permission permits a user to modify a collection of accessible issues at once. For example, in JIRA installations configured to run in 'Public' mode (anybody can sign up and create issues), a user could comment on all accessible issues with the Bulk Change and Add Comments permission. Undoing such modifications may not be possible through the JIRA UI and may require changes made directly against the database.
CustomFieldPersister is used to store custom field values to database. The methods of this class has been refactored to remove the redundant parameter, defaultValueMarker
. For example, the create values method went from:
void createValues(CustomField field, Long issueId, String defaultValueMarker, PersistenceFieldType persistenceFieldType, Collection values, String parentKey);
to:
void createValues(CustomField field, Long issueId, PersistenceFieldType persistenceFieldType, Collection values, String parentKey);
You will need to update and recompile any CustomFieldType
that you wrote to use this new interface.
This affects plugin writers who uses the version custom field VersionCFType
. The change is that previously the Transport Object type was a single Version
object, but it is now a collection that contains a single Version
object.
This was done to handle an improved version custom field which can be a mutli-select version custom field as well
This page contains specific information you need to know when upgrading to JIRA 3.5.1 from JIRA 3.5. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
This page contains specific information you need to know when upgrading to JIRA 3.5.2 from JIRA 3.5.1. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
In JIRA 3.5.2, the IssueEvent object thrown as a result of an edit operation, may now return null from a getChangeLog()
call. The case where this happens is when a user chooses to edit an issue but only leaves a comment and makes no other changes to the issue. Prior to 3.5.2 no event was fired in this case and this was identified as a bug (JRA-9415) and has since been fixed. Check any calls to getChangeLog() for null.
This page contains specific information you need to know when upgrading to JIRA 3.5.3 from JIRA 3.5.2. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
This page contains specific information you need to know when upgrading to JIRA 3.6.x from JIRA 3.5.x. If upgrading from an older version of JIRA, please go to the complete list of Upgrade Guides, and read the notes for each version you are skipping during the upgrade.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
To introduce the Custom events to JIRA, it was necessary to upgrade a large data set within JIRA's database for 3.5.x and earlier releases. Depending on the size of your JIRA data the upgrade task (number 150) might get your DBMS to do a lot of work which might take some time. The exact amount of time also depends on the processing power of the machine running JIRA's database.
Please be patient with the upgrade task and do not restart JIRA while the upgrade is in progress. The upgrade task will report on its progress to JIRA's log file as it upgrades your data.
The following is the sample output that the upgrade task will produce. As you can see the upgrade task took roughly 5 and a half minutes to modify over 660,000 records in the database.
11:14:09 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Inspecting workflow 'Phone Support Workflow v.6'. 11:14:10 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Inspecting workflow 'Support Workflow v.3'. 11:14:10 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Inspecting workflow 'Phone Support Workflow v.7'. 11:14:10 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Inspecting workflow 'Test'. 11:14:10 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Inspecting workflow 'Copy of Support Workflow'. 11:14:10 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Inspecting workflow 'Support Workflow v.4'. 11:14:10 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Inspecting workflow 'Support Workflow'. 11:14:18 INFO [jira.upgrade.tasks.UpgradeTask_Build150] ************************************************************ 11:14:18 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating 660453 records in the 'NotificationInstance' table. 11:14:18 INFO [jira.upgrade.tasks.UpgradeTask_Build150] This might take a long time. Please do NOT stop JIRA. 11:14:18 INFO [jira.upgrade.tasks.UpgradeTask_Build150] ************************************************************ 11:14:18 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_CREATED'. 11:15:12 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_UPDATED'. 11:15:51 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_ASSIGNED'. 11:16:10 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_RESOLVED'. 11:16:46 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_CLOSED'. 11:16:57 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_COMMENTED'. 11:18:57 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_REOPENED'. 11:19:17 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_DELETED'. 11:19:26 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_MOVED'. 11:19:31 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_WORKLOGGED'. 11:19:37 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_WORKSTARTED'. 11:19:41 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_WORKSTOPPED'. 11:19:43 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Updating records of type 'NOTIFICATION_ISSUE_GENERICEVENT'. 11:21:23 INFO [jira.upgrade.tasks.UpgradeTask_Build150] Update of 'NotificationInstance' records finished.
Applies to |
users with custom workflow XMLs saved on disk - external to JIRA |
---|
JIRA stores its workflows in the database. During the upgrade, these workflows will be upgraded automatically. However, if you have stored your workflows on disk (outside the database), you will need to follow these instructions to upgrade the workflows manually.
Previously, workflow post functions referenced the event to fire through a string value of the event name. All post functions now reference the event through a numeric ID value. As mentioned, all workflows stored within JIRA will be automatically updated. However, all workflows saved to disk - external to JIRA - should be updated manually as follows. The actual workflow XML file should be updated as follows:
For each workflow post function that accepts the event ID as an argument:
Event Name |
Event Type Id |
---|---|
created |
1 |
updated |
2 |
assigned |
3 |
resolved |
4 |
closed |
5 |
commented |
6 |
reopened |
7 |
deleted |
8 |
moved |
9 |
worklogged |
10 |
workstarted |
11 |
workstopped |
12 |
genericevent |
13 |
By default, the only post functions that accept event IDs are FireIssueEventFunctions. Therefore, unless you have implemented your own custom post function that also deals with events, you will only need to update the arg tags for the FireIssueEventFunctions everywhere in the workflows.
For example, FireIssueEventFunction for create issue workflow transition looked like:
<function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventType">created</arg> </function>
and needs to be changed to:
<function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">1</arg> </function>
Applies to |
users who have modified JIRA source code or added custom code to define new notification events. Also of interest to users wishing to define new notification templates |
---|
Releases before JIRA 3.6 did not allow users create custom events. If you have modified the JIRA source to add custom events - please follow these instructions.
If you have previously defined a custom event within JIRA - it is necessary to add appropriate entries to the following files:
system-event-types.xml
- used to install and upgrade all event types within the system to the new 3.6 event type object.email-template-id-mappings.xml
- maps the event id to an assocaited velocity template file.The system-event-types.xml
file requires name and description details of the previously added custom event. For example, if the custom event type "Issue Frozen" was added to the system - the following entry should be added to the XML file:
<eventtype id="10000"> <name>Issue Frozen</name> <description>This is the 'Issue Frozen' event type.</description> <notificationName>ISSUE_FROZEN</notificationName> <eventName>issuefrozen</eventName> </eventtype>
The elements provide the following information:
The email-template-id-mappings.xml
file requires an entry mapping the new custom event to an associated velocity email template. This mapping is used when a notification is sent for this event. Following from the above example, the following entry would be made:
<templatemapping id="10000"> <name>Issue Frozen</name> <template>issuefrozen.vm</template> </templatemapping>
The id should match that of the event as specified in the system-event-types.xml
The template
entity should reference the Velocity template to be used in email notifications of this event. A HTML and text version should be provided in the appropriate directory (html or text) at:
<JIRA>/src/etc/java/templates/email/
All custom event types added to the file system-event-types.xml should be added with an ID of 10000 and above
Applies to |
users who have added custom listeners to JIRA. |
---|
For all users who have added custom written listeners to JIRA, it might be necessary to update the listener to follow the new JIRA 3.6 API.
There are two things to look out for:
The signature of the method workflowEvent in the IssueEventListener has changed from:
public void workflowEvent(int type, IssueEvent event);
to:
public void workflowEvent(IssueEvent event);
Note: the type parameter has been removed.
If you have implemented IssueEventListener directly or have extended AbstractIssueEventListener and have overridden the method workflowEvent, you will need to change and recompile your listener before installing JIRA 3.6.
In JIRA 3.6, the event type ID can be retrieved by calling the following method on the IssueEvent object:
Long eventID = event.getId();
However, the returned value of the getId() method is different to the values of the type parameter that was passed to the workflowEvent method. The following table represents these differences:
Event Name |
Old ID |
New ID |
---|---|---|
created |
0 |
1 |
updated |
1 |
2 |
assigned |
2 |
3 |
resolved |
3 |
4 |
closed |
4 |
5 |
commented |
5 |
6 |
reopened |
6 |
7 |
deleted |
7 |
8 |
moved |
8 |
9 |
worklogged |
9 |
10 |
workstarted |
10 |
11 |
workstopped |
11 |
12 |
genericevent |
-1 |
13 |
Also, the getIssue() method of the IssueEvent object has changed to return an Issue object instead of a GenericValue object representing an issue.
Users who have created and added custom listeners must update the listener to now operate with the Issue object. For example:
Issue issueObject = event.getIssue();
As a quick fix, you can modify your listener to use event.getIssue().getGenericValue()
.
The event type ID constants are now only available from the class EventType. Any use of the original constants must be updated to use the EventType constants. For listeners that reference an event ID by its numeric value - it is necessary to ensure that the IDs now match those as defined in EventType.
Applies to |
users who have modified JIRA source to add new permission types (ie. in addition to the standard 'user', 'group', 'assignee' types). |
---|
The SecurityType interface, used to implement permission types ('single user', 'group' etc) has had a getUsers()
method added. If you have implemented your own SecurityType you will need to implement this. See the source of current implementations (eg. GroupCF
) for tips.
As usual, you should check whether the plugins you use are compatible with the new release. Generally, plugins (like the Subversion plugin or JIRA toolkit ) need to be upgraded when JIRA is upgraded. See the list of plugins at:
This page contains specific information you need to know when upgrading to JIRA 3.6.1 from JIRA 3.6. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
This page contains specific information you need to know when upgrading to JIRA 3.6.2 from JIRA 3.6.1. If upgrading from an older version of JIRA, please go to the complete list of Upgrade Guides, and read the notes for each version you are skipping during the upgrade.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
Applies to |
JIRA Standalone users |
---|
In version of JIRA before 3.6.2, the maximum number of database connections was limited to 8 by default. If JIRA was used by more than 8 concurrent users or under very haeavy usages, the users could experience delays or JIRA could hang.
In JIRA 3.6.2 the default number of maximum active database connections has been increased to 20. When upgrading to JIRA 3.6.2, please ensure that your database will allow JIRA to establish 20 connections, or decrease this number to desired value. To adjust the number of connections change the value of the maxActive
attribute of the jdbc/JiraDS
resource in config/server.xml
file. JIRA has to be restarted to apply the change.
This page contains specific information you need to know when upgrading to JIRA 3.6.3 from JIRA 3.6.2. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
This page contains specific information you need to know when upgrading to JIRA 3.6.4 from JIRA 3.6.3. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
This page contains specific information you need to know when upgrading to JIRA 3.6.5 from JIRA 3.6.4. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
Once you have upgraded to JIRA 3.7, downgrading to a previous version is not a straightforward task and is not recommended.
This page lists a few things to be aware of when upgrading from previous releases of JIRA to JIRA 3.7. To perform the actual upgrade, see the upgrade documentation.
Note: If you are upgrading from a pre-3.6.5 release, please also refer to the relevant JIRA 3.x Upgrade Guides.
Please note that some new functionality will not be available if you are running JIRA on WebLogic or Orion. The List All Filtersportlet will not be able to fetch the issue counts for each issue. The new 'Charting' View will also be unavailable. The support for WebLogic and Orion will be added in JIRA 3.7.1.
Due to the upgrade of HSQLDB, and to improve compatibility with Firebird and Frontbase, various database tables and columns have been renamed. For more details on the changes please see the JIRA 3.7 Database Schema Changes document.
Therefore, the easiest way to upgrade to JIRA 3.7 is to follow the Upgrading JIRA safely instructions.
If in the past, instead of performing an XML backup and restore, you have been upgrading by "pointing" new version of JIRA at an old database, this is still possible, however the procedure is more complicated. You will need to use SQL scripts to perform database schema changes. For more information please see the SQL Scripts for 3.6.x to 3.7 schema upgrade document.
If you are using HSQLDB with JIRA, you must follow Upgrading JIRA safely instructions (i.e. perform a full XML backup and restore from XML), as simply copying the .script
file will not work. The format of the .script
file has changed between the HSQLDB versions, and therefore, copying the .script
file will result in the following error on startup.
In order for plugins, customfields and portlets to function better outside of a web-context (e.g.: displaying a customfield in an e-mail), all direct references to the HttpServletRequest have been replaced by a VelocityRequestContext. If you have deployed your own plugins, customfields or portlets that use the HttpServletRequest directly (i.e.: any references to ${req
}) than they should be changed to use the new ${requestContext
} object. The ${requestContext
} is an implementation of the VelocityRequestContext
interface.
Currently the ${requestContext
} supports the following properties:
${requestContext.baseUrl
} - Returns the same as HttpServletRequest.getContextPath() or the base URL configured in your JIRA instance if no HttpServletRequest is available${requestContext.requestParameters
} - Returns an implementation of RequestContextParameterHolder
or null if no HttpServletRequest is available${requestContext.requestParameters.servletPath
} - Returns the same as HttpServletRequest.getServletPath()${requestContext.requestParameters.requestURL
} - Returns the same as HttpServletRequest.getRequestURL()${requestContext.requestParameters.queryString
} - Returns the same as HttpServletRequest.getQueryString()In JIRA 3.7 Database Integrity Checks (available from the Administration section) have been re-written to run as multiple transactions, which increased the throughput of the system while the checks are running. In large JIRA 3.6 (and earlier) installations, integrity checks could cause database lock escalation and stop users from performing operations (e.g. viewing issues).
Please note, that due to the change, each integrity check became about 10% slower.
As integrity checks are quite database intensive operations, it is still recommended to run them during off-peak hours (i.e. while the system is not under heavy load).
We have changed the AddComment and TransitionWorkflow jelly tag attribute that specifies the group visibility level from 'commentLevel' to be 'groupLevel'. If you have existing jelly tags that use this attribute it will need to change. This was done so that we could introduce the 'roleLevel' attribute which allows you to specify a project role based visibility. Only one of the two attributes can be specified at a time.
The RemoteComment object and therefore the remote SOAP/RPC api has changes to almost all properties. The 'roleLevel' attribute was added and the following attributes have changed:
The ActionManager
interface has been removed and its functionality has been delegated to new interfaces. For details please refer to ActionManager Removed documentation
com.atlassian.jira.action.action.WorklogCreate
if you were using this class in a plugin or custom code you will now need to use the com.atlassian.jira.issue.worklog.WorklogManager
this now has method calls to return worklogs for a given user+issue and also create worklog entries.com.atlassian.jira.action.action.ActionCreate
if you were using this class to create comments you will need to modify your code to use one of the create methods on the com.atlassian.jira.bc.issue.comment.CommentServiceWe have modified the com.atlassian.jira.event.issue.IssueEvent
class to no longer use GenericValues. The GenericValue representing the comment is replaced by com.atlassian.jira.issue.comments.Comment
class and the GenericValue representing the worklog is replaced by com.atlassian.jira.issue.worklog.Worklog
class. If you have a custom listener in a previous version of JIRA this will need to be updated to use the newer IssueEvent class and com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(...)
methods.
By popular request, the XML filename (that is, the default filename when you choose to save the XML view in the Issue Navigator) has been changed from issuenavigator.jspa
to SearchRequest.xml
. Should you have any external systems or programs that utilise the exported XML file, please be aware of the changed filename.
Once you have upgraded to JIRA 3.7, downgrading to a previous version is not a straightforward task and is not recommended. Please be aware that in JIRA 3.7 the database schema has changed.
If upgrade to JIRA 3.7 fails, the best way to proceed is to go back to the previous version of JIRA you were using, and to the latest pre-upgrade data that you have. The exact steps for doing this depend on how you have upgraded JIRA.
If you have created a new database for JIRA 3.7 by following the Upgrading JIRA safely instructions, you should be able to simply shutdown JIRA 3.7 and bring up the old version of JIRA your were using. The old version should be configured to use its old (unupgraded) database.
If you have upgraded JIRA by pointing JIRA 3.7 to an older database (and ran the SQL Scripts to upgrade the database schema), then you will need to:
This page contains specific information you need to know when upgrading from JIRA 3.7 to JIRA 3.7.1. If upgrading from an older version of JIRA, please read the Upgrade Guide for each version your are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
This page contains specific information you need to know when upgrading from JIRA 3.7.1 to JIRA 3.7.2. If upgrading from an older version of JIRA, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
When upgrading JIRA please follow the general upgrade instructions keeping in mind the information below.
Please follow the JIRA general upgrade instructions.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions. Additionally, please note the following:
issuecommentedited.vm
e-mail template for the new Issue Comment Edited event has been added to the WEB-INF/classes/email-template-id-mappings.xml
file. The id of the e-mail template used for sending Filter Subscriptions has changed to 10000. If you have manually modified the WEB-INF/classes/email-template-id-mappings.xml
file in the version of JIRA you are upgrading from, please do not simply copy the old file to JIRA 3.8. You will need to port your changes to the WEB-INF/classes/email-template-id-mappings.xml
file that is shipped with JIRA 3.8. If you have not changed the WEB-INF/classes/email-template-id-mappings.xml
file, you do not need to worry about this.jiraaction
table to support editable comments.In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions.
Charting Plugin must be upgraded to v1.3.5
Please note that the version of JFreeChart included in JIRA 3.8.1 is not compatible with older versions of the Charting Plugin. If you have the Charting Plugin installed, please make sure you upgrade it to version 1.3.5 or above.
The updated JFreeChart 1.0.4 version is not backwards compatible with the previous 1.0.0pre2 version, so if you have any plugins that utilise JFreeChart, please make sure you test them before upgrading.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions. Additionally, please note the following:
In this version, there has been a change to the database which may cause problems for some customers.
If you follow the recommended export/import upgrade procedure you should not experience any problems!
Some customers have a good reason for not following the recommended upgrade method. Using this method may result in database errors in your logs. You can avoid this if you modify your table structure manually, but the procedure is different depending on whether you have already started JIRA.
To avoid this, BEFORE you upgrade JIRA using this method, you can just drop the qrtz_cron_triggers table. This table has not been used by JIRA before 3.9, so it should be empty.
If you have ALREADY started JIRA 3.9 using your existing database, you may see the following log messages when JIRA starts up:
2007-04-18 15:31:53,345 main WARN [core.entity.jdbc.DatabaseUtil] Column "CRON_EXPERSSION" of table "public.qrtz_cron_triggers" of entity "QRTZCronTriggers" exists in the database but has no corresponding field 2007-04-18 15:31:53,347 main WARN [core.entity.jdbc.DatabaseUtil] Entity "QRTZCronTriggers" has 3 fields but table "public.qrtz_cron_triggers" has 4 columns.
The reason for this is that we have incorrectly changed a column in the qrtz_cron_triggers
table. The intention was to fix a misspelling, but all we did was remove an underscore ("_")! The old column name is "CRON_EXPERSSION". The new column name is "CRONEXPERSSION". Note that both columns spell the word "expression" incorrectly.
To remove the error message, you must remove the old column as it is redundant. This column will not contain any data. The following table shows all columns in the qrtz_cron_triggers table. Columns that should be present are in green and columns that should be deleted are in red.
Keep |
Keep |
Keep |
Delete |
---|---|---|---|
ID |
TRIGGER_ID |
CRONEXPERSSION |
CRON_EXPERSSION |
To delete the column, you can use SQL, but this may be slightly different between databases. Here's how it might look:
alter table qrtz_cron_triggers drop column CRON_EXPERSSION;
If you have users who have subscribed to issue filters, note that existing SimpleTriggers (time intervals) will be automatically converted into CronTriggers during the JIRA upgrade. In some cases, there may not be an exact mapping of time intervals to Cron Expressions, and approximations will be made (e.g. 'Every 5 weeks' will be converted to 'Once a month'). If this happens, the JIRA upgrade process will send an email to the user to inform them of the new schedule.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
JIRA 5.0.7 has been released. Read the full JIRA 5.0.7 Release Notes and latest Upgrade Notes.
Please follow the JIRA general upgrade instructions.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions, plus note the following:
There is a new version of the JIRA Calendar Plugin that links to the new 'Project Version' pages. This new version of the plugin is not backwards compatible.
Please note that the Kaamelot plugin for JIRA has not yet been updated. If you are currently using this plugin, you may want to hold off the upgrade to JIRA 3.10 until a compatible version of this plugin has been released.
The ordering of the ListOrderedMap returned by SchemePermissions.getSchemePermissions() has changed. This also means that the order of the RemotePermission[] array returned by the RPC Plugin's JiraSoapService.getAllPermissions() method has changed. If you have extended your instance of JIRA please confirm that any remote applications retrieving permissions via SOAP still work. You may encounter problems if you have been retrieving specific permissions by their array index.
In JIRA 3.10, the worklog records have moved from the 'jiraactions' database table to the new 'worklog' table. This new table contains the following columns:
Table "public.worklog" Column | Type | Modifiers --------------+--------------------------+----------- id | numeric(18,0) | not null issueid | numeric(18,0) | author | character varying(255) | grouplevel | character varying(255) | rolelevel | numeric(18,0) | worklogbody | text | created | timestamp with time zone | updateauthor | character varying(255) | updated | timestamp with time zone | startdate | timestamp with time zone | timeworked | numeric(18,0) |
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions, plus note the following:
jira.table.cols.subtasks
jira.option.key.detection.backwards.compatible=true
Updating plugins
If you are using any of the following plugins, you will need to update them to their latest versions when performing the upgrade:
3rd Party and personal plugins may also be affected (esp. if using lucene to store dates). These will need to be updated as well.
If these are updated after the upgrade (instead of as part of the upgrade), you will need to do a reindex.
A failure to update these plugins will result in lots of errors that look like:
2007-07-25 15:23:27,553 http-8090-Processor4 ERROR [charting.charts.createdvsresolved.CreatedVsResolvedChart] Could not create velocity parameters For input string: "20070725144811" java.lang.NumberFormatException: For input string: "20070725144811" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Long.parseLong(Long.java:415) at org.apache.lucene.document.DateField.stringToTime(DateField.java:100) at org.apache.lucene.document.DateField.stringToDate(DateField.java:104) at com.atlassian.jira.ext.charting.data.DatePeriodStatisticsMapper.getValueFromLuceneField(DatePeriodStatisticsMapper.java:47) at com.atlassian.jira.ext.charting.data.OneDimensionalObjectHitCollector.adjustMapForValues(OneDimensionalObjectHitCollector.java:57) at com.atlassian.jira.ext.charting.data.OneDimensionalObjectHitCollector.collect(OneDimensionalObjectHitCollector.java:46) at org.apache.lucene.search.IndexSearcher$1.collect(IndexSearcher.java:137) at org.apache.lucene.search.Scorer.score(Scorer.java:49) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:146) at org.apache.lucene.search.Searcher.search(Searcher.java:118) at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.search(LuceneSearchProvider.java:111) ...
Caused by: java.lang.NoSuchMethodError: org.apache.lucene.document.Document.add(Lorg/apache/lucene/document/Field;)V at com.atlassian.jira.plugin.labels.LabelSearcher.index(LabelSearcher.java:95) at com.atlassian.jira.issue.index.indexers.impl.DefaultCustomFieldIndexer.addIndex(DefaultCustomFieldIndexer.java:54) at com.atlassian.jira.issue.index.IssueDocument.getDocument(IssueDocument.java:34) at com.atlassian.jira.issue.index.IssueDocumentBuilderImpl.get(IssueDocumentBuilderImpl.java:14) at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$IssueAndCommentCreator.handleIssueIndexing(SingleThreadedIssueIndexer.java:404) at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$AbstractIssueAndCommentHandler.indexIssuesAndComments(SingleThreadedIssueIndexer.java:318) at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer.indexIssuesAndComments(SingleThreadedIssueIndexer.java:122) at com.atlassian.jira.issue.index.MultiThreadedIssueIndexer.indexIssuesAndComments(MultiThreadedIssueIndexer.java:41) at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$2.perform(SingleThreadedIssueIndexer.java:113) at com.atlassian.bonnie.ConcurrentLuceneConnection.withWriter(ConcurrentLuceneConnection.java:296) at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$1.perform(SingleThreadedIssueIndexer.java:107) at com.atlassian.bonnie.ConcurrentLuceneConnection.withWriter(ConcurrentLuceneConnection.java:296) at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer.indexIssues(SingleThreadedIssueIndexer.java:102) at com.atlassian.jira.issue.index.SingleThreadedIssueIndexer$6.perform(SingleThreadedIssueIndexer.java:219) ...
If you see these errors, please ensure that you are using the latest compatible version of the plugin for 3.11. If there is no supported version for 3.11, please contact the plugin developer via the plugin's homepage.
Modification to SOAP clients
If you have written a SOAP client for any JIRA version prior to 3.11 and are invoking any methods to get RemoteIssueType
you will encounter the bug JRA-13529. The reason for this is that we have added extra information to the RemoteIssueType
object that indicates if the issue type is a subTask issue type. To avoid the problem you will need to regenerate your remote object stubs against the updated JIRA 3.11 wsdl.
If you would like your SOAP client to work against multiple versions of JIRA then you need to use the latest stubs that have been generated against JIRA 3.11. You will need to not use any of the new functionality and you will need to remember that the isSubTask
variable in the RemoteIssueType
objects will be defaulted to false
.
ThreadLocalQueryProfiler searchers have been moved to ThreadLocalSearcherCache
There may be a number of plugins that reference the ThreadLocalQueryProfiler searcher methods directly. These need to now reference the ThreadLocalSearcherCache.
Lucene Upgrade
We upgraded our version of Lucene to 2.2. If your plugin uses to Lucene to index/read data, please ensure that it works with JIRA 3.11. If you are indexing/reading dates, more than likely it will have broken and you will need to use the new Lucene 2 methods.
There were no database changes in this release.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions, plus note the following:
<!-- If this parameter is set to true, the cookie will never be set secure. This is useful if you're logging into JIRA via https, but want to browse JIRA over http. This flag will ensure that the remember me option works correctly. --> <init-param> <param-name>insecure.cookie</param-name> <param-value>true</param-value> </init-param>
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please note that older versions of the Crowd client, (i.e. version 1.2.1 or earlier), can interfere with the correct operation of the Trusted Applications feature. If you are enabling Trusted Applications and using Crowd, please ensure that your Crowd client is version 1.2.2 or later.
Please follow the JIRA general upgrade instructions
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.
Please follow the JIRA general upgrade instructions, plus note the following:
JIRA 3.13 introduces the favourite dashboards feature, which allows you to add dashboard pages that are owned by you or shared by other users as favourites (and hence, are displayed as tabs on your dashboard). On upgrade to JIRA 3.13, all your dashboard pages will be added as your favourites and displayed on your dashboard. If you do not wish any of your dashboards to be added as favourites, then you can remove them as favourites after the upgrade. See the dashboards documentation for details.
Similar to favourite dashboards, JIRA 3.13 introduces the favourite filters feature, which allows you to add issue filters that are owned by you or shared by other users as favourites. On upgrade to JIRA 3.13, all your issue filters will be added as your favourites. If you do not wish any of your filters to be added as favourites, then you can remove them as favourites after the upgrade. See the issue filters documentation for details.
please note, this change will not affect issue filter sharing, e.g. if you are using a shared issue filter in one of your dashboard portlets, it will still be shared with you after the upgrade.
please also note, that any custom developed portlets (or other JIRA objects that use filters that have been developed by 3rd parties) that have a dropdown list (not a pop-up picker) for filters, will now only show a list of the user's favourite filters, instead of all shared filters.
The 'List All Filters' portlet has been replaced with the 'Favourite Filters' portlet in this release. Your dashboard will be automatically upgraded if it is currently configured to display the 'List All Filters' portlet.
Please note, if you wish to use a MySQL database with JIRA Standalone you must set up the bundled Tomcat server (version 5.5.26) to survive connection closures. You must also do this if you are running JIRA EAR/WAR in Tomcat 5.5.25 or later, or Tomcat 6.0.13 or later. Versions 5.5.25 and above of Tomcat 5, and versions 6.0.13 and above of Tomcat 6, have been noted to exhibit problems maintaining connections to MySQL databases. Please read this document for details on the changes required.
The jira.subscription.email.max.issues
property has been added to the jira-application.properties
file. This property allows you to specify the maximum number of issues that can be included in an email subscription. The default value for this property is 200. You may wish to update this property after the upgrade if you wish to set a different limit on the number of issues that can be included in an email subscription. See the documentation on Advanced JIRA Configuration for further details on this file.
Portlet plugins with JSP views are no longer supported. If you have written a custom Portlet plugin and have used a JSP as the view template, you will need to convert your JSP to Velocity.
RemoteProject[] getProjects(String token) throws RemoteException;
RemoteProject[] getProjectsNoSchemes(String token) throws RemoteException
You should use getProjectsNoSchemes() instead because it much more memory efficient and quicker.
RemoteProject getProjectWithSchemesById(String token, Long projectId) throws RemoteException;
RemoteFilter[] getSavedFilters(String token) throws RemoteException;
RemoteFilter[] getFavouriteFilters(String token) throws RemoteException;
Vector getProjects(String token) throws Exception;
Vector getProjectsNoSchemes(String token) throws Exception;
Vector getSavedFilters(String token) throws Exception;
Vector getFavouriteFilters(String token) throws Exception;
This is only applicable if you are using Crowd.
The default timeout for caching user details has changed from 5 minutes to 2 hours. This will improve the performance of the application but will mean that it will take longer for changes to user details to reach the application. Details on how to configure the Crowd caches can be found here.
In addition to the above, please read the Upgrade Guide for every version you are skipping during the upgrade. The complete list of Upgrade Guides is available here.