ScriptRunner/Groovy - Retrieve all saved filters and edit them

Hi!

I would like to know if it is possible to retrieve all saved filters and edit each of them using a function like collect or each.

Thanks!

1 answer

1 accepted

1 vote
Henning Tietgens Community Champion Aug 04, 2017

Hi,

yes by using the SearchRequestService (ComponentAccessor.getComponent(SearchRequestService)) you can retrieve filers, update and delete them.

If you want to retrieve all filters existing in the system you first have to retrieve all users (using the UserManager or UserUtil) and then retrieve all filters of each user using SearchRequestService.getOwnedFilters(). For the SearchRequest elements of the result you can use SearchRequest .query.queryString to get the JQL query. You can modify the SearchRequest and use SearchRequestService.updateFilter() to save the modifications.

Henning

Thanks Henning!

With your help I've been able to update filters of a single user but I don't know how to retrieve all the users. I look at the methods of UserUtils and UserManager but the getAllUsers function is deprecated. Moreover, the description of getAllUser says that it retrieve the users I need, but I need all users without any exceptions.

So I assume I need to retrieve all users using JQL query but I dont have any idea of what JQL query would do the job.

Do you know how I can retrieve all the users?

This is what I've done so far:

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def ctx = new JiraServiceContextImpl(user)
searchRequestService.getOwnedFilters(user).each{filter->
def nQuery = searcher.parseQuery(user, getNewQuery(filter.getQuery().toString())).getQuery()
filter.setQuery(nQuery)
searchRequestService.updateFilter(ctx, filter)
}

Nevermind I got it!

Using the global group, I did this to retrieve all users:

ComponentManager.getGroupManager().getUsersInGroup('jira-core-users').each {...}
Henning Tietgens Community Champion Aug 06, 2017

Yes, that's a possibility if you have a group with all users. If it's a one-time job, you could use deprecated methods, too. Deprecated means you should replace this method in your code because it may go away in future releases. Or you could use the UserSearchService:

import com.atlassian.jira.bc.user.search.UserSearchParams
import com.atlassian.jira.bc.user.search.UserSearchService
import com.atlassian.jira.component.ComponentAccessor

def userSearchService = ComponentAccessor.getComponent(UserSearchService)
def userSearchParams = new UserSearchParams.Builder()
.allowEmptyQuery(true)
.ignorePermissionCheck(true)
.maxResults(10000)
.build()
def allUsers = userSearchService.findUsers("", userSearchParams)

Just use a number higher than the number of your user for maxResults.

Henning

Suggest an answer

Log in or Sign up to answer
Atlassian Community Anniversary

Happy Anniversary, Atlassian Community!

This community is celebrating its one-year anniversary and Atlassian co-founder Mike Cannon-Brookes has all the feels.

Read more
Community showcase
Bridget Sauer
Published yesterday in Marketplace Apps

Calling all developers––You're invited to Atlas Camp 2018

 Atlas Camp   is our developer event which will take place in Barcelona, Spain  from the 6th -7th of   September . This is a great opportunity to meet other developers and get n...

43 views 0 3
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