Load huge data in Form Dropdown field, more than 4000 records

Hi Team,

We have more than 7000 data to be populated under a form dropdown. In logs it is able to generate the filter query like this (name == “BATTLEJ” || name == “HARRIS18” || name == “XUJ1” || name == “PAYNEH” || name == “WATKINR” || name == “CASTLET” || name == “HARKLES” || name == “CARRANA1” || name == “BUTLERC1” || name == “CURRYL1” || name == “FLETCHS” || name == “BUTLERD1” || …) but at the end when we click the drop down, it does not show the users. In non prod with less data it is loading. Our filter is, users with “Auth source application” + “Active Directory” + “EmployeeStatus=Active” + “Enabled Active Directory”.

Any Suggestions ?

What is the type of form drop down field? If its Identity you should be able to use filter to populate drop down with identities based on the filter. Can you share the form field XML with filter?

Wow, that is a very large filter.

Is there a reason you’re doing it this way and not via AllowedValues?

I would suggest to use a script with Allowed Values Definition or set FilterString with script, can you share the form xml.

1 Like

I hope there’s something more common to build that query so that you don’t have to build out a denormalized filter. Maybe they have a common attribute like a department/division value or they are assigned the same role.

1 Like

Hi EveryOne, Thanks for your reply.

We had a requirement where HR team, needs to immediately Disable users who are EmployeeStatus=active and has Enabled Active Directory link. The same quicklink can be used to Enable the users, disabled through this quicklink.

The quicklink opens a form, which has 2 radio buttons “Disable” & “Enable”. The calculation of which users needs to be displayed in the Form is done in workflow and sent in the form as argument. This is where the form does not display the users, if it has a huge data to process.

If you are mapping their AD status to the OOTB attribute “inactive”, then your field filter in your form could just be this vs trying to do a large “or” expression:

<Field displayName="Users" multi="true" name="users" type="Identity">
  <Attributes>
    <Map>
      <entry key="hidden">
        <value>
          <Script>
            <Source><![CDATA[
              import sailpoint.object.*;

              Filter filter = Filter.and(Filter.eq("workgroup", false), // Exclude workgroups
                                         Filter.ne("inactive", true), // Active users
                                         Filter.eq("links.application.name", "Active Directory"));   // Has AD
              
              field.setFilterString(filter.toString());
            ]]></Source>
          </Script>
        </value>
      </entry>
    </Map>
  </Attributes>
</Field>