Advanced Cloud Security Documentation
Index

Data Filters

Data filters define the record-level restrictions in Advanced Cloud Security. This guide explains how to create, configure, and manage data filters.

Creating Data Filters

Accessing Data Access

  1. Open Define Security Features
  2. Select a security feature
  3. In the Data Access Filters part (embedded on the Security Features page), add a new line

Adding a Filter

  1. Use the assist edit (...) in the Table Name column to select a table
  2. Use the assist edit (...) in the Field Name column to select a field
  3. Enter the filter expression in the Filter Value column

Filter Expression Syntax

Basic Equality

EUROPE

Field equals "EUROPE"

Multiple Values (OR)

DE|FR|IT|ES

Field equals any of these values (OR logic)

Range

1000..2000

Field is between 1000 and 2000

Not Equal

<>BLOCKED

Field is not equal to "BLOCKED"

Greater/Less Than

>0

Field is greater than 0

<100

Field is less than 100

Wildcards

SALES*

Field starts with "SALES"

*INC

Field ends with "INC"

*CORP*

Field contains "CORP"

Empty/Not Empty

''

Field is empty

<>''

Field is not empty

Dynamic Filters (Filter Codes)

User-Specific Values

ACS supports dynamic filters through filter codes. Filter codes are named placeholders (e.g., UF_23) that resolve to user-specific values at runtime. Values are configured per user in the User Security Filters page.

Built-in Filter Codes

Common built-in filter codes:

Filter Code Description
UF_50 User ID Filter
UF_2 User Name
UF_21 Salespers./Purch. Code
UF_22 Country/Region Code
UF_23 Location Code
UF_24 Global Dimension 1 Code
UF_25 Global Dimension 2 Code

See Filter Codes for the complete list.

Event-Supplied Filter Codes

You can also create custom filter codes of type "Event Supplied" that are resolved through AL events. These are configured in the Filter Codes page.

Filter Examples

Example 1: Regional Customer Filter

Goal: Salespeople see only their region's customers

Configuration:

Table Field Filter
Customer Country/Region Code Filter code UF_22

User Security Filters values:

User Country/Region Code (UF_22)
JOHN DE&#|;FR
JANE US&#|;CA

Example 2: Active Records Only

Goal: Users see only non-blocked customers

Configuration:

Table Field Filter
Customer Blocked '' (empty)

Example 3: High-Value Customers

Goal: Show customers with credit limit over 10,000

Configuration:

Table Field Filter
Customer Credit Limit (LCY) >10000

Example 4: Own Documents

Goal: Users see only their assigned documents

Configuration:

Table Field Filter
Sales Header Assigned User ID Filter code UF_50

Multiple Filters

Same Table, Multiple Fields

Multiple filters on the same table use AND logic:

Customer
├── Region Code = 'EUROPE'
└── Blocked = '' (not blocked)

User sees European customers who are not blocked.

Multiple Tables

A feature can filter multiple tables:

Feature: SALES-EUROPE
├── Customer: Country = 'DE|FR|IT'
├── Sales Header: Sell-to Country = 'DE|FR|IT'
├── Sales Line: (inherits from header)
└── Sales Invoice: Sell-to Country = 'DE|FR|IT'

Filter Inheritance

Document Headers and Lines

When filtering a header table:

  • Lines typically filtered by relation to header
  • But explicit line filters may be needed
  • Test both header and line pages

Parent-Child Relationships

Consider filtering related tables consistently:

Parent Table Child Table
Customer Customer Ledger Entry
Vendor Vendor Ledger Entry
Item Item Ledger Entry

Testing Data Filters

Test Procedure

  1. Assign the feature to a test user
  2. Log in as the test user
  3. Open the filtered list page
  4. Verify correct records appear

Test Cases

  • Only matching records appear
  • No matching records = empty list (no error)
  • Lookups show filtered data
  • Related pages work correctly
  • Creating new records works

Edge Cases

  • What happens with zero matching records?
  • What if user creates a non-matching record?
  • Do lookups work correctly?
  • Do related statistics work?

Filter Performance

Performance Considerations

Filters add to query WHERE clauses:

  • Filter on indexed fields when possible
  • Avoid complex wildcard patterns
  • Test with realistic data volumes
  • Monitor for performance issues

Indexing

Ensure filtered fields have appropriate indexes:

  • Check table key structure
  • Consider index impact
  • Work with DBA if needed

Combining Static and Dynamic

You can combine static values and placeholders:

$UF_22$|INTERNATIONAL

User sees their Country/Region Code value plus all INTERNATIONAL customers.

Filter Troubleshooting

No Records Showing

  1. Check filter expression syntax
  2. Verify user's filter values are set
  3. Test filter manually in BC
  4. Check for AND logic issues

Too Many Records

  1. Verify filter is applied
  2. Check feature is assigned
  3. Confirm extension was regenerated
  4. Review Effective Security

Wrong Records Showing

  1. Check filter expression
  2. Verify user filter values
  3. Test with different user
  4. Check for multiple features

Best Practices

Use Meaningful Filter Codes

  • REGION not R1
  • SALESPERSON not SP
  • Document what each code means

Document Filter Logic

Record:

  • Business purpose
  • Filter expression
  • Expected behavior
  • Related tables to filter

Test with Production-Like Data

  • Test with realistic data volumes
  • Verify edge cases
  • Check performance

Review Regularly

  • Audit filter configurations
  • Update as business changes
  • Remove obsolete filters