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?

3 answers

1 accepted

This widget could not be displayed.
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()

 

This widget could not be displayed.

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!

This widget could not be displayed.

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()

 

Oh, Thank you, thank you, thank you.

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

Suggest an answer

Log in or Sign up to answer
Community showcase
Published Aug 22, 2018 in Marketplace Apps

How a Marketplace app tech team is achieving gender diversity

Hello! My name is Genevieve Blanch, and I'm the Marketing Manager at RefinedWiki, creators of apps to give teams the tools to customize Atlassian platforms. Currently, 44% of the tech team at Re...

524 views 3 19
Read article

Atlassian User Groups

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

Find a group

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

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you