Skip to main content

Blueprint Best Practices

A well-designed blueprint reduces rework, supports report consistency across periods, and makes it easier for contributors to enter accurate data. These guidelines are based on common patterns across project reporting implementations.

Blueprint best practices

Design principles

1. Design for the data, not the output

The blueprint defines how data is captured. The output defines how it is presented. Keep these concerns separate:

  • Do not add fields to sections just because they need to appear in a specific visual layout. Add fields because the data is needed.
  • A section that is clean and correctly typed is easier to bind in the Output Designer than one that pre-formats values for a specific chart.

2. Use the narrowest field type

Avoid using Text fields for data that has a known structure:

  • Numbers should be Number or Currency \u2014 not text.
  • Dates should be Date \u2014 not text formatted as "01 Apr 2025".
  • Status values should be Single select \u2014 not free text.

Strongly-typed fields enable filtering, sorting, aggregation, and conditional formatting in outputs. Free text fields do not.

3. Separate sections by data responsibility

Group fields into sections by who enters them and when:

  • A Schedule Overview section filled by the scheduler.
  • A Cost Performance section filled by the cost engineer.
  • An Executive Narrative section filled by the project manager.

This allows section-level permissions so each role sees and edits only their own area.


Structural rules

RuleReason
Limit repeating sections to one key dimensionA repeating section for activities should have one row per activity. Avoid nested repeating structures.
Keep single-entry sections for summary dataKPIs, headlines, and narrative text belong in single-entry sections. Detailed records belong in repeating sections.
Use Calculated fields for derived valuesDo not ask contributors to enter values that can be calculated (e.g., SPI = EV/PV). Mark them as Calculated and define the expression.
Add descriptions to complex fieldsContributors should not need to ask what a field means. Use the field description to clarify units, scope, and data source.
Use Required sparinglyOnly mark a field as Required if the report is genuinely invalid without it. Over-use of Required creates submission friction.

Versioning

  • Increment the minor version (e.g., 1.0 → 1.1) for additive changes (new fields, new sections).
  • Increment the major version (e.g., 1.x → 2.0) for structural changes that break existing output bindings.
  • Document the reason for each version change in the blueprint's Change log.
  • Before publishing a major version, test all outputs against an edition created from the new version.

Reuse patterns

  • Use Subreport components in outputs to embed standard sections (cover pages, glossaries, standard footer tables) maintained in a single child blueprint.
  • Create a library blueprint for shared reference sections (e.g., a Risk Register section reused across project types). Import it using the section copy feature.
  • Use consistent section and field names across blueprints so that multi-project outputs can aggregate across editions with matching field names.

Anti-patterns to avoid

Anti-patternBetter approach
One section with 40+ fieldsBreak into multiple focused sections by data domain.
Text fields for status valuesUse Single select with a defined list.
Calculated values entered manuallyDefine a Calculated field expression.
Blueprint has no DescriptionAdd a clear Description so library users know when to use it.
All fields RequiredReserve Required for truly blocking fields.