Skip to main content

SOC 2 Certification Readiness Checklist

Framework: Excalibur.Dispatch Standard: SOC 2 (Service Organization Control 2) - Trust Services Criteria Categories: Security (CC1-CC9) + Optional (Availability, Processing Integrity, Confidentiality, Privacy) Status: Automated control validation + evidence collection Last Updated: 2026-01-01


Overview

This checklist provides step-by-step guidance for SOC 2 certification preparation using the Excalibur framework. The framework provides automated control validation, evidence collection, and report generation for all Trust Services Criteria.

SOC 2 Scope: Service organizations (SaaS, cloud providers, MSPs) Report Types: Type I (point-in-time) and Type II (period assessment) Compliance Approach: Framework-provided validators + consumer organizational controls


Trust Services Categories

CategoryCriteriaDescriptionRequired?Framework Support
SecurityCC1-CC9Protection against unauthorized accessYES (always)✅ Full
AvailabilityA1-A3System uptime and reliabilityOptional✅ Full
Processing IntegrityPI1-PI3Data processing accuracyOptional✅ Full
ConfidentialityC1-C3Protection of confidential dataOptional✅ Full
PrivacyP1-P8Personal information handlingOptional⚠️ Partial (see GDPR checklist)

Recommendation: Start with Security (required) + Availability + Confidentiality for comprehensive cloud service coverage.


Control Mapping Table

Security (Common Criteria) - CC1-CC9

CriterionTitleFramework ImplementationConsumer ActionEvidence Location
CC1Control EnvironmentN/AManagement commitment, ethics policiesBusiness process
CC2CommunicationN/ACommunication policiesBusiness process
CC3Risk AssessmentN/ARisk assessment proceduresBusiness process
CC4Monitoring ActivitiesIAuditLogger (tamper-evident hash chain)Configure audit loggingdocs/security/audit-logging.md
CC5Control Activities[RequirePermission], input validationImplement authorizationdocs/advanced/security.md:15-78
CC6Logical Access✅ RBAC, encryption, key managementConfigure access controlsdocs/advanced/security.md
CC7System Operations✅ Health checks, monitoringConfigure OpenTelemetrydocs/advanced/deployment.md:515-570
CC8Change Management✅ CI/CD pipeline, version controlReview pipeline.github/workflows/ci.yml
CC9Risk Mitigation✅ Security scanning (SAST, DAST)Review scan resultsGitHub Actions runs

Availability - A1-A3

CriterionTitleFramework ImplementationConsumer ActionEvidence Location
A1Infrastructure Management✅ Health checks, retry policiesConfigure health checksdocs/advanced/deployment.md
A2Capacity Management⚠️ PartialMonitor capacity, scale as neededCloud provider docs
A3Backup & Recovery⚠️ PartialConfigure backupsCloud provider docs

Processing Integrity - PI1-PI3

CriterionTitleFramework ImplementationConsumer ActionEvidence Location
PI1Input ValidationIInputValidator, FluentValidationValidate inputsdocs/advanced/testing.md
PI2Processing Accuracy✅ Outbox pattern, idempotencyConfigure outboxdocs/guides/outbox-pattern.md
PI3Output Completeness✅ Event ordering, correlation IDsVerify telemetrydocs/advanced/deployment.md

Confidentiality - C1-C3

CriterionTitleFramework ImplementationConsumer ActionEvidence Location
C1Data Classification[PersonalData], [Sensitive] attributesClassify datadocs/security/data-classification.md
C2Data Protection✅ AES-256-GCM encryptionConfigure encryptiondocs/advanced/security.md:170-213
C3Data Disposal✅ Cryptographic erasure (IErasureService)Configure erasuredocs/security/gdpr-compliance.md

Legend:

  • ✅ Framework provides automated validation
  • ⚠️ Framework provides tools, consumer configures
  • N/A: Organizational control (not technical)

Implementation Checklist

Phase 1: Prerequisites (Week 1)

1.1 Understand SOC 2 Scope

  • Determine which Trust Services Categories to pursue (Security + optional)
  • Define system boundary (what services are in scope)
  • Identify service commitments (uptime SLAs, security promises, etc.)
  • Document system description for auditor

Reference: AICPA Trust Services Criteria

1.2 Install Framework Packages

dotnet add package Excalibur.Dispatch.Compliance

1.3 Basic SOC 2 Configuration

Development Setup:

using Excalibur.Dispatch.Compliance;

var builder = WebApplication.CreateBuilder(args);

// Add SOC 2 compliance with built-in validators
builder.Services.AddSoc2ComplianceWithBuiltInValidators(options =>
{
options.EnabledCategories = new[]
{
TrustServicesCategory.Security,
TrustServicesCategory.Availability,
TrustServicesCategory.Confidentiality
};
});

// Add in-memory report store for development
builder.Services.AddInMemorySoc2ReportStore();
  • Configure SOC 2 compliance service
  • Select Trust Services Categories
  • Add in-memory report store for development

Production Setup with Continuous Monitoring:

builder.Services.AddSoc2ComplianceWithMonitoring(options =>
{
options.EnabledCategories = new[]
{
TrustServicesCategory.Security,
TrustServicesCategory.Availability,
TrustServicesCategory.ProcessingIntegrity,
TrustServicesCategory.Confidentiality
};
options.MonitoringInterval = TimeSpan.FromHours(1);
options.AlertThreshold = GapSeverity.Medium;
});

// Add custom alert handler for PagerDuty/Slack/Email integration
builder.Services.AddComplianceAlertHandler<PagerDutyAlertHandler>();
  • Configure continuous monitoring (hourly recommended)
  • Set alert severity threshold (Medium or High)
  • Integrate with incident management (PagerDuty, Slack, etc.)

Phase 2: Security Controls (CC1-CC9) - Week 2-3

2.1 CC4: Monitoring Activities (Audit Logging)

Control Requirement: The entity monitors the system and takes action to remediate identified deficiencies in a timely manner.

Framework Implementation:

  • IAuditLogger interface with tamper-evident hash chain
  • Structured audit logs with correlation IDs
  • Immutable append-only audit trails

Consumer Checklist:

  • Inject IAuditLogger into services

Code Example:

using Excalibur.Dispatch.Compliance;

public class UserService
{
private readonly IAuditLogger _auditLogger;

public async Task UpdateUserAsync(User user, CancellationToken ct)
{
// Perform update
await _repository.UpdateAsync(user, ct);

// Audit the action
await _auditLogger.LogAsync(new AuditEvent
{
EventId = Guid.NewGuid().ToString(),
EventType = AuditEventType.DataModification,
Action = "User.Update",
ActorId = _currentUser.Id,
Outcome = AuditOutcome.Success,
Timestamp = DateTimeOffset.UtcNow,
ResourceId = user.Id.ToString(),
ResourceType = "User"
}, ct);
}
}
  • Configure audit event types
  • Implement IAuditStore persistence layer (SQL Server recommended)
  • Verify hash chain integrity with tests
  • Configure RBAC for audit log access

Automated Validation:

// AuditLogControlValidator automatically checks:
// - Audit logging is enabled
// - Hash chain integrity is maintained
// - Retention policies are configured
// - RBAC is enforced for audit access
  • Run AuditLogControlValidator to verify compliance
  • Review validation results (4 controls: SEC-004, SEC-005, MON-001, MON-002)

Evidence:

  • docs/security/audit-logging.md - Audit logging guide
  • Audit log samples (anonymized)
  • Hash chain integrity verification tests
  • Conformance test results (AuditStoreConformanceTestKit - 18 tests)

SSP Statement:

"CC4 is satisfied through tamper-evident audit logging using cryptographic hash chains. The framework's IAuditLogger captures all security-relevant events with correlation IDs, timestamps, and outcomes. Audit logs are append-only with RBAC access controls."

2.2 CC5: Control Activities (Authorization + Input Validation)

Control Requirement: The entity identifies and develops control activities that contribute to the mitigation of risks.

Framework Implementation:

  • [RequirePermission] attribute for declarative authorization
  • IInputValidator for input validation
  • FluentValidation integration

Consumer Checklist:

  • Apply [RequirePermission] to protected operations

Authorization Example:

using Excalibur.A3.Authorization;

[RequirePermission("users.delete")]
public class DeleteUserAction : IDispatchAction
{
public Guid UserId { get; set; }
}

// Authorization middleware enforces permission check
  • Implement input validation for all commands

Validation Example:

using FluentValidation;

public class CreateUserCommandValidator : AbstractValidator<CreateUserCommand>
{
public CreateUserCommandValidator()
{
RuleFor(x => x.Email)
.NotEmpty()
.EmailAddress();

RuleFor(x => x.Password)
.NotEmpty()
.MinimumLength(12)
.Matches(@"[A-Z]").WithMessage("Password must contain uppercase")
.Matches(@"[a-z]").WithMessage("Password must contain lowercase")
.Matches(@"[0-9]").WithMessage("Password must contain digit");
}
}
  • Test authorization enforcement (unit + integration tests)
  • Test input validation (reject invalid inputs)

Evidence:

  • docs/advanced/security.md:15-78 - Authorization guide
  • Unit tests for authorization and validation
  • Code review evidence (authorization applied to sensitive operations)

SSP Statement:

"CC5 is satisfied through declarative authorization ([RequirePermission]) and comprehensive input validation (FluentValidation). All protected operations require explicit permissions, and all user inputs are validated before processing."

2.3 CC6: Logical Access (Encryption + Key Management)

Control Requirement: The entity restricts logical access through the use of access control software and supporting utilities.

Framework Implementation:

  • IEncryptionProvider abstraction for pluggable encryption
  • AES-256-GCM encryption at rest
  • TLS 1.2+ encryption in transit
  • Key rotation support

Consumer Checklist:

  • Configure encryption provider (Azure Key Vault, AWS KMS, etc.)

Code Example:

using Excalibur.Dispatch.Compliance;

services.AddEncryption(encryption => encryption
.UseKeyManagement<AesGcmEncryptionProvider>("aes-gcm-primary")
.ConfigureOptions(options => options.DefaultPurpose = "field-encryption"));

// Annotate sensitive fields
public class User
{
public Guid Id { get; set; }

[PersonalData] // Automatically encrypted at rest
public string Email { get; set; }

[PersonalData]
public string PhoneNumber { get; set; }
}
  • Annotate sensitive fields with [PersonalData]
  • Verify encryption at rest (inspect database)
  • Configure TLS 1.2+ for all HTTP endpoints
  • Document key rotation procedures

Automated Validation:

// EncryptionControlValidator automatically checks:
// - Encryption at rest is enabled (AES-256-GCM)
// - Key management is configured
// - Key rotation policies are active
  • Run EncryptionControlValidator to verify compliance
  • Review validation results (4 controls: SEC-001, SEC-002, SEC-003, CNF-001)

Evidence:

  • docs/advanced/security.md:170-213 - Encryption guide
  • Encryption verification tests
  • Key management procedures
  • TLS configuration (testssl.sh scan results)

SSP Statement:

"CC6 is satisfied through AES-256-GCM encryption at rest and TLS 1.2+ encryption in transit. The framework's IEncryptionProvider integrates with Azure Key Vault for centralized key management with automated rotation."

2.4 CC7: System Operations (Health Checks + Monitoring)

Control Requirement: The entity manages the operational activities of the system to meet the entity's objectives.

Framework Implementation:

  • OpenTelemetry integration for distributed tracing
  • Health check endpoints
  • Structured logging with correlation IDs

Consumer Checklist:

  • Configure OpenTelemetry exporter (Application Insights, Jaeger, etc.)

Code Example:

using OpenTelemetry.Trace;
using OpenTelemetry.Metrics;

services.AddOpenTelemetry()
.WithTracing(builder => builder
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddApplicationInsightsExporter(options =>
{
options.ConnectionString = Configuration["ApplicationInsights:ConnectionString"];
}))
.WithMetrics(builder => builder
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddApplicationInsightsExporter());

// Health checks
services.AddHealthChecks()
.AddSqlServer(connectionString)
.AddRedis(redisConnectionString);

app.MapHealthChecks("/health");
  • Set up alerts for failed health checks
  • Configure log aggregation (ELK stack, Splunk, etc.)
  • Implement runbooks for common incidents

Evidence:

  • docs/advanced/deployment.md:515-570 - Monitoring guide
  • OpenTelemetry configuration
  • Health check endpoint verification
  • Alert rules and runbooks

SSP Statement:

"CC7 is satisfied through OpenTelemetry integration for distributed tracing and metrics. Health check endpoints monitor system availability. Structured logging with correlation IDs enables incident investigation."

2.5 CC8: Change Management (CI/CD Pipeline)

Control Requirement: The entity implements change management processes to manage changes to the system.

Framework Implementation:

  • Comprehensive CI/CD pipeline with quality gates
  • Automated testing (unit, integration, functional)
  • Security scanning (SAST, DAST, container, secrets)
  • SBOM generation on every build

Consumer Checklist:

  • Review CI/CD pipeline configuration

Pipeline Stages:

# .github/workflows/ci.yml
jobs:
build:
- Checkout code
- Setup .NET 9.0
- Restore dependencies
- Build solution
- Run unit tests
- Upload coverage (≥60% enforced)

security-sast:
- CodeQL analysis (SAST)
- Dependency vulnerability scan
- Secrets scanning (Gitleaks)

security-dast:
- ZAP baseline scan (DAST)
- API security testing

container-scan:
- Trivy container scan
- Critical vulnerability blocking

sbom-generation:
- CycloneDX SBOM generation
- Upload artifacts (90-day retention)
  • Verify all quality gates pass (GitHub Actions workflow runs)
  • Review deployment approval workflow
  • Document rollback procedures

Evidence:

  • .github/workflows/ci.yml - CI/CD pipeline
  • GitHub Actions workflow runs (90-day audit trail)
  • Deployment logs
  • Rollback documentation

SSP Statement:

"CC8 is satisfied through a comprehensive CI/CD pipeline with automated quality gates. Every code change undergoes unit tests, security scans (SAST, DAST, container), and dependency vulnerability checks before deployment. SBOM artifacts provide supply chain transparency."

2.6 CC9: Risk Mitigation (Security Scanning)

Control Requirement: The entity identifies, assesses, and manages risks associated with the system.

Framework Implementation:

  • SAST (CodeQL)
  • DAST (OWASP ZAP)
  • Container scanning (Trivy)
  • Secrets scanning (Gitleaks)
  • Dependency vulnerability scanning

Consumer Checklist:

  • Review security scan results from CI/CD pipeline
  • Verify CRITICAL vulnerabilities block deployment
  • Document remediation procedures
  • Test incident response (tabletop exercises)

Evidence:

  • Security scan reports (SARIF, JSON)
  • Vulnerability remediation tracking
  • Incident response plan
  • Tabletop exercise documentation

SSP Statement:

"CC9 is satisfied through comprehensive security scanning in the CI/CD pipeline. SAST, DAST, container scanning, and dependency vulnerability checks run on every build. CRITICAL vulnerabilities block deployment until remediated."


Phase 3: Availability Controls (A1-A3) - Week 4

3.1 A1: Infrastructure Management (Health Checks + Retry Policies)

Control Requirement: The entity maintains, monitors, and evaluates current processing capacity and use of system components.

Framework Implementation:

  • Health check endpoints
  • Retry policies (Polly)
  • Circuit breakers

Consumer Checklist:

  • Configure health checks for all dependencies
  • Implement retry policies with exponential backoff

Code Example:

// Health checks
services.AddHealthChecks()
.AddSqlServer(connectionString)
.AddRedis(redisConnectionString)
.AddAzureKeyVault(keyVaultUri);

// Retry policies
services.AddHttpClient("ExternalAPI")
.AddPolicyHandler(Policy
.HandleResult<HttpResponseMessage>(r => !r.IsSuccessStatusCode)
.WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))));
  • Test health check failures (simulate dependency outage)
  • Test retry policies (verify exponential backoff)

Automated Validation:

// AvailabilityControlValidator automatically checks:
// - Health checks are configured
// - Retry policies are in place
// - Backup configurations exist
  • Run AvailabilityControlValidator to verify compliance
  • Review validation results (3 controls: AVL-001, AVL-002, AVL-003)

Evidence:

  • Health check configuration
  • Retry policy tests
  • Uptime monitoring dashboards

SSP Statement:

"A1 is satisfied through comprehensive health checks for all system dependencies. Retry policies with exponential backoff handle transient failures. Circuit breakers prevent cascading failures."

3.2 A2: Capacity Management

Control Requirement: The entity monitors system components and resource utilization to enable the implementation of additional capacity to help meet its objectives.

Consumer Checklist:

  • Configure auto-scaling (Azure App Service, AWS ECS, Kubernetes HPA)
  • Set up capacity monitoring (CPU, memory, network, disk)
  • Define scaling thresholds (e.g., scale out at 70% CPU)
  • Test scaling under load (load testing with k6, JMeter, Gatling)

Evidence:

  • Auto-scaling configuration
  • Capacity monitoring dashboards
  • Load test results
  • Scaling event logs

SSP Statement:

"A2 is satisfied through auto-scaling based on CPU and memory utilization. Azure App Service scales out when CPU exceeds 70% for 5 minutes. Load testing validates scaling behavior under peak load."

3.3 A3: Backup & Recovery

Control Requirement: The entity maintains data backup and recovery procedures to meet its objectives.

Consumer Checklist:

  • Configure automated backups (SQL Server, Azure Storage, AWS S3)
  • Define RPO (Recovery Point Objective) and RTO (Recovery Time Objective)
  • Test backup restoration (quarterly recommended)
  • Document disaster recovery procedures

Evidence:

  • Backup configuration
  • Backup verification logs
  • Disaster recovery plan
  • Recovery test results

SSP Statement:

"A3 is satisfied through automated daily backups with 30-day retention. SQL Server backups are replicated to geo-redundant storage. RPO is 24 hours, RTO is 4 hours. Quarterly backup restoration tests verify recoverability."


Phase 4: Processing Integrity Controls (PI1-PI3) - Week 5

4.1 PI1: Input Validation

Control Requirement: Inputs are complete, accurate, and valid for processing.

Framework Implementation:

  • IInputValidator interface
  • FluentValidation integration
  • Automatic validation in pipeline

Consumer Checklist:

  • Implement validators for all actions

Code Example:

public class CreateOrderActionValidator : AbstractValidator<CreateOrderAction>
{
public CreateOrderCommandValidator()
{
RuleFor(x => x.CustomerId)
.NotEmpty().WithMessage("CustomerId is required");

RuleFor(x => x.Items)
.NotEmpty().WithMessage("Order must contain at least one item");

RuleFor(x => x.Total)
.GreaterThan(0).WithMessage("Total must be positive");
}
}
  • Test validation (reject invalid inputs)
  • Verify validation errors are logged

Automated Validation:

// ProcessingIntegrityControlValidator automatically checks:
// - Input validation is enabled
// - FluentValidation is configured
  • Run ProcessingIntegrityControlValidator to verify compliance

Evidence:

  • Validator implementations
  • Validation test results
  • Error logs (invalid input rejections)

SSP Statement:

"PI1 is satisfied through comprehensive input validation using FluentValidation. All commands are validated before processing. Invalid inputs are rejected with descriptive error messages."

4.2 PI2: Processing Accuracy (Outbox Pattern + Idempotency)

Control Requirement: Processing is complete, accurate, and timely.

Framework Implementation:

  • Outbox pattern for reliable messaging
  • Idempotency keys for duplicate prevention
  • Correlation IDs for traceability

Consumer Checklist:

  • Configure outbox pattern for all published events

Code Example:

services.AddOutbox(options =>
{
options.PublishingInterval = TimeSpan.FromSeconds(5);
options.MaxRetryAttempts = 3;
options.BatchSize = 100;
});

// Idempotency
public class ProcessPaymentCommand : ICommand
{
[IdempotencyKey]
public Guid PaymentId { get; set; } // Duplicate prevention
}
  • Test duplicate message handling (verify idempotency)
  • Test outbox retry logic

Evidence:

  • Outbox configuration
  • Idempotency tests
  • Correlation ID tracing

SSP Statement:

"PI2 is satisfied through the outbox pattern for reliable message publishing. Idempotency keys prevent duplicate processing. Correlation IDs enable end-to-end traceability."

4.3 PI3: Output Completeness (Event Ordering + Correlation IDs)

Control Requirement: Outputs are complete, accurate, and timely.

Framework Implementation:

  • Event ordering guarantees
  • Correlation IDs for request tracing
  • OpenTelemetry distributed tracing

Consumer Checklist:

  • Verify event ordering in integration tests
  • Configure correlation ID propagation
  • Test end-to-end tracing

Evidence:

  • Event ordering tests
  • Distributed tracing examples
  • Correlation ID propagation verification

SSP Statement:

"PI3 is satisfied through guaranteed event ordering within aggregates. Correlation IDs propagate through all service calls. OpenTelemetry distributed tracing validates end-to-end processing."


Phase 5: Confidentiality Controls (C1-C3) - Week 6

5.1 C1: Data Classification

Control Requirement: Information designated as confidential is identified and classified.

Framework Implementation:

  • [PersonalData] attribute for personal data
  • [Sensitive] attribute for confidential data
  • Automatic discovery for data inventory

Consumer Checklist:

  • Annotate all confidential fields with [PersonalData] or [Sensitive]

Code Example:

public class CreditCard
{
public Guid Id { get; set; }

[PersonalData]
[Sensitive]
public string CardNumber { get; set; } // PII + confidential

[PersonalData]
[Sensitive]
public string CVV { get; set; }

public DateTime ExpirationDate { get; set; } // NOT sensitive
}
  • Generate data classification report
  • Review classification with security team

Automated Validation:

// ConfidentialityControlValidator automatically checks:
// - Data classification is enabled
// - [Sensitive] attributes are used
// - [PersonalData] attributes are used
  • Run ConfidentialityControlValidator to verify compliance

Evidence:

  • Data classification report
  • Annotated source code
  • Classification review documentation

SSP Statement:

"C1 is satisfied through attribute-based data classification. All confidential fields are annotated with [PersonalData] or [Sensitive] attributes. Automatic discovery generates a comprehensive data inventory."

5.2 C2: Data Protection (Encryption)

Control Requirement: Procedures exist to protect information designated as confidential from unauthorized access.

Framework Implementation:

  • Field-level encryption for [PersonalData] and [Sensitive] fields
  • AES-256-GCM encryption
  • Integration with Azure Key Vault / AWS KMS

Consumer Checklist:

  • Verify encryption at rest (see CC6 above)
  • Test access control (unauthorized users cannot decrypt)

Evidence:

  • Encryption verification tests (see CC6)
  • Access control tests

SSP Statement:

"C2 is satisfied through field-level encryption using AES-256-GCM. All [PersonalData] and [Sensitive] fields are automatically encrypted at rest. Access control prevents unauthorized decryption."

5.3 C3: Data Disposal (Cryptographic Erasure)

Control Requirement: Information designated as confidential is disposed of in accordance with the entity's objectives.

Framework Implementation:

  • IErasureService for GDPR-compliant erasure
  • Cryptographic erasure (key deletion)
  • Erasure certificates for compliance proof

Consumer Checklist:

  • Configure erasure service (see GDPR checklist)
  • Test erasure workflow (request → execution → certificate)

Evidence:

  • Erasure configuration
  • Erasure certificates
  • Conformance test results (ErasureStoreConformanceTestKit - 24 tests)

SSP Statement:

"C3 is satisfied through cryptographic erasure using the IErasureService. Deletion of encryption keys renders confidential data irrecoverable. Erasure certificates provide cryptographic proof of disposal."


Report Generation

Type I Report (Point-in-Time)

When to Use:

  • Initial SOC 2 certification
  • Quarterly compliance check
  • Pre-sales requirements

Consumer Checklist:

  • Generate Type I report

Code Example:

var options = new ReportOptions
{
CustomTitle = "Acme Corp - Dispatch Message Processing Platform",
Categories =
[
TrustServicesCategory.Security,
TrustServicesCategory.Availability,
TrustServicesCategory.Confidentiality
],
IncludeDetailedEvidence = true,
IncludeManagementAssertion = true
};

var report = await _complianceService.GenerateTypeIReportAsync(
DateTimeOffset.UtcNow,
options,
cancellationToken);

// Export for auditor (via ISoc2AuditExporter sub-interface)
var exporter = (ISoc2AuditExporter)_complianceService.GetService(typeof(ISoc2AuditExporter))!;
var pdf = await exporter.ExportForAuditorAsync(
ExportFormat.Pdf,
DateTimeOffset.UtcNow.AddMonths(-1),
DateTimeOffset.UtcNow,
cancellationToken);
  • Review report sections (management assertion, control design, evidence)
  • Export report (JSON, CSV, Excel, PDF)
  • Provide to auditor for Type I assessment

Type II Report (Period Assessment)

When to Use:

  • Annual SOC 2 audit
  • Operating effectiveness demonstration
  • Customer due diligence

Consumer Checklist:

  • Generate Type II report (typically 6-12 month period)

Code Example:

var report = await _complianceService.GenerateTypeIIReportAsync(
periodStart: new DateTimeOffset(2025, 1, 1, 0, 0, 0, TimeSpan.Zero),
periodEnd: new DateTimeOffset(2025, 12, 31, 23, 59, 59, TimeSpan.Zero),
options,
cancellationToken);
  • Review test results (operating effectiveness over period)
  • Document any exceptions or findings
  • Provide to auditor for Type II assessment

Consumer Responsibilities

Framework Provides:

  • Automated control validation (6 validators: Encryption, Audit, Availability, ProcessingIntegrity, Confidentiality, Privacy)
  • Evidence collection from audit logs and system state
  • Type I and Type II report generation
  • Export formats for auditors (JSON, CSV, Excel, PDF)

Consumer Must Implement:

  • Organizational controls (CC1, CC2, CC3)
  • Management commitment and ethics policies
  • Risk assessment procedures
  • Change management approvals
  • Backup and disaster recovery testing
  • Security awareness training
  • Vendor management
  • Physical security

Compliance Verification

Pre-Certification Testing

Week 7: Automated Validation

  • Run all built-in validators:
    • EncryptionControlValidator (4 controls)
    • AuditLogControlValidator (4 controls)
    • AvailabilityControlValidator (3 controls)
    • ProcessingIntegrityControlValidator (3 controls)
    • ConfidentialityControlValidator (3 controls)
  • Review validation results (all controls should be EFFECTIVE)
  • Document any gaps and remediate

Week 8: Evidence Collection

  • Generate Type I report (point-in-time)
  • Review evidence completeness:
    • Audit logs (sample)
    • Encryption configuration
    • Access control policies
    • Monitoring dashboards
    • CI/CD pipeline runs
    • Security scan results
  • Export evidence package for auditor

Week 9: External Audit Preparation

  • Select SOC 2 auditor (CPA firm)
  • Schedule kickoff meeting
  • Provide system description and scope
  • Provide Type I report and evidence
  • Respond to auditor questions
  • Remediate any findings

Type I Assessment (8-12 weeks)

  • Auditor reviews control design
  • Auditor tests control implementation
  • Auditor issues Type I report (unqualified opinion = success)

Type II Assessment (6-12 months later)

  • Operate controls for review period (typically 6-12 months)
  • Generate Type II report (period assessment)
  • Auditor tests operating effectiveness
  • Auditor issues Type II report

Evidence References

Primary Evidence

Framework Implementation:

  • docs/security/soc2-compliance.md - SOC 2 guide (500+ lines)
  • docs/advanced/security.md - Security capabilities
  • docs/security/audit-logging.md - Audit logging guide

Automated Validation:

  • Built-in validators (6 validators, 17+ controls)
  • Conformance test kits (80 tests: Audit, Erasure, LegalHold, DataInventory)

Evidence Artifacts:

  • Audit log samples
  • Encryption configuration
  • Health check results
  • CI/CD pipeline runs (90-day retention)
  • Security scan reports (SAST, DAST, container)
  • SBOM artifacts

Supporting Documentation

Standards:

Framework Documentation:


Continuous Compliance

Automated Monitoring

Hourly (Recommended):

  • Control validation (all 17+ controls)
  • Gap detection (severity threshold: Medium)
  • Alerting (PagerDuty, Slack, email)

Daily:

  • Audit log integrity verification
  • Encryption key rotation status
  • Health check status
  • Backup verification

Weekly:

  • Security scan results review
  • Vulnerability remediation tracking
  • Incident review

Monthly:

  • Compliance status report
  • Gap remediation review
  • Evidence collection

Contact

Questions:

  • Product Manager: SOC 2 scope, service commitments
  • Software Architect: Technical controls, automation
  • Project Manager: Audit coordination, evidence package

Escalation:

  • Control failures: See incident response procedures
  • Compliance gaps: Create GitHub issue with compliance label
  • Audit requests: Contact Project Manager for evidence package

See Also


Last Updated: 2026-01-01 Next Review: 2026-04-01 Status: SOC 2 checklist COMPLETE ✅