Just a heads up: On March 24, 2025, starting at 4:30pm CDT / 19:30 UTC, the site will be undergoing scheduled maintenance for a few hours. During this time, the site might be unavailable for a short while. Thanks for your patience.
×Hi all,
I have what I thought would be a very easy operation, but I am a little stuck. We have 2 users directories:
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
BTW that worked great. Thanks again.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Robert: did you find or submit a feature request for this?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
No, I used Jordan's database query and that gave me what I needed.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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.
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>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks!
It worked for our Confluence server.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Joachim Brechtel - perfect, thanks for your very quick response.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Joachim Brechtel , 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?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Can this functionality be added to the UI so that was can easily search users from a particular user directory (Internal, LDAP, Crowd)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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.
Is there an update on this issue or do we still have to do this with SQL?
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.