Skip to main content

Overview

Openlane Console provides a complete compliance management system with five core modules: Controls, Policies, Procedures, Risks, and Evidence. These modules work together to help organizations achieve and maintain compliance across multiple frameworks.
All compliance features are located in the /app/(protected) directory and share common patterns for CRUD operations, filtering, and relationship mapping.

Controls

Security controls are the foundation of compliance programs. Controls represent security measures, safeguards, and processes that protect your organization.

Control Structure

Controls can be organized hierarchically:
Control (Parent)
├── Subcontrol 1
├── Subcontrol 2
└── Subcontrol 3
    ├── Control Objective 1
    └── Control Objective 2

Control Management

Access controls at /controls:
// apps/console/src/app/(protected)/controls/page.tsx
const Page: React.FC = () => {
  return <ControlSwitcher />
}
The Control Switcher provides multiple views:
  • List View: Tabular display of all controls
  • Tree View: Hierarchical visualization
  • Framework View: Grouped by compliance framework
  • Status View: Filtered by implementation status
Controls can be filtered by:
  • Framework (SOC 2, ISO 27001, HIPAA, etc.)
  • Status (Not Started, In Progress, Implemented, Verified)
  • Owner/Assignee
  • Tags and categories

Control Implementation

Track control implementation at /controls/{id}/control-implementation:
  1. Design: Define how the control will be implemented
  2. Build: Implement technical/process controls
  3. Test: Validate control effectiveness
  4. Operate: Put control into production
  5. Monitor: Ongoing effectiveness monitoring
Document implementation with:
  • Configuration screenshots
  • Policy documents
  • Procedure documentation
  • Training materials
  • Test results
Regular testing validates effectiveness:
  • Frequency: Monthly, quarterly, or annually
  • Test Procedures: Step-by-step validation
  • Sample Selection: Items to test
  • Expected Results: Pass/fail criteria
  • Actual Results: Test outcomes

Control Mapping

Map controls to frameworks at /controls/{id}/map-control:
// Map a control to multiple frameworks
const mappedFrameworks = [
  { framework: 'SOC 2', criteria: 'CC6.1' },
  { framework: 'ISO 27001', control: 'A.9.2.1' },
  { framework: 'NIST CSF', category: 'PR.AC-1' },
]
Edit mappings at /controls/{id}/edit-map-control.

Clone Controls

Duplicate existing controls at /controls/{id}/clone-control:
  • Copy control structure and objectives
  • Maintain framework mappings
  • Reset implementation status
  • Assign to new owner
Cloning is useful for:
  • Creating similar controls for different systems
  • Reusing control templates
  • Standardizing across departments

Policies

Internal policies document organizational rules and requirements.

Policy Management

Access policies at /policies:
// apps/console/src/app/(protected)/policies/page.tsx
const Page: React.FC = () => {
  return <PolicySwitcher />
}
Navigate to /policies/create to create a policy:
  • Policy Name: e.g., “Information Security Policy”
  • Policy Number: Document control number
  • Version: Version tracking (1.0, 2.0, etc.)
  • Owner: Policy owner/sponsor
  • Approver: Who must approve changes
  • Review Schedule: How often to review
  • Effective Date: When policy takes effect
  • Content: Full policy text (supports Markdown)

Policy Templates

Common policy templates:
  • Information Security Policy
  • Acceptable Use Policy
  • Access Control Policy
  • Data Classification Policy
  • Incident Response Policy
  • Business Continuity Policy
  • Vendor Management Policy
  • Privacy Policy

Procedures

Procedures provide step-by-step instructions for implementing policies and controls.

Procedure Management

Access procedures at /procedures:
// apps/console/src/app/(protected)/procedures/page.tsx
const Page: React.FC = () => {
  return (
    <>
      <PageHeading heading="Procedures" />
      <ProceduresTable />
    </>
  )
}
Navigate to /procedures/create:
  • Title: e.g., “User Provisioning Procedure”
  • Procedure ID: Reference number
  • Related Policy: Link to governing policy
  • Owner: Procedure owner
  • Frequency: How often executed (daily, monthly, etc.)
  • Steps: Detailed step-by-step instructions
  • Roles: Who performs each step
  • Tools: Systems/tools used
  • Evidence: What evidence is generated

Risks

Risk management identifies, assesses, and mitigates organizational risks.

Risk Management

Access risks at /risks:
// apps/console/src/app/(protected)/risks/page.tsx
const RisksPage: React.FC = () => <RiskTable />
Navigate to /risks/create:
1

Risk Identification

  • Risk title/description
  • Risk category (Security, Privacy, Operational, etc.)
  • Risk source (Internal, External, Third-party)
  • Affected assets/systems
2

Risk Assessment

Likelihood (1-5):
  • 1: Rare (< 10% probability)
  • 2: Unlikely (10-30%)
  • 3: Possible (30-50%)
  • 4: Likely (50-70%)
  • 5: Almost Certain (> 70%)
Impact (1-5):
  • 1: Negligible
  • 2: Minor
  • 3: Moderate
  • 4: Major
  • 5: Catastrophic
Risk Score = Likelihood × Impact (1-25)
3

Risk Treatment

Choose treatment strategy:
  • Mitigate: Implement controls to reduce risk
  • Accept: Accept the risk (document justification)
  • Transfer: Transfer to third party (insurance, outsourcing)
  • Avoid: Eliminate the risk source
4

Mitigation Plan

For mitigated risks:
  • Mitigation controls to implement
  • Target completion date
  • Responsible party
  • Residual risk score

Risk Heat Map

Visualize risk portfolio:
         Impact →
      1    2    3    4    5
L  1  ░    ░    ░    ▒    ▒
i  2  ░    ▒    ▒    ▒    ▓
k  3  ░    ▒    ▒    ▓    ▓
e  4  ▒    ▒    ▓    ▓    █
l  5  ▒    ▓    ▓    █    █
i
h
o
o
d


░ = Low (1-7)
▒ = Medium (8-14)  
▓ = High (15-19)
█ = Critical (20-25)

Evidence

Evidence collection provides proof of control effectiveness and compliance.

Evidence Management

Access evidence at /evidence:
// apps/console/src/app/(protected)/evidence/page.tsx
const Page: React.FC = () => <EvidenceDetailsPage />
Navigate to /evidence/create to upload evidence:
1

Select Evidence Type

  • Screenshots
  • Log files
  • Reports (PDF, DOCX)
  • Configuration exports
  • Audit reports
  • Training certificates
  • Meeting minutes
2

Upload Files

// React Dropzone for file uploads
<Dropzone
  onDrop={handleFileDrop}
  accept={{
    'image/*': ['.png', '.jpg', '.jpeg'],
    'application/pdf': ['.pdf'],
    'text/*': ['.txt', '.log'],
  }}
/>
Files are uploaded to Cloudflare R2:
// next.config.mjs
images: {
  remotePatterns: [
    {
      protocol: 'https',
      hostname: '*.r2.cloudflarestorage.com',
    },
  ],
}
3

Associate Evidence

Link evidence to:
  • Specific controls
  • Test procedures
  • Compliance frameworks
  • Audit requests
  • Risks (as proof of mitigation)
4

Add Metadata

  • Evidence date (when it was created)
  • Collection date (when uploaded)
  • Validity period (how long it’s valid)
  • Description/notes
  • Tags for organization

Evidence Viewing

The Console supports viewing various file types:
  • Images: Inline image viewer with zoom
  • PDFs: Embedded PDF viewer using react-pdf
  • Text/Logs: Syntax-highlighted text viewer
  • Documents: Download for external viewing

Cross-Module Relationships

All compliance modules are interconnected:
Frameworks define required controls:
  • SOC 2 requires CC6.1 (logical access controls)
  • ISO 27001 requires A.9.2.1 (user registration)
Controls implement policies:
  • Access Control policy implemented by authentication control
Procedures operationalize policies:
  • Access Control policy executed via User Provisioning procedure
Controls mitigate risks:
  • MFA control mitigates credential theft risk
Evidence proves control effectiveness:
  • Screenshot of MFA configuration
  • Report of MFA adoption rate

Next Steps

Dashboard

Monitor compliance status

Organizations

Manage multi-organization compliance

Automation

Automate assessments and tasks

API Reference

Integrate compliance data

Build docs developers (and LLMs) love