You're on your way to the next level! Join the Kudos program to earn points and save your progress.
Level 1: Seed
25 / 150 points
Next: Root
1 badge earned
Challenges come and go, but your rewards stay with you. Do more to earn more!
What goes around comes around! Share the love by gifting kudos to your peers.
Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!
Join now to unlock these features and more
The Atlassian Community can help you and your team get more value out of Atlassian products and practices.
I created the groovy code below to have the post-function set the issue's component. However, I get an error in the call to issue.setComponentObjects():
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.project.Project
import com.onresolve.scriptrunner.runner.util.UserMessageUtil
MutableIssue issue = issue
Project project = issue.getProjectObject()
def projectComponentManager = ComponentAccessor.getProjectComponentManager()
def componentFRIproduct = projectComponentManager.findByComponentName(project.getId(), "FRI Product")
if (componentFRIproduct != null) {
UserMessageUtil.info("Post-02: my issue type, setting component...")
issue.setComponentObjects([componentFRIproduct])
}
It seems that issue.setComponentObjects() expects a list of component objects, but projectComponentManager.findByComponentName() returns a ProjectComponent object.
How can I make this work?
Found the solution: use issue.setComponent().
Here is the full working code:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.project.Project
final String compName = "FRI Product"
final issueTypes = ["FRI Incident", "FRI Service Request"]
MutableIssue issue = issue
Project project = issue.getProjectObject()
def projectComponentManager = ComponentAccessor.getProjectComponentManager()
def componentFRIproduct = projectComponentManager.findByComponentName(project.getId(), compName)
def isMyType = issue.issueType.name in issueTypes
if (isMyType && (componentFRIproduct != null)) {
issue.setComponent([componentFRIproduct])
}
Here's a reference post:
Which I based my code on. But I suspect that the Jira API has changed and projectComponent and component are not the same now.
I'm using Jira 7.4.1
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Amir Katz (Outseer) Please Check we have a solution.
https://community.atlassian.com/t5/Jira-questions/set-Component-in-groovy-script/qaq-p/196655
Best
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks Moses, but this is an old post (2013) and it doesn't work for me.
I modified my code to use this:
import com.atlassian.jira.ComponentManager
ComponentManager componentManager = ComponentManager.getInstance()
def component = componentManager.getProjectComponentManager().findByComponentName(project.getId(),'ComponentName')
And I now get error on line 3 (line 18 in my full code):
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.