Blog · Coverage and territory · Compliance
How a compliance function measures control coverage from the obligations register, the control library and the testing log: obligations with no mapped control, controls past their test date, entities outside their review cycle, and the reconciliation that lets the board pack and the regulator see one number.
Regulators ask two questions that most compliance functions answer slowly: is every obligation covered by a control, and is every control tested. The answer lives in three sources that rarely agree: the obligations register, the control library, and the testing log. This guide sets out the join and the roll-up that turns them into one coverage number, asserted, with the exceptions listed.
Per obligation:
Covered = at least one mapped control Tested = every mapped control has a test inside its cadence
Per regulation, business line and entity:
Coverage = obligations covered ÷ obligations Testing = controls tested in cadence ÷ controls mapped
Per entity:
Review = last review date inside the entity's review cycle
The firm's own identifiers throughout.
register = Σ regulations = Σ business lines = Σ entities
An obligation mapped to two business lines appears twice in one view and the assertion fails. That is a register problem, and the report shows the obligation.
Financial crime obligations, one business line, one quarter.
| Obligation | Risk | Controls mapped | Tested in cadence | Status |
|---|---|---|---|---|
| FC-01 | High | 2 | 2 | Covered, tested |
| FC-02 | High | 1 | 0 | Covered, test overdue |
| FC-03 | Medium | 0 | No control | |
| FC-04 | Low | 1 | 1 | Covered, tested |
Coverage three of four. Testing two of three mapped. The compliance lead's list opens with FC-02, a high-risk obligation whose only control has not been tested in cadence, and FC-03 after it. The board pack's coverage figure and the regulator's answer are the same number, because they are the same query on the same three files.
Controls mapped in the library but not in the register. The two sources disagree about which controls cover which obligations. The join uses one mapping and the report counts the disagreements.
Testing logged against a control name that changed. A renamed control's tests vanish. A mapping table from every historical name.
Cadence not recorded. A control with no cadence cannot be overdue. Count the controls without one and set it.
Entities with several names. A subsidiary under two names appears as two entities with partial obligations. One identifier per entity.
Mapped once, the three exports produce coverage and testing by regulation, business line and entity every quarter, with the gaps ranked by risk and the assertion showing the register agrees. Covirage builds this from the exports as they are, inside the firm's tenant on an enterprise deployment. The compliance page describes the setup.
No. It reads the GRC system's exports, or the three spreadsheets that stand in for one, and answers the coverage questions the GRC reports do not: which obligations have no control, which controls have never been tested, and how that rolls up by business line.
The register is the total. Regulations, business lines and entities are the levels. The identity is that obligations by regulation, by business line and by entity each sum to the register, and that every obligation appears exactly once in each view.
It should. On an enterprise deployment the whole roll-up runs in a separate tenant with the firm's own identifiers.