--- title: "Filter Account List" slug: "filter-account-list" description: "Learn how to implement the Filter Account List Groovy extension in Zilliant CPQ." tags: ["extension"] updated: 2026-06-02T12:02:29Z published: 2026-06-02T12:02:29Z canonical: "docs.zilliant.com/filter-account-list" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.zilliant.com/llms.txt > Use this file to discover all available pages before exploring further. # Filter Account List ## Purpose Allows you to run a script that filters the list of accounts that are shown when users create a [quote](/v1/docs/manage-quotes#create-quotes) or an [agreement](/v1/docs/create-agreements-1). ## Setup Upload the script for **Filter Account List**. For details about uploading and configuring Groovy scripts, read [Upload a Groovy script](/v1/docs/upload-a-groovy-script). ## Binding variables In addition to the [common binding variables](/v1/docs/binding-variables), the following binding variables are available for this extension point. | Variable name | Class | Description | | --- | --- | --- | | filterAccountScript | Collection | Set of filter conditions that apply to the account list. | | filterFactory | FilterFactory | Helper class for creating the conditions. | For details about the classes listed in this table, including available methods, fields, and method signatures, read the [Zilliant Groovy API reference](/main/docs/groovy-api-reference). ## Expected output The script fills in the `filterAccountScript` variable with the appropriate conditions, which are then used to filter the account list for quote or agreement creation. Conditions may be created with the help of the `filterFactory` variable or instantiated directly by the script. Refer to the Javadoc for available subtypes of the Condition interface that can be added to the `filterAccountScript` variable. If multiple conditions are added, the account must meet all of them to pass the filter. There is currently no support for OR operation for multiple conditions. Within one condition, however, it is often possible to specify multiple inputs; these are evaluated as either-or, as illustrated by the following script snippet: ```groovy // include only accounts that belong to either Automotive or Manufacturing industry def condition1 = filterFactory.getCondition(Schema.Industry, Schema.hasIndustry,       Schema.objectName, ["Automotive", "Manufacturing"], OPERATOR.CONTAINS); filterAccountScript.add(condition1); // include only accounts that has "GRP1" account group def condition2 = new ConditionAttribute(Schema.accountGroup, "GRP1",       OPERATOR.CONTAINS); filterAccountScript.add(condition2); def attribute Chain = Lists.newArrayList(//       Pair.of(Schema.definesSalesInfo, Schema.SalesInfo),//       Pair.of(Schema.hasSalesOrg, Schema.SalesOrg)); Condition c = filterFactory.getConditionChain(//       attributeChain, filterFactory.getCondition(Schema.objectERPId, "1000", OPERATOR.EQUAL)); filterAccountScript.add(c); // only accounts that meet both of these conditions are shown in quote creation ``` ## Script execution The script that you upload for this extension point runs automatically when users create a [quote](/v1/docs/manage-quotes#create-quotes) or an [agreement](/v1/docs/create-agreements-1) through the user interface. The system filters the list of accounts that users can select in the **Create Quote** or **Create Agreement** screens according to the script. If you don't upload a script for this extension point, or the script has an error, the system makes all accounts available for selection (the default behavior).