Skip to main content

Apply Filters with Parallel Rendering for Initial Dashboard Rendering

Available since 2026 Update 2

Parallel Rendering (also referred to as Incremental Rendering) enables progressive rendering of multiple visualizations, enhancing load performance and the overall user experience. Users can enable this feature for a dashboard via the dashboard properties panel; however, it is only supported for initial dashboard execution. Any subsequent user manipulations will remove the Parallel Rendering flag from the dashboard instance.

This workflow sample demonstrates how to enable Parallel Rendering for dashboard instances in use cases where filters must be applied prior to rendering. It leverages resolve-only mode during instance creation and filter application, which allows filters to be applied safely before triggering Parallel Rendering—ensuring optimized load performance. When the parallelRenderingAfterManipulation parameter is set to true, the final render process runs with Parallel Rendering enabled, guaranteeing a streamlined, progressive loading experience for the end user.

Workflow Scenarios

Two scenarios are supported, depending on your use case:

Scenario 1: Apply filters during instance creation
Include the filters directly in the Create Instance request.

Scenario 2: Apply filters after instance creation
This scenario involves two steps:

  1. Create the instance (optionally with initial filters).
  2. Apply additional filters after the instance is created.

In both scenarios, you may observe the parallel rendering effect (faster load times and progressive visualization rendering) when opening the instance using the MicroStrategy gotoPage API or create method.

Note: For very simple dashboards or dashboards that execute quickly, the Parallel Rendering effect may not be noticeable, as the entire dashboard may render almost instantly.

info

Before executing the requests, replace all sample dashboard IDs, instance IDs, project IDs, auth tokens, and filters in the examples with your actual values.

You can obtain the authorization token using POST /api/auth/login.

Scenario 1: Apply Filters During Instance Creation

This scenario applies filters directly when creating the dashboard instance, enabling parallel rendering in a single API call.

POST /api/dossiers/{dossierId}/instances

Creates a new instance of a specific dashboard with filters applied during creation.

Request URL

POST /api/dossiers/{dossierId}/instances

Request Headers

NameTypeDescription
X-MSTR-AuthTokenHeaderAuthorization token generated by POST /api/auth/login
X-MSTR-ProjectIDHeaderProject ID generated by GET /api/projects

Sample Request Body

The key properties are:

  • resolveOnly: Set to true to prepare the instance without full rendering
  • enableParallelRendering: Set to false during instance creation (parallel rendering is triggered later)
  • filters: Array of filter objects to apply to the dashboard
  • applyFilterResolveOnly: Set to false to fully execute the filter and trigger parallel rendering
  • parallelRenderingAfterManipulation: Set to true to enable parallel rendering after filters are applied
{
"persistViewState": true,
"resolveOnly": true,
"ignoreMissingFilter": true,
"enableParallelRendering": false,
"filters": [
{
"key": "W2025834099",
"name": "Budget Year",
"selections": [
{
"id": "h2018;908C8901EC4ADFC06D11A19083E339F5",
"name": "2018"
},
{
"id": "h2020;908C8901EC4ADFC06D11A19083E339F5",
"name": "2020"
}
]
}
],
"applyFilterResolveOnly": false,
"parallelRenderingAfterManipulation": true
}

Sample Curl Request

curl -X 'POST' 'http://demo.microstrategy.com/MicroStrategyLibrary/api/dossiers/D61608A211E6C6E100000080EFC58627/instances' \
-H 'accept: application/json' \
-H 'X-MSTR-AuthToken: jhnatva9g0s47ittee8tnmkvd' \
-H 'X-MSTR-ProjectID: EC70648611E7A2F962E90080EFD58751' \
-H 'Content-Type: application/json' \
-d '{
"persistViewState": true,
"resolveOnly": true,
"ignoreMissingFilter": true,
"enableParallelRendering": false,
"filters": [
{
"key": "W2025834099",
"name": "Budget Year",
"selections": [
{
"id": "h2018;908C8901EC4ADFC06D11A19083E339F5",
"name": "2018"
},
{
"id": "h2020;908C8901EC4ADFC06D11A19083E339F5",
"name": "2020"
}
]
}
],
"applyFilterResolveOnly": false,
"parallelRenderingAfterManipulation": true
}'

Sample Response

{
"id": "00000000000000000000000000000000",
"status": 1,
"mid": "BB4335B5594A5E2AA38CD99100A676C6"
}

Scenario 2: Apply Filters After Instance Creation

This scenario creates the instance first in resolve-only mode with resolveOnly: true (keep initial instance in resolve-only mode) and applyFilterResolveOnly: true (keeping instance after apply filters in resolve-only mode), then applies additional filters with parallel rendering enabled using a separate API call. This is useful when you need to prepare the instance quickly and apply multiple filters progressively before triggering the final parallel render.

Step 1: Create Dashboard Instance

First, create a dashboard instance with resolveOnly: true and enableParallelRendering: false to quickly prepare the instance.

POST /api/dossiers/{dossierId}/instances

Request URL
POST /api/dossiers/{dossierId}/instances
Request Headers
NameTypeDescription
X-MSTR-AuthTokenHeaderAuthorization token generated by POST /api/auth/login
X-MSTR-ProjectIDHeaderProject ID generated by GET /api/projects
Sample Request Body

Key properties:

  • resolveOnly: Set to true to prepare the instance without full rendering
  • enableParallelRendering: Set to false during instance creation (parallel rendering is triggered later)
  • filters: Array of filter objects to apply to the dashboard
  • applyFilterResolveOnly: Set to true to keep initial filters in resolve-only mode (not fully executed yet)
  • parallelRenderingAfterManipulation: Set to false for this initial step (will be enabled in Step 2)
{
"persistViewState": true,
"resolveOnly": true,
"ignoreMissingFilter": true,
"enableParallelRendering": false,
"applyFilterResolveOnly": true,
"parallelRenderingAfterManipulation": false,
"filters": [
{
"key": "W2025834099",
"name": "Budget Year",
"selections": [
{
"id": "h2018;908C8901EC4ADFC06D11A19083E339F5",
"name": "2018"
}
]
}
]
}
Sample Curl Request
curl -X 'POST' 'http://demo.microstrategy.com/MicroStrategyLibrary/api/dossiers/D61608A211E6C6E100000080EFC58627/instances' \
-H 'accept: application/json' \
-H 'X-MSTR-AuthToken: jhnatva9g0s47ittee8tnmkvd' \
-H 'X-MSTR-ProjectID: EC70648611E7A2F962E90080EFD58751' \
-H 'Content-Type: application/json' \
-d '{
"persistViewState": true,
"resolveOnly": true,
"ignoreMissingFilter": true,
"enableParallelRendering": false,
"applyFilterResolveOnly": true,
"parallelRenderingAfterManipulation": false,
"filters": [
{
"key": "W2025834099",
"name": "Budget Year",
"selections": [
{
"id": "h2018;908C8901EC4ADFC06D11A19083E339F5",
"name": "2018"
}
]
}
]
}'
Sample Response
{
"id": "00000000000000000000000000000000",
"status": 1,
"mid": "BB4335B5594A5E2AA38CD99100A676C6"
}

Save the mid value from the response to use in Step 2.

Step 2: Apply Additional Filters with Parallel Rendering

After creating the instance, apply additional filters using the PUT filters endpoint with executionMode=DATA and parallelRenderingAfterManipulation=true. This fully executes all filters (including those from Step 1) and enables parallel rendering for all subsequent operations on this instance.

Key query parameters:

  • executionMode=DATA: Transitions the instance out of resolve-only mode and executes the filter to retrieve data
  • parallelRenderingAfterManipulation=true: Enables parallel rendering after filter applied

PUT /api/dossiers/{dossierId}/instances/{instanceId}/filters

Request URL
PUT /api/dossiers/{dossierId}/instances/{instanceId}/filters?ignoreMissingFilter=false&executionMode=DATA&parallelRenderingAfterManipulation=true
Query Parameters
NameTypeDescription
ignoreMissingFilterQueryWhether to ignore missing filters (false)
executionModeQueryExecution mode for the filter application (DATA)
parallelRenderingAfterManipulationQueryEnable parallel rendering after filter manipulation (true)
Request Headers
NameTypeDescription
X-MSTR-AuthTokenHeaderAuthorization token generated by POST /api/auth/login
X-MSTR-ProjectIDHeaderProject ID generated by GET /api/projects
Sample Request Body
[
{
"key": "W2025834099",
"name": "Budget Year",
"selections": [
{
"id": "h2019;908C8901EC4ADFC06D11A19083E339F5",
"name": "2019"
},
{
"id": "h2020;908C8901EC4ADFC06D11A19083E339F5",
"name": "2020"
}
]
}
]
Sample Curl Request
curl -X 'PUT' 'http://demo.microstrategy.com/MicroStrategyLibrary/api/dossiers/D61608A211E6C6E100000080EFC58627/instances/BB4335B5594A5E2AA38CD99100A676C6/filters?ignoreMissingFilter=false&executionMode=DATA&parallelRenderingAfterManipulation=true' \
-H 'accept: application/json' \
-H 'X-MSTR-AuthToken: jhnatva9g0s47ittee8tnmkvd' \
-H 'X-MSTR-ProjectID: EC70648611E7A2F962E90080EFD58751' \
-H 'Content-Type: application/json' \
-d '[
{
"key": "W2025834099",
"name": "Budget Year",
"selections": [
{
"id": "h2019;908C8901EC4ADFC06D11A19083E339F5",
"name": "2019"
},
{
"id": "h2020;908C8901EC4ADFC06D11A19083E339F5",
"name": "2020"
}
]
}
]'

Result

After completing either scenario, when you open a dashboard instance that takes a noticeable amount of time to load using the MicroStrategy gotoPage API or create method, you may observe:

  • Faster initial load: The dashboard frame renders more quickly, allowing users to see the layout immediately instead of a blank screen.
  • Progressive rendering: Visualizations appear as they complete, improving perceived performance.

Note: For very simple dashboards or dashboards that execute quickly, the Parallel Rendering effect may not be noticeable, as the entire dashboard may render almost instantly.