Hi all,
Could someone help me with a Code snippet to get all active identities with active directory links.
Thanks in advance
Hi all,
Could someone help me with a Code snippet to get all active identities with active directory links.
Thanks in advance
Hi @rishavghoshacc ,
use below code to get all active users and active ad links.
QueryOptions opacc = new QueryOptions();
opacc.addFilter(Filter.*eq*("inactive", **false**));
List<Identity> identityes = *context*.getObjects(Identity.**class**, opacc);
List activeLinks = **new** ArrayList();
List inactiveIdLinks = **new** ArrayList();
**for** (Identity inid : identityes) {
List<Link> inidlinks = inid.getLinks();
**for** (Link olink : inidlinks) {
**if** (olink.getApplicationName().equalsIgnoreCase("AD application")) {
**if** (!olink.isDisabled()) {
Map map = **new** HashMap();
map.put("name", inid.getName());
map.put("displayname", inid.getDisplayableName());
map.put("email", inid.getEmail());
map.put("type", inid.getType());
map.put("enddate", inid.getAttribute("endDate"));
map.put("activeapplicationname", olink.getApplicationName());
map.put("activeapplicationtype", olink.getApplication().getType());
map.put("activeapplicationusername", olink.getNativeIdentity());
inactiveIdLinks.add(map);
}
}
}
}
Hi @rishavghoshacc ,
You can use the following code to get all the active identities with active activedirectory links.
import sailpoint.object.QueryOptions;
import sailpoint.object.Filter;
import sailpoint.object.Identity;
import java.util.Iterator;
import sailpoint.tools.Util;
import java.util.Arrays;
import org.apache.log4j.Logger;
String appName = "Active_Directory";
List activeADUsers = new ArrayList();
QueryOptions qo = new QueryOptions();
qo.addFilter(Filter.eq("inactive",false));
qo.addFilter(Filter.and(Filter.eq("links.application.name",appName),Filter.eq("links.iiqDisabled",false)));
Iterator iterator = context.search(Identity.class,qo,"name");
while(iterator!=null && iterator.hasNext()){
Object[] users = (Object[]) iterator.next();
activeADUsers.add(users[0]);
}
Util.flushIterator(iterator);
return activeADUsers;
@Chathurya - is there a way to get the same using identityservices class?
@rishavghoshacc , you can get the same using the IdentityService class also.
import sailpoint.api.IdentityService;
import sailpoint.object.Identity;
import sailpoint.object.Application;
import sailpoint.object.QueryOptions;
import sailpoint.object.Filter;
import sailpoint.object.Link;
import java.util.List;
import java.util.ArrayList;
import sailpoint.tools.Util;
import org.apache.log4j.Logger;
String appName = "Active_Directory";
Application app = context.getObjectByName(Application.class,appName);
List usersWithActiveADAccnts = new ArrayList();
QueryOptions qo = new QueryOptions();
qo.addFilter(Filter.eq("inactive",false));
Iterator iterator = context.search(Identity.class,qo);
while(iterator!=null && iterator.hasNext()){
Identity identity = (Identity) iterator.next();
IdentityService service = new IdentityService(context);
if(identity!=null && app!=null){
List adLinks = service.getLinks(identity,app);
if(adLinks!=null && !adLinks.isEmpty()){
for(Link link : adLinks){
if(link!=null && !link.isDisabled()){
usersWithActiveADAccnts.add(identity.getName());
}
}
}
}
}
Util.flushIterator(iterator);
return usersWithActiveADAccnts;