When designing a Fixed Layout report that uses multiple data providers, it is common to encounter a scenario where one data provider retrieves the primary object (for example, Projects/Investments), while another retrieves related child records such as Risks, Issues, Milestones, or Status Reports.
Without proper configuration, child data may display incorrectly across all report pages instead of being filtered to the current project context.
Example Scenario
Consider the following reporting setup:
Data Provider 1 (Primary / Parent Data)
The first data provider retrieves project-level information from the Investment object, such as:
It may also include additional query logic, such as retrieving the current and previous status report RAG values.
This data provider returns multiple projects based on selection criteria and establishes the primary reporting context.
Data Provider 2 (Related / Child Data)
The second data provider retrieves related records, such as:
For example, the query may order results to display high-priority Issues first, followed by Risks.
This data provider also returns multiple projects and includes the Investment object as part of its query.
Clarity All Supported Version
In a Fixed Layout report, placing fields from Data Provider 1 (DP1) establishes the master record context for the report canvas. The report engine loops through DP1 and generates one page (or section) per project.
However, widgets that use Data Provider 2 (DP2) operate independently unless explicitly linked to the current project context.
As a result:
For example, a Risks table could display risks from every project rather than only the current project being rendered.
To associate the two data providers, configure a widget-level filter on the child widget so it dynamically filters records based on the current project context.
Steps to Configure the Filter
Example Logic
Conceptually, the filter works as follows:
DP2.ProjectID = DP1.ProjectID
This ensures that when the report renders:
Project A → only Project A child records display
Project B → only Project B child records display
The child widget dynamically inherits the current project context during report generation.
Using the Out-of-the-Box Sample Report as a Reference
An effective way to validate the configuration is to review the Sample Project Status Report, which already demonstrates this behavior.
How to Review the Configuration
Best Practice
When using multiple data providers in a Fixed Layout report:
This approach ensures that related data is rendered only for the active project and prevents unrelated records from appearing across report pages.