sheila.sarda
09/09/2026, 5:14 PMkapa.ai
09/09/2026, 5:14 PMAND operator (narrowing access to the intersection) [Set Up Data Filters].
• UI Limitations: Because the UI management screen is experimental, some advanced workflows or configurations may still require using the REST API [Manage User Data Filters].
4. Timeline for UI General Availability The documentation does not specify an exact release date or timeline for the User Data Filter Management UI to move from Experimental to General Availability (GA).
How to Reach Support if Needed If you need deeper human assistance reviewing your configuration or data model:
• Community support (Startup & Professional): You are already in the right place. The GoodData Support team monitors this Slack community and will join the thread directly if specialized technical or account review is required. To help the Support team investigate, please add the following details to this thread:
◦ Your workspace and organization IDs
◦ The exact MAQL expression used for your filter
◦ How the filter is assigned (user ID or user group ID)
◦ Any relevant API payloads or error responses
You can also visit the Community Forums.
• 24/7 Support (Enterprise plans): If your account tier includes 24/7 Support or this is a Severity 1 critical issue, direct options are available in addition to this thread:
◦ Submit a ticket: Support Portal
◦ Email: support@gooddata.com
◦ Phone: +1 (415) 200-0194 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups.
👀 Our Support team monitors all messages and will jump in if needed.Yvonne Changamuka
09/09/2026, 6:00 PMsheila.sarda
09/10/2026, 8:29 PM@gooddata/sdk-backend-tiger
• @gooddata/sdk-model
• @gooddata/sdk-ui
• @gooddata/sdk-ui-dashboard
(and the related UI CSS packages: sdk-ui-kit, sdk-ui-ext, sdk-ui-pivot, sdk-ui-charts, sdk-ui-filters, sdk-ui-dashboard)
How it works today (step by step)
1. Backend / auth
We create a Tiger backend with tigerFactory(), point it at our GoodData Cloud hostname, and authenticate with TigerTokenAuthProvider using a static API token.
2. Providers
The React tree wraps the screen with BackendProvider and WorkspaceProvider (one shared workspace).
3. Embedding
We render the <Dashboard> component from @gooddata/sdk-ui-dashboard in read-only mode (config={{ isReadOnly: true }}), passing a dashboard idRef.
4. Client-side filters after load
On GDC.DASH/EVT.INITIALIZED and GDC.DASH/EVT.FILTER_CONTEXT.SELECTION.RESET, we dispatch changeFilterContextSelection with attribute filters built from the logged-in user:
Tenant: a positive attribute filter on a tenant display form (the identifier differs per dashboard, e.g. ACCOUNT_TENANT, central.central_tenant, SERVICE_ORDER_TENANT, occurrence_tenant), with the value equal to our application tenantId.
Service type: a second attribute filter with the service-type names the user is allowed to see.
This works as a dashboard filter-context change after the dashboard is already loaded. The limitation is that it is client-side, dashboard-specific (each dashboard uses a different tenant attribute/label), and child widgets do not inherit a single core isolation rule from authentication. Users can also reset filters, which we have to re-apply manually.
What we need
We need a core filter bound to the authenticated user, not a per-dashboard filter bar change.
• The isolation key is tenantId (our multi-tenant identifier).
• After the user authenticates, all insights / widgets / nested (child) items on the dashboard should only return rows for that tenant.
• The filter should apply at the data/query layer (or via user/workspace data permissions), so it cannot be removed from the UI and does not depend on each dashboard having its own tenant attribute in the filter context.
Questions
1. What is the recommended way in GoodData Cloud (Tiger) to apply this kind of mandatory tenant isolation at authentication?
2. How should we map our application tenantId to the LDM so child widgets automatically inherit that core filter, instead of us calling changeFilterContextSelection per dashboard?
3. If we keep TigerTokenAuthProvider with an API token, can this still be done per end-user, or do we need to switch to JWT / OIDC so each session carries the tenantId claim?
4. Could you share a concrete example (auth payload + workspace/data-filter setup) for “every query on this dashboard is restricted to `tenantId = <authenticated tenant>`”?sheila.sarda
09/10/2026, 8:58 PMYvonne Changamuka
09/10/2026, 9:00 PMYvonne Changamuka
09/10/2026, 10:28 PM{
"data": {
"type": "userDataFilter",
"id": "<data-filter-id>",
"attributes": {
"maql": "<maql-expression>",
"title": "<data-filter-name>"
},
"relationships": {
"user": {
"data": {
"id": "<user-id>",
"type": "user"
}
}
}
}
}
Example payload:
{
"data": {
"type": "userDataFilter",
"id": "tenant_filter_123",
"attributes": {
"maql": "{label/tenant_id} = \"tenant_123\"",
"title": "Tenant 123 Filter"
},
"relationships": {
"user": {
"data": {
"id": "john.doe_tenant",
"type": "user"
}
}
}
}
}
(Note: You can also substitute "user" with "userGroup" to assign the filter to an entire group of users .)
2. Multi-value Conditions
If a tenant or user needs access to multiple values, format the MAQL expression using IN with escaped quotes:
{label/city} IN (\"Vancouver\",\"Halifax\”).
Please let me know if this helps.