Business Continuity and
Disaster Recovery plan - Subscriptionflow

BC-DR Plan

Business Continuity & Disaster Recovery Plan

Client-Facing Document — Confidential — Compliance Scope: PCI DSS
Version: 1.0 Effective: 2026-06-01 Review Cycle: Quarterly Classification: Confidential
1 Introduction

Purpose

This document describes how SubscriptionFlow (SF) maintains service continuity and recovers from disruptions to ensure that client operations are protected. It outlines our preparation, response processes, recovery targets, and communication commitments for any event that affects platform availability.

Scope

This plan covers all components of the SubscriptionFlow production platform, including the multi-tenant web application and API layer, subscription and billing data storage, background job processing, webhook ingestion and delivery, third-party integration services, and supporting infrastructure (DNS, CDN, monitoring).

2 Platform Overview

SubscriptionFlow is hosted entirely on Microsoft Azure (primary region: East US 2).

Web & Application Layer
Azure Virtual Machines (Ubuntu Linux)
Handles all tenant HTTP requests and business logic
Database
Azure MySQL Flexible Server (HA enabled)
Stores all tenant and subscription data
Cache & Queue
Azure Cache for Redis (Premium)
Manages background job queues and application caching
Load Balancer
Azure Application Gateway (WAF v2)
Distributes traffic; provides DDoS and WAF protection
DNS & CDN
Cloudflare
Global DNS, CDN, and DDoS protection layer
Monitoring
Azure Monitor, Grafana, Prometheus, Uptime Kuma
End-to-end observability from infrastructure to availability
3 Service Availability Commitment
99.9%

Platform Availability Target

Measured monthly across all production endpoints. Allowable downtime: ≤ 43.8 min/month.

Full Platform Outage — RTO
< 30 min
RPO: < 1 hour
Partial Outage — RTO
< 2 hrs
RPO: < 4 hours
Non-Critical Degradation — RTO
< 8 hrs
RPO: < 24 hours
4 Incident Classification & Response
SeverityDefinitionExamples
P1 — CriticalComplete platform unavailability or data integrity riskAll tenants unable to access the platform; suspected data loss
P2 — HighSignificant feature degradation or single-node failureBackground job processing stopped; one web node down; payment webhooks not delivering
P3 — MediumLimited impact; workarounds availableAncillary integration degraded; performance degradation without data impact
SeverityTime to AcknowledgeTime to First UpdateUpdate Cadence
P1 — Critical15 minutes30 minutesEvery 30 minutes until resolved
P2 — High30 minutes1 hourEvery hour until resolved
P3 — Medium4 business hours8 business hoursDaily update
5 Business Continuity Procedures
ComponentFailure BehaviourContinuity Mechanism
Single web node failureTraffic automatically routed to healthy nodesAzure Application Gateway health checks
Database primary failureAutomatic failover to standby (60–120 seconds)Azure MySQL HA with standby replica
Background job workers stoppedJobs remain queued safely; no data lostRedis queue; workers restarted automatically
Redis unavailableAsync features degraded; sync data operations unaffectedManual restart; Azure Premium tier SLA
Cloudflare / DNS issueDirect access to origin remains availableAzure Application Gateway PIP as fallback
6 Disaster Recovery Scenarios
1
Database Loss or Corruption
  1. Detect event via monitoring alerts (Azure Monitor / Uptime Kuma).
  2. If HA failover has not triggered automatically, initiate via Azure Portal.
  3. If data corruption is detected, restore to last known clean point using PITR.
  4. Reconnect application nodes to the restored database.
  5. Validate data integrity and resume normal operations.
  6. Notify clients per communication plan (§7).
2
Web Application Node Failure
  1. Azure Application Gateway detects the unhealthy node and removes it from rotation automatically.
  2. Remaining nodes absorb traffic; capacity is monitored.
  3. Failed node is restarted or replaced.
  4. Once healthy, the node is re-added to the load balancer pool.
3
Background Job Processing Failure
  1. Detect via Grafana queue-depth dashboard or monitoring alert.
  2. Restart worker processes.
  3. Confirm queue is draining normally.
  4. For extended outage, trigger time-sensitive jobs (renewals, invoices) manually.
4
Full Region Failure
  1. Activate incident bridge and notify all stakeholders.
  2. Provision replacement infrastructure in an alternate Azure region.
  3. Restore database from backup to the new region.
  4. Update DNS records via Cloudflare to point to new region.
  5. Validate all services and resume operations.
⚠ Cross-region recovery currently has a longer RTO (estimated 4–8 hours). Cross-region geo-redundant backups are on our infrastructure roadmap.
5
Third-Party Integration Failure (GoCardless, Zoho, Stripe, etc.)
  1. SubscriptionFlow platform continues operating normally.
  2. Affected webhook deliveries or API calls are retried per provider configuration.
  3. Clients are notified if integration downtime will affect their operations.
  4. Resolution is coordinated with the relevant third-party provider.
7 Communication Plan
EventNotification MethodTimeline
P1 incident declaredEmail + Status PageWithin 15 minutes of detection
P2 incident declaredEmail + Status PageWithin 30 minutes of detection
Incident updateEmail + Status PagePer cadence in §4.2
Incident resolvedEmail + Status PageWithin 30 minutes of resolution
Post-incident reportEmailWithin 48 hours of resolution
Planned maintenanceEmailMinimum 48 hours in advance
📧 Incident Communication Template
Subject: [SubscriptionFlow] Service Notification — [Date]
We are currently [investigating / experiencing] a disruption affecting [scope].
Status: Investigating / Identified / Monitoring / Resolved
Impact: [Description of what is affected]
Start time: [UTC timestamp]
Next update: [UTC timestamp]
8 Data Protection & Backup Summary
Data TypeBackup MethodFrequencyRetentionRecovery Granularity
Tenant subscription dataAzure PITR (automated)Continuous30 daysAny second within retention window
Tenant subscription dataDaily snapshot backupDailyTBDPer-day restore
Application configurationVersion-controlled (Git)On every changeIndefinitePer-commit
Monitoring & log dataCentralised log aggregationContinuousTBDPer-event
🔒 All production data is encrypted at rest using Azure-managed encryption and in transit using TLS 1.2 or higher.
9 PCI DSS Compliance
AreaStatus
Web application firewall (WAF)Active — Azure Application Gateway WAF v2
Data encryption in transitTLS 1.2+ enforced on all client-facing endpoints
Data encryption at restAzure-managed encryption on all data stores
Access controlRole-based access; least privilege applied
Audit loggingCentralised log aggregation and monitoring
Vulnerability managementRegular patching; Azure Advisor reviewed
Network segmentationProduction isolated in dedicated Azure Virtual Network
PCI complianceFully
10 Plan Governance & Testing
TestFrequency
Database PITR restore drillQuarterly
Application Gateway failover testQuarterly
Job worker failure and recovery drillMonthly
Full DR tabletop exercise (team walkthrough)Annually
Communication plan testSemi-annually
11 Definitions
RTO — Recovery Time Objective
Maximum acceptable time from incident onset to service restoration
RPO — Recovery Point Objective
Maximum acceptable data loss measured in time
PITR — Point-in-Time Restore
Database recovery feature allowing restore to any specific point within a retention window
WAF — Web Application Firewall
Security layer that inspects and filters web traffic for malicious requests
HA — High Availability
Architecture where a standby component automatically takes over if the primary fails
CDN — Content Delivery Network
Distributed network (Cloudflare) that accelerates delivery and absorbs DDoS attacks
P1 / P2 / P3
Internal severity classification for incidents — P1 is the most severe