NIS2 (Directive (EU) 2022/2555) binds a software company directly only if it is a medium-sized or larger provider of a listed service, such as cloud computing, data centre, managed or managed security services, or an online marketplace; writing software is not itself a NIS2 sector. Otherwise it reaches you through customers, whose Article 21 measures cover supply-chain security and their suppliers' secure development. DORA (Regulation (EU) 2022/2554, applying since 17 January 2025) binds financial entities, which must put Article 30 terms into contracts with ICT providers and record them in a register of information. Keep one assurance pack and one register data sheet that answer both.
- NIS2 applies to Annex I and II entities of medium size or larger (50 or more staff, or both annual turnover and balance sheet over EUR 10 million), plus some regardless of size, such as DNS and qualified trust service providers.
- Article 21(2) lists ten minimum measures; point (d) is supply-chain security and point (e) covers acquisition, development and maintenance, including vulnerability handling and disclosure.
- Article 21(3) tells entities to weigh each direct supplier's vulnerabilities, product quality and cybersecurity practices, “including their secure development procedures”.
- For cloud, data centre, CDN, managed and managed security service providers and online platforms, Implementing Regulation (EU) 2024/2690 sets the detailed measures; section 6 covers the secure development life cycle, testing, patching and vulnerability disclosure.
- DORA Article 30 lists the contract terms with every ICT provider, with more for services supporting critical or important functions, including audit rights, participation in threat-led penetration testing and exit strategies.
- On 18 November 2025 the European Supervisory Authorities designated the first 19 critical ICT third-party providers, which they now oversee directly.
| Setting | Value | Note | Source |
|---|---|---|---|
| NIS2 transposition deadline | Adopt by 17 October 2024; apply from 18 October 2024 | In July 2026 the Commission referred Ireland, Spain, France and the Netherlands to the Court of Justice for not notifying full transposition. | NIS2 Art. 41(1) |
| NIS2 size threshold | Medium-sized enterprises and larger, by Commission Recommendation 2003/361/EC | Large entities in Annex I are essential; most other in-scope entities are important. | NIS2 Art. 2(1), Art. 3 |
| NIS2 significant incident reporting | Early warning within 24 hours of awareness; notification within 72 hours; final report within one month | These clocks bind the regulated entity; a supplier's contract should let customers meet them. | NIS2 Art. 23(4) |
| DORA application date | 17 January 2025 | — | DORA Art. 64 |
| First registers of information sent to the ESAs | By 30 April 2025, by the national competent authorities | Financial entities reported to their authorities on national deadlines before that. | ESAs announcement, 15 November 2024 |
| Critical ICT third-party providers | 19 designated on 18 November 2025 | The list is updated annually. | DORA Art. 31; ESAs designation |
- Write down, with the facts, whether each legal entity in your group is a NIS2 entity in each Member State where it operates, and who confirmed it.
- Run the assurance-pack check in CI and confirm it fails when an evidence date passes its maximum age.
- Compare the register data sheet with the hosting and support locations in your infrastructure code and HR records.
- Rehearse the exit runbook with a test tenant: export everything, import it elsewhere and time the transition.
- Check that your incident runbook notifies affected NIS2 and DORA customers within the time your contracts promise.
- Applies to
- Directive (EU) 2022/2555 (NIS2) National measures to apply from 18 October 2024
- Commission Implementing Regulation (EU) 2024/2690 Adopted 17 October 2024
- Regulation (EU) 2022/2554 (DORA) Applies from 17 January 2025
- Commission Implementing Regulation (EU) 2024/2956 Register of information templates, 29 November 2024
Software, SaaS and managed-service companies selling in the EU. Whether your company or a customer is in scope depends on national transposition laws and the facts; this guide covers the engineering evidence, not a legal determination.
- Part of
- Workflow: Build an AppSec program
Learning goals and prerequisites
What you will learn
- Decide whether NIS2 applies to your company directly, through its size and service type, or only through customers.
- Map NIS2 Article 21 measures and Implementing Regulation 2024/2690 to engineering evidence customers will ask for.
- Prepare the DORA Article 30 contract evidence and the register-of-information data a financial customer needs, and check it in CI.
Before you start
Engineering, security and customer-assurance leads at software and SaaS companies selling to EU essential and important entities or to financial entities
- Know which of your products are hosted services, which are installed software and which managed services you run for customers.
- Know your company's headcount and turnover band, and where you provide service and store data.
Refresh first: Supplier software assurance: check SOC 2 reports, SBOMs and signed updates against your use
Go to the guided practiceNIS2 lists sectors and entity types, and developing or publishing software is not one of them. A software company comes into scope directly when it provides a listed service and is at least medium-sized: in Annex I, digital infrastructure (point 8) includes cloud computing service providers, whose service models include software as a service under recital 33, data centre service providers and content delivery networks, and ICT service management (point 9) covers managed service providers and managed security service providers; Annex II point 6 adds online marketplaces, search engines and social networking platforms. National transposition laws decide the details, so check each Member State where you have customers or an establishment.
DORA regulates financial entities, not their suppliers. It reaches you through Articles 28 to 30: your financial customers remain fully responsible for their compliance, must assess you before contracting, must write specific terms into the contract and must record the arrangement in their register of information. A provider the European Supervisory Authorities designate as critical is also overseen directly.
| Your position | What reaches you | Main texts |
|---|---|---|
| Medium or larger cloud, data centre, CDN, managed or managed security service provider | NIS2 applies to you directly: register, take the Article 21 measures, report significant incidents | NIS2 Art. 21, 23; Implementing Regulation 2024/2690; national law |
| Software or SaaS supplier to NIS2 essential or important entities | Customers' supply-chain measures: questionnaires, contract clauses, evidence of secure development | NIS2 Art. 21(2)(d), 21(3); the customer's national law |
| ICT service provider to banks, insurers, investment firms and other financial entities | DORA contract terms, audit and testing rights, register data, exit planning | DORA Art. 28 to 30; RTS 2024/1773 and 2025/532; ITS 2024/2956 |
| Designated critical ICT third-party provider | Direct oversight by a lead overseer, including inspections and recommendations | DORA Art. 31 to 44 |
Article 21(2) says the measures rest on an all-hazards approach and “shall include at least” ten items. If you're in scope, each needs owned evidence; if you supply an in-scope entity, expect questions on the ones your product touches. For the entity types Article 21(5) names, the annex of Implementing Regulation (EU) 2024/2690 sets the detail in 13 sections, and ENISA's Technical Implementation Guidance (June 2025) gives examples of evidence and mappings to standards.
| Art. 21(2) | Measure (paraphrased) | Engineering evidence | 2024/2690 annex |
|---|---|---|---|
| (a) | Risk analysis and information system security policies | Threat models and a risk register that includes product risks | 1, 2 |
| (b) | Incident handling | Detection rules, an incident runbook, post-incident reviews | 3 |
| (c) | Business continuity, backup, disaster recovery and crisis management | Backup restore tests and failover drills with measured times | 4 |
| (d) | Supply chain security | A supplier directory with criticality; dependency intake and SBOMs | 5.1, 5.2 |
| (e) | Security in acquisition, development and maintenance, including vulnerability handling and disclosure | Secure development life cycle, security testing, patch timelines, a disclosure policy | 6.1 to 6.10 |
| (f) | Assessing the effectiveness of the measures | Metrics, internal audits and test results reviewed by management | 7 |
| (g) | Basic cyber hygiene and training | Developer security training records | 8 |
| (h) | Cryptography and, where appropriate, encryption | Approved algorithms, key management and TLS configuration | 9 |
| (i) | Human resources security, access control and asset management | Joiner-mover-leaver automation, access reviews, asset inventory | 10, 11, 12 |
| (j) | Multi-factor or continuous authentication and secured communications | MFA enforced for staff and offered to customers | 11 |
Section 6 of the annex turns point (e) into ten subsections: security in acquiring ICT services or products, the secure development life cycle, configuration management, change management with repairs and maintenance, security testing, security patch management, network security, network segmentation, protection against malicious and unauthorized software, and vulnerability handling and disclosure. The secure development rules apply whether development is in-house or outsourced and cover all phases, including specification, design, development, implementation and testing. Point 6.10 includes laying down a procedure for disclosing vulnerabilities in line with the national coordinated vulnerability disclosure policy.
Where a requirement applies “where appropriate” or “to the extent feasible”, an entity that doesn't apply it has to document why. An SSDF evidence matrix, release-bound test results, patch timelines measured against your policy and a published disclosure process answer most of section 6, and the same records serve your customers' supplier questionnaires.
Article 21(3) requires in-scope entities to take into account “the vulnerabilities specific to each direct supplier and service provider and the overall quality of products and cybersecurity practices of their suppliers and service providers, including their secure development procedures”. In practice the questions arrive as a questionnaire or contract schedule. Answer with evidence rather than yes or no:
- Secure development: the framework you follow and evidence from recent releases, such as an SSDF matrix (/frameworks/ssdf-product-lifecycle/).
- Components: an SBOM per release and how you track vulnerabilities in it (/domains/supply-chain/sbom/generate-release-inventory/).
- Vulnerability handling: your disclosure policy, advisory format and fix timelines by severity.
- Incidents: how quickly you'll tell the customer about an incident affecting them, set well inside their 24-hour early warning.
- Access: MFA and SSO for customer administrators, audit logs customers can export.
- Independent assurance: a SOC 2 Type 2 report or ISO/IEC 27001 certificate whose scope names the service you sell.
Article 30(2) lists the terms every contract for ICT services needs, and Article 30(3) adds terms where the service supports a critical or important function. Commission Delegated Regulation (EU) 2024/1773 sets what the financial entity's policy on such contracts must contain, and Delegated Regulation (EU) 2025/532 covers subcontracting of those services. Each term needs something you can show:
| Article | Term (paraphrased) | Evidence a supplier keeps |
|---|---|---|
| 30(2)(a) | A full description of the services, and whether and on what conditions subcontracting is allowed | Service description; subcontractor list with the functions each supports |
| 30(2)(b) | Locations where services are provided and data processed or stored, with advance notice of changes | Register data sheet; change-notification process |
| 30(2)(c) | Availability, authenticity, integrity and confidentiality of data | Security architecture, encryption and SOC 2 or ISO scope |
| 30(2)(d) | Access, recovery and return of data on insolvency, resolution, discontinuation or termination | Export API and formats, tested exit runbook |
| 30(2)(f) | Assistance in ICT incidents at no extra cost or at a cost set in advance | Support terms and incident runbook |
| 30(2)(i) | Participation in the customer's security awareness programs and resilience training | Named contacts and attendance records |
| 30(3)(a), (b) | Precise quantitative and qualitative service levels, notice periods and reporting duties | Service-level reports and monitoring data |
| 30(3)(c) | Business contingency plans and security measures, with testing | Failover and restore test reports |
| 30(3)(d) | Participation in the customer's threat-led penetration testing | A test-participation process and environment |
| 30(3)(e) | Unrestricted rights of access, inspection and audit | An audit process, including pooled audits and on-site access rules |
| 30(3)(f) | Exit strategies with a mandatory adequate transition period | Exit plan, transition support terms and a rehearsal record |
Article 28(3) requires each financial entity to keep a register of all its ICT contracts, in the templates of Commission Implementing Regulation (EU) 2024/2956. Customers will ask you for the provider fields every year and whenever something changes, so publish them once as data. The ITS requires a valid legal entity identifier (LEI) or European Unique Identifier (EUID) for providers that are legal persons, your legal name, the country of your headquarters, your ultimate parent's identifier, the countries from which each service is provided, whether it stores data, where data is stored and where it is processed, and the chain of subcontractors that support it, each with a rank.
The field names below are this site's own. They feed ITS columns such as B_05.01.0010 (the provider's identifier), B_05.01.0080 (headquarters country), B_05.01.0110 (ultimate parent), B_02.02.0130 (country of provision), B_02.02.0150 and B_02.02.0160 (where data is stored and processed) and template B_05.02, the ICT service supply chain with each provider's rank. Countries use ISO 3166-1 alpha-2 codes, as the ITS requires.
{
"provider": {
"lei": "984500QUILLSTONE0X42",
"legal_name": "Quillstone Software GmbH",
"type_of_person": "legal person",
"headquarters_country": "DE",
"ultimate_parent_lei": "984500QUILLPARENT056"
},
"services": [
{
"name": "Quillstone Reconcile (SaaS)",
"provided_from": [
"DE",
"IE"
],
"stores_data": true,
"data_at_rest": [
"DE",
"IE"
],
"data_processing": [
"DE",
"IE",
"PT"
],
"supply_chain": [
{
"rank": 1,
"provider": "Quillstone Software GmbH",
"role": "service provider"
},
{
"rank": 2,
"provider": "cloud infrastructure provider (named in the contract annex)",
"role": "hosting"
},
{
"rank": 2,
"provider": "support centre in PT (Quillstone Unipessoal Lda)",
"role": "level 2 support with data access"
}
]
}
],
"updated": "2026-10-01"
}Most of what NIS2 and DORA customers ask for is the same evidence seen from different articles, as /frameworks/compliance-evidence-reuse/ shows for other frameworks. Keep one manifest that names each piece of evidence, when it was refreshed and how old it may get, and map every requirement your contracts cite to it. The checker below fails when evidence is stale, a requirement cites evidence that doesn't exist, an LEI fails its ISO 17442 check digits or a country isn't an ISO code. Run it in CI and before each customer review.
{
"reviewed_on": "2026-10-10",
"evidence": {
"SDLC": {
"what": "SSDF 1.1 evidence matrix for the last two releases",
"refreshed": "2026-09-30",
"max_age_days": 120
},
"PENTEST": {
"what": "Independent penetration test report, summary for customers",
"refreshed": "2026-03-14",
"max_age_days": 365
},
"CVD": {
"what": "Vulnerability disclosure policy and published advisories (CSAF)",
"refreshed": "2026-08-02",
"max_age_days": 365
},
"SBOM": {
"what": "CycloneDX SBOM per release, on request",
"refreshed": "2026-10-02",
"max_age_days": 45
},
"PATCH": {
"what": "Patch timelines met, by severity, last two quarters",
"refreshed": "2026-07-05",
"max_age_days": 120
},
"SOC2": {
"what": "SOC 2 Type 2 report, 1 July 2025 to 30 June 2026",
"refreshed": "2026-08-20",
"max_age_days": 365
},
"BCP": {
"what": "Business continuity test: region failover, measured recovery times",
"refreshed": "2026-05-28",
"max_age_days": 365
},
"EXIT": {
"what": "Exit runbook: full export in documented formats, transition support terms",
"refreshed": "2026-02-11",
"max_age_days": 365
},
"REGISTER": {
"what": "Register-of-information data sheet (supplier-register-data.json)",
"refreshed": "2026-10-01",
"max_age_days": 90
}
},
"requirements": {
"NIS2 Art. 21(2)(d), 21(3) supply chain security": [
"SDLC",
"PENTEST",
"SBOM"
],
"NIS2 Art. 21(2)(e) development, vulnerability handling and disclosure": [
"SDLC",
"CVD",
"PATCH"
],
"DORA Art. 30(2)(b) locations of service and data": [
"REGISTER"
],
"DORA Art. 30(2)(c) availability, authenticity, integrity, confidentiality": [
"SOC2"
],
"DORA Art. 30(2)(d) access, recovery and return of data": [
"EXIT"
],
"DORA Art. 30(3)(c) contingency plans and their testing": [
"BCP"
],
"DORA Art. 30(3)(f) exit strategy and transition period": [
"EXIT"
]
}
}It needs only the Python standard library. On the files above it prints assurance pack OK; change one LEI character and the check-digit test fails. The ISO 7064 check turns each letter into a number from 10 (A) to 35 (Z), reads the whole identifier as one decimal number and requires a remainder of 1 when divided by 97.
"""Check the assurance pack and register data sent to NIS2 and DORA customers before each review.
Usage: python3 check_pack.py assurance-pack.json supplier-register-data.json
"""
import json
import re
import sys
from datetime import date
def lei_ok(lei):
"""ISO 17442: 20 alphanumeric characters whose ISO 7064 MOD 97-10 check is 1."""
if not re.fullmatch(r"[0-9A-Z]{18}[0-9]{2}", lei or ""):
return False
return int("".join(str(int(c, 36)) for c in lei)) % 97 == 1
def problems(pack, register):
today = date.fromisoformat(pack["reviewed_on"])
found = []
for name, item in pack["evidence"].items():
age = (today - date.fromisoformat(item["refreshed"])).days
if age > item["max_age_days"]:
found.append(f"{name}: {age} days old, refresh after {item['max_age_days']}")
for requirement, names in pack["requirements"].items():
for name in names:
if name not in pack["evidence"]:
found.append(f"{requirement}: cites missing evidence {name}")
provider = register["provider"]
for field in ("lei", "ultimate_parent_lei"):
if not lei_ok(provider.get(field)):
found.append(f"register: {field} {provider.get(field)!r} is not a valid LEI")
for service in register["services"]:
countries = service["provided_from"] + service["data_processing"]
if service["stores_data"]:
countries += service["data_at_rest"]
if not service["data_at_rest"]:
found.append(f"{service['name']}: stores data but lists no storage country")
found += [f"{service['name']}: {c!r} is not an ISO 3166-1 alpha-2 code"
for c in countries if not re.fullmatch(r"[A-Z]{2}", c)]
return found
if __name__ == "__main__":
with open(sys.argv[1], encoding="utf-8") as f, open(sys.argv[2], encoding="utf-8") as g:
issues = problems(json.load(f), json.load(g))
print("\n".join(issues) or "assurance pack OK")
sys.exit(1 if issues else 0)NIS2 is a directive, so national law applies to you, not the directive's text. Germany's implementing act entered into force on 6 December 2025. On 8 July 2026 the Commission referred Ireland, Spain, France and the Netherlands to the Court of Justice for not notifying full transposition; most other Member States had notified, and the Dutch Cyberbeveiligingswet entered into force on 15 August 2026. Registration duties, supervisors and fines differ by country.
Two proposals were still in the legislative process on 10 October 2026. The Commission's proposal of 20 January 2026, COM(2026) 13, would amend NIS2 to simplify jurisdiction rules and align it with the revised Cybersecurity Act. The Digital Omnibus, COM(2025) 837, would add a single ENISA entry point for incident reports under NIS2, the GDPR, DORA and other laws. Neither changes what you report today. For EU product rules on manufacturers, the Cyber Resilience Act's reporting duties have applied since 11 September 2026; see /frameworks/cra-reporting-runbook/.
Guided practice
Tallyline (fictional) sells a cloud reconciliation service to an EU bank and to an energy company. Decide what applies to Tallyline, answer the customers' requests and fix the register data before the bank's annual review.
Supplied scenario material
Tallyline B.V. (fictional): 180 staff, EUR 31 million turnover, EUR 28 million balance sheet; established in the Netherlands.
Service: Tallyline Reconcile, multi-tenant SaaS hosted on a public cloud in IE and DE; level 2 support from a subsidiary in PT
with read access to customer data.
Customer A: an EU bank; Reconcile supports its payment reconciliation, which the bank classifies as a critical or important function.
Customer B: an energy supplier that its national authority lists as an essential entity under NIS2.
Bank's contract draft: audit rights "on 90 days' notice, once a year, remote only"; no mention of exit or TLPT.
Energy supplier's questionnaire: "Do you follow secure development practices? Yes/No".
Register sheet sent last year: LEI 984500TALLYLINE0SW31; data_at_rest ["IE"]; data_processing ["IE"]; no subcontractors listed.
Incident clause in both contracts: "Supplier notifies the customer of security incidents within 5 business days."1. Decide Tallyline's own NIS2 position
Apply the NIS2 scope rules to Tallyline.
Expected result and reasoning
NIS2 recital 33 lists Software as a Service among the cloud computing service models, and cloud computing service providers are in Annex I. With 180 staff and EUR 31 million turnover Tallyline is medium-sized, so it is in scope as an important entity rather than an essential one (essential Annex I entities are large). Dutch law decides registration and supervision; legal should confirm the service classification.
2. Fix the bank contract
Compare the bank's draft with DORA Article 30(3).
Expected result and reasoning
Reconcile supports a critical or important function, so Article 30(3) applies. Remote-only audits once a year on 90 days' notice fall short of unrestricted rights of access, inspection and audit (30(3)(e)). The contract also needs an exit strategy with an adequate transition period (30(3)(f)), participation in threat-led penetration testing (30(3)(d)), precise service levels (30(3)(a)) and the subcontracting conditions under 30(2)(a) and Regulation 2025/532.
3. Answer the energy supplier with evidence
Replace the yes/no answer with what Article 21(3) asks the customer to assess.
Expected result and reasoning
Article 21(3) asks the customer to weigh Tallyline's product quality and cybersecurity practices, including secure development procedures. Answer with the SSDF evidence matrix for recent releases, the SBOM and vulnerability-tracking process, the disclosure policy, patch timelines and the SOC 2 or ISO report whose scope names Reconcile.
4. Repair the register data
Check last year's register sheet against the facts.
Expected result and reasoning
The LEI fails the ISO 17442 check (
984500TALLYLINE0SWneeds check digits13, so984500TALLYLINE0SW31is invalid). Data at rest is in IE and DE, not IE alone. The PT support subsidiary processes customer data, so PT belongs indata_processingand the subsidiary in the supply chain with its rank, alongside the cloud provider. Correct the sheet and run the checker before sending it.5. Shorten the incident clause
Judge the five-business-day notification clause.
Expected result and reasoning
Too slow for both customers: the energy supplier must send an early warning within 24 hours of becoming aware of a significant incident, and the bank has its own DORA reporting duties. Commit to notifying affected customers within hours of confirming an incident that affects them, and as an important entity Tallyline must also meet its own NIS2 reporting clocks.
Tallyline, its customers and their contracts are fictional. National transposition laws and each customer's classification decide the obligations; get legal confirmation before relying on a scope conclusion.
Save a draft on this device to resume later. Automatic saving begins after you choose Save. Drafts are never sent by this application; use synthetic data.
No draft saved on this device yet.
Sources & further reading
The standards, specifications and documentation behind the guidance above. Each is the evidence for a claim on this page; consult it for detail beyond the defaults and versions listed here.
- Directive (EU) 2022/2555 (NIS2), Article 21: cybersecurity risk-management measures. OJ L 333, 27 December 2022.
- NIS2, Article 23: reporting obligations. OJ L 333, 27 December 2022.
- Commission Implementing Regulation (EU) 2024/2690: technical and methodological requirements under NIS2. OJ L 2024/2690, 18 October 2024.
- ENISA: NIS2 Technical Implementation Guidance. 26 June 2025.
- European Commission: referral of Ireland, Spain, France and the Netherlands to the Court of Justice for failing to transpose NIS2. 8 July 2026.
- European Commission: proposal amending NIS2 for simplification and alignment with the Cybersecurity Act, COM(2026) 13. 20 January 2026.
- Regulation (EU) 2022/2554 (DORA), Article 30: key contractual provisions. OJ L 333, 27 December 2022.
- Commission Delegated Regulation (EU) 2024/1773: policy on ICT services supporting critical or important functions. OJ L 2024/1773, 25 June 2024.
- Commission Implementing Regulation (EU) 2024/2956: register of information templates. OJ L 2024/2956, 2 December 2024.
- Commission Delegated Regulation (EU) 2025/532: subcontracting ICT services supporting critical or important functions. OJ L 2025/532, 2 July 2025.
- ESMA: the European Supervisory Authorities designate critical ICT third-party providers under DORA. 18 November 2025.
- ESAs: list of designated critical ICT third-party service providers (19 providers)
- European Commission: DORA implementing and delegated acts
Reference information
- SDLC phase
- PlanningSecurity program
- Role
- Security leaders