Recover deleted issues from Jira server backups
This article has been written to assist JIRA System Administrators recover JIRA issues that have been unintentionally deleted AND the content of your JIRA instance has a significant number of changes since your last backup. An example scenario is: John has deleted 10 issues from JIRA without telling anyone. Two weeks later John's manager discovers the missing issues. These issues contain information that is critical to the success of the project and must be recovered.
If the issue has only recently been deleted, your Database Administrator maybe able to recover the data using native Database Tools such as Oracle Flashback Technology. This procedure is not for recovering a JIRA instance from a simple backup. If you have a backup of an entire JIRA instance you would like to restore see: Restoring Data.
Atlassian recommends removing all Users, Groups and Project roles from the Delete Issues permission to prevent accidental removal of issues. See Managing Project Permissions for guidance on removing the Delete Issue Permission. The permission can be added when the removal of an issue is required.
You will need:
- An XML Backup or Database Dump of JIRA that contains the Issues that have been deleted.
- A Server that can be used to install a temporary instance of JIRA.
This document is written as general guidance and covers unsupported Add-On's and unsupported procedures. Atlassian may be limited in the level of Support they can provide for Unsupported Add-On's and product features.
The JSON Exporter Function is currently in BETA stage and therefore unsupported. The JIRA to JIRA Issue Copy Add-on is an Unsupported Add-on.
Please note work logs may not be properly recovered using these methods if they were logged for a different date, ie. user logged work on the 30th for other days before, because CSV exports the date the worklog was created ( - JRASERVER-64025Getting issue details... STATUS ), JSON and Jira to Jira Issue copy app does not bring work log data.
- Generate a Recovery Instance
- Use JIRA to JIRA Issue Copy to move the issues
- Use JSON Issue Import to copy existing issues
- Using a CSV Export.
- Tidy Up Production Server
Generating a Recovery Instance
- Download a copy of JIRA that matches your current JIRA Version from the JIRA Download Archives
- Install a new Empty JIRA instance in a Temporary Server (You may like to review: Establishing Staging Server Environments for JIRA for some hints on this). If you are planning on using the JIRA to JIRA Issue copy tool, this sever must be accessiable to the Production server and visa versa.
- Use the Custom Install options.
- DO NOT use a similar directory for your JIRA Install or JIRA Home directories.
- DO NOT connect this JIRA instance to your Production Database.
- Use Different Port numbers.
- Log in to the temporary JIRA instance and record the Server ID. See: Finding your Server ID
- Recover the Backup JIRA instance that contains the JIRA issues into your Temporary Server either by using an XML Backup or from a Native Backup. (See: Automating JIRA Backups)
- Update the Server ID using the Steps in: Change the server ID for an instance of Jira server using the Server ID recorded previously.
- Login and confirm that your Temporary Server has the required Issues.
Copy the Issues From Temporary JIRA to Production Server
These methods may need to be evaluated for their effectiveness and appropriateness for the issue that needs to be recovered. If you need assistance with this, please contact Atlassian Support.
- The CSV method may not be able to import Comments and Issue History
- The JSON method may be limited in the Custom Fields that can be exported and is unsupported.
- The JIRA to JIRA issue copy does not support Sub-Tasks, requires an Application Link to Production and is an Unsupported Add-on.
Using JIRA to JIRA Issue Copy
- Install the JIRA to JIRA Issue Copy Add-On on the Temporary Server.
- Install the JIRA to JIRA Issue Copy Add-On on the Production Server.
- Create an Application Link from the Production Server to the Temporary JIRA Server as per: Linking to Another Application
- From the Temporary Instance, locate the issue you wish to copy, and select Remote Copy from the More Actions dropdown of the affected issue.
- Sub-Tasks can not be copied, convert the Task to an Issue before moving the issue
- The Issue will have a new Issue Key when copied into the Server Environment.
Use JSON Issue Import/Export to Copy the issues
- Ensure your JIRA Production and Temporary Server are using JIRA Importer Plugin version 4.3 or Higher.
- Follow the Steps in How to enable JSON export in Jira server to Enable JSON Export (in Beta)
- Follow the guide in: Importing Data from JSON to import the generated files into JIRA.
Using the CSV Importer
- Search for the Issues in the Issue Browser from your Temporary Server
- Follow the guide in: Exporting Search Results to Microsoft Excel to export the search results. Only visible fields will be exported.
- Convert the exported Excel to CSV
- Import the CSV data, like here: Importing Data from CSV.
Tidy up the Production Server
You may need to tidy up the production server:
- Add Attachments to the issue that are missing.
- Set the Reporter and Assignee to correct values
- Switch Tasks to Sub-tasks
- Recover Comments from E-mail backups.
- Link Commits/Branches to new Issue ID's.