Multi-Project Reporting
Multi-project reporting aggregates data from multiple projects into a single report — a portfolio dashboard, programme summary, or executive overview. Report Forge supports several patterns for cross-project reporting depending on your data structure and reporting needs.
Architecture overview
Report Forge data is scoped to projects. To aggregate across projects, you choose one of three patterns:
| Pattern | How it works | Best for |
|---|---|---|
| Project parameter | One output template with a Project selector parameter | Reports that show one project at a time from a unified template |
| Lookup fields | One blueprint pulls data from other blueprints via Lookup fields | Aggregating specific values from child blueprints into a summary |
| Portfolio blueprint | A dedicated portfolio blueprint where each row = one project | Dashboard-style reports where contributors enter project summaries centrally |
Pattern 1 — Project parameter
The simplest approach: one blueprint, one output template, one parameter that selects the project.
How it works:
- All projects use the same blueprint (copied from a template).
- The output template uses a
SelectedProjectparameter. - When generating the output, the report owner selects a project — the template renders that project's data.
Limitations:
- Cannot aggregate data across all projects simultaneously (only one project at a time).
- All projects must share the same blueprint structure.
Setup:
- Create a "template" blueprint in a template project.
- Copy the blueprint into each project that needs to use it.
- In the output template, add a parameter:
SelectedProject→ Dropdown of all active projects in the workspace. - Add a project filter to each data component:
[ProjectID] = param.SelectedProject.
Pattern 2 — Lookup fields for portfolio summary
Use Lookup fields to pull specific values from project-level blueprints into a portfolio summary blueprint.
How it works:
- Each project has a "Monthly Progress" blueprint with a
ProjectRAG,CostVariance, andScheduleVariancefield. - A "Portfolio Summary" blueprint in a portfolio project has one row per project.
- Lookup fields in the Portfolio Summary pull the latest
ProjectRAG,CostVariance, andScheduleVariancefrom each project's blueprint.
Setup:
-
In the Portfolio Summary blueprint, create a repeating section "Project Status" with fields:
ProjectName— Text (manually filled)OverallRAG— Lookup → Source: each project's Monthly Progress blueprint →ProjectRAGfieldCostVariance— Lookup → Source: each project's Monthly Progress →CostVariancecomputed fieldScheduleVariance— Lookup → Source: each project's Monthly Progress →ScheduleVariancecomputed field
-
Configure the Lookup scope to
latest— always pulls from the most recently approved edition. -
The Portfolio Summary edition has one row per project. Each row auto-populates the RAG and variance values from the project's latest edition.
Limitations:
- Each Lookup field references a specific blueprint — as projects are added, the blueprint must be updated.
- Lookup fields are read-only — the portfolio editor cannot override pulled values.
- Only works well for a fixed set of projects (< 20). For large portfolios, use the portfolio blueprint pattern.
Pattern 3 — Portfolio blueprint (recommended for large portfolios)
A dedicated portfolio blueprint where contributors for each project enter a summary row.
How it works:
- One "Portfolio Dashboard" blueprint exists at the workspace level.
- It has a repeating section "Project Summaries" with one row per project.
- Each project's report owner (or a central portfolio manager) updates their row each period.
- The output template generates a portfolio dashboard from all rows.
Blueprint structure for the "Project Summaries" section:
| Field | Type | Description |
|---|---|---|
| Project Name | Select | Dropdown of all workspace projects |
| Project Manager | Text | Name of the PM for this project |
| Overall RAG | RAG | Manually entered portfolio-level status |
| Schedule Variance (%) | Percent | Entered by project report owner |
| Cost Variance ($) | Currency | Entered by project report owner |
| Key Highlights | Textarea | 1–3 bullet points for executive narrative |
| Issues / Risks | Textarea | Top risk summary |
| Status (narrative) | Select | On Track / At Risk / Critical / Completed |
Advantages:
- Works for any number of projects (scales to 100+).
- Project report owners control their own data entry.
- The output aggregates all rows into a single dashboard.
- Consistent structure enforced by the blueprint.
Limitations:
- Data is manually entered (not automatically pulled from project editions).
- Requires a culture of timely data entry — the portfolio summary is only as current as the most recent updates.
Portfolio output template patterns
Grouped bar chart — by project
- Add a Bar chart component.
- Bind to the "Project Summaries" section.
- Set X-axis dimension:
Project Name. - Add series:
Cost Variance ($)andSchedule Variance (%)(dual Y-axis for different units). - Apply conditional formatting: colour bars based on RAG status.
RAG grid — one row per project
- Add a Table component.
- Bind to "Project Summaries".
- Columns: Project Name, PM, Overall RAG (RAG chip), Schedule Variance, Cost Variance, Key Highlights.
- Sort by: Overall RAG descending (Red first), then Project Name.
- Apply row-level conditional formatting based on the RAG Status field.
Summary KPI row
- Add a KPI Row component.
- Add cards using report variables:
TotalProjects=COUNT([sections.ProjectSummaries.rows])RedProjects=COUNTIF([sections.ProjectSummaries.rows.OverallRAG], "Red")AtRiskProjects=COUNTIF([sections.ProjectSummaries.rows.Status], "At Risk")
Project scope selector (parameter)
For Pattern 1 (project parameter), add a SelectedProject dropdown parameter to filter all components:
Parameter configuration:
- Type: Select
- Options source: Workspace projects list
- Label: "Select project"
- Allow "All" option: No (each output is for one project)
Component filter on all data tables and charts:
[ProjectID] = param.SelectedProject
Limitations of multi-project reporting
| Limitation | Implication |
|---|---|
| Blueprints are project-scoped | Each project must have its own copy of the blueprint — changes to the template do not propagate |
| Lookup fields require explicit source configuration | Adding a new project requires updating the portfolio blueprint's lookup configuration |
| No real-time cross-project aggregation | Portfolio summaries require a manual data entry cycle or API integration |
| Edition data cannot be directly queried across projects | Use the portfolio blueprint pattern or API-based aggregation for automated cross-project reporting |
Related
- Portfolio Dashboard tutorial — step-by-step portfolio dashboard walkthrough
- Lookup Fields — configuring Lookup fields for cross-blueprint data
- Parameter Strategy — project parameter decision guide
- API Access — programmatic cross-project data aggregation