Quicklink Populations Filtering

Which IIQ version are you inquiring about?

8.4 p2

Currently we have a filter for users to not see inactive Identity Cubes in the Request Access screen. We want to add additional criteria to hide Active Identity Cubes where there activePersona (active_persona) only contains Emeritus.

We currently have a Custom Criteria of the following value:
inactive==false

I’ve tried to create a rule to try to filter:

import sailpoint.object.Filter;
import sailpoint.object.Identity;

return Filter.or(Filter.eq(inactive!=true), Filter.and(Filter.eq(inactive==false), Filter.eq(activePersona!=“Emeritus”)));

Here is what the data looks like in the database:

When Looking at the identity:

Screenshot 2025-11-07 at 1.17.55 PM

Looking at the identity in the debug pages:

When I try the filter rule, it does hide the inactive identities, but it still shows the identities where the only activePersona=”Emeritus”

Thanks.

I’m thinking it might be because this is a multi-valued searchable attribute. There is a special filter object for that you need to build. See here https://community.sailpoint.com/t5/Technical-White-Papers/Filters-and-Filter-Strings/ta-p/76012#toc-hId--472569354

Hi @brownric

Try using Filter.contains

Use this :

import sailpoint.object.Filter;
import sailpoint.object.Identity;

return Filter.or(
    Filter.eq("inactive", false),
    Filter.not(Filter.contains("activePersona", "Emeritus"))
);

1 Like

Let me know if it resolves or not.

I tried that and this and no luck:

import sailpoint.object.Filter;
import sailpoint.object.Identity;
log.warn("Executing on behalf of " + requester.getFullName());

return Filter.or(
    Filter.eq(inactive!=true), 
    Filter.and(Filter.eq(inactive==false), Filter.not(Filter.contains("activePersona", "Emeritus")))
);

Thanks.

@brownric

try this:

import sailpoint.object.Filter;
import sailpoint.object.Identity;

return Filter.or(
    Filter.eq("inactive", false),
    Filter.not(Filter.contains("activePersona", "Emeritus"))
);

That gave the following error:

sailpoint.tools.GeneralException: Cannot invoke “org.hibernate.hql.internal.ast.tree.FromElement.setAllPropertyFetch(boolean)” because “fromElement” is null
Caused by: java.lang.NullPointerException: Cannot invoke “org.hibernate.hql.internal.ast.tree.FromElement.setAllPropertyFetch(boolean)” because “fromElement” is null

Use this once and let me know:

import sailpoint.object.Filter;
import sailpoint.object.Identity;

log.warn("Executing on behalf of " + requester.getFullName());

Filter filter = Filter.or(
    Filter.ne("inactive", true),
    Filter.and(
        Filter.eq("inactive", false),
        Filter.not(Filter.contains("activePersona", "Emeritus"))
    )
);

return filter;

Same error came back when trying that new rule filter.

Found the solution using this:

Along with ensuring that other quicklink populations didn’t conflict with the everyone quicklink population.

import sailpoint.object.Filter;
import sailpoint.object.Identity;

String attrName = "activePersona";
String attrValue = "Emeritus";
Filter filter =
Filter.and(
Filter.and(Filter.join("id", "IdentityExternalAttribute.objectId"),
Filter.eq("IdentityExternalAttribute.attributeName", attrName),
Filter.ignoreCase(Filter.ne("IdentityExternalAttribute.value", attrValue))),
Filter.eq("inactive",false));

return filter;</Source>
1 Like