How activate Group via JIRA 7 Java API?

user45424 August 18, 2017

When trying to create new Group by writing

Group ng = groupMgr.createGroup("some_group");crowdService.addGroup(ng);

I get "Group already exists in the remote directory".

When using ProjectRoleService to add this Group to a ProjectRole I get "We ca't find 'some_group' in any accessible user directory. Check they're still active and available, and try again."

So I guess I just need to activate this group. How to do it via Java API

1 answer

0 votes
Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
August 18, 2017

A group might exist in a directory without necessarily being exposed to the applications.

One of my current projects involves a client with 10,000 users and 5,000 groups in their AD, but JIRA only sees 400 users and 50 groups because it is limited to one part of the directory.

Could that be the case?

user45424 August 18, 2017

That is what I think it is. One group (from problematic groups) was created (became available in JIRA application) after a user from that group logged in. Probably same would happen with all the groups (I am having trouble creating) if appropriate user would login, howerver I want these groups to be available in application before tha thappens.

Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
August 18, 2017

New groups that are exposed to the application should appear on the next synchronisation, as well as when a user logs in and hence uses the group.

user45424 August 18, 2017

How do I expose them to the applications using Java API?

Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
August 18, 2017

Trigger a synchronisation.

user45424 August 18, 2017

How? Like this?

 

DirectoryManager directoryManager = ComponentAccessor.getComponent(DirectoryManager.class);
for( Directory directory : directoryManager.findAllDirectories() ){
try{
if( directoryManager.isSynchronisable( directory.getId() )
&& !directoryManager.isSynchronising( directory.getId() )){
directoryManager.synchroniseCache( directory.getId(), SynchronisationMode.INCREMENTAL );
}
} catch( Exception e ){
log.error("", e);
}
}
user45424 August 18, 2017

In the logs of the application I am working with I see http://prntscr.com/ga1rth even without the code I wrote above. So I guess synchronisation is happening (it is a scheduled repeating job).

Suggest an answer

Log in or Sign up to answer