Synapex — Business Analysis & Data Analytics · Verify MBCS
← Data Preparation · Project Overview · Power BI Dashboards & User Experience →
The semantic model converts the prepared Azure DevOps datasets into reusable analytical structures supporting approval governance, requirements health, executive reporting and controlled validation.
The model was designed around the grain required by each analytical purpose rather than combining all source data into a single table.
This separation allows current-state KPIs, historical approval analysis and issue-level requirements-health reporting to coexist without introducing ambiguous counts or unnecessary relationship complexity.
The implemented model contains six material analytical tables supported by a small disconnected presentation helper.
The principal analytical tables are:
ApprovalHistoryCurrentApprovalsApprovalPeriodSummaryRequirementFieldStatusFeatureWorkItemIDsRequirementsHealthReasonsA disconnected Executive Exception Type table supports presentation of the controlled exception categories used on the Executive Governance Overview.
| Table | Grain | Purpose |
|---|---|---|
CurrentApprovals |
One row per current User Story | Central current-state reporting population for approval governance, requirements health and executive KPIs |
ApprovalHistory |
One row per User Story per historical snapshot date | Preserves approval history required to reconstruct and analyse approval periods |
ApprovalPeriodSummary |
One row per current User Story | Stores the derived current approval-period summary used by approval-age analysis |
RequirementFieldStatus |
One row per current User Story | Stores current requirements-completeness indicators derived from source-field assessment |
FeatureWorkItemIDs |
One row per valid Feature work-item ID | Provides a controlled lookup population for validating User Story parent relationships |
RequirementsHealthReasons |
One row per User Story per applicable issue reason | Supports issue-level analysis where a single requirement can have more than one health problem |
Executive Exception Type is a small disconnected helper table that provides the controlled category axis for the Material Governance Exceptions visual.
It does not represent another analytical business entity and is therefore kept separate from the six material analytical tables.
The relationships reflect the different grains of the analytical structures.
| From | To | Cardinality | Filter Direction |
|---|---|---|---|
CurrentApprovals |
ApprovalHistory |
One-to-many | Single |
CurrentApprovals |
ApprovalPeriodSummary |
One-to-one | Both |
CurrentApprovals |
RequirementFieldStatus |
One-to-one | Single |
CurrentApprovals |
RequirementsHealthReasons |
One-to-many | Single |
FeatureWorkItemIDs remains disconnected and is referenced through analytical logic when validating whether a parent work item represents a valid Feature.
Executive Exception Type is also disconnected because it exists solely to provide controlled presentation categories to a DAX measure.
CurrentApprovals acts as the principal current-state table.
This gives report measures and filters a consistent one-row-per-User-Story population while allowing supporting tables to retain the grain needed for their individual analytical purposes.
This design is important because ApprovalHistory contains multiple records for each User Story. Using the historical table directly for current KPIs could otherwise cause current requirement counts to be multiplied by the number of historical snapshots.
ApprovalHistory retains the daily historical records required to understand approval-state changes over time.
ApprovalPeriodSummary provides the corresponding current approval-period result for each User Story.
Separating these structures allows the model to retain detailed history while exposing a compact current-period representation for approval-age measures and reporting.
Requirements-health reporting combines several analytical inputs.
RequirementFieldStatus provides current completeness indicators for mandatory requirement information.
FeatureWorkItemIDs supports validation of parent Feature relationships.
The resulting health logic classifies each current User Story as:
Where several issues apply to the same User Story, RequirementsHealthReasons retains each applicable reason independently.
This means the model can distinguish between:
The semantic model contains reusable measures rather than embedding calculations independently into individual visuals.
Representative measure groups include:

Implemented Power BI semantic model showing the separation of current-state, historical, approval-period, requirements-completeness and issue-level analytical structures.
What this demonstrates:
The model was designed around analytical grain and reporting behaviour. Current-state reporting is anchored on one row per User Story while historical and issue-level structures retain the additional records required for their specific analytical purposes.
| Analytical Requirement | Model Design Response |
|---|---|
| Current KPIs must count each User Story once | CurrentApprovals provides one current row per User Story |
| Historical approval behaviour must be retained | ApprovalHistory retains dated work-item snapshots |
| Current approval-period information is repeatedly required | ApprovalPeriodSummary stores one summary row per current User Story |
| Requirements completeness must be assessed independently from approval history | RequirementFieldStatus stores current field-status indicators |
| Parent work items must be validated as Features | FeatureWorkItemIDs provides the valid Feature population |
| One requirement may have several health issues | RequirementsHealthReasons uses one row per applicable issue |
| Executive exception categories require a controlled presentation axis | Disconnected Executive Exception Type helper table |
| Current filters must propagate into historical analysis without allowing history to distort current counts | Controlled relationship cardinality and filter direction |
What this demonstrates:
Table grain, relationships and helper structures were chosen to solve specific analytical problems rather than replicating the Azure DevOps source schema directly.
The Executive Governance Overview distinguishes requests that are actively awaiting approval from those that have already become overdue.
Awaiting Approval Requests =
VAR ActiveRequests =
[Active Approval Requests]
VAR OverdueRequests =
[Overdue Approval Requests]
RETURN
COALESCE (
ActiveRequests - OverdueRequests,
0
)
The Executive dashboard uses a disconnected helper table and a single measure to return the appropriate value for each controlled exception category.
Executive Exception Count =
SWITCH (
SELECTEDVALUE ( 'Executive Exception Type'[Exception] ),
"Overdue Approvals", [Overdue Approval Requests],
"Critical Requirements", [Critical Requirements],
"Attention Required", [Attention Required Requirements],
"Completed/Closed Unapproved", [Completed or Closed Unapproved Count],
BLANK ()
)
The Executive dashboard uses a disconnected helper table and a single measure to return the appropriate value for each controlled exception category.
Executive Exception Count =
SWITCH (
SELECTEDVALUE ( 'Executive Exception Type'[Exception] ),
"Overdue Approvals", [Overdue Approval Requests],
"Critical Requirements", [Critical Requirements],
"Attention Required", [Attention Required Requirements],
"Completed/Closed Unapproved", [Completed or Closed Unapproved Count],
BLANK ()
)
What this demonstrates:
A disconnected presentation structure allows several independent governance measures to be presented through one visual without introducing artificial relationships into the analytical model.
A requirement can have one overall health classification while also having several contributing issues.
For example:
User Story
↓
Overall Health Status
Critical
↓
Applicable Health Reasons
├── Approval overdue
├── Description missing
└── Acceptance Criteria missing
The User Story is counted once in the Critical Requirements KPI while each applicable issue remains available through RequirementsHealthReasons.
What this demonstrates:
The model deliberately separates requirement-level classification from issue-level analysis, preventing multiple issues on one requirement from inflating the number of affected requirements.
The semantic model was validated through controlled source-to-report and cross-visual reconciliation.
Validation included:
A dedicated Validation / Model Validation page is retained within the PBIX to support this technical assurance without exposing validation controls through the principal business navigation.
The semantic model provides a controlled analytical foundation for the complete reporting solution.
It supports:
The resulting design demonstrates that semantic modelling was treated as a distinct analytical design activity between data preparation and report presentation rather than simply as a collection of tables behind dashboard visuals.
The public case study presents selected evidence of:
The published semantic-model diagram is a flattened, watermarked portfolio representation. The working PBIX, complete semantic-model specification and implementation artefacts remain within the controlled project environment.
← Data Preparation · Project Overview · Power BI Dashboards & User Experience →
© 2026 Carl Patten. All rights reserved.