Table of Contents

TL;DR: A useful gap-analysis record connects a requirement to the current evidence, assessment, action, owner and deadline, then records how the fix was verified. The fields are the easy part. What decides whether the record reduces risk is defining what counts as a verified fix before the work starts, and keeping the record true as the systems it describes change. Use the inline fields, two completed examples and closure record below. Adapt the scope and interpretation to your framework; no single table establishes compliance on its own.

Open last year's gap analysis. Somewhere in it is a row marked closed that isn't closed anymore. The control lapsed months ago, nothing in the file noticed, and the first you hear of it is the assessor's question.

That is not a template problem. A gap record measures a state on the day you took it, then reads as something permanent: a requirement matched to a status, an owner, a date, filed once and closed. The state keeps moving. The record doesn't move with it.

So the first job of a gap record is the one no template can do for you: let the next person understand the finding without reconstructing your investigation, and still trust what it says when they read it.

Write it to answer four questions. Which requirement did you assess? What did the evidence show? What must change, and what will count as a verified fix? And how will you know when that answer stops being true? The first three shape the fields below. The last one keeps the record a measurement you can act on rather than a memory of work you once did.

Use the blank structure below to record the assessment, then compare it with two completed examples and a closure record. The examples are fictional: their people, systems, priorities and deadlines illustrate the method rather than prescribe a legal requirement.

If you first need to establish the assessment scope and process, read how to run a compliance gap analysis. This page picks up at the working record: turning what you found into an action another person can verify.

The template: context, nine core fields and closure

Nine fields capture the core finding, but they need an assessment context. Without the framework version, scope and evidence reference, a clear-looking row can describe the wrong system or an earlier state. Record that context once for the assessment, then note exceptions on individual findings.

Assessment contextFill in
Framework, regulation or policy[Name, version/effective basis, source reference and reason it applies]
Scope[Entity, system, population, activity and period; explicit exclusions]
Evidence examined[Evidence reference a reviewer can open, source, collection/review date and covered population]
Assessment responsibility[Assessor, reviewer and assessment date]
Next review[Scheduled review and changes that trigger an earlier check]
Core fieldWhat to enter
1. Requirement ID[Exact clause, criterion, requirement or internal-policy identifier; keep the source wording available]
2. Expected control or outcome[What must be true in this scope, with any interpretation or internal threshold identified]
3. Current state[What the records and interviews establish today; distinguish observed facts from assumptions]
4. Assessment status[Met, partially met, unmet, not assessed, or not applicable with a reason]
5. Identified gap[The precise difference or unanswered question, including the affected population]
6. Risk and priority[Rating plus exposure, impact, deadline and dependency rationale; reference the related risk assessment]
7. Corrective action[Specific change, expected result and the check needed to verify it]
8. Owner[One accountable person; identify contributors separately]
9. Deadline[Agreed due date, intermediate dependency dates and escalation if overdue]

Finish the record with closure evidence, verifier, verification date and result, and the next review trigger. Keep the initial assessment and the later decision apart. Replacing “gap” with “met” without retaining the history erases the reason the work happened.

This is a working convention, not a universal auditor-mandated set of columns. Add fields your assessment needs. A framework-specific Statement of Applicability, risk assessment or regulatory register may require a different structure and remains a separate record.

How to assign a status without hiding uncertainty

The status summarizes a conclusion; it is not the conclusion's evidence. Use met when the assessed evidence supports the requirement in scope, partially met when only part is satisfied, and unmet when the assessment establishes that the required condition is absent. Use not assessed when the work or evidence is insufficient to conclude. Not applicable needs an applicability reason and the appropriate review.

A control without an automated feed may still operate effectively. A record without evidence may still describe a real control, but the assessor cannot assume it meets the requirement. A table that collected cleanly still fails if it excludes the population the requirement covers.

A status also carries a date it does not print: it is only as current as the last time someone checked the evidence beneath it. Copy a status forward into a new cycle without rechecking that evidence, and you have recorded a past conclusion as a present fact. That is the quiet way a clean-looking record slips out of step with the systems it describes.

Keep the type of gap in the description when it helps assign the work. Missing implementation calls for a different fix from missing documentation; partial coverage differs from an overdue review or missing approval. Don't force one finding into a single category.

Two completed gap records

The examples use relative dates: Day 0 is the fictional assessment date. In a real record, replace those labels with calendar dates and link to the actual artifacts. The priorities are the example team's decisions, not ratings supplied by a regulation.

Example 1: privileged authentication misses the internal policy

Assume the organization has adopted an internal policy requiring phishing-resistant authentication for all interactive privileged accounts in its production identity tenant. That is the explicit baseline assessed below. NIS2’s Article 21(2)(j) refers to MFA or continuous authentication where appropriate; it does not by itself establish this specific universal phishing-resistant requirement. The applicable national rules and the organization's risk-based implementation still need their own review.

FieldCompleted example
Context and scopeInternal access policy v3, section AC-7; production identity tenant, all 12 interactive privileged accounts on Day 0. Noninteractive service accounts have a separate assessment. Reviewer: Jordan, GRC lead (fictional).
EvidenceDay-0 administrator inventory and authentication-method export, checked against the approved policy. Alex, the IAM owner, confirms the two affected accounts are active and no exception was approved.
Requirement IDAC-7 in the internal access policy. Related NIS2 authentication obligations are tracked separately, with applicability and implementation rationale.
Expected outcomeEvery in-scope privileged account uses a phishing-resistant method approved by the internal policy.
Current stateTen accounts use the approved method. Two active administrator accounts use one-time-password MFA only.
Assessment statusPartially met: the evidence supports 10 of the 12 accounts, with two confirmed policy exceptions that have not been approved.
Identified gapThe two named administrator accounts do not meet AC-7. The gap is in the authentication method, not the presence of MFA generally.
Risk and priorityHigh, assigned by the example team because the accounts have production privileges and the missing safeguard is intended to reduce credential-phishing exposure. Review alongside the identity-risk assessment.
Corrective actionEnroll both users in the approved method and enforce the policy for the scoped population. Recheck the full administrator inventory and validate the two users' authentication paths.
OwnerAlex, IAM owner (fictional); application owners support access testing.
DeadlineDay 10. Escalate any implementation dependency to the GRC lead before the due date.
ClosureOpen at Day 0. Requires the evidence and independent verification described below.

The wording matters. “NIS2 MFA gap” would obscure which requirement the team actually tested and could overstate what the directive says. A specific policy reference makes the action clear while preserving the separate regulatory judgment.

Example 2: a new service has no established security-testing process

Assume a new service processes sensitive personal data. The team has identified restore testing and review of security measures as appropriate for that processing, but the service was omitted from the existing testing program. GDPR Article 32(1)(d) calls for a process of regular testing, assessment and evaluation in the context of risk-appropriate security. The problem here is the missing process and scope, not an unsupported claim that every annual test is too infrequent.

FieldCompleted example
Context and scopeGDPR Article 32 and the organization's security-testing policy; the new customer-support service and its personal-data processing. Assessment on Day 0. Privacy and security owners confirm the processing is in scope.
EvidenceCurrent service inventory, approved testing schedule, existing test reports and an interview with the service owner. The schedule excludes this service; the owner confirms that no restore test or security-measures review has been performed for it.
Requirement IDArticle 32(1)(d), read with Article 32's risk and appropriateness context; internal testing-policy reference recorded alongside it.
Expected outcomeA documented, risk-appropriate testing and evaluation process covers the service and produces reviewable results and follow-up actions.
Current stateAn organization-wide testing process exists, but it does not include the new service. Backup jobs run; their logs do not establish that recovery has been tested.
Assessment statusPartially met for the assessed program: the process exists but omits this relevant service.
Identified gapNo assigned testing cycle or completed evaluation for the service's relevant security measures, including the selected recovery check.
Risk and priorityHigh, assigned by the example team because sensitive data and service recovery are involved and the evidence does not establish recoverability. The final rating belongs to the organization's risk process.
Corrective actionAdd the service to the testing program, document the rationale for its review interval, conduct the agreed tests, and record results and any further remediation. Do not close merely on scheduling the work.
OwnerNadia, service security owner (fictional), with privacy and operations reviewers.
DeadlineTesting plan and responsibility agreed by Day 10; initial testing and result review by Day 30. These are example deadlines, not GDPR-prescribed periods.
ClosureOpen. Retain the approved scope, completed test results, reviewer decision and remaining actions before deciding what can close.

Both examples separate a finding from a general statement that a framework is satisfied. Closing one authentication or testing gap does not establish compliance with every requirement in that framework.

What a completed closure record looks like

Return to the privileged-authentication finding. On Day 8, Alex reports that the two users are enrolled. That is a progress update. Jordan still needs to inspect whether the fix meets AC-7 in the defined scope.

Closure fieldCompleted example
Evidence of the fixDay-8 inventory still contains 12 active interactive privileged accounts. Configuration evidence shows the approved authentication policy applies to all 12; validation records show the two affected users can authenticate through the approved method.
Verifier and dateJordan, GRC lead, Day 9. Reviews the inventory, enforcement configuration and validation records against AC-7.
DecisionThe two-account gap is closed based on the checked state. The record retains the initial finding and the Day-9 verification; it does not claim proof of future operation or of the earlier period.
Next checkRecheck when privileged accounts or authentication policy change, plus the review interval set by the program. If scope or evidence becomes incomplete, reopen or reassess the affected finding.

The closure standard was written into the action before implementation. That makes disagreement useful: if the verifier cannot confirm the population or policy enforcement, the record identifies what remains to be done. A due date and a completed ticket cannot substitute for that check. This is the line between a record that reduces risk and one that only performs the work. Closing a finding on its due date with the evidence left out is compliance theater at the scale of a single row: the ticket reads done, and nothing in the record shows the required state is in place.

Adapting the record to different frameworks

You can reuse the record structure across frameworks, but each finding needs its own assessment. Keep the applicable requirement, terminology and review expectations visible rather than treating every framework as another column with the same answer.

Read the four that follow together and a pattern shows through. Each expects its answer kept current in response to change and risk, not settled once on a calendar date: DORA names explicit review triggers, NIS2 resists a single fixed cadence, and GDPR ties appropriate security to context rather than a fixed interval. That is the same reason the record cannot be a once-a-year artifact. It has to show the answer is still current at the moment each framework expects it refreshed.

DORA

DORA Article 6(5) requires review of the ICT risk-management framework at least annually, or periodically for microenterprises, with additional triggers including major ICT-related incidents and relevant testing or audit conclusions. Record the applicable trigger and review evidence. Article 28's ICT third-party register is a separate obligation with prescribed register templates; this gap record can track a deficiency in it, but cannot replace the register.

NIS2

NIS2 Article 21 includes policies and procedures to assess the effectiveness of cybersecurity risk-management measures. Identify the national implementing requirements and any applicable implementing rules for the entity, then document how the assessed measure answers them. An EU transposition deadline alone does not determine every entity's current national obligations or a single testing cadence.

GDPR

GDPR Article 32 places security measures in the context of processing risk, available technology, implementation costs and the nature of the processing. Record that rationale alongside the assessment. A fixed checklist or testing interval cannot establish appropriate security for every organization.

SOC 2

Use the applicable Trust Services Criteria, report scope and period. Security criteria are always included; other categories depend on scope. SOC 2 is an attestation, not a certification, and a closed readiness finding does not determine the CPA's report. Keep the criterion and evidence period in the record.

For framework-specific assessment detail, the HIPAA gap-analysis checklist explains Security Rule requirements and the separate risk analysis, while the ISO 27001 gap-analysis article covers management-system requirements, controls and the Statement of Applicability. Use this record to track their findings without replacing those distinct requirements.

Keeping the record useful as evidence changes

A record is true on the day you write it and begins to age the moment the systems it describes change. The two administrator accounts in the first example can regress the next time access is provisioned; the testing process in the second can lapse when the service is re-platformed. Nothing in the table notices. This is control drift, and it is why a record stays useful through the freshness of its evidence, not the number of its columns. Revisit it when scope, requirements or controls change, and when a scheduled review comes due. Shared evidence can reduce duplicate work, but the control-to-requirement mapping must still explain where that evidence applies.

There is a fast way to see how far a record has already aged. Take your last one and mark, beside each row, the date the evidence behind it was produced, not the date you filled the row in. The spread you find is the real output of the exercise: it sorts the findings you have measured recently from the ones you are carrying on memory, and the oldest evidence is usually where a closed gap has quietly reopened.

This is where the source of your evidence matters more than the shape of your table. In Anecdotes, evidence collected from 230+ plugins is normalized into records that analysis rules recheck against configured conditions, so a row that passed once surfaces again when the data beneath it moves. Findings management can link the issue to its supporting records and assign an owner; configured playbooks determine which events open findings, and finding events can also create tasks. Those mechanisms keep the evidence and action fields current between reviews. They do not make a rule result equivalent to the full assessment, and they do not remove the person who confirms that a gap is closed.

When keeping these records synchronized across sources and frameworks becomes difficult, use the gap-analysis software comparison to test that workflow. Bring a completed example, including a partial result and closure evidence, so the demonstration follows the work your team actually needs to maintain.

The goal is a smaller version of this every year

A gap record exists because a program cannot otherwise answer a question on demand: where do we actually stand, right now. Every field in the table above is a workaround for not knowing.

So the measure of a good record is not how complete it is. It is how much of it you have to fill in by hand next cycle. When the evidence behind a row refreshes on its own, and a change reopens the finding without anyone remembering to look, the record stops being an artifact you produce and becomes a view of something already true.

You will still assess. You will still decide what counts as a verified fix, and you will still be the one who closes it. There is just less reconstruction between the question and the answer.

Common questions

What fields should a compliance gap analysis template contain?

Include the requirement, expected outcome, current state, assessment, gap, priority, action, owner and deadline. Keep scope, evidence references and assessment responsibility alongside them, then record verification and the next review. Adapt the structure to the relevant framework and program.

Is missing evidence the same as a failed control?

No. It may mean the assessment is incomplete. Record what is known, request what is missing and distinguish an unknown conclusion from a confirmed failure. A missing mapping also does not prove that no control operates.

When is a gap ready to close?

When the agreed verification establishes that the corrective action addresses the finding in scope, with the evidence and review decision retained. If the control needs a period of operation to demonstrate effectiveness, a successful configuration change alone is not enough.

Anecdotes team
The Better Way to GRC