Code to get all active identities with active directory links

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 &amp;&amp; iterator.hasNext()){

    Object[] users = (Object[]) iterator.next();
    
      activeADUsers.add(users[0]);
   
  }
  
  Util.flushIterator(iterator);
  
  return activeADUsers;

1 Like

@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 &amp;&amp; iterator.hasNext()){

    Identity identity = (Identity) iterator.next();

    IdentityService service = new IdentityService(context);

    if(identity!=null &amp;&amp; app!=null){

      List adLinks = service.getLinks(identity,app);

      if(adLinks!=null &amp;&amp; !adLinks.isEmpty()){

        for(Link link : adLinks){

          if(link!=null &amp;&amp; !link.isDisabled()){

            usersWithActiveADAccnts.add(identity.getName());


          }

        }

      }


    }


  }

  Util.flushIterator(iterator);

  return usersWithActiveADAccnts;
1 Like