Fill the DORA register — the register of information
If you’re a regulated financial entity, DORA requires a Register of Information about your ICT third-party providers and the contracts behind them — 15 fixed tables. Regixo drafts the two tables it can trace from your data map and marks the rest — contract and vendor facts a scanner can’t know — as yours to supply. This page walks you through the whole register table by table, decision by decision, so you finish with a register your engineer can seal and file.
Land here from: Fill the RoPA (the GDPR record’s legal calls are done). DORA applies only to regulated financial entities; if that is not you, skip to Unlock, sign & maintain.
- Confirm DORA scope is on — the register only exists when you declare you’re a financial entity. (how ↓)
- See which of the 15 tables auto-filled and which need you — read the register once before you touch it. (how ↓)
- Rule each provider in or out of DORA scope — the candidates Regixo traced are yours to confirm or exclude. (the decision walk ↓)
- Fill each table — one cell inline, or many rows by CSV import. (how ↓)
- Rule each function’s criticality — whether a function is “critical or important”. (the decision walk ↓)
- Check you’re done, then hand it back to the engineer to seal. (how ↓)
Walk one provider all the way through (the worked example)
Before the reference, take one provider end to end so the loop is concrete. Regixo traced a
Stripe integration from your data map and seeded it as a candidate in table
B_05.01. Here is Stripe through every step:
| Step | What Regixo shows | How you decide, and what you do |
|---|---|---|
| 1 · Scope on | The register exists because dora: true is set. | Nothing to do — you turned scope on when you scanned. If the register isn’t there, see step 1 below. |
| 2 · Read it | Stripe appears in B_05.01 (candidate provider) and B_07.01 (a service to assess), both badged partly auto. Its legal name is auto; the country cell carries an honest hint (“hosts in IE — hosting region, not headquarters”), not an answer. | Read what the map filled. It saw the integration; it did not see the contract, the LEI, or where Stripe is headquartered. |
| 3 · Rule scope | Its in-scope flag is candidate. | Ask: is Stripe an ICT third-party service to us, or a financial service? (§ decision walk below). A payment platform you depend on operationally is an ICT service → your approver rules it confirmed. (If you treat it purely as a regulated payment service, you’d exclude it with a one-line ground.) |
| 4 · Fill the cells | identifier, codeType, country, currency, annual expense are needs you. The contract (B_02.01/B_02.02) is empty. | Add Stripe’s LEI (look it up on GLEIF), set country to its headquarters (IE), and import the contract row. Fill what you know; leave what you don’t as a flagged gap. |
| 5 · Criticality | Stripe supports a business function — e.g. “Take and record payments” in B_06.01. | Rule that function’s criticality: taking payments is a critical or important function → your approver marks it Yes. That is what makes Stripe’s assessment matter. |
| 6 · Done | No scope ruling left open for Stripe; its function ruled; its cells filled or flagged. | Move to the next provider. When no scope rulings are open and every applicable table is filled, hand the register back to the engineer to seal. |
Every provider and every contract is that same loop. The reference below is what you use inside steps 3, 4 and 5 to make each call with confidence.
Step 1 · Confirm DORA scope is on
The register only exists when your configuration declares you a financial entity. Declare it when you scan (or turn it on later):
“Set Regixo up in this project with DORA scope on — we are a regulated financial firm.”
Show the commandHide the commandShow the sentenceHide the sentence
$ regixo start --doraThis sets dora: true in regixo.yml and drafts the register
alongside the RoPA. It is the engineer’s one-time setup — you don’t run it. To check it’s on, the
register is present on the portal’s DORA tab and regixo dora status (next step)
returns the 15 tables. Re-draft any time with regixo report --dora, which writes the
register beside your other records as DORA_DRAFT.json and the readable
DORA_DRAFT.html.
dora: false),
and you skip straight to signing the RoPA. Turning it off deletes nothing you’ve entered.Step 2 · See which tables auto-filled and which need you
Read the register once before you fill anything. From the terminal, regixo dora status
is the whole picture — what’s filled, what still needs you, and which scope rulings are open:
“Show me what Regixo’s DORA register still needs from us.”
Show the commandHide the commandShow the sentenceHide the sentence
$ regixo dora statusDORA register — 15 tables (Reg. (EU) 2024/2956): 0 complete · 2 partly auto-filled · 13 need you entirely entries: 10 filled in for you + 0 you added · 75 still need you columns: all 100 principal regulation columns are modelled. Tables still needing input (15): B_01.01 Entity maintaining the register of information [needs-you] … B_05.01 ICT third-party service providers [partial] … B_07.01 Assessment of the ICT services [partial] B_99.01 Definitions from entities making use of the ICT services [needs-you] Scope rulings open (2): is each B_05.01 provider in DORA scope? — snowflake-dwh, stripe. Fill them: regixo dora import <tableCode> <file.csv> · regixo dora set <tableCode> <rowKey> <field> <value> Export (paid): regixo dora export → validates the register against Reg. (EU) 2024/2956 and writes the xBRL-CSV files. The EBA submission package is not available yet.
Out of the box, exactly two tables are partly auto from your map — B_05.01 (candidate ICT providers) and B_07.01 (the same services, to assess). The other thirteen are needs you: they hold contract, entity, function and definition facts a scanner cannot see. This is honest — the map fills about two of fifteen tables, never “DORA done”.
The 15 tables, in four plain-English groups
The register groups into four parts — A · Your company, B · Your contracts, C · Your IT suppliers, D · Your functions — the same grouping the portal’s DORA page uses. Here is every table, its exact name, and who fills it:
| Group · Code | What it holds | Fill |
|---|---|---|
A · B_01.01 | Entity maintaining the register of information (your org: name, LEI, country, entity type, competent authority, reporting date) | needs you (org profile) |
A · B_01.02 | List of entities within the scope of consolidation | needs you |
A · B_01.03 | List of branches | needs you |
B · B_02.01 | Contractual arrangements – general information (reference, type, annual cost) | needs you |
B · B_02.02 | Contractual arrangements – specific information (dates, notice, governing law, data locations) | needs you |
B · B_02.03 | List of intra-group contractual arrangements | needs you |
B · B_03.01 | Entities signing the contractual arrangements (receiving ICT services) | needs you |
B · B_03.02 | ICT third-party providers signing the contractual arrangements (providing ICT services) | needs you |
B · B_03.03 | Entities signing to provide ICT services to other entities in scope | needs you |
B · B_04.01 | Entities making use of the ICT services (one row per arrangement × using entity) | needs you |
C · B_05.01 | ICT third-party service providers — legal name, service, country, LEI | partly auto · name from the map; LEI + country + scope ruling need you |
C · B_05.02 | ICT service supply chains (subcontractors) | needs you |
D · B_06.01 | Functions identification (function, criticality, RTO/RPO, discontinuation impact) | needs you |
D · B_07.01 | Assessment of the ICT services (provider + service auto; every assessment answer is yours) | partly auto |
D · B_99.01 | Definitions from entities making use of the ICT services — your firm’s own methodology definitions (e.g. how you scale data sensitiveness) | needs you |
B_99.01 is not auto-filled. It holds your firm’s definitions behind the closed-set answers — never regulation paraphrases filed as your content — so it starts needs you like the rest of the human tables.
The engineer sees this same register on the free portal before it is ever forwarded. It ends on a
Two ways forward annex — your compliance team fills the gaps in the handed-over record, or the
engineer imports what the company already holds with regixo dora import. Signed out,
reading needs no account: a cell you would fill reads sign in to fill, a call only an approver
may make reads sign in to rule, and an empty table reads No rows yet — sign in to add.
This is your DORA Register of Information, forwarded with the record — the free DRAFT. Turning it into the checked, sealed xBRL-CSV (the €12,000 plan) is done on your engineer's own Regixo, not on this forwarded record. The split: you fill the cells and rule the scope calls here; they run the export and send you the finished package.
Why draft from your real systems: in the European Supervisory Authorities’ DORA dry-run exercise, only about 6.5% of manually-built registers passed all 116 validation checks.
Your company
2 / 3 startedWho keeps this register · Entity maintaining the register of information
partly autoAdd your organisation’s registered name, LEI, country, entity type, competent authority and reporting date (org profile).
| LEI | Entity name | Country | Entity type | Authority | Reporting date |
|---|---|---|---|---|---|
| 5493001KJTIIGC8Y1R12 provided | Aurelia Payments Oy provided | FI provided | sign in to fill | sign in to fill | sign in to fill |
Step 3 · Rule each provider in or out of scope — the decision walk
Whether a provider is an “ICT third-party service provider” under DORA (Art. 3(21)) is a
legal judgment, so the B_05.01 rows Regixo seeds from your map begin as
candidates. You rule on each one. Ask these questions in order:
| Ask… | If… | Then |
|---|---|---|
| 1. Does it provide an ICT service to you — software, hosting, cloud, data, connectivity, security — as opposed to something non-digital? | No (e.g. an office cleaner, a law firm) | Not in scope. Exclude it with a one-line ground. |
| 2. Is it a third party — not your own in-house system running on your own infrastructure? | No (your own self-hosted database) | Not a third-party ICT service. Exclude with the ground “in-house”. |
| 3. Is the service really a financial service from a regulated provider, rather than ICT? (EC Q&A DORA030 — a payment service from a regulated payment provider can be a financial service, not ICT.) | Yes, you treat it purely as a financial service | Your call — you may exclude it (with the ground), or rule it in if you depend on it as an ICT service. |
| 4. Otherwise — a genuine third-party ICT service you rely on (Stripe’s platform, a managed warehouse, a SaaS). | Yes | Confirm it in scope. |
Rule each row from the terminal (in the portal, the approver presses confirm or exclude on the row):
$ regixo dora set B_05.01 <rowKey> inScope confirmed $ regixo dora set B_05.01 <rowKey> inScope excluded --because "a database we host on our own servers, not a third-party ICT service"
This one’s yours. Only a person rules DORA scope.
snowflake-dwh is in scope; only a
database on your own servers is the “in-house” exclusion.Set B_05.01 · stripe · inScope = "confirmed". See: regixo dora status Set B_05.01 · snowflake-dwh · inScope = "confirmed" (a managed warehouse is a third-party service). See: regixo dora status
The DORA input could not be applied. (excluding a provider from DORA scope needs a recorded ground — the ruling stays on record even though the row is not filed (ESAs FAQ Q69). Re-run with: regixo dora set B_05.01 <rowKey> inScope excluded --because "<one line: why it is not in DORA scope>") (reference code: DORA_INPUT_INVALID)
A candidate you haven’t ruled on is flagged in regixo dora status (“Scope
rulings open”) and again at export — you can still forward and seal with candidates open; they’re
listed, never hidden. Excluded rows are left out of the filing.
Step 4 · Fill each table — inline or by CSV import
Three surfaces fill the register — pick whichever fits the row:
On the claimed register, each needs you cell is an inline add… box with a Save — fill it and it saves as provided by you. Contract and function tables carry + Add a row. For many rows at once, work in Excel: Download the template (CSV), fill it, then Upload & preview — the preview (Check these rows before they save · Nothing is saved yet) lets you check each row before you press Apply N rows. A tour: the compliance portal tour.
“Import our supplier contracts from contracts.csv into the Regixo DORA register.”
Show the commandHide the commandShow the sentenceHide the sentence
$ regixo dora import B_02.01 contracts.csvImport a CSV per table, or set one cell with regixo dora set <tableCode>
<rowKey> <field> <value>. regixo pull <claim-token>
brings the compliance team’s claim-side fills back into your local register (a confirmed field
stays confirmed — never fabricated).
A different surface. An assistant registered against the read-only
regixo mcp server reads the DORA DRAFT register (get_dora) — the ICT
providers, and which tables still need you. Neither agent surface rules a cell in or out of
scope: no read tool exists to do it, and no sentence is offered for the command that does.
Imported 2 rows into B_02.01 (row key = ref; the same key updates its row in place). See: regixo dora status
Here is the portal register surface itself — B_05.01 mid-fill. The cells Regixo filled
carry quiet auto markers, and a cell a person filled says who — you for this
machine, team for an answer your compliance team gave on the claim page, with the name and
date in its tooltip. (Not sure what a mark means? The register carries a key —
What do the marks mean? above the tables.) The details a scanner can’t see are inline
add… boxes; the
in/out-of-scope ruling is approver-only:
Your IT third-party providers · ICT third-party service providers
partly auto2 candidate ICT third-party providers auto-identified from your sources (legal name, service type); the identification code and headquarters country are yours to add — the map sees hosting regions, not headquarters. Whether each provider counts as an ICT service under DORA is yours to confirm — a payment service from a regulated provider may be a financial, not an ICT, service (EC Q&A DORA030). Your approver rules each provider in or out of scope on its row here.
Snowflake DWHautoneeds youS19 — Cloud services: SaaSauto2 filled · 11 openconfirmed
An upload never saves straight away — it lands on a preview so you can check each row before you commit it:
Check these rows before they save
3 rows from your file ready to save to Contractual arrangements — general information B_02.01. Nothing is saved yet — rows save when you apply them, each cell marked "provided".
| Row reference | Contract reference | Type | Provider | What happens |
|---|---|---|---|---|
| CTR-2026-001 | CTR-2026-001 | standalone arrangement | Acme Cloud GmbH | Adds a new row |
| CTR-2026-002 | CTR-2026-002 | standalone arrangement | Stripe Payments Europe | Adds a new row |
| CTR-2026-003 | CTR-2026-003 | overarching (master) contractual arrangement | Acme Cloud GmbH | Updates row CTR-2026-003 |
Where the answer is a fixed list
Many cells take only a value from a fixed list the regulation defines — the contract types,
the S01–S19 service taxonomy, the Yes/No and Low/Medium/High scales. Enter the code or the exact
label; Regixo stores the canonical form and rejects anything else, in a CSV or a single
set. regixo dora options <tableCode> <field> lists a column’s
allowed values:
B_07.01 · service — 19 allowed values. Enter the code or the exact label; Regixo stores the canonical form: S01 ICT project management S02 ICT development … S17 Cloud services: IaaS S18 Cloud services: PaaS S19 Cloud services: SaaS
Which S-code? Pick the one that names the service you actually buy — a SaaS
product (Stripe, Snowflake, a cloud app) is S19 Cloud services: SaaS; raw compute is S08;
non-cloud hosting is S07. Regixo already guesses S19 for an unambiguous cloud SaaS and leaves the rest
for you. A value outside the list is a named row error that points you back at
regixo dora options.
Imported 0 rows into B_02.01 (row key = ref; the same key updates its row in place). See: regixo dora status REJECTED 1 row — value outside a closed option set (fix the file and re-import): row 2 type="perpetual" (options: standalone arrangement · overarching (master) contractual arrangement · subsequent or associated arrangement) List a column’s allowed values: regixo dora options B_02.01 <field>
LEIs
An LEI (Legal Entity Identifier) is 18 alphanumeric characters plus 2 check digits (ISO
17442). When you enter one on the portal or import a CSV, Regixo checks the checksum (mod-97-10), so a
plausible-looking but invalid code — including all-zeros — is rejected with a clear message. Look
providers up on the GLEIF register if you don’t have theirs. A provider with no LEI isn’t
a dead end: the register carries other identification-code types (EUID, CRN, VAT…) — set
codeType to the scheme you have and put its value in identifier.
Contract tables take whole rows, not single cells
The contract tables key each row by a composite of columns (a B_02.02 row is keyed by
contract · using-entity LEI · service type, one row per value). regixo dora set
only fills a cell of an existing row there — rows are created by import (or the portal’s
+ Add a row), which derive the key. Try to set a cell on a table with no rows yet and Regixo
tells you exactly how to add them:
The DORA input could not be applied. (B_02.02 has no rows yet — its rows are keyed ref·userLei·serviceType and are added by import: regixo dora import B_02.02 <file.csv>) (reference code: DORA_INPUT_INVALID)
However you fill it: CSV headers match either the column ids or the human column labels (case-insensitive); the first cell of each row is the row key; unknown columns are surfaced back to you, never silently dropped; and re-importing the same key updates that row in place instead of duplicating it.
Step 5 · Rule each function’s criticality — the decision walk
DORA scopes the heaviest requirements to the ICT services that support a “critical or important
function”. Identifying your business functions (B_06.01) and rating each one’s
criticality is yours to do — a scanner can’t know it. Like the scope ruling, criticality is an
approver judgment: in the portal a preparer sees the gap but only an approver fills it, and the
downloadable CSV template omits the column. To decide whether a function is critical or important,
ask:
- Would a disruption or failure of this function materially impair your financial performance, or the soundness/continuity of your services and activities?
- Would failing it breach the conditions of your authorisation or your obligations under financial law?
- Does it support a core banking, payment, trading, settlement or reporting activity?
Any clear “yes” points to critical or important. The field is a fixed set — record the reasons alongside it:
B_06.01 · criticality — 3 allowed values. Enter the code or the exact label; Regixo stores the canonical form: yes Yes no No not-performed Assessment not performed
Rule it from the terminal (or, in the portal, the approver picks it on the row):
$ regixo dora set B_06.01 <functionId> criticality Yes
This one’s yours. Only a person rules criticality.
How complete the package is — honestly
The DRAFT register models the full principal column set of every template —
regixo dora status reports “columns: all 100 principal regulation columns are
modelled.” Every export still carries a structural coverage report, so you (and your authority)
are never told the package is more complete than it is. Where the field precision goes beyond what
Regixo models, the export lists exactly which columns it carries and which it doesn’t.
Who produces the filing — you or the engineer
The claim you review is read-only for the sealed output. You fill and confirm the register on it, but the checked, sealed xBRL-CSV package is never built on the forwarded claim. It is produced on the engineer’s own Regixo — the machine that holds the source data and the licence key. The split is deliberate, the same as signing the RoPA, and it makes the roles clear:
- You (compliance) fill the contract, entity and scope facts on the claim, rule each provider in or out of DORA scope, rule each function’s criticality, and confirm the register is complete and correct.
- The engineer pulls your claim-side answers back into the local register
(
regixo pull), sets the licence key, and runs the export (regixo dora export) on their host — the only place the seal is produced. - You get the finished file back — the engineer sends you the built package, or commits it where your team keeps its evidence. You submit it through your authority’s own channel; Regixo assembles and seals, it never files for you.
Both regixo dora export and the licence activation are person-run on the
engineer’s machine — there is no “export” button on the forwarded claim, by design. The licence key
reaches the engineer from your unlock receipt — see Unlock, sign
& maintain.
The submission package
When the register is filled and signed, regixo dora export builds the EBA report
package: a META-INF/ manifest, a reports/ folder with the report descriptor,
a parameters.csv and a FilingIndicators.csv, one DPM-coded CSV per template
(needs-you cells written empty), and a README that states the filing boundary — plus the seal. It lands
beside your other artifacts as DORA_OFFICIAL.xbrl-csv.zip.
The four filing parameters
A package has to say which filing it is. Those four facts are declarations about your firm,
so Regixo never guesses them — they go in regixo.yml, where the dora key takes
an object instead of true. Using the object form still means scope on: only a filer
sets filing parameters.
dora keydora: refPeriod: "2025-12-31" # the reporting reference date (ISO YYYY-MM-DD) baseCurrency: EUR # ISO 4217 nca: fi-fiva # your authority's id in Regixo's NCA matrix (optional) consolidated: true # filing at group level — the default is individual
Nothing here is ever prompted for. refPeriod and baseCurrency are
required: either one missing at export time surfaces as EBA_FILING_PARAM_MISSING, naming the exact
key to add, so an agent can fix it without a human in the loop. nca is optional.
consolidated is what marks the package CON rather than IND — it is declared, never
inferred from the register.
What the regulator accepts
DORA filings are made as a structured xBRL-CSV package — the machine-readable form the European Supervisory Authorities and your national authority ingest, not a PDF or a spreadsheet. What makes a package acceptable is that it validates: the EBA dry-run runs 116 checks over the register — LEIs that resolve and pass their checksum, contract types and the S01–S19 service taxonomy drawn from the fixed code lists, every cross-reference between tables resolving, and mandatory cells present. Regixo’s job is to hand over a validated pre-submission package that clears those checks before it reaches the regulator; the authority runs its own validation again at submission time.
Why draft from your real systems at all: in the European Supervisory Authorities’ DORA dry-run exercise, only about 6.5% of manually-built registers passed all 116 validation checks.
regixo dora export deliberately refuses until then. The stable coded error is
DORA_NOT_SUBMITTABLE; it names EBA_TAXONOMY_UNVERIFIED as the gate in its
detail.
The official DORA export also requires the €12,000 (RoPA + DORA) or enterprise plan.Step 6 · How you know the register is finished
Run the loop until all of these are true, then hand it back to the engineer:
- No scope rulings are open — every
B_05.01candidate is confirmed or excluded (with a ground).regixo dora statusno longer lists any under “Scope rulings open”. - Every function’s criticality is ruled — no critical-or-important call left unanswered on
B_06.01. - The tables that apply to your firm are filled — contracts imported, LEIs entered and valid, entities and functions in. Anything you genuinely don’t hold is left as a flagged gap, not a guess.
You don’t have to fill DORA before forwarding — you can forward the record now with
regixo invite and your compliance team finishes the register on the portal. When it’s
done, the engineer pulls your answers home (regixo pull) and produces the sealed
file. The register stays DRAFT until it is sealed — which is the next
step.