PMO reporting
PMO KPI catalog
A KPI reference for demand, charter, lifecycle, RAID, reporting, and benefits dashboards.
| KPI | Category | Definition | Formula | Signal |
|---|---|---|---|---|
| Intake volume | Demand | Number of new requests submitted in a period. | COUNTROWS('Intake Requests') | Demand trend and PMO workload. |
| Average triage days | Demand | Average days from submitted date to decision date. | AVERAGEX('Intake Requests', DATEDIFF([Submitted Date], [Decision Date], DAY)) | Whether demand is moving or aging. |
| Approval rate | Demand | Percent of decided requests approved for charter. | DIVIDE([Approved Requests], [Decided Requests]) | Quality and fit of incoming demand. |
| Charter approval cycle time | Charter | Days from charter submitted to sponsor decision. | AVERAGEX('Project Charters', DATEDIFF([Submitted Date], [Approval Date], DAY)) | Sponsor responsiveness and charter quality. |
| Stage aging | Lifecycle | Days a project has remained in the current stage. | DATEDIFF('Projects'[Stage Changed Date], TODAY(), DAY) | Lifecycle bottlenecks. |
| Gate exception rate | Lifecycle | Percent of gate approvals with exception. | DIVIDE([Gate Approved With Exception], [Gate Decisions]) | Governance quality and readiness gaps. |
| Open risk exposure | RAID | Sum of probability times impact for open risks. | SUMX(FILTER('Risks', [Status] <> "Closed"), [Probability] * [Impact Score]) | Portfolio exposure. |
| Overdue actions | RAID | Open actions past due date. | COUNTROWS(FILTER('Actions', [Due Date] < TODAY() && [Status] <> "Closed")) | Execution discipline. |
| Missing status count | Reporting | Required status updates not submitted for current period. | COUNTROWS(FILTER('Status Updates', [Status] = "Missed")) | Reporting compliance. |
| Benefits realization percent | Benefits | Current measured benefit divided by target benefit. | DIVIDE(SUM('Benefits Tracking'[Current Value]), SUM('Benefits Tracking'[Target])) | Whether delivered work created expected value. |