Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,366,952
Community Members
 
Community Events
168
Community Groups

Scriptrunner: getting the Request Type value

I'm having some issues getting the request type value on issues. The string I get back is similar to:

bap/df17bef0-04d3-43d2-be22-f393f6a3e655

 

I assume I need to feed that to some methode from the Service Desk API to get a usable string. Has anyone found a solution for this?

5 answers

1 accepted

2 votes
Answer accepted
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.servicedesk.api.requesttype.RequestTypeService
import com.onresolve.scriptrunner.runner.customisers.WithPlugin

def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

@WithPlugin("com.atlassian.servicedesk")
def requestTypeService = ComponentAccessor.getOSGiComponentInstanceOfType(RequestTypeService)
def reqQ = requestTypeService.newQueryBuilder().issue(issue.id).build()
def reqT = requestTypeService.getRequestTypes(currentUser, reqQ)
def requestType = reqT.right.results[0].getName()

Hi @Justin 

I'm using your code to create a validation.  

The user select the "Alpha" service but the get load "Beta" service.

...
@WithPlugin("com.atlassian.servicedesk")
RequestTypeService requestTypeService = ScriptRunnerImpl.getPluginComponent(RequestTypeService)

def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

def reqQ = requestTypeService.newQueryBuilder().issue(issue.id).build()
def reqT = requestTypeService.getRequestTypes(currentUser, reqQ)
def requestTypeName = reqT.right.results[0].getName()
log.warn("REQUEST TYPE" + requestTypeName)

 

if (requestTypeName == "Alpha"){
blah
}

the log warn shows

WARN [jira.groovy]: REQUEST TYPE Beta



Hi @Sergio Palacio

I have a similar problem with a validator on issue creation

def reqQ = requestTypeService.newQueryBuilder().issue(issue.id).build()

issue.id is null before issue is actually created, so the code above doesn't work correctly

 

I've only managed to get requestType with the deprecated method:

RequestType requestType = requestTypeService.getRequestTypeForIssue(currentUser, issue).right().get()

 

Hi,

With most recent JSD versions, the right() method is no longer needed:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.servicedesk.api.requesttype.RequestTypeService
import com.onresolve.scriptrunner.runner.customisers.WithPlugin

@WithPlugin("com.atlassian.servicedesk")

def issueManager = ComponentAccessor.getIssueManager()
def issue = issueManager.getIssueObject("TEST-1")
def requestTypeService = ComponentAccessor.getOSGiComponentInstanceOfType(RequestTypeService)
def userManager = ComponentAccessor.getUserManager()
def robotUser = userManager.getUserByName("robot")

def reqQ = requestTypeService.newQueryBuilder().issue(issue.id).build()
def reqT = requestTypeService.getRequestTypes(robotUser, reqQ)
def requestTypeName = reqT.getResults()[0].getName()

return requestTypeName

Nicolas

Like # people like this

Hi, Justin. Did you manage to find out how to use query builder to get request names by id?

I did :)

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.servicedesk.api.requesttype.RequestTypeService
import com.onresolve.scriptrunner.runner.customisers.WithPlugin

def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

@WithPlugin("com.atlassian.servicedesk")
def requestTypeService = ComponentAccessor.getOSGiComponentInstanceOfType(RequestTypeService)
def reqQ = requestTypeService.newQueryBuilder().issue(issue.id).build()
def reqT = requestTypeService.getRequestTypes(currentUser, reqQ)
def requestType = reqT.right.results[0].getName()

 

Like David Harkins likes this

Oh, Thank you, thank you, thank you.

I was close, but not succeed to solve that puzzle /-) 
Great, now I can move futher!

How are you getting that?

Using the following code:

def customFieldManager = ComponentAccessor.customFieldManager
def customField = customFieldManager.getCustomFieldObjectByName("Customer Request Type")
log.debug(issue.getCustomFieldValue(customField))


I get "srjsup/get-it-help"

The format of this is portalId / request-type-key.

I've dug around to try to get the proper display name, but service desk is half-written in scala, and it doesn't decompile nicely.

 

Thats pretty much what I had been doing and was receivng that ID back instead of the name. I finally got this solved with the below code. My biggest issue with it is using a deprecated methode in getRequestTypeForIssue. I can't seem to figure out the newer methodes using a query builder, can't find any helpful examples either.

https://docs.atlassian.com/jira-servicedesk/server/com/atlassian/servicedesk/api/requesttype/RequestTypeQuery.Builder.html

https://docs.atlassian.com/jira-servicedesk/server/com/atlassian/servicedesk/api/requesttype/RequestTypeQuery.html

https://docs.atlassian.com/jira-servicedesk/server/com/atlassian/servicedesk/api/requesttype/RequestTypeService.html#getRequestTypes-com.atlassian.jira.user.ApplicationUser-com.atlassian.servicedesk.api.requesttype.RequestTypeQuery-

 

import com.atlassian.servicedesk.api.requesttype.RequestTypeService
import com.atlassian.servicedesk.api.requesttype.RequestType
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin

@WithPlugin("com.atlassian.servicedesk")

@PluginModule

RequestTypeService requestTypeService

def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

RequestType getRequestType = requestTypeService.getRequestTypeForIssue(currentUser, issue).right().get()
String requestTypeName = getRequestType.getName()

 

 

 

 

 

Wow thank you Justin, that's what I wanted! :)

Your welcome, happy it was helpful!

Hi,

 

What is the proper way of retrieving the request type icon url? RequesType has a method .getIconId() which returns the id of the icon but what next? How can we retrieve the url to this icon? 

Thank you,

Philip

Hello.

How or where can I use that string? I'm a novice Jira user who is still getting the same error: request type id onstead of request type name.

I would appreciate your answer.

Kind regards.

Suggest an answer

Log in or Sign up to answer
TAGS

Atlassian Community Events