Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
Deleted user
0 / 0 points
Next:
badges earned

Your Points Tracker
Challenges
Leaderboard
  • Global
  • Feed

Badge for your thoughts?

You're enrolled in our new beta rewards program. Join our group to get the inside scoop and share your feedback.

Join group
Recognition
Give the gift of kudos
You have 0 kudos available to give
Who do you want to recognize?
Why do you want to recognize them?
Kudos
Great job appreciating your peers!
Check back soon to give more kudos.

Past Kudos Given
No kudos given
You haven't given any kudos yet. Share the love above and you'll see it here.

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Is there a way to copy components from one Jira project to another and/or import from a text list that does not involve a paid plugin?

I'm copying components from one project to another - manually - and this is painful.  I would love to find a way to just bulk copy the components over, or at least import from a list.  Paid components are not an option.

4 answers

1 accepted

2 votes
Answer accepted

You could use the CSV import tool to create a bunch of bogus issues with the components you want. It's messy as it leaves behind unwanted issues, but I think it would work.

Any reason why you can't use the the REST api?

https://docs.atlassian.com/jira/REST/latest/#api/2/component-createComponent

Any reason why you can't use the the REST api?

Ummm... because I don't know how smile

Like # people like this

That's a good reason. It might be worth the time investment if you're going to do that sort of task again. Personally, I use the CLI plugin whenever I can, but it's paid, so sad

For the REST api, you'd need some basic coding skills. Here's something to get you started:

https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis

Good luck!

Like Naomi likes this

But that only works for Server :(

Martin, what do you mean? 

That if I have got Jira Cloud there is no point in downloading the plugin? 

Just by typing the question I realize that it may very well be the meaning :-)

Anyway, is there really no other options to accomplish this? 

Best,

Gianfranco

I realize this solution uses a paid plugin. But I am adding it because I ran into the same need, and whipped something up. Hopefully it will be of help to folks.

This can be run via script runner in the script runner console. It's pretty crude -- it simply adds the strings in the list to the target project as components (if I have time, I will refactor it to be a little more flexible -- it's not that hard (for example) to copy the stuff from the source project to a target project).

 

import com.atlassian.jira.component.ComponentAccessor
import org.apache.log4j.Logger
import org.apache.log4j.Level

def log = Logger.getLogger("Component Backfill Script")
log.setLevel(Level.DEBUG)


def projectComponentManager = ComponentAccessor.getProjectComponentManager()

// The projectkey and id of where you want the components to be added

def projectKey = "FOOBAR"
Long projectId = 12345

def newComponent = ""

def componentList = ["apple", "banana", "orange"]

componentList.each {

newComponent = it

/* see the blank quotes below? You can specify description and user for each
component. But if you do that, you'll need to add logic that parses that
additional information, or programmatically pull it from components from
the source project

*/
try {
projectComponentManager.create(newComponent, "", "", 1, projectId)
log.debug "Created component ${newComponent} for project ${projectKey}"
}

catch(e) {
log.debug "Ran into a problem creating a component for ${projectKey} n\" + e.message"
}



}



 

Thanks - we didn't have scriptrunner, though. 

No worries. If I have time, I will show a pure rest-api approach. :)

Thanks Bryan,

 

i addapted your scrip to pull all components from one project and insert them into another:

 

import com.atlassian.jira.component.ComponentAccessor
import org.apache.log4j.Logger
import org.apache.log4j.Level

def log = Logger.getLogger("Component Backfill Script")
log.setLevel(Level.DEBUG)


def projectComponentManager = ComponentAccessor.getProjectComponentManager()
//def projectManager = ComponentAccessor.getProjectManager()

// The projectkey and id of where you want the components to be added

Long projectId = 12345 // Project ID to copy components from
def projectKeyTo = "HSR" // Project Key to copy to
Long projectIdTo = 11111 // Project ID to copy to

def newComponent = ""
def componentList = projectComponentManager.findAllForProject(projectId)
componentList.each {

newComponent = it
/* see the blank quotes below? You can specify description and user for each
component. But if you do that, you'll need to add logic that parses that
additional information, or programmatically pull it from components from
the source project

*/
try {
projectComponentManager.create(newComponent.name, newComponent.description, newComponent.lead, newComponent.assigneeType, projectIdTo)
log.debug "Created component ${newComponent} for project ${projectKeyTo}"
}

catch(e) {
log.debug "Ran into a problem creating a component for ${projectKey} n\" + e.message"
}
}
Like ITMSD likes this
import com.atlassian.jira.component.ComponentAccessor
import org.apache.log4j.Logger
import org.apache.log4j.Level

def log = Logger.getLogger("Component Backfill Script")
log.setLevel(Level.DEBUG)


def projectComponentManager = ComponentAccessor.getProjectComponentManager()
//def projectManager = ComponentAccessor.getProjectManager()

// The projectkey and id of where you want the components to be added

Long projectId = 12345
def projectKeyTo = "ABC"
Long projectIdTo = 11111


def newComponent = ""
def componentList = projectComponentManager.findAllForProject(projectId)

componentList.each {

newComponent = it

/* see the blank quotes below? You can specify description and user for each
component. But if you do that, you'll need to add logic that parses that
additional information, or programmatically pull it from components from
the source project

*/
try {
projectComponentManager.create(newComponent.name, newComponent.description, newComponent.lead, newComponent.assigneeType, projectIdTo)
log.debug "Created component ${newComponent} for project ${projectKeyTo}"
}

catch(e) {
log.debug "Ran into a problem creating a component for ${projectKey} n\" + e.message"
}




}
Like # people like this

It works for me! Thanks!

I found a way to create a simple list of components (or labels) which I posted here: https://community.atlassian.com/t5/Jira-questions/How-do-I-get-a-list-of-active-components-in-JIRA-and-export-them/qaq-p/419207

I don't know about importing components from a list though.

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Jira Service Management

JSM June Challenge #2: Share how your business teams became ITSM rockstars

For JSM June Challenge #2, share how your non-technical teams like HR, legal, marketing, finance, and beyond started using Jira Service Management! Tell us: Did they ask to start using it or...

247 views 7 7
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you