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

JIRA finding users for a given directory

Hi all,

I have what I thought would be a very easy operation, but I am a little stuck.  We have 2 users directories:

  1. JIRA Internal
  2. LDAP

The JIRA internal should be just used for my administration and the like, but I just stumbled across a user who was internal.  So I need to find all users who are internal so I can get them to start using ldap ID instead.  I go to user and there is no directory filter.  Also I cannot click on the column title to sort by Directory.  

All I need is to find all users who are part of the JIRA internal directory.  Is there a way to do this?

(I did find this https://confluence.atlassian.com/jira/migrating-users-between-user-directories-426116517.html on migrating users but I do not have the option Migrate users from one directory to another under User Directories)

Thanks in advance!

Robert

 

6 answers

2 accepted

7 votes
Answer accepted

Only way I know of is to query the database directly.... something like this ought to do the trick:

SELECT * FROM cwd_user
WHERE directory_id = 1

Really? interacting directly with the database? Wow. I think I will submit that as a feature request as it seems very easy and I could really see the usage. Thanks! Robert

Like Espen Sandall likes this

BTW that worked great. Thanks again.

Robert: did you find or submit a feature request for this?

No, I used Jordan's database query and that gave me what I needed.

Using the JIRA internal database is very dangerous.  I strongly recommend using a separate mysql database.   However here is how: https://confluence.atlassian.com/jirakb/running-sql-commands-in-a-hsql-database-685900390.html 

Something via the UI would be nice.

Like Espen Sandall likes this
1 vote
Answer accepted

I found a macro on-line and modified it a little. It gets the KEY for the user directory. I haven't been able to get the name, but no biggie. Look at the user to see the actual user directory and learn what the two numbers mean. Here's the template:

## Macro title: Last Login
## Macro has a body: N
## Body processing: Selected body processing option
## Output: Selected output option
##
## Developed by: Andrew Frayling
## Modified by: Michael Seager [Atlassian Support]
## Mofified by: Salim Morgan (STCS, Riyadh)
## Date created: 11/02/2012
## Installed by: <your name>
## Macro to display the last login date of users who have access to the current space
## @noparams

#set($containerManagerClass = $content.class.forName('com.atlassian.spring.container.ContainerManager'))
#set($getInstanceMethod = $containerManagerClass.getDeclaredMethod('getInstance',null))
#set($containerManager = $getInstanceMethod.invoke(null,null))
#set($containerContext = $containerManager.containerContext)
#set($loginManager = $containerContext.getComponent('loginManager'))
#set($users = $userAccessor.getUsers())


<table class="confluenceTable">
<tr>
<th class="confluenceTh">Count</th>
<th class="confluenceTh">User</th>
<th class="confluenceTh">Login Name</th>
<th class="confluenceTh">Last Successful Login</th>
<th class="confluenceTh">Directory</th>
</tr>

#set($count = 0)

#foreach($user in $users)
## list the last login date of users who can view the current space
#if ($permissionHelper.canView($user, $space))
#set($count = $count + 1)
<tr>
<td class="confluenceTd">$count</td>
<td class="confluenceTd">#usernameLink($user.name)</td>
<td class="confluenceTd">$user.name</td>
<td class="confluenceTd">$action.dateFormatter.formatDateTime($loginManager.getLoginInfo($user.name).lastSuccessfulLoginDate)</td>
<td class="confluenceTd">$user.directoryId</td>
#end
#end
</table>

Thanks!

It worked for our Confluence server.

You can also look them up using scriptrunner script console

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser

def userManager = ComponentAccessor.userManager

def allUsers = userManager.allUsers

List<ApplicationUser> results = []

allUsers.each {
if (it.directoryId == 1L) {
results.add(it)
}
}

def prettyPrint = ""

results.each {
prettyPrint += it.displayName + "(" + it.name + ") - Active: " + it.active + "<br>"
}

prettyPrint

Hi @Joachim Brechtel _TNG_ 

I'm trying to adapt your scriptrunner script above to additionally include "email address" in the prettyPrint results of the Jira user directory. It's already working fine and showing displayname, username and active flag. Any advice would be much appreciated.

Thanks,

Tim

Hi @Tim_C ,

you can use

prettyPrint += it.displayName + "(" + it.name + ") - Active: " + it.active + ", Email: " + it.emailAddress + "<br>"

The result contains a list of com.atlassian.jira.user.ApplicationUser. You can find the API reference here: https://docs.atlassian.com/software/jira/docs/api/7.1.0/com/atlassian/jira/user/ApplicationUser.html

Best, Joachim

Hi @Joachim Brechtel _TNG_ - perfect, thanks for your very quick response. 

@Joachim Brechtel _TNG_ , thank you! I took you script to use for mine as well. Here is my final script.

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser

def userManager = ComponentAccessor.userManager

def allUsers = userManager.allUsers

List<ApplicationUser> results = []

allUsers.each {
if (it.directoryId == 1L && it.emailAddress ==~ /(?s).*kambi.*/ && it.active == true) {
results.add(it)
}
}

def prettyPrint = ""

results.each {
prettyPrint += it.displayName + "(" + it.name + ") - Email: " + it.emailAddress + "<br>"
}

prettyPrint

 Just one question, this line

def allUsers = userManager.allUsers

Is showing a warning saying not to pull allusers if not needed. What should be the fix? 

Hi @marco@Marc Jason Mutuc ,

the warning just indicates that this method may cause performance impact (it is also deprecated, so it might not work in future).

The solution would be to take com.atlassian.jira.bc.user.search.UserSearchService and build a query which includes all users. But as long as Atlassian keeps the method, I would continue to use it.

Can this functionality be added to the UI so that was can easily search users from a particular user directory (Internal, LDAP, Crowd)

I guess this is a no and we can't vote on it, since no one ever answered. It would make my life far easier to manage the 2000+ users we have.

Like Espen Sandall likes this

Is there an update on this issue or do we still have to do this with SQL?

Submitted JRASERVER-65844 to add a filter on the "user management" screen.

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...

263 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