--- title: "Creating and editing Conditions in the Admin UI" slug: "configure-conditions-v6-6" description: "Control network resource access in Entitlements with dynamic claims, user interactions, and advanced scripting for enhanced security and flexibility." updated: 2026-02-06T20:52:56Z published: 2026-02-06T20:52:56Z canonical: "support.appgate.com/configure-conditions-v6-6" --- > ## Documentation Index > Fetch the complete documentation index at: https://support.appgate.com/llms.txt > Use this file to discover all available pages before exploring further. # Configure conditions Conditions define criteria and user actions used to control when network resources in Entitlements can be accessed. Review the [Before you start](/v1/docs/conditions-v6-6) section before configuring. ## Actions The Actions menu in the **Add or Edit Condition** page allows you to clone the Condition or [test access](/v1/docs/checking-access-rights-v6-6) based on the settings below. ## Add/Edit Condition To create or edit conditions, you will configure the access criteria and re-evaluation settings. Select **+Add** to create a new Condition or select an existing Condition to edit. ### Access Criteria To configure the access criteria for a condition, enter values in the following fields: - ***Setting Modes.*** List mode provides three options to configure the criteria that need to be true in order for access in an Entitlement to be allowed. Selecting a claim will automatically display the relevant parameters. - *Switch to Script Mode.* By using the script editor it is possible to edit existing expressions or to create your own. The JavaScript engine is run in a sandbox preventing any file system access, however it is possible to make external calls using: > [!NOTE] > **NOTE** > > Script mode is available for very advanced use cases. However this may break compatibility with the other three modes. - HTTP PUT - HTTP POST - HTTP GET - HTTP DELETE This would for instance allow a value to be passed to an external system for validation as part of the expression. Refer to [access criteria script](/v1/docs/access-control-modes-v6-6#access-criteria-scripts) for more information on scripting. - ***Criteria Combining Mode.*** Criteria expressions have three different combining modes (without using scripts): - - a logical AND of different criteria needs to equate to true - - a logical OR of different criteria needs to equate to true - - a simple Boolean expression comprising a number of different criteria needs to equate to true [Condition based access](/v1/docs/access-control-modes-1) provides more information and examples - ***Criteria.*** By selecting criteria that include dynamic claims (that change during a session), you can create access criteria expressions that enable AppGate ZTNA to respond to changes in a timely manner. For example, clientSrcIP claim can be used to remove access to protected resources when the user leaves the office to work from home. Conditions can include multiple criteria, so you will need to decide how to combine the access criteria. There is also a Script mode for advanced use cases. - *Type - User Actions****.*** In the *Type* dropdown there are three user response claims under **User Actions**: *Provided MFA*, *Provided Reason*, or *Password*. Unlike all other claims, which are hard-coded or pre-configured (for instance within the identity provider), user interaction names are defined within the Condition itself. When Configured with a claim suffix (name) and time period (if required) then a new user response claim (using that name) is automatically created. | Type | Claim Suffix (Name) | Minutes (Time window) | Internal Claim Name | Criteria Check Method Used | | --- | --- | --- | --- | --- | | | The claim name that refers to this occurrence of the user interaction | Time window during which the claim shall evaluate to true | The internal user response claim generated from the given claim suffix (name) | Matching criteria check method used to evaluate if the claim is true or false | | Provided MFA | i.e., general | i.e., 60 | user.otp.general | claims.user.hasOtp("general", 60) | | Retyped Password | i.e., finance | i.e., 60 | user.password.finance | claims.user.hasPassword("finance", 60) | | Provided Reason | i.e., github | n/a | device.reason.github | claims.device.hasReason("github") | [User response claims](/v1/docs/applying-access-controls-user-interactions-v6-6) gives more details and examples about the built in check method used and how this ties into the naming of these types of claims. - *Other claim types****.*** As you build an expression you will be prompted for the necessary parameters according to the claim selected. - **User claims example:** **"groups match"**: use this option to check for membership of an LDAP group. The match operator uses exact match; while testing the LDAP "groups" claim with contains operator, you need to provide the whole FQDN of the group name. For example: `CN=group3,OU=sweden,DC=cryptzone,DC=com", "CN=group4,OU=sweden,DC=cryptzone,DC=com` We do not recommend using partial matches for security reasons but you can do this in the Javascript editor. You can flatten "groups" claim to a single string: `var all_groups = claims.users.groups.toString()` then check the group name `var match= all_group.indexOf('CN=Developers,') > -1;` Note the trailing comma in the example, make sure to include trailing comma for security reasons so there are no un-intentional matches like `CN=Developers Inactive, OU= vs CN=Developers, OU=..` - **Device claims example:** "**os.family**": use this option to include devices with a particular OS e.g. windows. "**isFirewallEnabled**": use this option to check for a device firewall > [!NOTE] > NOTE > > Any device claims or on-demand claims which return yes/no, true/false, etc will be evaluated as a string. Any values that should NOT be treated as a string need to be handled using