Priya Nandakumar found the gap on a Tuesday in October, nine months into a twelve-month Type II report window she had personally promised the board would be "boring." Priya runs compliance at Solstice Ledger, a mid-market payments platform that routes roughly $80 million a month in merchant settlements for about 600 e-commerce clients. Solstice's biggest prospect — a $2.4 million annual contract with a national retail chain — was contingent on a clean SOC 2 report covering January through December. When Priya pulled the evidence folder for CC6.1 (logical access provisioning) to prep for the auditor's Q4 interim testing, she found exactly one screenshot, dated January 14. Nobody had tested — or evidenced — that control again in nine months. The auditor's sample would almost certainly pull from March, June, and September. Two of those months had nothing.
That gap wasn't a control failure. Solstice's access provisioning process was, in fact, working fine. The failure was scheduling: nobody owned the calendar that said "test this control on this date, keep this evidence, here." Priya spent the next three weeks reconstructing evidence retroactively — a stressful, expensive, entirely avoidable scramble that a one-page testing calendar would have prevented. This article is the calendar Priya built afterward, and the one we now hand every client before their first audit period even starts.
Who this is for, and what you'll walk away with
This is for the compliance lead, engineering manager, or fractional CISO who has already mapped controls to criteria and now needs to keep them alive for the twelve (or six) months an auditor is going to sample from. You'll walk away with a cadence taxonomy for every control type, a sample annual test calendar you can adapt directly, a RACI model for who tests what, sampling guidance for testing your own controls before the auditor does, and a plan for tying manual testing to automated continuous monitoring so evidence never goes stale. If you've already read our guide to the SOC 2 control matrix, this is the next document you build: the matrix tells you what controls exist; the schedule tells you when you prove they work.
Why a testing schedule is a different document than a control matrix
Most teams building toward SOC 2 do the mapping exercise well: every Trust Services Criteria point of focus gets a control, every control gets an owner, every control gets a policy citation. Then they stop, because the control matrix looks complete on a spreadsheet. But a control matrix is a static snapshot — it says a control exists. A testing schedule is a living calendar that says a control operated, repeatedly, across the entire window an auditor is going to examine. For a Type II report, the auditor isn't asking "do you have an access review process?" They're asking "show me evidence this ran in March, and July, and November, consistently, the way your policy says it should."
That distinction is where most first-time (and plenty of second-time) SOC 2 programs get hurt. The Common Criteria alone span roughly thirty distinct control activities across CC1 through CC9 once you break policy commitments into discrete, testable actions. Add Availability, Confidentiality, or Processing Integrity criteria, and a mid-size service organization can easily be running 45-70 distinct controls simultaneously, each with its own natural cadence. Nobody holds that in their head. You need a document — a real, dated, owned calendar — or controls quietly lapse the way Solstice's did.
Continuous, daily, monthly, quarterly, annual: the five-cadence taxonomy
Every control you build has a natural frequency baked into what it's protecting. Forcing every control onto the same testing rhythm — either testing everything monthly (expensive, ignored) or testing everything annually (leaves nine-month gaps like Priya's) — is the single most common design mistake in a testing calendar. Start instead by sorting controls into five buckets.
Table 1: The Five Control-Testing Cadences
Cadence | Definition | Typical Trigger | Example Controls | Who Usually Tests |
|---|---|---|---|---|
Continuous | Control operates and is evidenced automatically, every time an event occurs | Every login, deploy, or transaction | MFA enforcement, automated vulnerability scanning, real-time alerting | Automated tooling + periodic human spot-check |
Daily | Control runs or is reviewed once per business day | Daily operational cycle | Backup job success checks, critical alert triage, SIEM queue review | System administrator, SOC analyst |
Monthly | Control runs on a fixed monthly schedule | Calendar month close | Privileged access control review, vulnerability scanning remediation check, terminated-user access removal audit | Control owner, IT/security team |
Quarterly | Control runs four times a year, often tied to a business cycle | Fiscal quarter | Vendor risk reassessment, firewall rule review, business continuity tabletop, access recertification | Control owner + manager sign-off |
Annual | Control runs once per year, typically tied to policy renewal or a major event | Policy anniversary, fiscal year | Risk assessment refresh, full disaster recovery failover test, penetration test, policy re-approval | Leadership, internal audit, external testers |
The taxonomy isn't arbitrary — it should trace back to how the control was worded when you built your SOC 2 control matrix. If your access review policy says "quarterly," your testing schedule tests it quarterly — not monthly because that feels safer, and not "as needed" because that's not a cadence an auditor can sample against. Consistency between what your policy commits to and what your calendar actually executes is, by itself, one of the top three things auditors flag in Type II report testing.
The observation period, and the coverage math nobody explains up front
A Type II audit period is commonly three, six, or twelve months. Whatever window you and your auditor agree to, every control in scope needs evidence spanning that entire window — not just a healthy sample near the start. Here's the coverage math that catches first-timers: for a control tested monthly, a twelve-month period requires 12 discrete evidence instances. For a control tested quarterly, four. For a control that's continuous (like MFA enforcement logs), the auditor will typically want a system-generated report covering the full period, not spot exports.
Table 2: Minimum Evidence Instances by Cadence and Observation Period Length
Cadence | 3-Month Period | 6-Month Period | 12-Month Period |
|---|---|---|---|
Continuous | 1 full-period system export | 1 full-period system export | 1 full-period system export (or quarterly exports stitched together) |
Daily | ~63 business-day logs (sampled) | ~126 business-day logs (sampled) | ~252 business-day logs (sampled) |
Monthly | 3 instances | 6 instances | 12 instances |
Quarterly | 1 instance | 2 instances | 4 instances |
Annual | 1 instance (must fall inside window) | 1 instance (must fall inside window) | 1 instance |
The trap in that last row: an annual control — say, your formal risk assessment refresh — has to have actually happened inside the observation window, not six weeks before it started. Auditors will not accept a risk assessment dated the prior November as coverage for a Type II period beginning in January unless you can also show ongoing risk monitoring inside the window itself. Build annual-cadence controls into the very first month of your period, not the last, so there's zero ambiguity about whether they land inside the window.
Mapping controls to cadence across the Common Criteria
Below is a representative mapping across CC1-CC9 plus the optional criteria — adapt the specific controls to your own SOC 2 control matrix, but the cadence logic transfers almost directly.
Table 3: Control Cadence by Common Criteria Category
Criteria | Representative Control | Recommended Cadence | Rationale |
|---|---|---|---|
CC1 – Control Environment | Code of conduct attestation | Annual | Tied to policy renewal cycle |
CC2 – Communication & Information | Security policy distribution and acknowledgment | Annual (new hires: continuous) | New hires trigger it continuously; existing staff re-attest yearly |
CC3 – Risk Assessment | Formal risk register review | Quarterly (light) / Annual (full) | Full reassessment yearly; interim review each quarter |
CC4 – Monitoring Activities | Internal control self-assessment | Quarterly | Balances cost against drift detection |
CC5 – Control Activities | Control ownership and design review | Annual | Tied to control matrix refresh |
CC6 – Logical & Physical Access | User access review | Monthly (privileged) / Quarterly (standard) | Privileged access carries higher risk |
CC6 – Logical & Physical Access | Termination access removal | Continuous (each event) | Time-sensitive; must be evidenced per event |
CC7 – System Operations | Vulnerability scanning and remediation | Continuous (scan) / Monthly (remediation review) | Scans run automatically; remediation is tracked monthly |
CC7 – System Operations | Incident response tabletop | Annual | Resource-intensive; realistic once yearly cadence |
CC8 – Change Management | Change approval and testing evidence | Continuous (per change) | Every production change generates its own evidence |
CC9 – Risk Mitigation | Vendor risk reassessment | Quarterly (critical vendors) / Annual (all others) | Tiered by vendor criticality |
Availability | Backup restoration test | Quarterly | Balances effort against RPO/RTO assurance |
Availability | Full disaster recovery failover | Annual | High cost, high disruption, once-a-year sufficient |
Confidentiality | Data classification spot-check | Quarterly | Confirms labeling discipline holds |
Processing Integrity | Reconciliation accuracy check | Monthly | Tied to financial/operational close cycle |
Building the calendar: a five-step methodology
Once cadence is assigned per control, the actual calendar-building process is mechanical, but skipping any of these five steps is exactly how Priya's gap happened.
Start from your control matrix, not from a blank sheet. Every row in your SOC 2 control matrix becomes a row in the testing schedule. If a control isn't in the matrix, it shouldn't be tested; if it's in the matrix, it must have a cadence.
Assign a named owner, not a team. "IT team" is not an owner an auditor — or a corrective action plan — can hold accountable. Name a person.
Set a specific evidence date, not a month. "Sometime in March" becomes "the 15th of every month" or "the first Monday after quarter close." Specificity prevents the drift that ate Priya's Q1 access review.
Define what "done" looks like before the first test runs. A screenshot, an exported CSV, a signed attestation, a ticket closed with an audit trail — decide the artifact type in advance so control owners aren't improvising evidence formats nine months in.
Route every test through a reviewer. Self-testing without a second set of eyes reintroduces the exact segregation of duties problem SOC 2 is designed to catch. A manager, compliance lead, or internal audit function should review and countersign.
"The calendar isn't the control. It's the thing that makes sure the control keeps existing after the kickoff meeting excitement wears off." — Marcus Feldt, Audit Partner, Kessler & Voss CPAs
Sample annual test calendar
Below is a condensed, representative annual testing calendar for a mid-size SaaS service organization covering Security plus Availability criteria, across a twelve-month observation period beginning January 1. Adapt cadence and owners to your own environment — the structure is what matters.
Table 4: Sample Annual SOC 2 Control Testing Calendar
Month | Control(s) Tested | Cadence Type | Owner | Evidence Due | Reviewer |
|---|---|---|---|---|---|
January | Annual risk assessment refresh; policy re-approval; new-hire access provisioning check | Annual + Continuous | CISO / Compliance Lead | Jan 31 | Internal Audit |
February | Privileged access review; vendor criticality tiering refresh | Monthly + Annual | IT Manager | Feb 15 | Compliance Lead |
March | Q1 standard access recertification; Q1 vendor risk reassessment (critical vendors); backup restore test | Quarterly | Access Owner / Vendor Manager | Mar 20 | Internal Audit |
April | Privileged access review; change management sample review | Monthly + Continuous | IT Manager | Apr 15 | Compliance Lead |
May | Security awareness training completion check; termination access audit | Monthly | HR + IT Security | May 15 | Compliance Lead |
June | Q2 standard access recertification; Q2 vendor risk reassessment; firewall rule review | Quarterly | Access Owner / Network Team | Jun 20 | Internal Audit |
July | Privileged access review; vulnerability remediation SLA check | Monthly | IT Manager | Jul 15 | Compliance Lead |
August | Mid-year internal control self-assessment; encryption key rotation check | Quarterly | Internal Audit Lead | Aug 20 | CISO |
September | Q3 standard access recertification; Q3 vendor risk reassessment; backup restore test | Quarterly | Access Owner / Vendor Manager | Sep 20 | Internal Audit |
October | Privileged access review; incident response tabletop exercise | Monthly + Annual | IT Manager / CISO | Oct 20 | Internal Audit |
November | Q4 standard access recertification; Q4 vendor risk reassessment; full DR failover test | Quarterly + Annual | Access Owner / Infrastructure Lead | Nov 20 | CISO |
December | Annual internal control self-assessment wrap-up; year-end policy attestation; readiness review for auditor interim | Annual | Compliance Lead | Dec 15 | Executive Sponsor |
This calendar deliberately front-loads the annual-cadence controls (risk assessment, policy re-approval) into January so they unambiguously fall inside the window, and back-loads the year-end self-assessment into December so gaps surface with time to remediate before the auditor's final fieldwork — not after.
gantt
title Annual SOC 2 Control Testing Cycle
dateFormat YYYY-MM-DD
section Continuous/Monthly
Access & Change Controls (ongoing) :active, 2026-01-01, 365d
section Quarterly
Q1 Access Recert & Vendor Review :2026-03-01, 20d
Q2 Access Recert & Vendor Review :2026-06-01, 20d
Q3 Access Recert & Vendor Review :2026-09-01, 20d
Q4 Access Recert & Vendor Review + DR Test :2026-11-01, 20d
section Annual
Risk Assessment Refresh :2026-01-01, 31d
Full DR Failover Test :2026-11-01, 10d
Year-End Self-Assessment :2026-12-01, 15d
section Audit Milestones
Auditor Interim Testing :milestone, 2026-07-01, 0d
Auditor Final Fieldwork :milestone, 2027-01-15, 0dWho tests: building a RACI for control testing
A recurring failure mode is treating "who tests the control" as self-evident. It rarely is, especially as headcount grows and the person who built a control isn't the person still running it a year later.
Table 5: Control Testing RACI
Role | Responsible (does the test) | Accountable (owns the outcome) | Consulted | Informed |
|---|---|---|---|---|
Control Owner | Yes | Yes | — | — |
Compliance/GRC Lead | Sometimes (for cross-functional controls) | No | Yes | Yes |
Internal Audit Function | No (independent reviewer) | No | Yes | Yes |
Department Manager | No | Yes (for team-level controls) | Yes | Yes |
External SOC 2 Auditor | No (tests independently, later) | No | No | Yes |
Executive Sponsor | No | Yes (organization-wide) | No | Yes |
The critical design rule: the person who is Responsible for running a control's day-to-day operation should rarely also be the sole Accountable reviewer of whether it was tested correctly. That's not bureaucracy for its own sake — it's the same segregation of duties logic that shows up throughout CC5 and CC8. A control owner tests their own work; someone one level removed reviews the evidence before it's filed.
Sampling your own controls before the auditor does
Here's a nuance most internal testing programs miss: you don't need to test 100% of every instance of every control to have confidence it's working — the same audit sampling logic your external auditor will use applies internally too. If your access review control runs against 40 employees every month, you don't need to manually re-verify all 40 to catch drift; a defensible internal sample, applied consistently, does the job at a fraction of the cost.
Table 6: Internal Sample Sizing Guidance by Control Frequency
Control Frequency (Population Size) | Recommended Internal Sample | Minimum for High-Risk Controls |
|---|---|---|
Continuous (100+ events/month) | 10-15 random instances/month | 25 instances/month |
Daily (20-31 events) | 5 business days/month | 8 business days/month |
Weekly (4-5 events/month) | 2 of 4-5 | 3 of 4-5 |
Monthly (1 event) | Test of one (that instance) | Test of one, plus manager countersign |
Quarterly (1 event) | Test of one | Test of one, plus internal audit review |
Annual (1 event) | Test of one, full documentation | Test of one, plus executive sign-off |
For low-frequency, high-consequence controls — an annual risk assessment, a full DR failover — a test of one is standard and expected; there's only one instance to test. For high-frequency, high-volume controls, calculate a defensible population (audit) and sample from it the way your external auditor will, so your internal deviation rate estimate is a realistic preview of what they'll find. If your internal sample turns up a 15% deviation rate on access reviews, assume the auditor's sample — likely larger and less forgiving — will surface it too, and fix it before interim testing, not after.
"We started running our own control testing with the exact same sampling math our auditor uses. It stopped being a surprise every fieldwork cycle — we already knew where the weak spots were." — Rafael Ibsen, Internal Audit Lead, Northfield Analytics
Evidence timing: making sure the Type II window is fully covered
Evidence timing is where testing schedules quietly fail even when the tests themselves happened. A control that ran correctly but whose evidence was captured outside the sampled evidence window, overwritten by a later export, or filed without a clear timestamp is functionally the same as a control that didn't run, from the auditor's perspective. Audit evidence has to be dated, attributable, and retained for the full period plus the time it takes to complete fieldwork.
Table 7: Evidence Requirements by Cadence
Cadence | Evidence Artifact | Minimum Retention | Common Pitfall |
|---|---|---|---|
Continuous | System-generated log/report with timestamp range | Full period + 3 months post-report | Live dashboards that don't retain historical exports |
Daily | Daily log or ticket with date stamp | Full period + 3 months post-report | Logs rotated/purged before evidence is pulled |
Monthly | Dated screenshot, exported report, or signed checklist | Full period + 3 months post-report | Screenshot with no visible date/timestamp |
Quarterly | Formal review document with reviewer sign-off | Full period + 3 months post-report | Review happened but was never documented |
Annual | Formal report (risk assessment, DR test report, pen test report) | Full period + 3 months post-report, often 3 years for trend evidence | Report dated just outside the observation window |
Build evidence capture into the test itself — never as an afterthought. If a control owner runs an access review in a live admin console, the test step should explicitly include "export and timestamp the results," not just "review the list." That single habit is the difference between Solstice's nine-month gap and a clean audit trail.
Continuous monitoring: the backbone that keeps the calendar honest
A testing calendar built entirely on manual, human-driven reviews will always be fragile — people go on leave, change roles, or simply forget. That's why the calendar should lean as heavily as possible on continuous monitoring tooling for the controls that support it, reserving manual testing for controls that genuinely require human judgment. Our companion piece on SOC 2 continuous monitoring goes deep on the tooling side; here, the relevant point is scheduling: continuous monitoring doesn't replace your testing calendar, it feeds it. An automated control (say, MFA enforcement) still needs a monthly or quarterly checkpoint where a human confirms the monitoring tool itself is still configured correctly and alerting as expected — monitoring the monitor.
Table 8: Manual Testing vs. Continuous Monitoring by Control Type
Control Type | Best Suited To | Human Checkpoint Needed |
|---|---|---|
MFA/authentication enforcement | Continuous monitoring | Quarterly config verification |
Vulnerability scanning | Continuous monitoring | Monthly remediation SLA review |
Access provisioning/deprovisioning | Continuous monitoring + manual sample | Monthly sample review |
Change approval workflow | Continuous monitoring (ticketing system) | Monthly sample review |
Vendor risk assessment | Manual (judgment-based) | N/A — inherently manual |
Risk assessment refresh | Manual (judgment-based) | N/A — inherently manual |
Security awareness training | Continuous monitoring (LMS completion tracking) | Quarterly completion audit |
Backup success | Continuous monitoring (job status) | Monthly restore-test spot-check |
Incident response | Manual (tabletop, judgment) | N/A — inherently manual |
Physical access logs | Continuous monitoring (badge system) | Quarterly review |
The controls in the "manual" rows are exactly the ones your testing calendar should protect most jealously — they don't self-report, and if nobody schedules them, nobody notices they didn't happen until an auditor asks.
Tying the calendar to your internal audit program
A testing calendar without a review layer is just a to-do list — it becomes a control when someone independent checks that the to-dos actually happened, correctly, on schedule. That's the job of your internal audit program: a structured, recurring self-assessment that sits between "control owner says it's fine" and "external auditor tests it in six months." At minimum, internal audit should reconcile the testing calendar against actual evidence quarterly — not just check that a file exists, but verify dates, sample sizes, and reviewer sign-offs are all present and internally consistent.
Table 9: Quarterly Internal Audit Rhythm Against the Testing Calendar
Quarter | Internal Audit Activity | Output |
|---|---|---|
Q1 | Verify annual-cadence controls (risk assessment, policy re-approval) landed inside the window with complete evidence | Gap list + remediation owners |
Q2 | Spot-check monthly-cadence evidence from Q1 for completeness and consistency | Deviation rate estimate |
Q3 | Full reconciliation of calendar vs. evidence repository at the audit period's midpoint | Mid-year readiness memo to leadership |
Q4 | Pre-fieldwork dry run: pull the exact evidence set the external auditor is likely to sample | Final gap closure before interim/final testing |
This rhythm is what would have caught Priya's gap in April, not October. A quarterly reconciliation against the calendar — a simple "did month 2, 3, and 4 all get their evidence filed?" check — takes an internal auditor perhaps two hours a quarter for a control set the size of Solstice's. It is, by a wide margin, the cheapest insurance in the entire SOC 2 program.
"Internal audit isn't there to catch people doing something wrong. It's there to catch the calendar quietly not happening, which is a much more common failure mode than anyone wants to admit." — Toni Okafor, CISO, Vantage Point Health
Monthly cadence in practice: access reviews and vulnerability remediation
Two control families dominate the monthly-cadence bucket for most service organizations: privileged access control reviews and vulnerability remediation tracking. Both are high-volume, high-consequence, and both degrade fast without a fixed monthly rhythm.
For access reviews, the monthly test isn't a full recertification (that's usually quarterly) — it's a targeted check on privileged accounts: admins, database superusers, production deploy keys, and anyone with standing access to customer data. The control owner pulls the current privileged roster, compares it against an HR roster of active employees in privileged roles, and flags mismatches. Evidence is the comparison itself, dated and signed.
For vulnerability scanning, the monthly test checks remediation SLA adherence, not scan execution (scans typically run continuously or weekly via tooling). The monthly checkpoint answers: are critical findings closed within the committed SLA (commonly 15-30 days for criticals, 30-90 for highs)? Evidence is a report from the vulnerability management platform showing open findings against their age, with anything past SLA flagged and assigned a corrective action plan.
Table 10: Monthly Control Testing Checklist Template
Step | Action | Evidence Captured |
|---|---|---|
1 | Pull current privileged access roster | System export, timestamped |
2 | Reconcile against HR active-employee list | Comparison worksheet |
3 | Flag and remediate mismatches within 5 business days | Ticket/remediation log |
4 | Pull vulnerability scan findings aged >SLA | Vulnerability platform report |
5 | Confirm remediation or documented exception for each aged finding | Corrective action plan or risk acceptance memo |
6 | Reviewer countersigns completed checklist | Signed checklist, filed with date |
Quarterly cadence in practice: vendor risk and access recertification
Quarterly-cadence controls typically involve more judgment and more people than monthly ones, which is exactly why quarterly is the right frequency — testing them monthly would burn reviewer goodwill for marginal benefit, and testing them annually leaves too much drift. Standard access recertification (as opposed to the monthly privileged-account spot-check) asks every manager to review their direct reports' access to in-scope systems and confirm it's still appropriate. Vendor risk management reassessment for critical vendors follows a similar logic: confirm the vendor's SOC 2 report or equivalent attestation is current, check for any reported incidents, and reconfirm the relationship still needs the access it has.
Table 11: Quarterly Control Testing Checklist Template
Step | Action | Evidence Captured |
|---|---|---|
1 | Generate full access roster by system and department | System export |
2 | Route to each manager for review and attestation | Attestation form/tool export |
3 | Remove or downgrade flagged access within 10 business days | Access change ticket |
4 | Pull critical vendor list and confirm current attestation on file | Vendor register export |
5 | Flag any vendor with an expired attestation or reported incident | Vendor risk memo |
6 | Internal audit reviews completion rate and signs off | Signed quarterly summary |
Completion rate matters as much as completion. An auditor sampling a quarterly access recertification will notice — and flag — if only 70% of managers actually attested. Track completion percentage as its own metric inside the calendar, with an escalation path (typically to the executive sponsor) for chronic non-responders.
Annual cadence in practice: risk assessment, DR testing, and pen testing
Annual-cadence controls are the most expensive per-instance and the easiest to under-resource, because "once a year" makes them feel optional in any given month. They aren't. A formal risk assessment refresh, a full disaster recovery failover test, and an annual penetration testing engagement are each, individually, load-bearing evidence an auditor will specifically ask for by name — there's no continuous-monitoring substitute for any of them.
Table 12: Annual-Cadence Controls and Lead Time Requirements
Control | Typical Duration | Lead Time to Schedule | Common Delay Cause |
|---|---|---|---|
Formal risk assessment refresh | 2-4 weeks | 6 weeks (stakeholder calendars) | Waiting on department input |
Full DR failover test | 1-3 days (plus planning) | 8-10 weeks (infrastructure booking) | Production-impact concerns delay scheduling |
Annual penetration test | 1-2 weeks execution, 2-4 weeks total | 10-12 weeks (tester availability) | Booking too close to audit fieldwork |
Policy suite re-approval | 1-2 weeks | 4 weeks | Legal/leadership review bottleneck |
Incident response tabletop | Half-day | 4 weeks | Scheduling conflicts across leadership |
Security awareness training refresh | Ongoing over 4-6 weeks | 4 weeks | LMS content update delays |
The lead-time column is the one most first-time programs ignore, and it's the one that causes the most schedule slippage. A penetration test booked eight weeks before the auditor's fieldwork, with a testing firm that has a ten-week backlog, is a control that will not be evidenced in time. Build annual-cadence controls into the calendar with their real-world lead time counted backward from when the evidence is actually due — not from when you'd like to start.
Handling exceptions found during self-testing
Finding a control deficiency during your own internal testing is a good outcome — it means the calendar is doing its job. What happens next is where programs either compound the win or squander it. Every exception needs a documented severity, a root cause analysis, a corrective action plan with an owner and due date, and — critically — a note on whether it affects evidence you've already promised covers the full observation period.
Table 13: Exception Severity and Response Thresholds
Severity | Definition | Example | Response Timeline | Escalation |
|---|---|---|---|---|
Critical | Control failed entirely; direct risk to in-scope data or systems | Terminated employee retained production access for 30+ days | Immediate remediation, root cause within 5 days | CISO + Executive Sponsor |
High | Control operated inconsistently across multiple sampled instances | 2 of 4 quarterly vendor reviews missing documentation | Remediate within 10 business days | Compliance Lead |
Medium | Control operated but evidence quality was weak | Screenshot with no visible timestamp | Remediate within 15 business days | Control Owner + Manager |
Low | Isolated, non-recurring gap with no risk exposure | One monthly checklist filed 2 days late | Note and monitor for recurrence | Control Owner |
Track mean time to remediate as a program-level metric across all exceptions — it's one of the clearest indicators to leadership (and eventually to auditors, who often ask about it directly) that the self-testing program is functioning as a real control rather than a paperwork exercise.
Tooling: spreadsheets, GRC platforms, and where each earns its keep
You do not need an expensive GRC platform to run a credible testing calendar in year one. You do need discipline about where evidence lives and how reminders fire. Most organizations move through a predictable tooling progression as their control count and headcount grow.
Table 14: Testing Calendar Tooling Options
Tooling Approach | Best For | Strengths | Weaknesses |
|---|---|---|---|
Shared spreadsheet + calendar reminders | <30 controls, first Type II cycle | Zero cost, fast to stand up | Manual reminders, easy to let slip, no audit trail of changes |
Project management tool (recurring tickets) | 30-60 controls, small compliance team | Automated recurring reminders, ticket-level evidence attachment | Not purpose-built; reporting requires manual rollups |
Dedicated GRC platform | 60+ controls, multiple frameworks, growing team | Automated evidence collection integrations, built-in sampling, audit-ready exports | Cost, implementation time, still needs a human owner |
Continuous monitoring platform + GRC hybrid | Organizations layering SOC 2 with ISO 27001 or other frameworks | Cross-framework control mapping, real-time evidence freshness dashboards | Highest cost and complexity; overkill for a single-framework, single-entity program |
Whatever tool you choose, the non-negotiable feature is a dated, timestamped, retained evidence trail per control per cadence instance — not a live dashboard that only shows current state. An auditor sampling August needs to see August's evidence in August's form, not a dashboard that only shows "green" as of today.
Table 15: Approximate Annual Effort by Organization Size
Organization Size | Control Count (typical) | Estimated Internal Testing Hours/Year | Recommended Tooling |
|---|---|---|---|
Startup (under 50 employees) | 35-50 | 80-120 hours | Spreadsheet + calendar reminders |
Growth-stage (50-250 employees) | 50-70 | 150-250 hours | Project management tool or entry-tier GRC platform |
Mid-market (250-1,000 employees) | 65-90 | 300-500 hours | Dedicated GRC platform |
Enterprise (1,000+ employees) | 85-120+ | 600+ hours | GRC platform integrated with continuous monitoring stack |
These are illustrative planning figures based on programs we've built, not published benchmarks — use them to size a budget conversation, not as a guarantee.
Common pitfalls that break a testing schedule
Table 16: Testing Calendar Pitfalls and Fixes
Pitfall | Why It Happens | Fix |
|---|---|---|
Cadence mismatched to policy wording | Nobody checked the policy said "quarterly" before scheduling monthly | Cross-check every calendar row against its source policy line |
Owner turnover with no handoff | Control owner leaves; nobody reassigns the calendar row | Quarterly ownership audit as part of internal review |
Evidence with no timestamp | Screenshots taken without date visible, or exports overwritten | Standardize evidence capture format per control type |
Annual controls scheduled too close to fieldwork | Lead time for pen tests/DR tests underestimated | Schedule annual controls with lead time counted backward from evidence due date |
Calendar exists but nobody reviews completion | Calendar built, then treated as "set and forget" | Route completion tracking through internal audit, not just the control owner |
Testing "the way it's always been done" instead of what the control actually says | Institutional habit drifts from documented control language | Reconcile calendar against control matrix at every control matrix refresh |
One person holds the whole calendar in their head | Small team, informal process | Document the calendar in a shared, access-controlled system from day one |
"Every broken testing schedule I've ever inherited had the same root cause: it lived in someone's head, or in a spreadsheet only they opened. The fix is never clever — it's just making the calendar boringly, visibly shared." — Dana Whitcombe, GRC Platform Architect, Ledgerline Systems
Case study: Solstice Ledger's recovery, and what changed afterward
Priya's three-week scramble in October ultimately produced clean evidence for the missed months — Solstice's access provisioning control had, in fact, been operating correctly, it just hadn't been evidenced. The auditor accepted reconstructed evidence for two of the three gap months (with a management-response note) but flagged the third as a documented control deficiency in the final report, resolved through a corrective action plan rather than a clean pass. The $2.4 million retail contract still closed — the prospect's security team accepted the qualified note given the fast remediation — but Priya estimates the reconstruction scramble cost roughly 90 person-hours and several very tense weeks that a calendar would have eliminated entirely.
Table 17: Solstice Ledger — Before and After the Testing Calendar
Metric | Before (Year 1) | After (Year 2, with calendar) |
|---|---|---|
Controls with evidence gaps at auditor interim testing | 6 of 52 | 0 of 58 |
Hours spent reconstructing evidence retroactively | ~90 hours | 0 hours |
Auditor-noted exceptions in final report | 1 (access provisioning) | 0 |
Internal audit hours spent on quarterly reconciliation | 0 (didn't exist) | ~32 hours/year |
Time from auditor request to evidence delivery | 3-5 business days (reconstruction) | Same day (pre-filed) |
Case study: a healthcare SaaS platform's sampling overhaul
A healthcare technology client — call the company Meridian Health Systems, a clinical scheduling SaaS platform — came to us after their first SOC 2 Type II report drew an unusually high number of auditor sample exceptions: 18% of tested access-review instances failed to show adequate evidence, well above what the audit committee considered acceptable. The root cause wasn't that access reviews weren't happening; it was that the internal team had never applied a consistent internal sample before the auditor's sample arrived, so nobody had visibility into weak spots until fieldwork. We rebuilt their testing calendar with internal sampling mirroring the auditor's expected methodology (Table 6 above), plus a dedicated quarterly internal audit reconciliation step.
Table 18: Meridian Health Systems — Sampling Overhaul Results
Metric | Year 1 (pre-overhaul) | Year 2 (post-overhaul) |
|---|---|---|
Auditor sample exception rate (access reviews) | 18% | 2% |
Internal control self-assessment coverage | Not performed | 100% of controls, quarterly |
Average evidence retrieval time during fieldwork | 6 business days | Same day |
Auditor report opinion | Qualified | Unqualified |
Case study: a DevOps-heavy company decentralizing test ownership
A fast-growing developer-tools company — we'll call it Corvid Build, roughly 180 employees at the time — had centralized nearly all control testing under a single compliance analyst, who was drowning in recurring checklist work by month four of their first observation period. We helped Corvid redesign the RACI so that engineering managers owned testing for controls directly tied to their teams (change management, configuration management, access to production), with the compliance function shifting into the Accountable and Consulted role rather than Responsible for every single test.
Table 19: Corvid Build — Decentralization Impact
Metric | Centralized Model | Decentralized Model |
|---|---|---|
Compliance analyst hours/month on control testing | ~65 hours | ~18 hours |
Controls tested on schedule (no lapses) | 81% | 97% |
Engineering manager engagement in audit readiness | Low | High (direct ownership) |
Time to close identified exceptions | 21 days average | 9 days average |
Decentralizing ownership didn't reduce total effort — it redistributed it to the people closest to the control, who could test and remediate faster than a single centralized reviewer chasing down context from every team.
Connecting the schedule back to your control matrix
A testing calendar and a control matrix should be reconciled against each other at least twice a year — every new or modified control in the matrix needs a corresponding calendar entry, and every calendar entry should trace back to a specific matrix row and criteria point of focus. When these two documents drift apart — a common outcome when the matrix gets updated during a scoping change but nobody tells whoever owns the calendar — you end up either testing controls that no longer exist or, worse, having controls in scope with no testing plan at all.
Table 20: Control Matrix ↔ Testing Calendar Reconciliation Checklist
Check | Frequency | Owner |
|---|---|---|
Every matrix control has a calendar row with assigned cadence | Semi-annual | Compliance Lead |
Every calendar row traces to a matrix control ID | Semi-annual | Compliance Lead |
New controls added mid-year get a calendar entry within 2 weeks | Ongoing | Control Owner + Compliance Lead |
Retired controls are removed from the active calendar | Semi-annual | Compliance Lead |
Cadence in the calendar matches cadence stated in policy | Semi-annual | Internal Audit |
How internal testing differs from what your external auditor will do
Running your own testing calendar is not a substitute for the external examination — it's preparation for it, and the two exercises use related but distinct techniques. Understanding the difference keeps your internal program honest instead of just performative. Your external auditor's control testing procedures typically combine inquiry (asking the control owner how it works), observation, inspection of evidence, and — for the controls that matter most — re-performance, where the auditor independently redoes the control to confirm the result matches. A walkthrough usually happens once, early in fieldwork, to confirm the auditor's understanding of the process before formal sample selection and testing begins.
Table 22: Internal Self-Testing vs. External Auditor Testing
Dimension | Internal Self-Testing | External Auditor Testing |
|---|---|---|
Purpose | Catch gaps early, build evidence discipline | Form an independent opinion on design and operating effectiveness |
Frequency | Matches control cadence (monthly/quarterly/annual) | Typically twice: interim and final fieldwork |
Sample size | Internally defined, often smaller | Determined by auditor methodology, risk, and population size |
Techniques used | Mostly inspection of evidence, some re-performance | Inquiry, observation, inspection, and re-performance |
Independence | Reviewer one level removed from control owner | Fully independent CPA firm |
Outcome | Internal gap list and corrective action plans | Formal auditor's opinion in the SOC 2 report |
The practical implication for your calendar: build in a light walkthrough of your own testing process — not just the underlying controls — at least once before the auditor's interim fieldwork. If your internal reviewer can't clearly explain how a control was tested and why the sample was sized the way it was, the auditor's version of that same conversation will surface the same weakness, at a worse time.
Subservice organizations: whose calendar are their controls on?
Not every control your service depends on is one you test yourself. If Solstice Ledger relies on a cloud infrastructure provider for physical data center security, that provider is a subservice organization — and depending on whether your report uses the carve-out method or the inclusive method, your testing calendar treats it very differently. Under the carve-out method (the far more common approach), the subservice organization's controls are excluded from your report entirely; your calendar's job is simply to track that their own attestation (usually their SOC 2 report) is current, request it on a fixed cadence, and review it for anything that affects your risk posture — not to re-test their controls yourself.
Table 23: Testing Calendar Treatment by Subservice Organization Method
Method | What Your Calendar Tracks | Typical Cadence |
|---|---|---|
Carve-out (most common) | Confirm subservice organization's own report/attestation is current and reviewed | Annual, or whenever their report renews |
Carve-out | Monitor for reported incidents or material changes at the subservice organization | Quarterly check-in |
Inclusive | Test the subservice organization's controls directly, as if they were your own | Same cadence as equivalent internal controls |
This is also where complementary user entity controls show up in reverse — just as your customers have controls they must operate for your system to work as intended, you likely have CUEC-equivalent obligations toward your own subservice organizations. Track those obligations on the same calendar, with the same owner-and-evidence-date discipline as any other control, rather than assuming a vendor contract alone satisfies the requirement. Our vendor management guide goes deeper on structuring the underlying due diligence process this calendar draws from.
Getting control owners to actually follow the calendar
A beautifully designed calendar that control owners quietly ignore is worse than no calendar at all, because it creates false confidence. Adoption is a people problem before it's a process problem, and the fixes that work are unglamorous but effective.
Table 24: Common Adoption Barriers and What Actually Fixes Them
Barrier | Why It Happens | What Fixes It |
|---|---|---|
Control owner sees testing as "compliance's job" | Ownership was assigned without buy-in conversation | Involve owners in building their own cadence and evidence format |
Reminders get lost in email | No dedicated tracking system, reminders buried | Move reminders into the tool the owner already uses daily (ticketing, calendar invites) |
Evidence capture feels like extra work on top of the "real" task | Testing treated as a bolt-on step, not part of the workflow | Bake evidence capture into the existing process (e.g., auto-export on access review completion) |
No visible consequence for missing a test | Nobody tracks completion at a level anyone senior sees | Report calendar completion rate to leadership monthly, tied to the metrics in Table 17-19 |
Owner changed roles and nobody updated the calendar | No trigger tied to HR offboarding/role-change process | Add calendar reassignment as a required step in any role-change checklist |
The single most effective lever, in our experience, is the second-to-last row: visibility. A control owner who knows their completion rate shows up on a dashboard the CISO reviews monthly behaves very differently than one who believes nobody's watching until the audit.
First-time Type II periods vs. renewal periods
Your first Type II observation period and every renewal after it are testing calendar exercises, but they carry different risks. In year one, the calendar itself is unproven — you're testing whether the cadence and evidence formats you designed actually work in practice, often while control owners are still learning the process. In renewal years, the risk shifts toward complacency: teams that passed cleanly once assume the calendar will keep running itself, and drift creeps back in exactly the way it did for Solstice before year one's gap.
Table 25: Testing Calendar Priorities, First Period vs. Renewal
Consideration | First-Time Type II Period | Renewal Period |
|---|---|---|
Primary risk | Untested processes, unclear evidence formats | Complacency, owner turnover, undocumented drift |
Calendar changes needed | Build from scratch against the control matrix | Reconcile against prior-period gaps and any scope changes |
Evidence retention | Establish retention standard for the first time | Confirm continuity — is there a gap between report periods needing a bridge letter? |
Internal audit involvement | Heavier, since nothing is proven yet | Lighter but still quarterly — don't skip it because last year was clean |
Common failure mode | Cadence doesn't match what's actually operationally feasible | Calendar exists on paper but ownership has silently lapsed |
If a gap opens between when one Type II period ends and the next begins, your testing calendar for the new period needs to start early enough that the bridge letter covering the interim gap doesn't have to lean on assumptions instead of evidence. And whatever your prior final report noted as an exception, build an explicit calendar checkpoint in the first quarter of the new period to confirm it's genuinely resolved — auditors specifically look for repeat findings across periods, and a testing calendar is the cleanest way to prove one didn't recur.
A 90-day plan to stand up your first testing calendar
If you're starting from nothing — no calendar, no cadence assignments, just a control matrix and an approaching observation period — here's the sequence we walk clients through, compressed into three sprints.
Table 21: 90-Day Testing Calendar Build Plan
Days | Focus | Deliverable |
|---|---|---|
1-30 | Cadence assignment: tag every control in the matrix with continuous/daily/monthly/quarterly/annual, using policy language as the source of truth | Cadence-tagged control matrix |
31-45 | Owner assignment: name a specific person per control, confirm with their manager, document backup owners | Named owner list with backups |
46-60 | Evidence format definition: decide the artifact type and storage location per control before the first test runs | Evidence capture standard |
61-75 | First full test cycle: run every control's first scheduled test, including annual-cadence controls with long lead times | First evidence set filed |
76-90 | Internal audit reconciliation: independently verify the first cycle's evidence against the calendar, close any gaps | Readiness memo to leadership |
Two things matter more than the sequence itself. First, start the clock on long-lead annual controls (penetration tests, DR failover exercises) in the very first sprint — by the time you're 60 days in, an eight-to-twelve-week testing firm backlog will already be biting if you haven't booked it. Second, treat day 90 as a checkpoint, not a finish line: the calendar runs for the full observation period, and the discipline that matters is what happens in month 7, not what happened in week 1.
Evidence discipline built during this 90-day window should connect directly into your broader evidence collection practice, and any changes made to production systems during testing setup should route through your normal change management process rather than being treated as one-off exceptions.
Turning the testing calendar into a business opportunity
It's tempting to treat a testing calendar as pure overhead — a compliance tax that exists to keep an auditor happy once a year. That framing undersells what the calendar actually buys you. A service organization that can produce same-day evidence for any control, for any month, on request isn't just audit-ready; it's sales-ready. Enterprise security reviewers increasingly ask pointed questions about how controls are tested, not just whether they exist, and "we test on a documented schedule with independent internal audit reconciliation" is a materially stronger answer than "we get everything together before the audit." Priya now uses Solstice's testing calendar — anonymized — as a talking point in security questionnaires, and it routinely shortens vendor security review cycles by a week or more.
The same discipline compounds if you're carrying more than one framework. Organizations layering ISO 27001 onto their SOC 2 program — a common move for companies selling into both US and European enterprise buyers — find that a well-built control testing calendar maps almost directly onto ISO 27001's Clause 9.1 monitoring/measurement and Clause 9.2 internal audit requirements, since both frameworks are fundamentally asking the same question: does this control still work, and can you prove it, continuously? If that's on your roadmap, our guides on running ISO 27001 and SOC 2 together and the ISO 27001, SOC 2, and NIST CSF crosswalk walk through where the testing cadences and evidence models overlap, so you're not running two parallel calendars from scratch. If you're still deciding which framework to pursue first, our comparison of how ISO 27001 and SOC 2 differ is a good starting point.
None of this works without leadership treating the calendar as load-bearing rather than optional. The single highest-leverage move we've seen: put testing calendar completion on the same executive dashboard as revenue and uptime metrics. Controls that are visible to leadership get tested on schedule. Controls that live only in a compliance analyst's inbox drift — quietly, and usually right before an auditor's sample lands on the exact month nobody covered.
"The board doesn't want to hear about our testing calendar in the abstract. They want to hear that when a customer asks for August's access review evidence, we hand it to them in an hour, not a week." — Liu Chen, Engineering Manager, Corvid Build
Get your testing calendar audit-ready
Building this calendar from scratch is faster with a starting structure rather than a blank spreadsheet. PentesterWorld's SOC 2 Control Matrix / RACI Template gives you a pre-built cadence and ownership structure you can adapt directly from Table 4 and Table 5 above, and our SOC 2 Gap Analysis Tool helps you sanity-check that every in-scope control actually has a testing plan before your auditor asks. If you're still early in the process, the SOC 2 Readiness Checklist and our SOC 2 Cost Calculator can help you budget the internal hours a calendar like this realistically requires (see Table 15). And if terminology across this article was new to you, bookmark the SOC 2 Glossary — it's the same reference we hand new compliance hires on day one.
A testing calendar won't make your controls better on its own. But it will make sure the good controls you've already built get to prove themselves, every month, for the full window an auditor — and increasingly, your customers — are watching. Build the calendar before the observation period starts, not during month nine.
