
Dora Compliance Expert
- 96 installs
- 451 repo stars
- Updated July 21, 2026
- borghei/claude-skills
DORA Compliance Expert is a Claude skill for EU Regulation 2022/2554 (DORA) compliance that scores readiness across the five pillars, classifies ICT incidents, and structures third-party risk and resilience testing.
About
DORA Compliance Expert supports EU Regulation 2022/2554 (Digital Operational Resilience Act) compliance for financial entities. It scores readiness across the five DORA pillars, classifies ICT incidents and computes reporting deadlines, and structures third-party ICT risk registers and resilience-testing programs. A financial-sector team uses it to run gap assessments, classify incidents, and design testing programs including advanced Threat-Led Penetration Testing.
- Scores DORA readiness 0-100 across all 5 pillars with gap analysis and prioritized remediation
- Classifies ICT incidents per Article 18 and computes the 4h / 72h / 1-month reporting deadlines
- Structures third-party ICT registers, Article 30 contracts, and resilience testing including TLPT (TIBER-EU)
Dora Compliance Expert by the numbers
- 96 all-time installs (skills.sh)
- Ranked #1,031 of 2,203 Security skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
dora-compliance-expert capabilities & compatibility
- Capabilities
- eu ai act specialist · data breach response
- Use cases
- security audit
- Pricing
- Free
What dora-compliance-expert says it does
DORA (EU 2022/2554) digital operational resilience compliance for financial entities, covering all 5 pillars.
classify ICT incidents per Article 18 criteria, determine major-incident status, and compute the 4h / 72h / 1-month reporting deadlines
basic testing (12 test types) plus advanced Threat-Led Penetration Testing (TLPT) per the TIBER-EU framework
npx skills add https://github.com/borghei/claude-skills --skill dora-compliance-expertAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 96 |
|---|---|
| repo stars | ★ 451 |
| Last updated | July 21, 2026 |
| Repository | borghei/claude-skills ↗ |
What it does
Assess DORA readiness, classify ICT incidents, and structure third-party risk and resilience testing for financial entities.
Who is it for?
Financial entities and their advisors assessing DORA readiness, classifying ICT incidents, and building third-party ICT registers.
Skip if: Executing penetration tests or vulnerability scans, or determining legally whether your entity falls under DORA - it provides planning frameworks, not testing tools or legal rulings.
When should I use this skill?
Running a DORA gap assessment, classifying an ICT incident, building an ICT third-party register, or designing a resilience-testing program.
What you get
Per-pillar readiness scores with remediation, an incident classification with reporting deadlines, and third-party register and testing plans.
- 5-pillar readiness scorecard
- ICT incident classification with deadlines
- third-party ICT register template
By the numbers
- 5 DORA pillars scored 0-100 each
- 4h / 72h / 1-month incident reporting deadlines
- 12 basic resilience test types
Files
DORA Compliance Expert
Tools and guidance for Regulation (EU) 2022/2554 on digital operational resilience for the financial sector (Digital Operational Resilience Act — DORA). DORA is a directly applicable EU regulation (applicable since January 17, 2025) covering 20 types of financial entities and their critical ICT third-party providers. This skill assesses readiness against the five pillars, classifies ICT incidents and computes reporting deadlines, and structures third-party risk and resilience-testing programs.
Core Capabilities
- 5-pillar readiness assessment — score ICT risk management, incident management, resilience testing, third-party risk, and information sharing (0–100 per pillar) with gap analysis and prioritized remediation
- Incident classification & reporting — classify ICT incidents per Article 18 criteria, determine major-incident status, and compute the 4h / 72h / 1-month reporting deadlines
- Third-party ICT risk — register structure, Article 30 contractual provisions, exit strategies, and concentration-risk assessment
- Resilience testing program design — basic testing (12 test types) plus advanced Threat-Led Penetration Testing (TLPT) per the TIBER-EU framework
When to Use
- Running a DORA gap assessment or readiness scorecard for a financial entity
- Classifying an ICT incident and confirming reporting obligations to a competent authority
- Building or auditing an ICT third-party register and contracts
- Designing a digital operational resilience testing program (basic + TLPT)
- Determining whether and how DORA applies to your entity
Quick Start
# Generate and run a 5-pillar readiness assessment
python scripts/dora_readiness_checker.py --template > assessment.json
python scripts/dora_readiness_checker.py --config assessment.json --json
# Classify an ICT incident and get reporting deadlines
python scripts/dora_incident_classifier.py --clients-affected 5000 --duration-hours 4 \
--data-loss yes --services-critical yes --economic-impact 500000References
Load the reference that matches the task — keep this file lean and pull detail on demand:
- [references/framework-overview.md](references/framework-overview.md) — DORA background, legal nature, relationship to NIS2/GDPR/PSD2/MiCA/ISO 27001, the 20 in-scope entity types, proportionality, CTPP designation, and the penalty/enforcement regime. Read when scoping applicability or assessing enforcement exposure.
- [references/five-pillars-detail.md](references/five-pillars-detail.md) — article-by-article requirements for all 5 pillars (Articles 5–45), incident classification & reporting deadlines, testing/TLPT, and third-party contractual provisions. Read when assessing a specific pillar or mapping a requirement to its article.
- [references/dora-five-pillars-guide.md](references/dora-five-pillars-guide.md) — complete implementation guidance for all 5 pillars with ISO 27001 control mapping, financial-sector-specific requirements, and RTS/ITS references. Read when implementing controls aligned to ISO 27001.
- [references/dora-third-party-management.md](references/dora-third-party-management.md) — ICT third-party register template, contractual requirements checklist, exit strategy framework, concentration-risk methodology, and critical-provider oversight. Read when building the register or reviewing contracts.
- [references/implementation-and-infrastructure.md](references/implementation-and-infrastructure.md) — 9-month implementation roadmap, quick wins, infrastructure verification checklists, troubleshooting table, and success criteria. Read when planning the program or diagnosing assessment results.
- [references/tools-and-cli.md](references/tools-and-cli.md) — full command examples, feature lists, and flag-by-flag reference for both Python scripts. Read when running or scripting the tools.
Scope & Limitations
In Scope:
- Readiness assessment against all 5 DORA pillars with per-pillar scoring
- ICT incident classification per Article 18 criteria with major incident determination
- Reporting deadline calculation (4-hour initial, 72-hour intermediate, 1-month final)
- Incident notification template generation for competent authority submissions
- Third-party risk management guidance including register template and contractual requirements
- Resilience testing program design covering basic and advanced (TLPT) testing
- Gap analysis with prioritized remediation recommendations
Out of Scope:
- Actual penetration testing execution or vulnerability scanning -- this skill provides planning and assessment frameworks, not testing tools
- Direct interaction with competent authorities or ESAs (EBA, ESMA, EIOPA)
- Legal determination of entity scope (whether your organization falls under DORA's 20 entity types) -- consult regulatory counsel
- CTPP (Critical Third-Party Provider) oversight framework compliance -- applicable only to ESA-designated providers
- Real-time ICT monitoring or SIEM implementation -- use
infrastructure-compliance-auditorfor technical security controls
Important Notes:
- DORA became applicable January 17, 2025; regulators are treating 2025 as a transition year but enforcement is expected to intensify in 2026
- Non-compliance penalties can reach up to 2% of total annual worldwide turnover or 1% of average daily global turnover for up to 6 months (for CTPPs)
Integration Points
| Skill | Integration | When to Use |
|---|---|---|
information-security-manager-iso27001 | ISO 27001 controls map directly to DORA Pillar 1 requirements; ISO 27001 certification supports DORA compliance evidence | When building ICT risk management framework aligned with both ISO 27001 and DORA |
nis2-directive-specialist | DORA is lex specialis for financial sector; NIS2 applies residually; coordinate incident reporting timelines | When financial entity also falls under NIS2 scope for non-financial ICT services |
infrastructure-compliance-auditor | Technical infrastructure checks validate DORA Pillar 1 (protection, detection) and Pillar 3 (resilience testing) controls | When assessing actual infrastructure security posture against DORA requirements |
nist-csf-specialist | NIST CSF 2.0 functions map to DORA pillars; useful for organizations with US operations | When building a unified resilience framework across US and EU requirements |
---
Last Updated: June 2026 Regulation Reference: EU 2022/2554 Applicable From: January 17, 2025
DORA Five Pillars — Implementation Guide
Complete implementation guidance for all 5 pillars of the Digital Operational Resilience Act (EU 2022/2554), with ISO 27001 control mapping, financial-sector-specific requirements, and RTS/ITS references.
---
Table of Contents
- Pillar 1: ICT Risk Management
- Pillar 2: ICT-Related Incident Management
- Pillar 3: Digital Operational Resilience Testing
- Pillar 4: ICT Third-Party Risk Management
- Pillar 5: Information Sharing
- ISO 27001 Control Mapping
- RTS/ITS References
---
Pillar 1: ICT Risk Management
Articles 5–16 Implementation
Governance Framework (Article 5)
Implementation steps:
1. Management body accountability
- Document management body responsibilities for ICT risk in the entity's governance framework
- Include ICT risk management as a standing agenda item in board/management meetings
- Ensure the management body defines and approves the ICT risk tolerance level
- Allocate dedicated budget for ICT risk management (separate line item)
2. Organizational structure
- Appoint a Chief Information Security Officer (CISO) or equivalent with direct reporting line to management body
- Establish an ICT risk management function (second line of defense)
- Ensure separation between ICT risk management, ICT operations/control, and internal audit
- Define RACI matrix for all ICT-related functions
3. Digital operational resilience strategy (Article 6(8))
The strategy must include:
- Explanation of how ICT risk management supports the business strategy
- ICT risk tolerance level and key information security objectives
- Description of the ICT reference architecture and changes needed
- Mechanisms for detecting and responding to ICT anomalies
- ICT third-party risk strategy
- Digital operational resilience testing approach
- Communication strategy for ICT incident disclosure
Financial sector specificity: The strategy must consider the entity's interconnectedness with the broader financial system, systemic importance, and potential cascading effects.
ICT Systems and Tools (Article 7)
- Deploy systems, protocols, and tools that are adequate in design and updated
- Invest in ICT capacity proportionate to business needs and risk profile
- Implement reliability, capacity, and business continuity as design principles
- Document all ICT systems supporting critical or important functions
Identification (Article 8)
- Identify and classify all ICT-supported business functions, roles, and assets
- Map interdependencies among ICT assets and between entity and third-party providers
- Maintain updated network topology and data flow documentation
- Identify assets and services supporting critical/important functions
- Perform ICT risk assessments annually and after significant changes
Financial sector specificity: Financial entities must specifically map dependencies relevant to financial stability, payment systems, and settlement processes.
Protection and Prevention (Article 9)
Key requirements:
- Continuous monitoring and control of ICT system security
- Network connection resilience (redundant paths, failover)
- MFA for access to critical systems (Article 9(4))
- Strong authentication mechanisms
- ICT change management with security review
- Software patching policies with defined timelines
- Least privilege access control
Financial sector specificity: Payment systems, trading platforms, and settlement systems require enhanced protection measures due to real-time availability requirements and financial impact of disruption.
Detection (Article 10)
- Multiple layers of detection controls
- Automated alerting mechanisms
- Sufficient resources and capabilities for monitoring trading activities
- Detection mechanisms that enable multi-stage attack identification
- Log collection from all critical systems with adequate retention
Response and Recovery (Articles 11–12)
- ICT business continuity policy covering all critical functions
- Response and recovery plans tested annually
- Backup policies with:
- Defined scope, frequency, and retention
- Restoration on separate, independent systems
- Integrity verification after restoration
- Redundant ICT capacities with adequate resources
Financial sector specificity: Recovery objectives must consider market hours, settlement cycles, and regulatory reporting deadlines. Payment systems may require near-zero RPO.
Learning and Evolving (Article 13)
- Mandatory post-incident reviews for all significant incidents
- Vulnerability and threat intelligence gathering
- Annual ICT security awareness training for all staff (mandatory)
- ICT security awareness programs for non-ICT personnel
- Implementation of findings from testing and post-incident analysis
Communication (Article 14)
- Crisis communication plans for both internal and external stakeholders
- At least one designated spokesperson for external crisis communication
- Responsible disclosure policies for ICT-related incidents
- Coordination with competent authorities during incidents
---
Pillar 2: ICT-Related Incident Management
Articles 17–23 Implementation
Building the Incident Management Process (Article 17)
Step 1: Detection and identification
- Deploy early warning indicators across all critical systems
- SIEM integration with financial-sector-specific use cases
- Automated correlation of events from multiple sources
- Integration with threat intelligence feeds relevant to financial sector
Step 2: Classification (Article 18)
Classify every incident using all six criteria:
| Criterion | Data Required | Source |
|---|---|---|
| Clients/counterparts affected | Customer count, counterparty count | CRM, trading systems |
| Duration | Start time, resolution time | Incident management system |
| Geographic spread | Affected jurisdictions | Service monitoring, customer data |
| Data losses | Type and volume of data affected | Forensic analysis, DLP systems |
| Service criticality | Mapping of affected systems to business functions | Business service catalog |
| Economic impact | Direct costs, indirect costs, regulatory costs | Finance, risk management |
Step 3: Major incident determination
An incident is major when it meets thresholds defined in the RTS on incident classification criteria (delegated to ESAs). Key indicators:
- Significant number of clients unable to access financial services
- Extended duration affecting critical functions
- Cross-border impact affecting financial stability
- Loss or compromise of financially sensitive data
- Substantial economic impact (direct and indirect)
Step 4: Reporting timeline
Detection → Classification → Initial (4h) → Intermediate (72h) → Final (1 month)
| | | | |
ASAP ASAP after 4h from 72h from 1 month from
detection classification initial report intermediate report
(max 24h from
detection)Step 5: Client notification
- Determine if clients' financial interests are affected
- Notify without undue delay using appropriate channels
- Include description of incident, impact, and remedial measures
Reporting Templates
Initial notification content:
- Entity identification (name, LEI, entity type)
- Incident reference and classification date/time
- Brief description
- Affected services and functions
- Initial impact assessment
- Suspected cause (malicious/non-malicious)
Intermediate report content:
- Updated severity and impact assessment
- Root cause assessment (if determined)
- Recovery status and timeline
- Indicators of compromise
- Additional measures implemented
Final report content:
- Complete timeline
- Detailed root cause analysis
- Full impact assessment (financial, operational, data, reputational)
- Mitigation measures applied and ongoing
- Lessons learned and improvement actions
---
Pillar 3: Digital Operational Resilience Testing
Articles 24–27 Implementation
Testing Program Design
Program structure:
| Test Category | Frequency | Scope | Applicable Entities |
|---|---|---|---|
| Vulnerability scanning | Continuous/weekly | All systems | All |
| Network security assessment | Annual | Network infrastructure | All |
| Gap analysis | Annual | Controls vs requirements | All |
| Scenario-based testing | Annual | Critical functions | All |
| Penetration testing | Annual | Critical systems | All |
| Source code review | Per release/annual | In-house applications | All with in-house development |
| Open-source analysis | Per release/continuous | OSS dependencies | All using OSS |
| Physical security review | Annual | Data centers, offices | All |
| TLPT | Every 3 years | Critical functions (production) | Designated entities only |
Basic Testing Requirements (Article 25)
All financial entities must perform:
1. Vulnerability assessments and scans
- External vulnerability scanning at least weekly
- Internal scanning at least monthly
- Web application scanning for all public-facing applications
- Remediation tracking with defined SLAs
2. Network security assessments
- Architecture review and segmentation validation
- Firewall rule review and optimization
- Network traffic analysis for anomalies
- Wireless network security assessment
3. Gap analyses
- Compare current controls against DORA requirements
- Map to RTS/ITS technical standards
- Identify and prioritize remediation actions
4. Scenario-based tests
- Cyber attack scenarios (ransomware, APT, DDoS)
- Third-party provider failure scenarios
- Multi-event scenarios (cascading failures)
- Crisis communication exercises
- Include management body participation in major scenarios
5. Penetration testing
- External network penetration testing
- Web application penetration testing
- Internal network penetration testing
- Social engineering testing (phishing, vishing)
- Mobile application testing (if applicable)
6. Source code reviews
- SAST integrated into CI/CD pipelines
- Manual security code review for critical changes
- Open-source dependency analysis (SCA)
- License compliance checking for OSS
TLPT — Threat-Led Penetration Testing (Article 26)
Applicability: Only entities designated by competent authorities based on systemic importance and risk profile.
TLPT process based on TIBER-EU:
Phase 1: Scoping (4-6 weeks)
├── Identify critical/important functions
├── Map supporting ICT infrastructure
├── Define scope boundaries with competent authority
└── Management body approval
Phase 2: Threat Intelligence (4-6 weeks)
├── Sector-specific threat landscape analysis
├── Entity-specific threat assessment
├── Attack scenario development
└── TTP (Tactics, Techniques, Procedures) selection
Phase 3: Red Team Testing (8-12 weeks)
├── Execute realistic attack scenarios
├── Target production systems (live environment)
├── Multiple attack vectors
├── Document all activities and findings
└── Maintain strict operational security
Phase 4: Closure (4-6 weeks)
├── Red team debrief and reporting
├── Blue team review (detection and response assessment)
├── Purple team exercises (collaborative analysis)
├── Remediation plan development
├── Management body presentation
└── Summary report to competent authorityPurple teaming requirements:
- Red team shares TTPs, tools, and attack paths
- Blue team assesses detection coverage for each TTP
- Joint gap identification for detection and response
- Collaborative improvement recommendations
- Documentation of purple team findings and remediation
Key TLPT rules:
- Must be conducted by qualified external testers
- Internal testers may participate under specific conditions
- Tests must cover live production systems
- Results must be validated by the competent authority
- Remediation of findings is mandatory
- Summary must be shared with the competent authority
---
Pillar 4: ICT Third-Party Risk Management
Articles 28–44 Implementation
Lifecycle Management
Assessment → Contracting → Onboarding → Monitoring → Review → Exit/Renewal
| | | | | |
Due diligence DORA-compliant Security Ongoing Annual Exit
Risk assessment provisions integration SLA/security review strategy
Concentration Article 30 verification monitoring execution
risk checkPre-Engagement Assessment
Due diligence checklist:
- [ ] Provider financial stability assessment
- [ ] Provider security certifications (ISO 27001, SOC 2, etc.)
- [ ] Provider business continuity capabilities
- [ ] Geographic location of data processing and storage
- [ ] Sub-contractor chain transparency
- [ ] Regulatory compliance status
- [ ] Conflict of interest evaluation
- [ ] Concentration risk assessment
- [ ] Substitutability analysis
- [ ] Reference checks from other financial entity clients
Contract Management
Mandatory contractual provisions (Article 30):
For all ICT service arrangements: 1. Clear and complete service descriptions with SLAs 2. Data processing locations (including sub-processing) 3. Data availability, authenticity, integrity, and confidentiality measures 4. Quantitative and qualitative performance targets 5. Provider assistance obligations during ICT incidents 6. Cooperation requirements with competent and resolution authorities 7. Termination rights (including for performance failure and regulatory change) 8. Transition and exit provisions 9. TLPT participation requirements 10. Full audit and access rights (including on-site inspections) 11. Unrestricted right to monitor performance
For critical or important functions (Article 30(3), additional): 12. Detailed service level descriptions 13. Notice periods and reporting for material developments 14. Full access to performance and security data 15. Mandatory BCP testing by provider 16. ICT security awareness training for provider staff 17. Provider participation in entity's security testing
Ongoing Monitoring
- Track SLA compliance continuously
- Monitor provider security posture (certifications, incidents, vulnerabilities)
- Review sub-contractor changes
- Assess provider financial health annually
- Verify data processing location compliance
- Monitor regulatory changes affecting the arrangement
Exit Strategy Framework
For critical/important function arrangements:
1. Trigger conditions
- Provider material breach of contract
- Provider insolvency or financial instability
- Regulatory requirement to exit
- Concentration risk exceeding tolerance
- Provider designated as CTPP with restrictions
2. Transition planning
- Identify alternative providers or insourcing options
- Define data migration procedures
- Document system integration requirements
- Establish transition timeline (typically 6-18 months)
- Test transition procedures before they are needed
3. Data management
- Data extraction and portability requirements
- Data format and structure specifications
- Secure deletion verification from outgoing provider
- Continuity of data integrity during migration
---
Pillar 5: Information Sharing
Article 45 Implementation
Setting Up Sharing Arrangements
1. Identify relevant sharing communities
- Financial sector ISACs (e.g., FS-ISAC, European FI-ISAC)
- National CERT/CSIRT communities
- Sector-specific threat intelligence sharing groups
- Vendor-operated threat intelligence platforms
2. Establish governance
- Define what can be shared (IoCs, TTPs, strategic intelligence)
- Establish data handling procedures (TLP protocol)
- Ensure GDPR compliance for any personal data in threat data
- Protect business confidentiality and competition-sensitive information
3. Operationalize
- Integrate threat intelligence feeds into SIEM/SOC
- Establish processes to analyze and act on received intelligence
- Contribute back to the community with sanitized threat data
- Report participation to competent authority
---
ISO 27001 Control Mapping
Complete DORA to ISO 27001:2022 Mapping
| DORA Article | Topic | ISO 27001:2022 Controls |
|---|---|---|
| Art. 5 | Governance | Cl.5.1 (Leadership), Cl.5.2 (Policy), Cl.5.3 (Roles) |
| Art. 6 | ICT risk management framework | Cl.4.1-4.4 (Context), Cl.6.1 (Risk assessment), Cl.8 (Operation) |
| Art. 7 | ICT systems and tools | A.8.9 (Configuration), A.8.20 (Networks), A.8.26 (Application security) |
| Art. 8 | Identification | A.5.9-5.12 (Asset management), Cl.6.1.2 (Risk identification) |
| Art. 9 | Protection and prevention | A.5.15-5.18 (Access control), A.8.5 (Authentication), A.8.8 (Vulnerability), A.8.9 (Configuration), A.8.20-8.22 (Network security) |
| Art. 10 | Detection | A.8.15 (Logging), A.8.16 (Monitoring) |
| Art. 11 | Response and recovery | A.5.24-5.27 (Incident management), A.5.29-5.30 (Business continuity) |
| Art. 12 | Backup and restoration | A.8.13 (Backup), A.8.14 (Redundancy) |
| Art. 13 | Learning and evolving | Cl.10.1-10.2 (Improvement), A.5.27 (Lessons learned), A.6.3 (Awareness) |
| Art. 14 | Communication | A.5.5-5.6 (Communication), A.5.24 (IR planning) |
| Art. 17 | Incident management process | A.5.24 (IR planning), A.5.25 (Assessment and decision) |
| Art. 18 | Classification | A.5.25 (Assessment and decision) |
| Art. 19 | Reporting | A.5.26 (Response to incidents) |
| Art. 24-25 | Basic testing | Cl.9.1 (Monitoring), A.8.8 (Vulnerability management) |
| Art. 26 | TLPT | No direct equivalent (DORA-specific) |
| Art. 28 | Third-party risk | A.5.19-5.23 (Supplier management) |
| Art. 29 | Concentration risk | A.5.21 (ICT supply chain) |
| Art. 30 | Contractual provisions | A.5.20 (Addressing security in supplier agreements) |
| Art. 45 | Information sharing | A.5.7 (Threat intelligence) |
Gap Analysis for ISO 27001 Certified Organizations
Organizations with ISO 27001 certification typically have 50-65% of DORA requirements covered. Key gaps:
1. DORA-specific governance requirements — Management body must directly approve and oversee ICT risk management (not just delegate) 2. Incident reporting timelines — 4-hour initial notification is significantly more aggressive than ISO 27001 requirements 3. TLPT — No equivalent in ISO 27001; requires threat intelligence-based red teaming against production systems 4. ICT third-party register — DORA requires a structured register of all ICT arrangements with specific fields 5. Concentration risk — Explicit requirement to assess and manage ICT provider concentration 6. Exit strategies — Mandatory documented and tested exit strategies for critical function outsourcing 7. Financial sector specificity — Recovery objectives tied to market hours, settlement cycles, and financial stability considerations
---
RTS/ITS References
Key Regulatory Technical Standards
| RTS/ITS | Topic | DORA Article | Status |
|---|---|---|---|
| RTS on ICT risk management framework | Details of the ICT risk management framework | Art. 15 | Final |
| RTS on simplified ICT risk management | Simplified framework for certain entities | Art. 16(3) | Final |
| RTS on incident classification | Criteria for classifying major ICT incidents | Art. 18(3) | Final |
| ITS on incident reporting | Templates and procedures for reporting | Art. 20 | Final |
| RTS on TLPT | Threat-led penetration testing requirements | Art. 26(11) | Final |
| RTS on ICT third-party register | Format for the register of information | Art. 28(9) | Final |
| RTS on contractual provisions | Standard contractual clauses | Art. 30(4) | Final |
| RTS on oversight framework | Procedures for critical ICT provider oversight | Art. 41 | Final |
| RTS on subcontracting | Conditions for subcontracting critical functions | Art. 30(5) | Final |
Note: Consult the EBA, ESMA, and EIOPA websites for the latest versions of all RTS/ITS, as technical standards continue to be refined through the regulatory process.
---
Last Updated: March 2026 Regulation Reference: EU 2022/2554
DORA Third-Party Management Guide
Comprehensive guidance for managing ICT third-party risk under DORA (EU 2022/2554), including the ICT third-party register, contractual requirements, exit strategies, concentration risk assessment, and critical provider oversight.
---
Table of Contents
- ICT Third-Party Register
- Contractual Requirements Checklist
- Exit Strategy Framework
- Concentration Risk Assessment
- Critical Provider Oversight
---
ICT Third-Party Register
Overview
Article 28(3) of DORA requires financial entities to maintain a register of information relating to all contractual arrangements on the use of ICT services provided by ICT third-party service providers. This register must be available to competent authorities upon request.
Register Structure
The register must distinguish between arrangements that cover critical or important functions and those that do not.
Register Template
Section A: Entity Information
| Field | Description | Example |
|---|---|---|
| Entity legal name | Full legal name of the financial entity | ABC Bank AG |
| Entity LEI | Legal Entity Identifier | 529900ABCDEF123456XX |
| Entity type | Type per DORA Article 2(1) | Credit institution |
| Competent authority | Supervisory authority | BaFin / ECB |
| Group membership | Parent company and group structure | XYZ Financial Group |
| Register last updated | Date of last update | 2026-03-09 |
Section B: Arrangement Details (Per Third-Party Provider)
| Field | Description | Required |
|---|---|---|
| Provider identification | ||
| Provider legal name | Full legal name | Yes |
| Provider LEI | LEI (if available) | Yes (if available) |
| Provider registration country | Country of incorporation | Yes |
| Provider headquarters | Country of headquarters | Yes |
| Provider parent company | Parent entity (if part of group) | Yes (if applicable) |
| Service details | ||
| Service description | Detailed description of ICT services | Yes |
| Service type | Category: cloud, managed service, SaaS, infrastructure, etc. | Yes |
| Supports critical/important function | Yes/No | Yes |
| Critical function description | Business function supported (if critical) | If critical |
| Contract reference | Internal contract reference number | Yes |
| Contract start date | Effective date | Yes |
| Contract end date | Expiry/renewal date | Yes |
| Contract governing law | Applicable jurisdiction | Yes |
| Data processing | ||
| Data processed | Types of data processed by provider | Yes |
| Data storage location(s) | Countries where data is stored | Yes |
| Data processing location(s) | Countries where data is processed | Yes |
| Data transfer outside EU/EEA | Yes/No, and legal basis | Yes |
| Sub-contracting | ||
| Sub-contractors used | Yes/No | Yes |
| Sub-contractor details | Names, locations, services of key sub-contractors | If applicable |
| Sub-contractor notification | Notification procedure for sub-contractor changes | Yes |
| Risk assessment | ||
| Last risk assessment date | Date of most recent risk assessment | Yes |
| Risk rating | Low/Medium/High/Critical | Yes |
| Substitutability assessment | Easy/Moderate/Difficult/Very Difficult | Yes |
| Concentration risk flag | Yes/No | Yes |
| Exit strategy | ||
| Exit strategy documented | Yes/No | Yes (if critical) |
| Exit strategy last tested | Date of last test | If critical |
| Transition period | Required transition period | If critical |
| Alternative providers identified | Yes/No | If critical |
Register Maintenance
- Update frequency: Upon any change to arrangements, and at minimum quarterly
- Review cycle: Annual comprehensive review
- Reporting: Available to competent authority upon request
- Format: Structured data format as specified by ESA ITS
---
Contractual Requirements Checklist
All ICT Service Arrangements (Article 30(2))
| # | Requirement | Article | Status |
|---|---|---|---|
| 1 | Clear and complete description of all functions and ICT services to be provided | 30(2)(a) | [ ] |
| 2 | Locations where contracted/sub-contracted functions will be provided, and where data will be processed (including storage) | 30(2)(a) | [ ] |
| 3 | Provisions on availability, authenticity, integrity, and confidentiality of data (including personal data) | 30(2)(b) | [ ] |
| 4 | Provisions ensuring access, recovery, and return of data in case of insolvency, resolution, or discontinuation | 30(2)(c) | [ ] |
| 5 | Service level descriptions with quantitative and qualitative performance targets | 30(2)(d) | [ ] |
| 6 | Provisions on ICT third-party provider assistance in case of ICT incidents at no additional cost or at a cost determined ex ante | 30(2)(e) | [ ] |
| 7 | Obligation for ICT provider to cooperate with competent authorities and resolution authorities | 30(2)(f) | [ ] |
| 8 | Termination rights and related minimum notice periods | 30(2)(g) | [ ] |
| 9 | Conditions for participation in entity's ICT security awareness programs and digital operational resilience training | 30(2)(h) | [ ] |
Critical or Important Function Arrangements (Article 30(3), Additional)
| # | Requirement | Article | Status |
|---|---|---|---|
| 10 | Full service level descriptions with precise quantitative and qualitative targets | 30(3)(a) | [ ] |
| 11 | Notice periods and reporting obligations for developments with potential material impact | 30(3)(b) | [ ] |
| 12 | Obligation to implement and test business continuity plans and measures | 30(3)(c) | [ ] |
| 13 | Full access to performance and security data including independent audit reports | 30(3)(d) | [ ] |
| 14 | Participation in entity's TLPT (threat-led penetration testing) | 30(3)(e) | [ ] |
| 15 | Unrestricted right of the entity to monitor provider on an ongoing basis | 30(3)(f) | [ ] |
| 16 | Exit strategies including mandatory adequate transition period | 30(3)(g) | [ ] |
Audit and Access Rights
| # | Requirement | Detail |
|---|---|---|
| 17 | Full access rights to provider premises | Including data centers and relevant facilities |
| 18 | Full and unrestricted access to information | Documents, data, systems as needed for audit |
| 19 | Right to conduct on-site inspections | Of the ICT third-party service provider |
| 20 | Right to conduct off-site audits | Remote audit capabilities |
| 21 | Freedom to determine audit scope and frequency | No provider restrictions on audit activities |
| 22 | Right to use third-party auditors | Including pooled audit arrangements |
Sub-Contracting Requirements
| # | Requirement | Detail |
|---|---|---|
| 23 | Prior notification of sub-contracting | Provider must notify before engaging sub-contractors |
| 24 | Entity right to object | Right to object to sub-contracting that may impact services |
| 25 | Sub-contractor compliance | Sub-contractors must comply with same requirements |
| 26 | Chain supervision | Entity retains oversight throughout sub-contractor chain |
---
Exit Strategy Framework
When Exit Strategies Are Required
Exit strategies are mandatory for all arrangements covering critical or important functions (Article 28(8)).
Exit Strategy Components
1. Trigger Conditions
Define clear conditions that trigger exit strategy activation:
| Trigger | Description | Response Time |
|---|---|---|
| Material breach | Provider fails to meet SLAs or security requirements | Per contractual notice period |
| Insolvency | Provider enters insolvency or administration | Immediate activation |
| Regulatory action | Competent authority requires termination | Per regulatory timeline |
| Concentration risk | Concentration exceeds defined thresholds | Planned transition (6-18 months) |
| Security incident | Major security breach at provider | Assessed case-by-case |
| Strategic change | Entity strategy requires insourcing or provider change | Planned transition |
| CTPP designation | Provider designated as critical with restrictions | Per oversight framework |
2. Transition Planning
| Phase | Duration | Activities |
|---|---|---|
| Assessment | 2-4 weeks | Evaluate trigger, assess impact, activate exit governance |
| Planning | 4-8 weeks | Identify alternative, define migration plan, resource allocation |
| Preparation | 4-12 weeks | Set up alternative environment, test migration procedures |
| Migration | 8-24 weeks | Data migration, system integration, parallel run |
| Validation | 2-4 weeks | Verify functionality, performance, security in new environment |
| Cutover | 1-2 weeks | Switch production to new environment, decommission old |
| Post-transition | 4-8 weeks | Monitor stability, resolve issues, complete data deletion at old provider |
3. Data Management During Exit
- Data extraction: Define formats, methods, and timelines for data extraction from provider
- Data migration: Procedures for secure data transfer to alternative provider or in-house
- Data validation: Integrity verification of all migrated data
- Data deletion: Verifiable deletion of all entity data from outgoing provider
- Continuity: Ensure no data loss or service disruption during transition
4. Service Continuity During Transition
- Define minimum service levels during transition period
- Establish parallel-run requirements before cutover
- Plan for fallback if migration encounters issues
- Maintain provider cooperation requirements during transition
5. Testing Exit Strategies
Exit strategies must be tested to ensure they work:
| Test Type | Frequency | Scope |
|---|---|---|
| Tabletop exercise | Annual | Walk through exit scenarios with key stakeholders |
| Data extraction test | Annual | Extract sample data from provider, validate completeness |
| Alternative provider readiness | Biannual | Verify alternative provider can onboard within defined timeline |
| Full migration drill | Every 2-3 years | End-to-end migration test for most critical arrangements |
---
Concentration Risk Assessment
Overview
Article 29 requires financial entities to assess and manage risks arising from concentrating ICT services with a limited number of providers.
Assessment Methodology
Step 1: Map ICT Service Dependencies
For each ICT third-party provider, document:
- All services provided
- Business functions supported
- Data volumes and sensitivity
- Number of entity staff dependent on the service
- Availability requirements
Step 2: Identify Concentration Indicators
| Indicator | Assessment Questions |
|---|---|
| Provider concentration | How many critical functions depend on a single provider? Is there a single provider supporting > 30% of critical functions? |
| Technology concentration | Are multiple services built on the same underlying technology platform? |
| Geographic concentration | Are multiple services hosted in the same geographic location or jurisdiction? |
| Sub-contractor concentration | Do multiple providers rely on the same underlying sub-contractors? |
| Sector concentration | Does the provider serve a large proportion of the financial sector (systemic provider)? |
| Substitutability | How easily can the provider be replaced? What is the switching timeline and cost? |
| Vendor lock-in | Are proprietary formats, APIs, or technologies creating lock-in? |
| Single points of failure | Would provider failure cause cascading failures across multiple functions? |
Step 3: Concentration Risk Scoring
| Risk Level | Score | Criteria |
|---|---|---|
| Low | 1 | Single non-critical function, easily substitutable, multiple alternatives |
| Medium | 2 | Multiple functions or one important function, moderate switching effort |
| High | 3 | Critical function, limited alternatives, significant switching effort (> 6 months) |
| Critical | 4 | Multiple critical functions, very few alternatives, provider potentially systemic, switching > 12 months |
Step 4: Mitigation Strategies
| Risk Level | Mitigation Actions |
|---|---|
| Low | Monitor, review annually |
| Medium | Develop contingency plans, identify alternative providers |
| High | Implement multi-vendor strategy, test exit procedures, enhance contractual protections |
| Critical | Active multi-vendor diversification, regular exit testing, board-level reporting, competent authority engagement |
Step 5: Reporting
- Include concentration risk assessment in the ICT risk management framework
- Report concentration risk to management body at least annually
- Update assessment when entering new ICT arrangements or upon material changes
- Report to competent authority upon request
Concentration Risk Register
| Provider | Services | Critical Functions | Substitutability | Concentration Score | Mitigation |
|---|---|---|---|---|---|
| Provider A | Cloud infrastructure | 3 of 5 | Difficult | Critical (4) | Multi-cloud strategy in progress |
| Provider B | Payment processing | 1 of 5 | Moderate | High (3) | Alternative provider identified |
| Provider C | Email/collaboration | 0 of 5 | Easy | Low (1) | Standard monitoring |
---
Critical Provider Oversight
Overview
Articles 31–44 establish an Oversight Framework for critical ICT third-party service providers (CTPPs). This framework is unique to DORA and has no equivalent in other cybersecurity regulations.
Designation Process
The ESAs designate CTPPs based on:
| Criterion | Description |
|---|---|
| Systemic impact | Impact that a failure or operational outage would have on financial entities |
| Systemic character | Systemic character or importance of financial entities relying on the provider |
| Dependency degree | Degree to which financial entities depend on the provider's services |
| Substitutability | Degree of substitutability of the ICT third-party service provider |
| Cross-border reach | Number of Member States in which the provider operates or provides services |
Lead Overseer
One of the three ESAs (EBA, ESMA, EIOPA) is assigned as Lead Overseer for each designated CTPP based on the types of financial entities primarily using the provider.
Oversight Powers
The Lead Overseer may:
| Power | Description |
|---|---|
| Request information | Any information and documentation necessary for oversight duties |
| General investigations | Examination of records, data, procedures, and any material |
| On-site inspections | Inspect the CTPP's premises, including data centers and sub-contractor facilities |
| Issue recommendations | Formal recommendations on ICT security, quality measures, resilience, and more |
| Periodic penalty payments | For non-compliance with recommendations: up to 1% of average daily worldwide turnover, for up to 6 months |
Financial Entity Obligations Regarding CTPPs
If your ICT provider is designated as a CTPP:
1. Verify compliance — Confirm that your provider is cooperating with the Lead Overseer 2. Review contracts — Ensure contracts contain all DORA-mandated provisions, including cooperation with authorities 3. Monitor oversight outcomes — Track any recommendations issued to your CTPP by the Lead Overseer 4. Assess impact — Evaluate whether oversight actions affect the services you receive 5. Exit readiness — Maintain tested exit strategies in case oversight actions require transition 6. Report — Report material developments in the CTPP relationship to your competent authority
Non-EU ICT Third-Party Providers
CTPPs established in third countries (non-EU) must:
- Establish a subsidiary within the Union within 12 months of designation
- The subsidiary is subject to the full oversight framework
- Failure to establish may result in the Lead Overseer recommending that financial entities suspend or terminate arrangements
---
Last Updated: March 2026 Regulation Reference: EU 2022/2554, Articles 28-44
DORA Five Pillars — Article-by-Article Detail
Per-pillar requirements with the governing DORA articles, incident classification and reporting deadlines, testing obligations (including TLPT), third-party contractual provisions, and information-sharing rules. Read this when assessing a specific pillar or mapping a requirement to its article.
---
Pillar 1: ICT Risk Management (Chapter II, Articles 5–16)
The cornerstone of DORA. Financial entities must establish a comprehensive ICT risk management framework.
Governance and Organization (Article 5)
The management body bears ultimate responsibility for ICT risk management:
- Define, approve, oversee, and be responsible for the implementation of the ICT risk management framework
- Define appropriate risk tolerance level for ICT risk
- Approve the digital operational resilience strategy
- Allocate adequate budget for ICT risk management
- Approve and review the ICT business continuity policy and ICT response and recovery plans
- Be informed at least once a year on findings of ICT risk reviews
Organizational requirements:
- Designate an ICT risk management function (second line of defense)
- Ensure adequate separation of ICT risk management, control, and internal audit functions
- Establish clear roles and responsibilities for all ICT-related functions
- Implement reporting lines ensuring the management body receives timely information
ICT Risk Management Framework (Article 6)
Entities must establish, maintain, and implement a sound, comprehensive, and well-documented ICT risk management framework that:
- Ensures a high level of digital operational resilience
- Is documented and reviewed at least annually (or after major ICT incidents)
- Includes a digital operational resilience strategy
- Defines how the framework supports the entity's business strategy
- Sets clear information security objectives
- Defines ICT risk tolerance levels
- Commits to a continuous improvement process
Digital Operational Resilience Strategy must include:
- Methods for addressing ICT risk
- Explanation of how the ICT risk management framework supports the business strategy
- ICT risk tolerance level
- Key information security objectives
- Overview of ICT reference architecture and changes needed
- Mechanisms for detecting ICT anomalies
- ICT third-party risk strategy
- Digital operational resilience testing approach
- Communication strategy for incident disclosure
ICT Systems, Protocols, and Tools (Article 7)
Requirements for ICT systems and infrastructure:
- Use and maintain updated ICT systems, protocols, and tools that are adequate to support critical operations
- Monitor effectiveness of ICT systems
- Identify all sources of ICT risk (including environmental risks and physical threats)
- Ensure appropriate network security management
- Implement mechanisms for detecting anomalous activities
Identification (Article 8)
- Identify, classify, and adequately document all ICT-supported business functions, information assets, and ICT assets
- Identify all sources of ICT risk, particularly cyber threats
- Map the interconnections and interdependencies with ICT third-party providers
- Perform ICT risk assessments at least annually (and after major changes)
- Identify assets and systems critical to business operations
Protection and Prevention (Article 9)
- Implement ICT security policies, procedures, protocols, and tools
- Continuously monitor and control the security and functioning of ICT systems
- Design network connection resilience mechanisms
- Deploy strong authentication mechanisms (MFA, Article 9(4))
- Implement ICT change management policies
- Apply software patching policies
- Implement data and system access policies based on least privilege
Detection (Article 10)
- Put in place mechanisms to promptly detect anomalous activities
- Detect network performance issues and ICT-related incidents
- Deploy multiple layers of controls (including automated alerting)
- Implement detection mechanisms that enable a fast response
- Allocate sufficient resources for monitoring trading activities
Response and Recovery (Article 11)
- Implement a comprehensive ICT business continuity policy
- Develop ICT response and recovery plans
- Activate response plans upon identification of ICT incidents
- Estimate preliminary impacts, damages, and losses
- Set communication and crisis management actions
- Execute ICT response and recovery procedures as appropriate
Specific requirements:
- Record all ICT-related incidents and significant cyber threats
- Activate containment measures and restoration of operations
- Implement backup and restoration policies and procedures
- When restoring data from backups, maintain the integrity and confidentiality of data
Backup and Restoration (Article 12)
- Establish backup policies specifying scope, frequency, and retention
- Restore backup data on separate ICT systems (not directly connected to source)
- Regularly test backup procedures and restoration capabilities
- When restoring data, ensure integrity checks are performed
- Maintain redundant ICT capacities equipped with sufficient resources
Learning and Evolving (Article 13)
- Gather information on vulnerabilities, cyber threats, and ICT-related incidents
- Review ICT-related incidents after recovery (post-incident reviews)
- Implement findings of post-incident reviews and digital operational resilience testing
- Monitor effectiveness of the ICT risk management framework
- Deliver mandatory annual ICT security awareness training for all staff
- Develop ICT security awareness programs for non-ICT staff
Communication (Article 14)
- Develop crisis communication plans for internal and external stakeholders
- Designate at least one spokesperson to communicate externally during incidents
- Define communication policies for responsible disclosure of ICT-related incidents
- Inform relevant clients and the public when appropriate
---
Pillar 2: ICT-Related Incident Management (Chapter III, Articles 17–23)
Incident Management Process (Article 17)
Financial entities must:
- Define, establish, and implement an ICT-related incident management process
- Put in place early warning indicators to trigger detection
- Establish procedures to identify, track, log, categorize, and classify ICT-related incidents
- Assign roles and responsibilities for different incident types/scenarios
- Define plans for communication to staff, external stakeholders, media, and competent authorities
Classification of ICT-Related Incidents (Article 18)
Entities must classify incidents based on these criteria:
| Criterion | Description |
|---|---|
| Number of clients/counterparts affected | Scale of impact on external parties |
| Duration | Length of the incident |
| Geographic spread | Jurisdictions and Member States affected |
| Data losses | Availability, authenticity, integrity, or confidentiality of data |
| Criticality of services affected | Impact on critical or important functions |
| Economic impact | Direct and indirect financial costs |
Major incident determination: An incident is classified as major if it meets the thresholds defined in the RTS on incident classification.
Reporting Obligations (Article 19)
| Stage | Deadline | Content |
|---|---|---|
| Initial notification | Within 4 hours of classifying as major (or 24 hours from detection) | Basic facts, initial classification, estimated impact |
| Intermediate report | Within 72 hours of initial notification | Updated information, severity, root cause assessment, recovery status |
| Final report | Within 1 month of intermediate report | Root cause analysis, complete impact assessment, mitigation measures, lessons learned |
Additional requirements:
- Entities must inform their clients without undue delay about major ICT-related incidents that affect their financial interests
- Entities must report to the competent authority using specified templates
- Competent authorities may request additional information at any time
Voluntary Reporting (Article 19(2))
Entities may voluntarily report:
- Significant cyber threats (even if they have not resulted in an incident)
- Near-misses that could have caused a major incident
Centralized Reporting (Article 20)
The ESAs develop common templates and procedures for incident reporting to reduce burden and ensure consistency.
---
Pillar 3: Digital Operational Resilience Testing (Chapter IV, Articles 24–27)
General Requirements (Article 24)
All financial entities must establish, maintain, and review a digital operational resilience testing program as an integral part of their ICT risk management framework.
Basic Testing (Article 25)
All entities must perform, at a minimum:
| Test Type | Frequency | Description |
|---|---|---|
| Vulnerability assessments and scans | Regular (at least annually) | Automated and manual vulnerability identification |
| Open-source analyses | Regular | Assessment of open-source software risks |
| Network security assessments | Annual minimum | Network architecture, configuration, traffic analysis |
| Gap analyses | Annual minimum | Comparison of current controls vs requirements |
| Physical security reviews | Periodic | Data center, office, and facility security |
| Questionnaires and scanning software | Regular | Compliance checking and configuration verification |
| Source code reviews | Where applicable | Security-focused code review for in-house applications |
| Scenario-based tests | Annual | Tabletop exercises, simulations |
| Compatibility testing | As needed | Testing for system updates and changes |
| Performance testing | Regular | Load and stress testing for critical systems |
| End-to-end testing | Regular | Testing of complete business process chains |
| Penetration testing | Annual minimum | Simulated attack testing |
Advanced Testing — Threat-Led Penetration Testing (Article 26)
Applicable to: Entities identified by competent authorities based on systemic importance, ICT risk profile, and criticality of services.
TLPT requirements:
- Based on the TIBER-EU framework
- Covers critical or important functions mapped to services, business processes, and ICT
- Conducted at least every 3 years
- Scope is determined by the financial entity, validated by the competent authority
- Must include live production systems
- The management body must approve the scope
TLPT methodology:
1. Scoping phase: Identify critical functions and supporting ICT infrastructure 2. Threat intelligence phase: Gather threat intelligence specific to the entity's sector and geography 3. Red team phase: Execute realistic attack scenarios against production systems 4. Closure phase: Report findings, remediation planning 5. Purple team phase: Collaborative exercises between red team (attackers) and blue team (defenders)
Key rules:
- Conducted by external testers with appropriate qualifications and independence
- Internal testers may participate under specific conditions
- Test results must be validated by competent authority
- Remediation plans must be produced and implemented
- Summary results must be shared with the competent authority
Purple Teaming
DORA introduces purple teaming as a key element:
- Collaborative exercise between red team and blue team
- Red team shares tactics, techniques, and procedures (TTPs) used
- Blue team reviews detection and response capabilities
- Joint identification of gaps and improvement areas
- Mandatory as part of the TLPT closure phase
---
Pillar 4: ICT Third-Party Risk Management (Chapter V, Articles 28–44)
General Principles (Article 28)
Financial entities must:
- Manage ICT third-party risk as an integral component of ICT risk management
- Be responsible at all times for compliance, regardless of outsourcing
- Define strategy on ICT third-party risk (part of the digital resilience strategy)
- Maintain and update a register of information relating to all contractual arrangements on ICT services
Preliminary Assessment (Article 28(4))
Before entering into a contractual arrangement, entities must:
- Identify and assess all relevant risks (including concentration risk)
- Assess whether the arrangement covers critical or important functions
- Conduct appropriate due diligence on prospective ICT third-party providers
- Identify and assess conflicts of interest
- Verify the ICT third-party provider's ability to comply with applicable regulations
Key Contractual Provisions (Article 30)
Contracts with ICT third-party service providers must include:
| Provision | Description |
|---|---|
| Clear service descriptions | Complete description of all services, including SLAs |
| Location requirements | Where data will be processed and stored, including sub-processing |
| Data protection provisions | Measures ensuring availability, authenticity, integrity, and confidentiality |
| Service level commitments | Quantitative and qualitative performance targets |
| Assistance obligations | ICT provider must assist with ICT incidents affecting the entity |
| Cooperation with authorities | Provider must cooperate with competent authorities and resolution authorities |
| Termination rights | Clear termination rights, including for performance failures and regulatory changes |
| Transition and exit provisions | Adequate transition periods and assistance for orderly transfer of services |
| Participation in TLPT | ICT provider must participate in entity's threat-led penetration testing |
| Audit rights | Full access and audit rights, including on-site inspections of the ICT provider |
| Unrestricted right to monitor | Right to continuously monitor provider's performance |
| Exit strategies | Mandatory exit strategies for critical or important function outsourcing |
For critical or important functions, additional contractual requirements apply:
- More detailed service level descriptions
- Notice periods and reporting obligations for material developments
- Full access to performance and security data
- ICT provider must implement and test business continuity plans
- Provider must provide staff training on ICT security awareness
Register of ICT Third-Party Arrangements (Article 28(3))
Entities must maintain a register containing:
- All contractual arrangements with ICT third-party providers
- Distinction between critical/important and non-critical functions
- Entity identification details (LEI, type, group structure)
- Service details (type, start date, end date, governing law, data processing locations)
- Sub-contractor chain information
- Exit strategy information
The register must be reported to competent authorities upon request.
Exit Strategies (Article 28(8))
For critical or important functions, entities must:
- Develop exit strategies that are comprehensive, documented, and tested
- Ensure sufficient transition arrangements that avoid disruption or degradation of services
- Consider alternative solutions and transition plans
- Enable recovery of data and applications
Oversight Framework for Critical ICT Third-Party Providers (Articles 31–44)
The ESAs designate CTPPs and assign a Lead Overseer. The oversight framework includes:
- Direct supervision powers over CTPPs
- On-site inspections of CTPPs
- Power to request information and issue recommendations
- Annual oversight plans
- CTPPs must cooperate with the Lead Overseer
- Non-compliance may result in periodic penalty payments
Concentration Risk (Article 29)
Entities must:
- Identify and assess risks arising from concentrating ICT service arrangements on a single provider
- Assess whether planned ICT outsourcing leads to material concentration risk
- Consider the substitutability of the ICT third-party provider
- Develop multi-vendor strategies where appropriate
---
Pillar 5: Information Sharing (Chapter VI, Article 45)
Voluntary Cyber Threat Intelligence Sharing
Financial entities may exchange amongst themselves cyber threat intelligence information including:
- Indicators of compromise (IoCs)
- Tactics, techniques, and procedures (TTPs)
- Cybersecurity alerts and configuration tools
- Tools and methods for detecting cyberattacks
Requirements for Sharing Arrangements
- Sharing must aim to enhance digital operational resilience
- Must be within trusted communities of financial entities
- Arrangements must respect business confidentiality and data protection
- Must protect personal data in accordance with GDPR
- Sharing may be enabled through information sharing and analysis centers (ISACs)
Notification Requirements
Entities must notify competent authorities of their participation in information-sharing arrangements.
DORA Framework Overview, Scope & Enforcement
Background on the regulation, its scope across financial entities and CTPPs, and the penalty regime. Read this when establishing whether DORA applies, how it relates to other frameworks, or what enforcement exposure looks like.
---
DORA Overview
The Digital Operational Resilience Act (Regulation EU 2022/2554) establishes a comprehensive framework for ICT risk management in the EU financial sector. It entered into force on January 16, 2023, and has been applicable since January 17, 2025.
Key objectives:
- Ensure financial entities can withstand, respond to, and recover from all types of ICT-related disruptions and threats
- Harmonize ICT risk management requirements across the financial sector
- Establish an oversight framework for critical ICT third-party service providers
- Promote information sharing on cyber threats within the financial sector
Legal nature: Unlike NIS2 (a directive requiring national transposition), DORA is a regulation — directly applicable in all EU Member States without transposition.
Relationship to other frameworks:
| Framework | Relationship |
|---|---|
| NIS2 Directive | DORA is lex specialis (specific law) for financial sector; NIS2 applies residually |
| GDPR | DORA complements GDPR for security of ICT systems processing personal data |
| EBA Guidelines on ICT | DORA supersedes prior EBA guidelines on ICT and security risk management |
| PSD2 | DORA enhances and extends PSD2 operational resilience requirements |
| MiCA | Crypto-asset service providers are in scope of both MiCA and DORA |
| ISO 27001 | DORA requirements map to ISO 27001 controls; certification supports compliance |
Regulatory Technical Standards (RTS) and Implementing Technical Standards (ITS):
DORA is supplemented by detailed RTS/ITS developed by the European Supervisory Authorities (ESAs: EBA, ESMA, EIOPA). Key RTS/ITS cover:
- ICT risk management framework details
- Incident classification criteria and reporting formats
- Threat-led penetration testing (TLPT) methodology
- ICT third-party register format
- Oversight framework procedures
---
Scope
DORA applies to 20 types of financial entities and their critical ICT third-party service providers.
Financial Entities in Scope
| # | Entity Type | Examples |
|---|---|---|
| 1 | Credit institutions | Banks, building societies |
| 2 | Payment institutions | Payment service providers |
| 3 | Account information service providers | Open banking providers |
| 4 | Electronic money institutions | E-money issuers |
| 5 | Investment firms | Broker-dealers, portfolio managers |
| 6 | Crypto-asset service providers | Crypto exchanges, custodians |
| 7 | Issuers of asset-referenced tokens | Stablecoin issuers |
| 8 | Central securities depositories | CSDs |
| 9 | Central counterparties | CCPs |
| 10 | Trading venues | Stock exchanges, MTFs, OTFs |
| 11 | Trade repositories | Transaction reporting repositories |
| 12 | Managers of alternative investment funds | Hedge fund managers, PE managers |
| 13 | Management companies (UCITS) | Mutual fund managers |
| 14 | Data reporting service providers | ARMs, APAs |
| 15 | Insurance and reinsurance undertakings | Insurance companies |
| 16 | Insurance intermediaries | Insurance brokers (except SMEs) |
| 17 | Institutions for occupational retirement provision | Pension funds |
| 18 | Credit rating agencies | S&P, Moody's, Fitch, etc. |
| 19 | Administrators of critical benchmarks | LIBOR/EURIBOR administrators |
| 20 | Crowdfunding service providers | Investment crowdfunding platforms |
Proportionality Principle
DORA applies proportionately based on the entity's:
- Size and overall risk profile
- Nature, scale, and complexity of services, activities, and operations
- Systemic importance
Simplified ICT risk management framework is available for:
- Small and non-interconnected investment firms
- Payment institutions exempted under PSD2
- Institutions exempted under Directive 2013/36/EU
- Electronic money institutions exempted under EMD2
- Small IORPs
Critical ICT Third-Party Service Providers
The ESAs designate critical ICT third-party service providers (CTPPs) based on:
- Systemic impact of the services on financial entities
- Systemic character or importance of financial entities relying on the provider
- Degree of substitutability of the provider
- Number of Member States in which the provider operates
CTPPs are subject to the Direct Oversight Framework by the Lead Overseer (one of the ESAs).
---
Penalties and Enforcement
Administrative Penalties
DORA delegates penalty-setting to Member States and competent authorities. The regulation empowers authorities to impose:
- Administrative penalties and remedial measures proportionate to the infringement
- Periodic penalty payments to compel compliance
- Public statements identifying the entity and the nature of the infringement
- Orders to cease conduct and to desist from repetition
- Temporary or permanent prohibition of certain activities
Enforcement Powers
Competent authorities have powers to:
- Require access to any document, data, or information
- Conduct on-site inspections
- Require remediation within a specified timeframe
- Suspend or restrict activities
- Impose administrative penalties
CTPP Oversight Penalties
For critical ICT third-party service providers:
- The Lead Overseer may issue recommendations
- Non-compliance with recommendations may lead to periodic penalty payments
- Maximum penalty: 1% of average daily worldwide turnover per day, for up to 6 months
DORA Implementation Roadmap, Infrastructure Checks & Troubleshooting
The 9-month implementation plan, quick wins, infrastructure verification checklists, the troubleshooting table for the assessment tools, and the success criteria. Read this when planning a DORA program, validating technical resilience controls, or diagnosing unexpected assessment results.
---
DORA Implementation Roadmap
9-Month Plan
| Month | Phase | Key Activities |
|---|---|---|
| 1 | Assessment | Map ICT risk landscape, identify applicable DORA requirements, gap analysis against 5 pillars |
| 2 | Framework Design | Design ICT risk management framework, define governance structure, establish policies |
| 3 | ICT Risk Management | Implement risk identification, protection, detection, and response procedures |
| 4 | Incident Management | Deploy incident classification, establish reporting procedures, prepare templates |
| 5 | Third-Party Risk | Build ICT third-party register, assess critical providers, update contracts |
| 6 | Third-Party Risk (cont.) | Complete contractual updates, develop exit strategies, assess concentration risk |
| 7 | Resilience Testing | Design testing program, execute basic tests (vulnerability scanning, gap analysis) |
| 8 | Advanced Testing | Conduct penetration testing, scenario-based exercises, TLPT preparation (if applicable) |
| 9 | Validation | Internal audit, remediation, management body reporting, continuous improvement setup |
Quick Wins (Month 1–2)
1. Establish ICT risk management governance (management body accountability) 2. Begin building the ICT third-party register 3. Review and update incident response procedures for DORA timelines (4h/72h/1mo) 4. Ensure management body receives regular ICT risk reporting 5. Verify MFA deployment for critical systems 6. Document existing BCP/DRP for ICT systems
---
Infrastructure Checks
ICT Asset Inventory
- Maintain a comprehensive register of all ICT assets (hardware, software, network, cloud)
- Classify assets by criticality and map to business functions
- Include dependencies on ICT third-party providers
- Update inventory upon any changes to ICT infrastructure
Network Resilience Testing
- Annual network security assessments
- Network architecture review and segmentation validation
- DDoS resilience testing for public-facing services
- Redundant network path verification
- Network monitoring and anomaly detection validation
Data Center Redundancy
- Active-active or active-passive redundancy for critical systems
- Geographic separation of primary and secondary data centers
- Automated failover mechanisms tested regularly
- Power and cooling redundancy verification
- Physical security assessment of data centers
Business Continuity Testing
- Annual BCP exercise for all critical business functions
- ICT disaster recovery testing covering failover and restoration
- Scenario-based testing (cyber incident, natural disaster, provider failure)
- Recovery time and recovery point validation against targets
- Post-exercise improvement tracking
Disaster Recovery Capabilities
- Documented DRP for all critical ICT systems
- Backup restoration tested on separate environments
- Immutable backup storage for ransomware resilience
- Communication plans for disaster scenarios
- Coordination procedures with ICT third-party providers
Third-Party Dependency Mapping
- Map all ICT third-party providers to business functions
- Identify critical dependencies and single points of failure
- Assess concentration risk across providers
- Document sub-contractor chains for critical services
- Verify provider business continuity capabilities
---
Troubleshooting
| Problem | Possible Cause | Resolution |
|---|---|---|
| Readiness score unexpectedly low on Pillar 1 (ICT Risk Management) | Management body has not formally approved the ICT risk management framework | Ensure the management body signs off on the framework, digital resilience strategy, and ICT risk tolerance level per Article 5; document board meeting minutes |
| Incident classification tool returns "major" for minor service interruptions | Threshold parameters set too conservatively or default values used | Review classification criteria against actual RTS thresholds; adjust --clients-affected, --duration-hours, and --economic-impact inputs to match your entity's context |
| Third-party register incomplete despite significant outsourcing | ICT service arrangements not systematically tracked or sub-contractor chains undocumented | Inventory all contractual ICT arrangements; use the register template from references/dora-third-party-management.md; include sub-processing chains and data processing locations |
| Resilience testing program scored as non-compliant | Only basic vulnerability scanning performed; no scenario-based or penetration testing | Design a comprehensive testing program per Article 25 covering all 12 test types; schedule annual penetration testing and scenario-based exercises; plan for TLPT if designated by competent authority |
| Pillar 5 (Information Sharing) shows zero compliance | Organization has not joined any cyber threat intelligence sharing arrangement | Evaluate participation in an ISAC (Information Sharing and Analysis Center) relevant to your financial sub-sector; notify competent authority of participation per Article 45 |
| Exit strategies missing for critical ICT third-party providers | Contracts lack termination, transition, and data recovery provisions | Update all contracts for critical functions to include comprehensive exit strategies per Article 28(8); test transition plans and document alternative provider options |
| Proportionality assessment unclear | Organization unsure whether simplified framework applies | Assess entity size, risk profile, and systemic importance per DORA proportionality principle; small and non-interconnected firms may qualify for simplified requirements |
---
Success Criteria
- Overall readiness score of 75+ across all 5 pillars -- indicating the organization can demonstrate compliance with core DORA requirements to competent authorities
- ICT risk management framework formally approved by the management body -- with documented digital operational resilience strategy, risk tolerance levels, and annual review cycle
- Incident classification and reporting procedures operational -- with capability to submit initial notification within 4 hours of major incident classification and intermediate report within 72 hours
- Complete ICT third-party register maintained -- covering all contractual arrangements, distinguishing critical/important functions, with entity identification, service details, and sub-contractor chains
- Resilience testing program covers all 12 required test types -- with annual penetration testing, scenario-based exercises, and TLPT preparation (if applicable) per Articles 24-27
- Exit strategies documented and tested for all critical ICT providers -- with comprehensive transition arrangements, alternative provider identification, and data recovery procedures
- Annual ICT security awareness training delivered to all staff -- with records maintained and specialized training for ICT and security personnel per Article 13
DORA Tools — Usage & CLI Reference
Full command examples, feature lists, and flag-by-flag reference for the two Python scripts (dora_readiness_checker.py, dora_incident_classifier.py). Read this when running an assessment, classifying an incident, or scripting the tools into automation.
---
DORA Readiness Checker
Assesses organizational readiness against all 5 DORA pillars with per-pillar scoring.
# Generate assessment template
python scripts/dora_readiness_checker.py --template > assessment.json
# Run full readiness assessment
python scripts/dora_readiness_checker.py --config assessment.json
# Assess specific pillars only
python scripts/dora_readiness_checker.py --config assessment.json --pillars 1 3 4 --json
# Generate report with JSON output
python scripts/dora_readiness_checker.py --config assessment.json --output readiness_report.json --jsonFeatures:
- Assessment against all 5 DORA pillars
- Per-pillar readiness scoring (0–100)
- Overall readiness score
- ICT risk management framework validation
- Incident management readiness check
- Third-party risk management assessment
- Resilience testing program evaluation
- Gap analysis with prioritized remediation recommendations
---
DORA Incident Classifier
Classifies ICT incidents per DORA criteria and determines reporting obligations.
# Classify an incident interactively
python scripts/dora_incident_classifier.py --clients-affected 5000 --duration-hours 4 --data-loss yes --services-critical yes --economic-impact 500000
# Classify from JSON input
python scripts/dora_incident_classifier.py --config incident.json --json
# Generate incident notification template
python scripts/dora_incident_classifier.py --config incident.json --generate-template --output notification.jsonFeatures:
- Incident classification per Article 18 criteria
- Major incident determination
- Reporting deadline calculation (4h initial, 72h intermediate, 1 month final)
- Incident notification template generation
- Severity scoring and impact assessment
---
Tool Reference
dora_readiness_checker.py
Assesses organizational readiness against all 5 DORA pillars with per-pillar scoring and gap analysis.
| Flag | Required | Description |
|---|---|---|
--config <file> | Yes (unless --template) | Path to JSON assessment configuration file |
--template | No | Generate blank assessment template to stdout |
--pillars <nums> | No | Assess specific pillars only (e.g., --pillars 1 3 4) |
--json | No | Output results in JSON format for automation |
--output <file> | No | Export report to specified file path |
Output: Overall readiness score (0-100), per-pillar readiness scores, ICT risk management framework validation, incident management readiness, third-party risk assessment, resilience testing evaluation, and prioritized remediation recommendations.
dora_incident_classifier.py
Classifies ICT incidents per DORA Article 18 criteria and determines reporting obligations.
| Flag | Required | Description |
|---|---|---|
--config <file> | No | Path to JSON incident description file |
--template | No | Generate blank incident input template to stdout |
--clients-affected <num> | No | Number of clients/financial counterparts affected |
--duration-hours <num> | No | Duration of the incident in hours |
--data-loss <yes/no> | No | Whether data loss occurred (availability, integrity, or confidentiality) |
--services-critical <yes/no> | No | Whether critical or important functions were affected |
--economic-impact <num> | No | Estimated economic impact in EUR |
--json | No | Output results in JSON format |
--generate-template | No | Generate incident notification template for competent authority |
--output <file> | No | Export report or template to specified file path |
Output: Incident severity scoring per Article 18 criteria, major incident determination, reporting deadline calculation (initial 4h, intermediate 72h, final 1 month), and notification template generation.
#!/usr/bin/env python3
"""
DORA Incident Classifier
Classifies ICT-related incidents per DORA (EU 2022/2554) Article 18 criteria,
determines whether an incident qualifies as "major," calculates reporting
deadlines, and generates incident notification templates.
Usage:
python dora_incident_classifier.py --clients-affected 5000 --duration-hours 4 --data-loss yes --services-critical yes --economic-impact 500000
python dora_incident_classifier.py --config incident.json --json
python dora_incident_classifier.py --config incident.json --generate-template --output notification.json
python dora_incident_classifier.py --template > incident_input.json
"""
import argparse
import json
import sys
from datetime import datetime, timedelta
from typing import Any, Dict, List, Optional
# --- DORA Incident Classification Criteria (Article 18) ---
CLASSIFICATION_CRITERIA = {
"clients_affected": {
"name": "Number of Clients/Financial Counterparts Affected",
"article": "Article 18(1)(a)",
"thresholds": {
"low": {"max": 100, "score": 1, "label": "Low (< 100 clients)"},
"medium": {"max": 1000, "score": 2, "label": "Medium (100–1,000 clients)"},
"high": {"max": 10000, "score": 3, "label": "High (1,000–10,000 clients)"},
"very_high": {"max": float("inf"), "score": 4, "label": "Very High (> 10,000 clients)"},
},
},
"duration_hours": {
"name": "Duration of the Incident",
"article": "Article 18(1)(b)",
"thresholds": {
"low": {"max": 2, "score": 1, "label": "Low (< 2 hours)"},
"medium": {"max": 12, "score": 2, "label": "Medium (2–12 hours)"},
"high": {"max": 24, "score": 3, "label": "High (12–24 hours)"},
"very_high": {"max": float("inf"), "score": 4, "label": "Very High (> 24 hours)"},
},
},
"geographic_spread": {
"name": "Geographic Spread",
"article": "Article 18(1)(c)",
"levels": {
"local": {"score": 1, "label": "Local (single office/region)"},
"national": {"score": 2, "label": "National (single Member State)"},
"eu_multiple": {"score": 3, "label": "EU Multiple (2+ Member States)"},
"global": {"score": 4, "label": "Global (beyond EU)"},
},
},
"data_loss": {
"name": "Data Losses (Availability, Authenticity, Integrity, Confidentiality)",
"article": "Article 18(1)(d)",
"levels": {
"none": {"score": 0, "label": "No data loss"},
"availability": {"score": 2, "label": "Availability impact (service disruption)"},
"integrity": {"score": 3, "label": "Integrity compromise (data modified/corrupted)"},
"confidentiality": {"score": 4, "label": "Confidentiality breach (data exposed/exfiltrated)"},
"multiple": {"score": 4, "label": "Multiple data dimensions affected"},
},
},
"services_critical": {
"name": "Criticality of Services Affected",
"article": "Article 18(1)(e)",
"levels": {
"non_critical": {"score": 1, "label": "Non-critical services only"},
"important": {"score": 2, "label": "Important (but not critical) functions"},
"critical": {"score": 3, "label": "Critical functions affected"},
"multiple_critical": {"score": 4, "label": "Multiple critical functions affected"},
},
},
"economic_impact": {
"name": "Economic Impact",
"article": "Article 18(1)(f)",
"thresholds": {
"low": {"max": 100000, "score": 1, "label": "Low (< EUR 100K)"},
"medium": {"max": 500000, "score": 2, "label": "Medium (EUR 100K–500K)"},
"high": {"max": 5000000, "score": 3, "label": "High (EUR 500K–5M)"},
"very_high": {"max": float("inf"), "score": 4, "label": "Very High (> EUR 5M)"},
},
},
}
# Major incident threshold: total score across all criteria
MAJOR_INCIDENT_THRESHOLD = 14 # Out of maximum 24
HIGH_SEVERITY_THRESHOLD = 18
def classify_numeric(value: float, thresholds: Dict) -> Dict:
"""Classify a numeric value against thresholds."""
for level_name, level_data in thresholds.items():
if value <= level_data["max"]:
return {"level": level_name, "score": level_data["score"], "label": level_data["label"]}
# Fallback to highest
last = list(thresholds.values())[-1]
return {"level": list(thresholds.keys())[-1], "score": last["score"], "label": last["label"]}
def classify_categorical(value: str, levels: Dict) -> Dict:
"""Classify a categorical value."""
if value in levels:
return {"level": value, "score": levels[value]["score"], "label": levels[value]["label"]}
return {"level": "unknown", "score": 0, "label": f"Unknown value: {value}"}
def classify_incident(
clients_affected: int = 0,
duration_hours: float = 0,
geographic_spread: str = "local",
data_loss: str = "none",
services_critical: str = "non_critical",
economic_impact: float = 0,
detection_time: Optional[str] = None,
incident_description: str = "",
malicious: Optional[bool] = None,
) -> Dict[str, Any]:
"""Classify an ICT incident per DORA Article 18 criteria."""
now = datetime.now()
detection_dt = None
if detection_time:
try:
detection_dt = datetime.fromisoformat(detection_time)
except ValueError:
detection_dt = now
result = {
"timestamp": now.isoformat(),
"input": {
"clients_affected": clients_affected,
"duration_hours": duration_hours,
"geographic_spread": geographic_spread,
"data_loss": data_loss,
"services_critical": services_critical,
"economic_impact_eur": economic_impact,
"detection_time": detection_time,
"incident_description": incident_description,
"suspected_malicious": malicious,
},
"classification": {},
"severity": {},
"reporting": {},
"notification_template": {},
}
# Classify each criterion
criteria_results = {}
total_score = 0
# Clients affected
c = classify_numeric(clients_affected, CLASSIFICATION_CRITERIA["clients_affected"]["thresholds"])
criteria_results["clients_affected"] = {
"criterion": CLASSIFICATION_CRITERIA["clients_affected"]["name"],
"article": CLASSIFICATION_CRITERIA["clients_affected"]["article"],
"value": clients_affected,
**c,
}
total_score += c["score"]
# Duration
c = classify_numeric(duration_hours, CLASSIFICATION_CRITERIA["duration_hours"]["thresholds"])
criteria_results["duration"] = {
"criterion": CLASSIFICATION_CRITERIA["duration_hours"]["name"],
"article": CLASSIFICATION_CRITERIA["duration_hours"]["article"],
"value": f"{duration_hours} hours",
**c,
}
total_score += c["score"]
# Geographic spread
c = classify_categorical(geographic_spread, CLASSIFICATION_CRITERIA["geographic_spread"]["levels"])
criteria_results["geographic_spread"] = {
"criterion": CLASSIFICATION_CRITERIA["geographic_spread"]["name"],
"article": CLASSIFICATION_CRITERIA["geographic_spread"]["article"],
"value": geographic_spread,
**c,
}
total_score += c["score"]
# Data loss
c = classify_categorical(data_loss, CLASSIFICATION_CRITERIA["data_loss"]["levels"])
criteria_results["data_loss"] = {
"criterion": CLASSIFICATION_CRITERIA["data_loss"]["name"],
"article": CLASSIFICATION_CRITERIA["data_loss"]["article"],
"value": data_loss,
**c,
}
total_score += c["score"]
# Services criticality
c = classify_categorical(services_critical, CLASSIFICATION_CRITERIA["services_critical"]["levels"])
criteria_results["services_critical"] = {
"criterion": CLASSIFICATION_CRITERIA["services_critical"]["name"],
"article": CLASSIFICATION_CRITERIA["services_critical"]["article"],
"value": services_critical,
**c,
}
total_score += c["score"]
# Economic impact
c = classify_numeric(economic_impact, CLASSIFICATION_CRITERIA["economic_impact"]["thresholds"])
criteria_results["economic_impact"] = {
"criterion": CLASSIFICATION_CRITERIA["economic_impact"]["name"],
"article": CLASSIFICATION_CRITERIA["economic_impact"]["article"],
"value": f"EUR {economic_impact:,.0f}",
**c,
}
total_score += c["score"]
result["classification"]["criteria"] = criteria_results
result["classification"]["total_score"] = total_score
result["classification"]["max_score"] = 24
# Determine if major
is_major = total_score >= MAJOR_INCIDENT_THRESHOLD
result["severity"]["is_major_incident"] = is_major
result["severity"]["total_score"] = total_score
if total_score >= HIGH_SEVERITY_THRESHOLD:
result["severity"]["level"] = "critical"
result["severity"]["description"] = "Critical incident — highest priority, immediate executive escalation required"
elif total_score >= MAJOR_INCIDENT_THRESHOLD:
result["severity"]["level"] = "major"
result["severity"]["description"] = "Major incident — mandatory DORA reporting to competent authority"
elif total_score >= 8:
result["severity"]["level"] = "significant"
result["severity"]["description"] = "Significant incident — internal escalation, monitor for escalation to major"
else:
result["severity"]["level"] = "standard"
result["severity"]["description"] = "Standard incident — handle per normal incident management process"
# Reporting deadlines
if is_major:
classification_time = detection_dt if detection_dt else now
# 4 hours from classification (or 24 hours from detection)
initial_deadline = classification_time + timedelta(hours=4)
detection_fallback = (detection_dt or now) + timedelta(hours=24)
actual_initial = min(initial_deadline, detection_fallback)
intermediate_deadline = actual_initial + timedelta(hours=72)
final_deadline = intermediate_deadline + timedelta(days=30)
result["reporting"] = {
"mandatory": True,
"classification_as_major": classification_time.isoformat(),
"deadlines": {
"initial_notification": {
"deadline": actual_initial.isoformat(),
"requirement": "Within 4 hours of classifying as major (or 24 hours from detection)",
"article": "Article 19(4)(a)",
"content": "Basic facts, initial classification, estimated impact",
},
"intermediate_report": {
"deadline": intermediate_deadline.isoformat(),
"requirement": "Within 72 hours of initial notification",
"article": "Article 19(4)(b)",
"content": "Updated severity, root cause assessment, recovery status, indicators of compromise",
},
"final_report": {
"deadline": final_deadline.isoformat(),
"requirement": "Within 1 month of intermediate report",
"article": "Article 19(4)(c)",
"content": "Root cause analysis, complete impact assessment, mitigation measures, lessons learned",
},
},
"client_notification": {
"required": True,
"requirement": "Without undue delay if incident affects clients' financial interests",
"article": "Article 19(1)",
},
}
else:
result["reporting"] = {
"mandatory": False,
"note": "Incident does not meet major incident threshold. Handle per internal incident management process.",
"voluntary_reporting": "Consider voluntary reporting if incident reveals significant cyber threats (Article 19(2))",
}
return result
def generate_notification_template(result: Dict[str, Any]) -> Dict[str, Any]:
"""Generate incident notification templates for all reporting stages."""
inp = result["input"]
severity = result.get("severity", {})
reporting = result.get("reporting", {})
template = {
"initial_notification": {
"_instructions": "Submit within 4 hours of classifying as major incident",
"reporting_entity": {
"entity_name": "[ENTITY NAME]",
"entity_lei": "[LEI CODE]",
"entity_type": "[e.g., credit_institution]",
"contact_person": "[NAME]",
"contact_email": "[EMAIL]",
"contact_phone": "[PHONE]",
},
"incident_details": {
"incident_id": "[INTERNAL REFERENCE]",
"detection_date_time": inp.get("detection_time", "[YYYY-MM-DDTHH:MM:SS]"),
"classification_date_time": result.get("timestamp", ""),
"incident_description": inp.get("incident_description", "[BRIEF DESCRIPTION]"),
"suspected_malicious": inp.get("suspected_malicious"),
"services_affected": "[LIST AFFECTED SERVICES]",
"initial_impact_assessment": severity.get("description", ""),
"severity_level": severity.get("level", ""),
},
"initial_classification": {
"clients_affected_estimate": inp.get("clients_affected", 0),
"estimated_duration": inp.get("duration_hours", 0),
"geographic_scope": inp.get("geographic_spread", ""),
"data_impact": inp.get("data_loss", ""),
"critical_functions_affected": inp.get("services_critical", ""),
"estimated_economic_impact_eur": inp.get("economic_impact_eur", 0),
},
"immediate_actions_taken": "[DESCRIBE CONTAINMENT AND INITIAL RESPONSE MEASURES]",
},
"intermediate_report": {
"_instructions": "Submit within 72 hours of initial notification",
"reference": {
"initial_notification_id": "[REFERENCE TO INITIAL NOTIFICATION]",
"initial_notification_date": "[DATE]",
},
"updated_assessment": {
"updated_severity": "[UPDATED SEVERITY LEVEL]",
"updated_clients_affected": "[UPDATED COUNT]",
"updated_duration": "[ACTUAL OR ESTIMATED TOTAL DURATION]",
"updated_economic_impact": "[UPDATED ESTIMATE]",
},
"root_cause_assessment": {
"suspected_root_cause": "[INITIAL ROOT CAUSE ASSESSMENT]",
"attack_vector": "[IF APPLICABLE — e.g., phishing, vulnerability exploitation, supply chain]",
"threat_actor_assessment": "[IF KNOWN — nation-state, criminal, hacktivist, insider]",
},
"indicators_of_compromise": {
"ip_addresses": [],
"domains": [],
"file_hashes": [],
"signatures": [],
"other_iocs": [],
},
"recovery_status": {
"containment_status": "[CONTAINED / PARTIALLY CONTAINED / NOT CONTAINED]",
"recovery_progress": "[PERCENTAGE OR STATUS DESCRIPTION]",
"estimated_full_recovery": "[ESTIMATED DATE/TIME]",
"services_restored": "[LIST SERVICES RESTORED]",
"services_still_affected": "[LIST SERVICES STILL AFFECTED]",
},
"additional_measures_taken": "[DESCRIBE ADDITIONAL RESPONSE ACTIONS]",
},
"final_report": {
"_instructions": "Submit within 1 month of intermediate report",
"reference": {
"initial_notification_id": "[REFERENCE]",
"intermediate_report_id": "[REFERENCE]",
},
"complete_timeline": {
"incident_start": "[DATE/TIME]",
"detection": "[DATE/TIME]",
"classification_as_major": "[DATE/TIME]",
"containment_achieved": "[DATE/TIME]",
"full_recovery": "[DATE/TIME]",
"key_events": "[CHRONOLOGICAL LIST OF KEY EVENTS]",
},
"root_cause_analysis": {
"root_cause": "[DETAILED ROOT CAUSE]",
"contributing_factors": "[LIST CONTRIBUTING FACTORS]",
"methodology_used": "[e.g., 5-Why, Fishbone, FTA]",
},
"complete_impact_assessment": {
"total_clients_affected": "[FINAL COUNT]",
"total_duration": "[TOTAL HOURS/DAYS]",
"geographic_impact": "[MEMBER STATES / REGIONS AFFECTED]",
"data_impact_detail": "[DETAILED DATA IMPACT DESCRIPTION]",
"financial_impact_eur": "[TOTAL DIRECT AND INDIRECT COSTS]",
"regulatory_impact": "[ANY REGULATORY CONSEQUENCES]",
"reputational_impact": "[ASSESSMENT]",
},
"mitigation_measures": {
"immediate_measures": "[MEASURES TAKEN DURING INCIDENT]",
"short_term_measures": "[MEASURES IMPLEMENTED POST-INCIDENT]",
"long_term_measures": "[PLANNED IMPROVEMENTS TO PREVENT RECURRENCE]",
"timeline_for_implementation": "[DATES FOR EACH MEASURE]",
},
"lessons_learned": {
"what_worked_well": "[LIST]",
"areas_for_improvement": "[LIST]",
"process_changes": "[PLANNED CHANGES TO PROCEDURES]",
"technology_changes": "[PLANNED TECHNOLOGY INVESTMENTS]",
"training_needs": "[IDENTIFIED TRAINING GAPS]",
},
},
}
if reporting.get("deadlines"):
template["reporting_deadlines"] = reporting["deadlines"]
return template
def format_text_report(result: Dict[str, Any]) -> str:
"""Format classification result as human-readable text."""
lines = []
lines.append("=" * 70)
lines.append("DORA INCIDENT CLASSIFICATION REPORT")
lines.append("=" * 70)
lines.append(f"Generated: {result['timestamp']}")
lines.append("")
# Input summary
inp = result["input"]
lines.append("INCIDENT DETAILS")
lines.append("-" * 40)
if inp.get("incident_description"):
lines.append(f" Description: {inp['incident_description']}")
if inp.get("detection_time"):
lines.append(f" Detected: {inp['detection_time']}")
if inp.get("suspected_malicious") is not None:
lines.append(f" Malicious: {'Yes' if inp['suspected_malicious'] else 'No'}")
lines.append("")
# Classification criteria
lines.append("CLASSIFICATION CRITERIA (Article 18)")
lines.append("-" * 40)
criteria = result.get("classification", {}).get("criteria", {})
for key, criterion in criteria.items():
lines.append(f" {criterion['criterion']}")
lines.append(f" Value: {criterion.get('value', 'N/A')}")
lines.append(f" Level: {criterion.get('label', 'N/A')}")
lines.append(f" Score: {criterion.get('score', 0)}/4")
lines.append("")
total = result.get("classification", {}).get("total_score", 0)
max_score = result.get("classification", {}).get("max_score", 24)
lines.append(f" TOTAL SCORE: {total}/{max_score}")
lines.append(f" Major incident threshold: {MAJOR_INCIDENT_THRESHOLD}/{max_score}")
lines.append("")
# Severity
severity = result.get("severity", {})
lines.append("SEVERITY DETERMINATION")
lines.append("-" * 40)
is_major = severity.get("is_major_incident", False)
lines.append(f" Major incident: {'YES' if is_major else 'NO'}")
lines.append(f" Severity level: {severity.get('level', 'N/A').upper()}")
lines.append(f" Assessment: {severity.get('description', 'N/A')}")
lines.append("")
# Reporting
reporting = result.get("reporting", {})
lines.append("REPORTING OBLIGATIONS")
lines.append("-" * 40)
if reporting.get("mandatory"):
lines.append(" MANDATORY REPORTING REQUIRED")
lines.append("")
deadlines = reporting.get("deadlines", {})
for stage_key, stage_data in deadlines.items():
lines.append(f" {stage_key.replace('_', ' ').title()}")
lines.append(f" Deadline: {stage_data.get('deadline', 'N/A')}")
lines.append(f" Requirement: {stage_data.get('requirement', 'N/A')}")
lines.append(f" Content: {stage_data.get('content', 'N/A')}")
lines.append(f" Reference: {stage_data.get('article', 'N/A')}")
lines.append("")
client = reporting.get("client_notification", {})
if client.get("required"):
lines.append(" Client Notification")
lines.append(f" Required: Yes — {client.get('requirement', '')}")
lines.append(f" Reference: {client.get('article', '')}")
else:
lines.append(f" {reporting.get('note', 'No mandatory reporting required.')}")
if reporting.get("voluntary_reporting"):
lines.append(f" Note: {reporting['voluntary_reporting']}")
lines.append("")
lines.append("=" * 70)
return "\n".join(lines)
def generate_input_template() -> Dict[str, Any]:
"""Generate an incident input template."""
return {
"_instructions": "Fill in incident details. See field descriptions for accepted values.",
"clients_affected": 0,
"duration_hours": 0,
"geographic_spread": "local | national | eu_multiple | global",
"data_loss": "none | availability | integrity | confidentiality | multiple",
"services_critical": "non_critical | important | critical | multiple_critical",
"economic_impact_eur": 0,
"detection_time": "YYYY-MM-DDTHH:MM:SS (ISO 8601 format)",
"incident_description": "Brief description of the incident",
"suspected_malicious": False,
}
def main():
parser = argparse.ArgumentParser(
description="DORA Incident Classifier — Classify ICT incidents per DORA Article 18",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
%(prog)s --clients-affected 5000 --duration-hours 4 --data-loss confidentiality --services-critical critical --economic-impact 500000
%(prog)s --config incident.json --json
%(prog)s --config incident.json --generate-template --output notification.json
%(prog)s --template > incident_input.json
Geographic spread values: local, national, eu_multiple, global
Data loss values: none, availability, integrity, confidentiality, multiple
Services criticality values: non_critical, important, critical, multiple_critical
""",
)
parser.add_argument("--clients-affected", type=int, dest="clients_affected",
help="Number of clients/counterparts affected")
parser.add_argument("--duration-hours", type=float, dest="duration_hours",
help="Duration of incident in hours")
parser.add_argument("--geographic-spread", dest="geographic_spread",
choices=["local", "national", "eu_multiple", "global"],
help="Geographic spread of the incident")
parser.add_argument("--data-loss", dest="data_loss",
choices=["none", "availability", "integrity", "confidentiality", "multiple"],
help="Type of data loss")
parser.add_argument("--services-critical", dest="services_critical",
choices=["non_critical", "important", "critical", "multiple_critical"],
help="Criticality of affected services")
parser.add_argument("--economic-impact", type=float, dest="economic_impact",
help="Estimated economic impact in EUR")
parser.add_argument("--detection-time", dest="detection_time",
help="Time incident was detected (ISO 8601)")
parser.add_argument("--description", help="Brief incident description")
parser.add_argument("--malicious", action="store_true", help="Incident is suspected malicious")
parser.add_argument("--config", help="Path to JSON incident description file")
parser.add_argument("--json", action="store_true", help="Output in JSON format")
parser.add_argument("--output", help="Write output to file")
parser.add_argument("--generate-template", action="store_true", dest="generate_template",
help="Generate incident notification templates based on classification")
parser.add_argument("--template", action="store_true",
help="Generate incident input template")
args = parser.parse_args()
# Input template mode
if args.template:
print(json.dumps(generate_input_template(), indent=2))
return
# Load from config or CLI args
if args.config:
try:
with open(args.config) as f:
config = json.load(f)
except (FileNotFoundError, json.JSONDecodeError) as e:
print(f"Error loading config file: {e}", file=sys.stderr)
sys.exit(1)
clients_affected = config.get("clients_affected", 0)
duration_hours = config.get("duration_hours", 0)
geographic_spread = config.get("geographic_spread", "local")
data_loss = config.get("data_loss", "none")
services_critical = config.get("services_critical", "non_critical")
economic_impact = config.get("economic_impact_eur", config.get("economic_impact", 0))
detection_time = config.get("detection_time")
description = config.get("incident_description", config.get("description", ""))
malicious = config.get("suspected_malicious", False)
else:
clients_affected = args.clients_affected or 0
duration_hours = args.duration_hours or 0
geographic_spread = args.geographic_spread or "local"
data_loss = args.data_loss or "none"
services_critical = args.services_critical or "non_critical"
economic_impact = args.economic_impact or 0
detection_time = args.detection_time
description = args.description or ""
malicious = args.malicious
# Classify
result = classify_incident(
clients_affected=clients_affected,
duration_hours=duration_hours,
geographic_spread=geographic_spread,
data_loss=data_loss,
services_critical=services_critical,
economic_impact=economic_impact,
detection_time=detection_time,
incident_description=description,
malicious=malicious,
)
# Generate notification template if requested
if args.generate_template:
template = generate_notification_template(result)
output = json.dumps(template, indent=2)
if args.output:
with open(args.output, "w") as f:
f.write(output)
print(f"Notification templates written to {args.output}")
else:
print(output)
return
# Format output
if args.json:
output = json.dumps(result, indent=2)
else:
output = format_text_report(result)
if args.output:
with open(args.output, "w") as f:
f.write(output)
print(f"Report written to {args.output}")
else:
print(output)
if __name__ == "__main__":
main()
Related skills
FAQ
What are the DORA reporting deadlines it computes?
The 4-hour initial, 72-hour intermediate, and 1-month final reporting deadlines for major ICT incidents under Article 18.
Does it cover resilience testing?
Yes. It covers basic testing across 12 test types plus advanced Threat-Led Penetration Testing per the TIBER-EU framework.