Migrating JIRA issues
June 25th, 2007 by HenI’ve needed to move some JIRA issues from one issue tracker to another. There are a few options available currently for this, and I’ll explain why each one doesn’t work before mentioning how I’ve solved this.
- The simplest is to copy them by hand. There are too many for me to want to do that, and you can’t set some of the data.
- Another simple one (in terms of design) is to write some sql scripts. This is a notoriously painful thing in JIRA so I avoided that.
- One option is to backup the JIRA, bring the new one up on top of the backup and delete the bits you don’t want. This obviously fails if you want to move to an existing JIRA, and it’s a pain if you only want a small 0.1% of an existing JIRA. Plus the paranoid in me would not trust that the deleted issues are really gone.
- A recent option is to move the issues one at a time from JIRA to JIRA using the Fedex V - Move Issues project from Atlassian. Sadly it’s not released, I suspect it’s something we’ll see in JIRA someday rather than as a plugin, and it’s limited currently to an issue at a time.
- The last option is to use the Swizzle Jira Report jira-to-jira ‘report’. It takes a public JIRA and xmlrpc connection and generates Jelly to migrate a project. There-in are its limitations currently; your JIRA needs to be public and it migrates projects.
My requirements are to migrate from a private JIRA to a public JIRA, and to migrate specific components from a project and not a project.
Here’s my solution. Okay, here’s my hack. It’s inspired by the Swizzle jira-to-jira.vm. I take an RSS file and run a pair of xsl’s over it to get two Jelly scripts. The first one creates necessary versions and components. It’ll warn when you run it in the JIRA as it doesn’t try to enforce uniqueness, but it’s not an error. The second creates the issues. It dies on error (and you have to delete the ones already imported and try again). Typical errors were a non-existent user and a non-existent resolution.
Here’s the script - I call it mig4jira. I still had to go in manually and release the JIRA versions, but otherwise it worked very nicely.
Ideally the ultimate solution will be to change Swizzle to support private JIRAs and to write a jira-to-jira script that works off of a user specified RSS script.

June 25th, 2007 at 1:50 am
CSV/Excel export (well, csv view on some search results. Then import from the CSV? Does that work?
June 25th, 2007 at 2:24 am
Hi,
There are a few more alternatives which you can try:
1. Use CSV import — http://www.atlassian.com/software/jira/docs/latest/csv_import.html
2. Use Remote API, e.g. SOAP
Method 2 will be the one that I will opt for. If the SOAP service doesn’t provide the functionalities which you need, you can always write an overriding service with desired operations using the RPC Endpoint module:
* http://confluence.atlassian.com/display/JIRA/RPC+Endpoint+Plugin+Module
yc