Skip to main content Required by EU law for organizations with 50+ employees

Business continuity plan #

Effective date: 2026-05-21 Last reviewed: 2026-05-21 Next review: 2027-05-21 Owner: Yaroslav Shmarov, operator Version: 1.0

This document states what EthicsPortal does when the Service, a sub-processor, or the operator themselves becomes unable to deliver the Service at the level customers depend on. It is the named plan referenced by the Information security policy §6 and by the ISO/IEC 27001:2022 Annex A control map for controls A.5.29–A.5.30.

The recovery outcomes this plan produces (recovery point objective, recovery time objective, monthly availability target) are stated in the Service level agreement . This page states the process that produces them.


1. Scope and objectives #

This plan covers continuity of the EthicsPortal Service in the event of:

The continuity objectives, in order of priority, are:

  1. Preserve the confidentiality and integrity of personal data already in the system. The reporter portal will be taken offline rather than continue to operate in a degraded confidentiality state.
  2. Restore reporter access to existing cases (status, messaging, follow-up) so that protected reporting under EU Directive 2019/1937 is not silently interrupted.
  3. Restore handler and admin access to case management.
  4. Restore the marketing site and documentation surfaces.

2. Recovery objectives #

ObjectiveTargetSurface
Recovery point objective (RPO)24 hoursReporter portal, handler portal
Recovery time objective (RTO)4 hoursReporter portal, handler portal
Monthly availability target99.5%Reporter portal, handler portal

Marketing and documentation surfaces are best-effort and are not covered by an availability target.

Backup mechanism, storage location, retention, and restore-testing cadence are documented at Security#backups-and-restore . The most recent restore drill date is published on the same page.


3. Activation triggers #

The continuity process is activated when any of the following is observed:

Activation does not require a formal declaration — the trigger conditions automatically open the response process.


4. Decision authority #

The operator (Yaroslav Shmarov) is the sole decision authority for:

Decisions are recorded in a written incident log retained for audit purposes.


5. Customer communication #

EventChannelTiming
Active outage on a covered surfaceLive status indicator at secure.ethicsportal.eu/up ; email to organization admins for material outagesWithin 60 minutes of detection
Personal data breachDirect email to affected controllersWithin 72 hours of awareness, per DPA §6.6
Material incident (post-containment)Preliminary entry in incident registerWithin 7 days of containment
Material incident (final disclosure)Final entry in incident registerWithin 30 days of containment
Planned maintenanceStatus page and (where it affects business hours) admin emailAt least 48 hours in advance

Communications go to the organization-administrator contact on file. Controllers are responsible for keeping their administrator contact information current.


6. Restore procedure (summary) #

When a database or full-system restore is required:

  1. The operator declares the incident, takes the covered surface offline if not already down, and freezes write traffic.
  2. The most recent encrypted database dump is retrieved from Hetzner Object Storage (Nuremberg, EU; 7-day retention).
  3. The dump is restored into a fresh database instance and integrity-checked.
  4. The application host is rebuilt from a current Kamal deployment configuration; if the host itself is lost, a Hetzner server-level snapshot (7-day retention) is the fallback.
  5. The covered surfaces are brought back online incrementally, with the reporter portal restored before the handler portal where they are independently recoverable.
  6. The event is logged to the incident register if it meets the register’s scope criteria.

The full restore mechanism, storage locations, retention, and drill cadence are documented at Security#backups-and-restore . A restore drill is executed into a disposable environment at least quarterly.


7. Sub-processor failure #

The Service depends on the sub-processors listed on the Subprocessors page. Continuity posture for each:

Sub-processorFunctionContinuity response
Hetzner (DE)Application host, database, file storageRestore from off-host backup (database dump in Hetzner Object Storage; server-level snapshots). For prolonged Hetzner outage, the application is portable to another EU-based provider; cutover would be coordinated with affected controllers and disclosed in the incident register .
Mailjet (FR)Transactional emailHandler notifications are delayed during a Mailjet outage; the in-app surface remains functional. No data is lost.
Stripe (IE)Subscription billingBilling functions are interrupted; the Service itself continues to operate.
Cloudflare (US)Marketing-site CDNMarketing site degrades to direct origin or is unreachable; reporter and handler portals are not affected (they do not load Cloudflare).
AppSignal (NL)Error and performance monitoringLoss of telemetry; no customer-facing impact.
Crisp (FR)Handler-portal chatLoss of in-app chat for handlers; not present on reporter portal, no reporter-side impact.

Sub-processor outage affecting a covered surface counts against the SLA target.


8. Operator-incapacity protocol #

Current state. A formal operator-incapacity protocol — a named legal contact holding emergency credentials with authority to notify customers and execute a controlled wind-down — is in treatment (see Risk register R-01 ). This section states what is in place today, openly, so that controllers can assess the risk and plan accordingly.

What is in place today:

What is not yet in place:

Planned addition. A formal protocol with a named legal contact and pre-arranged customer-notification authority is on the operator’s roadmap. When in place, this section will be updated to name the contact, the trigger conditions, and the authority granted. The change will be reflected in this plan’s version number and effective date.

Controllers concerned about this gap are encouraged to:

This honest disclosure is itself a control: a controller that knows the limit can plan around it. A controller that assumes a protocol exists and discovers later that it does not is materially worse off.


9. Plan testing #

TestCadenceLast performed
Database restore drill into disposable environmentQuarterlySee Security#backups-and-restore
Failover walk-through (paper exercise)Annual2026-05
Sub-processor outage tabletopAnnual2026-05
Operator-incapacity tabletopDeferred pending formal protocol

Test results inform the risk register and any required updates to this plan.


10. Document control #

FieldValue
Document titleEthicsPortal Business Continuity Plan
Version1.0
Effective date2026-05-21
Last reviewed2026-05-21
Next scheduled review2027-05-21
Review trigger (interim)Formalization of the operator-incapacity protocol, addition or change of a sub-processor that affects continuity, material restore-drill outcome, material change to the risk register
OwnerYaroslav Shmarov, operator
DistributionPublished on ethicsportal.eu/policies/

Signed: Yaroslav Shmarov, on behalf of EthicsPortal — 2026-05-21.

Last updated: