Disaster Recovery Plan
Run ID: 69cb22f261b1021a29a8644c2026-03-31Infrastructure
PantheraHive BOS
BOS Dashboard

Generate a comprehensive disaster recovery plan with RTO/RPO targets, backup strategies, failover procedures, communication plans, and testing schedules.

Disaster Recovery Plan (DRP)

1. Executive Summary

This Disaster Recovery Plan (DRP) outlines the strategies, procedures, and responsibilities required to minimize downtime and data loss in the event of a disruptive incident. The primary goal is to ensure business continuity and the rapid restoration of critical IT systems and business operations, adhering to defined Recovery Time Objectives (RTOs) and Recovery Point Objectives (RPOs). This plan provides a structured approach to incident response, data recovery, system restoration, and stakeholder communication.

2. Introduction and Purpose

The purpose of this DRP is to provide a comprehensive framework for responding to and recovering from various disaster scenarios, including but not limited to natural disasters, cyberattacks, major system failures, and human error. This plan aims to:

  • Minimize the impact of disruptive events on business operations.
  • Protect critical data and infrastructure.
  • Ensure the timely restoration of IT services to support business functions.
  • Define roles, responsibilities, and communication protocols during a disaster.
  • Provide a tested and documented recovery process.

3. Scope

This DRP covers all critical IT systems, applications, data, and associated infrastructure essential for the continued operation of [Organization Name]. This includes:

  • Primary Data Center: [Location/Address]
  • Secondary/DR Site: [Location/Address or Cloud Provider]
  • Critical Business Applications: [List examples: ERP, CRM, Core Database, Email, Web Servers]
  • Networking Infrastructure: [Routers, Switches, Firewalls]
  • Data Storage: [SAN, NAS, Cloud Storage]
  • End-User Computing: [Desktops, Laptops, Mobile Devices (as applicable)]
  • Key Business Processes: [Order Processing, Financial Transactions, Customer Support]

4. Objectives: Recovery Time Objectives (RTO) and Recovery Point Objectives (RPO)

RTO and RPO targets are defined based on business criticality and impact analysis. These objectives guide the selection of recovery strategies and technologies.

4.1. Recovery Time Objectives (RTO)

The maximum tolerable duration for which a system or application can be down after a disaster.

  • Tier 1 - Critical Systems (e.g., Core ERP, Primary Database, Customer-facing Web Services):

* RTO: 0-4 hours

Description:* Systems whose unavailability directly halts core business operations or significantly impacts revenue/reputation.

  • Tier 2 - Important Systems (e.g., Email, CRM, Internal Collaboration Tools):

* RTO: 4-24 hours

Description:* Systems that support critical business functions but whose temporary unavailability allows for manual workarounds.

  • Tier 3 - Non-Critical/Support Systems (e.g., Development Servers, HR Portal, File Shares):

* RTO: 24-72 hours

Description:* Systems that can be offline for an extended period without severely impacting core business operations.

4.2. Recovery Point Objectives (RPO)

The maximum tolerable amount of data that can be lost from a system due to a disaster.

  • Tier 1 - Critical Systems:

* RPO: 0-1 hour (Near real-time)

Description:* Requires continuous replication or very frequent snapshots to minimize data loss.

  • Tier 2 - Important Systems:

* RPO: 1-4 hours

Description:* Requires frequent backups or replication.

  • Tier 3 - Non-Critical/Support Systems:

* RPO: 4-24 hours

Description:* Daily backups are generally sufficient.

5. Key Personnel and Responsibilities

A dedicated Disaster Recovery Team will be established with clear roles and responsibilities.

  • DR Coordinator (Overall Lead):

* Activates the DRP.

* Manages the overall recovery effort.

* Facilitates communication with executive leadership and external stakeholders.

* Approves critical decisions during recovery.

  • Technical Lead(s) (Infrastructure, Applications, Network):

* Directs technical recovery efforts.

* Executes failover and restoration procedures.

* Manages vendor support.

* Provides technical status updates.

  • Communication Lead:

* Manages internal and external communications.

* Drafts and disseminates status updates to employees, customers, and partners.

* Monitors media and social channels.

  • Business Unit Lead(s):

* Assesses business impact.

* Prioritizes application and data recovery needs.

* Coordinates manual workarounds (if applicable).

* Communicates with their respective teams.

  • Security Lead:

* Ensures security protocols are maintained during recovery.

* Monitors for new threats or vulnerabilities.

* Manages access control at recovery sites.

Emergency Contact List (Appendix A) will include primary and secondary contacts for all key personnel, vendors, and emergency services.

6. Disaster Detection and Declaration

6.1. Incident Identification

Disasters can be identified through:

  • Automated monitoring systems (e.g., network, server, application alerts).
  • User reports of system outages or data loss.
  • Physical security breaches or environmental alarms (e.g., fire, flood).
  • External notifications (e.g., utility outages, natural disaster warnings).

6.2. Disaster Declaration Procedure

  1. Initial Assessment: Upon detection of a major incident, the on-call IT manager or designated personnel will conduct an immediate assessment to determine the scope and potential impact.
  2. Notification to DR Coordinator: If the incident is determined to be a disaster affecting critical systems and exceeding predefined thresholds (e.g., RTO/RPO breach imminent), the DR Coordinator must be notified immediately.
  3. DRP Activation: The DR Coordinator, in consultation with executive leadership, will formally declare a disaster and activate the DRP.
  4. Team Mobilization: The DR Coordinator will initiate the activation of the DR Team and relevant personnel.

7. Backup and Recovery Strategies

Robust backup and recovery strategies are fundamental to meeting RPO targets.

7.1. Data Backup Strategy

  • Frequency:

* Critical Data (Tier 1): Continuous Data Protection (CDP) or near-real-time replication to DR site. Transaction logs backed up every 15-30 minutes.

* Important Data (Tier 2): Incremental backups every 4 hours, full backups daily.

* Non-Critical Data (Tier 3): Incremental backups daily, full backups weekly.

  • Retention:

* Daily backups: 30 days

* Weekly backups: 3 months

* Monthly backups: 1 year

* Annual backups: 7 years (or as per compliance requirements)

  • Storage Locations:

* On-site: Short-term recovery, fast access.

* Off-site: Secure, geographically dispersed storage for disaster resilience (e.g., encrypted cloud storage, secure tape vaulting).

* Cloud: Utilize [Cloud Provider, e.g., AWS S3, Azure Blob Storage] for cost-effective, durable, and geo-redundant storage.

  • Backup Technologies: [List specific tools, e.g., Veeam Backup & Replication, Azure Backup, AWS Backup, Commvault, RMAN for Oracle].
  • Encryption: All backups, both in transit and at rest, must be encrypted using [Encryption Standard, e.g., AES-256].
  • Integrity Checks: Regular verification and restoration tests of backups to ensure data integrity and recoverability.

7.2. System Recovery Strategy

  • Virtualization: Leverage virtualization (e.g., VMware, Hyper-V) for rapid system provisioning and portability.
  • Image-based Backups: Use full system image backups for quick bare-metal or virtual machine restores.
  • Automated Recovery Tools: Implement orchestration tools (e.g., VMware Site Recovery Manager, Azure Site Recovery) to automate failover and failback processes where possible.
  • Configuration Management: Maintain up-to-date configuration management databases (CMDB) and infrastructure-as-code (IaC) scripts for rapid environment rebuilding.

8. Failover and Failback Procedures

These procedures detail the steps to switch from the primary site to the disaster recovery site and back again.

8.1. Failover Procedures (Primary Site to DR Site)

  1. Declare Disaster & Activate DRP: (As per Section 6.2)
  2. Isolate Primary Site (if necessary): Disconnect compromised systems from the network to prevent further damage or propagation.
  3. Verify DR Site Readiness:

* Ensure DR site network connectivity.

* Verify power and cooling.

* Confirm availability of necessary hardware/cloud resources.

  1. Initiate Replication Synchronization: Ensure the latest replicated data is available at the DR site.
  2. Activate DR Site Infrastructure:

* Power on/provision virtual machines at the DR site.

* Configure network settings (IP addresses, DNS).

* Restore critical services (e.g., Active Directory, DNS, NTP).

  1. Restore Critical Applications (Tier 1 First):

* Restore databases from the latest available backup/replication.

* Start application servers.

* Perform application-specific integrity checks.

  1. Test Application Functionality:

* Internal testing by DR Team.

* Limited user acceptance testing (UAT) by business leads.

  1. Update DNS/Load Balancers: Redirect user traffic to the DR site.
  2. Communicate Status: Inform stakeholders of successful failover and operational status.
  3. Monitor DR Site: Continuously monitor performance and health of systems at the DR site.

8.2. Failback Procedures (DR Site to Primary Site)

Failback is performed once the primary site is fully restored and deemed stable.

  1. Assess Primary Site Readiness:

* Ensure all damage is repaired.

* Verify network, power, and environmental systems.

* Confirm all primary infrastructure is operational.

  1. Synchronize Data from DR to Primary:

* Establish replication from the DR site back to the primary site.

* Ensure all changes made at the DR site are replicated to the primary site.

  1. Schedule Failback Window: Coordinate with business units to minimize impact.
  2. Initiate Failback:

* Temporarily halt operations at the DR site.

* Perform a final data synchronization.

* Deactivate systems at the DR site.

* Activate systems at the primary site.

  1. Verify Primary Site Operations:

* Conduct comprehensive system and application testing.

* Perform UAT with business users.

  1. Update DNS/Load Balancers: Redirect user traffic back to the primary site.
  2. Communicate Status: Inform stakeholders of successful failback.
  3. Decommission DR Site (if temporary): Power down and release resources at the DR site.
  4. Post-Failback Review: Conduct a review to identify lessons learned.

9. Communication Plan

Effective communication is critical during a disaster.

9.1. Internal Communication

  • Crisis Team: Dedicated communication channel (e.g., secure chat, conference bridge, dedicated email list) for DR Team.
  • Employees:

* Initial notification via [Email, SMS, Crisis Communication Platform] regarding the incident and expected impact.

* Regular updates on recovery progress, estimated service restoration times, and instructions for remote work or alternative locations.

* Designated internal communication lead.

  • Executive Leadership: Regular concise updates on status, impact, and estimated recovery timelines from the DR Coordinator.

9.2. External Communication

  • Customers:

* Initial notification via [Website Banner, Email, Social Media] acknowledging the incident and apologizing for disruption.

* Regular updates on recovery progress and estimated service restoration.

* Provide alternative contact methods if primary channels are affected.

  • Vendors/Partners: Inform critical vendors and partners about the incident and potential impact on services or supply chain.
  • Media/Public: All media inquiries must be directed to the Communication Lead or designated spokesperson. Pre-approved statements will be used where possible.
  • Regulatory Bodies: Notify relevant regulatory authorities as required by law or industry standards [e.g., GDPR, HIPAA, PCI DSS].

9.3. Communication Tools and Templates

  • Primary: [Email, SMS Gateway, Microsoft Teams/Slack, PagerDuty/Opsgenie]
  • Secondary (Out-of-band): Satellite phones, personal mobile phones (if primary network affected).
  • Templates: Pre-drafted email and SMS templates for various stakeholder groups for initial notification, progress updates, and resolution. (Appendix B)

10. Testing and Maintenance Schedule

Regular testing and maintenance are crucial to ensure the DRP remains effective and current.

10.1. Testing Schedule

  • Tabletop Exercises (Annual):

* Frequency: Annually.

* Description: A facilitated discussion-based exercise where the DR Team walks through the DRP without activating systems. Focuses on roles, responsibilities, communication, and decision-making.

* Output: Identified gaps in the plan, revised procedures.

  • Functional Tests (Bi-Annual):

* Frequency: Bi-annually (every 6 months).

* Description: Partial activation of specific systems or applications at the DR site. Focuses on verifying specific recovery steps, data integrity, and application functionality.

* Output: Verification of RTO/RPO targets for tested systems, technical procedure updates.

  • Full Simulation Tests (Annual/Bi-Annual):

* Frequency: Annually for Tier 1 systems, Bi-annually for Tier 2.

* Description: Full failover of critical systems to the DR site, with limited user involvement (or full user involvement if feasible). Simulates a real disaster as closely as possible. Includes failback.

* Output: Comprehensive report on RTO/RPO adherence, identification of bottlenecks, full DRP updates.

  • Backup Restoration Tests (Monthly):

* Frequency: Monthly.

* Description: Randomly select a critical system's backup and attempt a full restoration to a segregated environment to verify recoverability and data integrity.

* Output: Confirmation of backup validity, identification of corruption issues.

10.2. Maintenance Schedule

  • Plan Review and Update (Quarterly):

* Review contact lists (Appendix A).

* Update system configurations (Appendix C).

* Review RTO/RPO targets.

* Incorporate lessons learned from tests or actual incidents.

  • Software/Firmware Updates (As needed, with change management):

* Ensure DR site software versions match the primary site where necessary.

  • Hardware Refresh (As per lifecycle management):

* Ensure DR site hardware remains compatible and adequately provisioned.

  • Documentation Updates: Any changes to infrastructure, applications, or personnel must trigger an immediate review and update of the DRP.

11. Training

All members of

gemini Output

Disaster Recovery Plan

Document Version: 1.0

Date: October 26, 2023

Prepared For: [Client/Organization Name]

Prepared By: PantheraHive


1. Executive Summary

This Disaster Recovery Plan (DRP) outlines the strategies, procedures, and resources necessary to recover critical IT infrastructure, applications, and data in the event of a major disruption. The primary objective is to minimize downtime and data loss, ensuring business continuity and maintaining essential operations. This plan details Recovery Time Objectives (RTOs) and Recovery Point Objectives (RPOs), comprehensive backup strategies, failover procedures, communication protocols, and a rigorous testing schedule to ensure readiness and effectiveness.

2. Introduction & Purpose

The purpose of this Disaster Recovery Plan is to provide a structured approach for the [Client/Organization Name] organization to respond to and recover from various disaster scenarios that could impact its information technology systems and services. This plan aims to:

  • Minimize the duration of service interruptions.
  • Protect critical data and systems from loss or corruption.
  • Ensure the timely restoration of essential business functions.
  • Establish clear roles, responsibilities, and procedures for disaster recovery.
  • Comply with regulatory requirements and industry best practices.

3. Scope

This DRP covers the recovery of critical IT infrastructure, applications, and data supporting [list key business functions, e.g., customer service, financial transactions, internal operations, e-commerce platform]. It encompasses all primary production systems hosted within [e.g., primary data center, cloud environment – AWS/Azure/GCP].

In-Scope Systems/Services (Examples - to be customized by client):

  • ERP System (e.g., SAP, Oracle EBS)
  • CRM System (e.g., Salesforce)
  • Database Servers (e.g., SQL Server, MySQL, PostgreSQL)
  • Web Application Servers
  • Email Services (e.g., Exchange Online, Google Workspace)
  • Network Infrastructure (Firewalls, Routers, Switches)
  • File Servers / SharePoint
  • Critical Virtual Machines and Hypervisors
  • Security Systems (e.g., SIEM, Identity Management)

Out-of-Scope (Examples):

  • Physical office recovery (covered by Business Continuity Plan)
  • Non-critical test/development environments (unless specified)
  • Individual user workstations (unless critical data resides solely there)

4. Assumptions

This DRP is based on the following assumptions:

  • Critical personnel are available and can be contacted during a disaster.
  • Off-site backup data is accessible and uncorrupted.
  • Third-party vendors and service providers will fulfill their contractual obligations for disaster recovery support.
  • Necessary recovery hardware and software licenses are available or can be procured rapidly.
  • The disaster recovery team has received adequate training and is familiar with the procedures.
  • Alternative communication methods are available in case primary systems are down.

5. Key Definitions

  • Disaster Recovery (DR): The process of restoring data, hardware, and software following a natural or human-induced catastrophe.
  • Business Continuity Plan (BCP): A comprehensive plan for continuing business operations before, during, and after a disaster. DR is a component of BCP.
  • Recovery Time Objective (RTO): The maximum tolerable duration of time that a computer, system, network, or application can be down after a disaster or disruption.
  • Recovery Point Objective (RPO): The maximum tolerable amount of data (measured in time) that can be lost from an IT service due to a major incident.
  • Failover: The process of switching to a redundant or standby system upon the failure or abnormal termination of the previously active system.
  • Failback: The process of restoring operations to the original primary system after the disaster or disruption has been resolved and the primary site is operational.

6. Disaster Recovery Team

The Disaster Recovery Team (DRT) is responsible for executing this plan. Roles and responsibilities are assigned as follows:

| Role | Primary Contact | Alternate Contact | Responsibilities |

| :--------------------------- | :------------------ | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |

| DR Team Lead | [Name, Title] | [Name, Title] | Overall coordination, decision-making, communication with management, declaration of disaster. |

| IT Infrastructure Lead | [Name, Title] | [Name, Title] | Network, server, and storage recovery, physical infrastructure assessment. |

| Applications Lead | [Name, Title] | [Name, Title] | Application restoration, configuration, and testing. |

| Data Recovery Lead | [Name, Title] | [Name, Title] | Data restoration from backups, database recovery, data integrity verification. |

| Network & Security Lead | [Name, Title] | [Name, Title] | Network connectivity, firewall rules, VPN access, security incident response during DR. |

| Communications Lead | [Name, Title] | [Name, Title] | Internal and external communications, maintaining contact lists, drafting messages. |

| Business Unit Liaisons | [Name, Title] | [Name, Title] | Represent specific business units, provide critical business context, assist with testing and verification from a business perspective. |

Note: All team members must have access to this plan and their respective contact lists, both digitally and in hard copy, and be aware of their roles and responsibilities.

7. Business Impact Analysis (BIA) Summary

A Business Impact Analysis (BIA) has identified the following critical systems and their associated impacts. This summary informs the RTO/RPO targets.

| System/Application | Criticality | Potential Business Impact of Outage | RTO Target | RPO Target |

| :------------------------- | :---------- | :---------------------------------- | :----------- | :----------- |

| ERP System | Critical | Financial loss, operational halt | 4 hours | 15 minutes |

| CRM System | High | Loss of customer data, sales impact | 8 hours | 1 hour |

| E-commerce Platform | Critical | Revenue loss, brand damage | 2 hours | 5 minutes |

| Database Servers | Critical | Data loss, application failure | 2-4 hours | 5-15 minutes |

| Email Services | High | Internal/external communication loss| 12 hours | 4 hours |

| File Servers | Medium | Productivity loss | 24 hours | 4 hours |

| Network Infrastructure | Critical | Complete system outage | 1 hour | 0 minutes |

Note: This is a summary. Detailed BIA reports should be referenced for full context.

8. Recovery Objectives

8.1. Recovery Time Objectives (RTO)

The RTO defines the maximum acceptable downtime for each critical system and business function. These targets guide the selection of recovery strategies and technologies.

  • Tier 1 (Critical - e.g., E-commerce, Core Databases): 2-4 hours
  • Tier 2 (High - e.g., ERP, CRM): 4-8 hours
  • Tier 3 (Medium - e.g., Email, File Servers): 12-24 hours
  • Tier 4 (Low - e.g., Development/Test environments): 48+ hours

8.2. Recovery Point Objectives (RPO)

The RPO defines the maximum acceptable data loss for each critical system. This dictates the frequency of data backups and replication.

  • Tier 1 (Critical - e.g., E-commerce, Core Databases): 0-15 minutes (near real-time replication)
  • Tier 2 (High - e.g., ERP, CRM): 1 hour (frequent snapshots/transaction log shipping)
  • Tier 3 (Medium - e.g., Email, File Servers): 4 hours (regular backups)
  • Tier 4 (Low - e.g., Development/Test environments): 24 hours

9. Backup & Data Recovery Strategy

A robust backup strategy is fundamental to achieving RPO targets and ensuring data availability.

9.1. Data Classification

All data is classified based on criticality and sensitivity (e.g., Critical, High, Medium, Low). This classification dictates backup frequency, retention, and encryption requirements.

9.2. Backup Methods

  • Full Backups: Weekly for all systems.
  • Incremental Backups: Daily for all systems, capturing changes since the last backup (full or incremental).
  • Differential Backups: Not currently used, but can be considered for specific applications.
  • Database Transaction Logs: Continuous or near-continuous logging for critical databases (e.g., SQL Server, Oracle) to achieve low RPOs.
  • Snapshots/Replication: For Tier 1 systems, block-level or VM-level snapshots and replication to a secondary site/cloud region are employed for near-zero RPO.

9.3. Backup Frequencies

| System/Data Type | Backup Type | Frequency | RPO Achieved |

| :----------------------- | :---------------- | :----------------- | :----------- |

| Tier 1 Databases | Transaction Logs | Continuous | 0-5 mins |

| Tier 1 VMs/Applications| Replication/Snapshots | Every 5-15 mins | 5-15 mins |

| Tier 2 Databases | Full/Incremental/Logs | Daily Full, Hourly Incremental/Logs | 1 hour |

| Tier 2 VMs/Applications| Incremental | Every 4 hours | 4 hours |

| Tier 3 File Servers | Incremental | Daily | 24 hours |

| All Systems | Full | Weekly | N/A |

9.4. Backup Retention Policies

| Backup Type | On-site Retention | Off-site / Cloud Retention |

| :---------------------- | :---------------- | :------------------------- |

| Daily Incremental | 7 days | 30 days |

| Weekly Full | 4 weeks | 90 days |

| Monthly Full | N/A | 1 year |

| Yearly Full (Archival)| N/A | 7 years (regulatory) |

| Database Transaction Logs | 24 hours | 7 days |

9.5. Backup Locations

  • Primary On-site Storage: For immediate recovery of recent data (e.g., NAS, SAN).
  • Secondary Off-site Storage: Daily transfer of critical backups to a geographically separate location (e.g., secure vault, secondary data center).
  • Cloud Storage: All critical backups are replicated to [Cloud Provider, e.g., AWS S3, Azure Blob Storage, Google Cloud Storage] in a different region for redundancy and accessibility.

9.6. Data Encryption

All data at rest (on-site, off-site, and cloud) and in transit (during replication/transfer) is encrypted using AES-256 encryption or higher. Encryption keys are securely managed and stored separately from the encrypted data.

9.7. Restoration Procedures

  1. Identify Data/System to Restore: Determine the specific files, databases, or entire systems requiring restoration.
  2. Determine Recovery Point: Identify the desired recovery point (timestamp) based on the RPO and incident details.
  3. Locate Backup: Identify the relevant backup media/location (on-site, off-site, cloud).
  4. Initiate Restore: Use backup software/tools (e.g., Veeam, Commvault, native cloud tools) to begin the restoration process.
  5. Verify Integrity: After restoration, perform data integrity checks (e.g., checksums, database consistency checks) and functional testing.
  6. Document: Record details of the restoration, including date, time, data recovered, and any issues encountered.

10. Failover & Recovery Procedures

These procedures detail the steps to activate the DR site/environment and restore services.

10.1. Declaration of Disaster

  1. Incident Detection: Monitoring systems, user reports, or external notifications indicate a major incident.
  2. Initial Assessment: DR Team Lead (or designated alternate) assesses the impact, scope, and potential duration of the outage.
  3. DR Declaration: If the incident exceeds defined thresholds (e.g., RTOs will be missed, primary site is compromised), the DR Team Lead, in consultation with senior management, formally declares a disaster.
  4. Notification: The Communications Lead notifies the DR Team and key stakeholders.

10.2. Activation of DR Plan

Upon disaster declaration, the DR Team Lead initiates the following:

  1. Convene DR Team: All DR Team members assemble (physically or virtually) at the designated command center or remote meeting.
  2. Access DRP: Team members retrieve their copies of the DRP (hard copy and secure digital access).
  3. Secure DR Site Access: Ensure all team members have necessary credentials and access to the DR site/cloud environment.
  4. Initial Status Check: Verify the availability and health of the DR environment.

10.3. System-Specific Failover Procedures

The following outlines a general sequence. Detailed, system-specific runbooks for each critical application and infrastructure component are maintained in Appendix D.

  1. Network Recovery (IT Infrastructure Lead):

* Activate DR site network infrastructure (routers, firewalls, switches).

* Update DNS records to point to DR site IPs (if applicable, with low TTL).

* Establish VPN tunnels/direct connect to necessary third parties.

* Verify network connectivity between DR components and to the internet.

  1. Infrastructure Recovery (IT Infrastructure Lead):

* Power on/provision virtual machines or physical servers at the DR site.

* Verify hypervisor health and storage connectivity.

* Restore base operating systems (if not replicated).

  1. Database Recovery (Data Recovery Lead):

* Initiate database replication failover or restore the latest available backups to DR database servers.

* Apply transaction logs to achieve the target RPO.

* Perform database consistency checks.

  1. Application Recovery (Applications Lead):

* Deploy or activate application servers in the DR environment.

* Configure application settings to connect to DR databases and other services.

* Restore application-specific data (if not part of database recovery).

* Perform application functional tests.

  1. Service Verification & Validation (All Leads):

* Internal testing: DR Team performs comprehensive tests of all recovered systems and applications.

* Business user testing: Business Unit Liaisons coordinate user acceptance testing (UAT) with key business users to validate functionality and data integrity.

* Security checks: Verify firewall rules, access controls, and security configurations.

10.4. Data Synchronization/Replication

  • Active-Passive DR: Data is continuously replicated from the primary site to the DR site. Upon failover, the DR site takes over.
  • Cloud-based DR: Utilize native cloud replication services (e.g., AWS DRS, Azure Site Recovery) to maintain up-to
gemini Output

As a professional AI assistant within PantheraHive, I have generated a comprehensive and detailed Disaster Recovery Plan (DRP). This plan is designed to minimize the impact of disruptive events, ensure business continuity, and facilitate the swift recovery of critical IT systems and data.


Disaster Recovery Plan (DRP)

Document Version: 1.0

Date: October 26, 2023

Prepared For: [Customer Name/Organization]


1. Executive Summary

This Disaster Recovery Plan (DRP) outlines the strategies, procedures, and responsibilities necessary to recover critical IT infrastructure and data in the event of a disaster. Its primary objective is to minimize downtime, prevent data loss, and ensure the timely restoration of business-critical services, thereby protecting [Customer Name]'s operations, reputation, and financial stability. This plan defines specific Recovery Time Objectives (RTOs) and Recovery Point Objectives (RPOs), details backup strategies, failover procedures, communication protocols, and a rigorous testing schedule to ensure readiness.

2. Introduction

2.1. Purpose

The purpose of this DRP is to provide a structured and actionable framework for responding to and recovering from disruptive events that threaten [Customer Name]'s IT infrastructure and data. It serves as a comprehensive guide for the Disaster Recovery Team to restore critical systems and data to an operational state within predefined timeframes and with minimal data loss.

2.2. Scope

This DRP covers the recovery of all identified critical IT systems, applications, and data residing within [Customer Name]'s primary data centers (on-premise and/or cloud environments) and extends to the activation of designated recovery sites. It encompasses:

  • Critical servers (physical and virtual)
  • Network infrastructure components
  • Storage systems
  • Business-critical applications (e.g., ERP, CRM, E-commerce, Database Systems)
  • Critical data (e.g., customer data, financial records, operational data)
  • Associated third-party services and dependencies.

2.3. Objectives

The key objectives of this DRP are to:

  • Minimize disruption to business operations during and after a disaster.
  • Ensure the safety and integrity of critical data.
  • Restore critical IT services and data within defined RTOs and RPOs.
  • Establish clear roles, responsibilities, and communication channels for disaster response.
  • Provide a systematic approach to testing and maintaining recovery capabilities.
  • Protect [Customer Name]'s reputation and financial health.

2.4. Key Definitions

  • Disaster: An unexpected event that causes significant disruption to IT operations, rendering primary systems or facilities unavailable for an extended period.
  • Recovery Time Objective (RTO): The maximum tolerable duration of time that a computer system, application, or network can be down after a disaster or outage.
  • Recovery Point Objective (RPO): The maximum tolerable amount of data that can be lost from an IT service due to a major incident. It represents the point in time to which systems must be recovered.
  • Failover: The process of automatically or manually switching to a redundant or standby system upon the failure or abnormal termination of the previously active system.
  • Failback: The process of restoring operations to the original primary infrastructure once it has been repaired and validated, after a failover event.
  • Recovery Site: A secondary location (physical or cloud-based) where IT systems and data can be restored and operations resumed in the event of a primary site disaster.

3. Risk Assessment Summary

This DRP is informed by prior risk assessments that identified potential threats to [Customer Name]'s IT infrastructure, including:

  • Natural disasters (e.g., floods, earthquakes, severe storms)
  • Cyber-attacks (e.g., ransomware, DDoS, data breaches)
  • Human error
  • Hardware/software failures
  • Power outages
  • Third-party service disruptions

The criticality of systems and data, along with their associated RTO/RPO targets, has been determined based on the potential impact of these risks on business operations.

4. Disaster Recovery Team

The Disaster Recovery Team (DRT) is responsible for executing this plan. Roles and responsibilities are clearly defined to ensure an organized and efficient response.

4.1. DR Team Roles and Responsibilities

| Role | Primary Responsibility | Backup/Alternate |

| :------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

| DR Coordinator | Overall management of the DR process; declaration of disaster; communication with executive leadership; coordination of all DR activities. | [Backup DR Coordinator Name/Title] |

| IT Infrastructure Lead| Oversee recovery of network, servers, storage, and virtualization platforms; manage recovery site activation; ensure infrastructure readiness. | [Backup IT Infrastructure Lead Name/Title] |

| Application Lead(s) | Coordinate application-specific recovery; ensure data integrity post-recovery; validate application functionality; manage application dependencies. (Multiple leads may be assigned per critical application group) | [Backup Application Lead Name/Title] |

| Data Recovery Lead | Manage data restoration from backups; ensure data consistency and integrity; oversee database recovery procedures. | [Backup Data Recovery Lead Name/Title] |

| Communications Lead | Manage internal and external communications; draft and disseminate status updates; coordinate with PR/media (if necessary); maintain communication logs. | [Backup Communications Lead Name/Title] |

| Business Continuity Lead | Liaison with business units; ensure business needs are met during recovery; coordinate manual workarounds if necessary; validate business process recovery. | [Backup Business Continuity Lead Name/Title] |

4.2. DR Team Contact Information

A comprehensive contact list for all DR team members, including primary, secondary, and emergency contact methods (office phone, mobile, personal email), will be maintained in Appendix A: Emergency Contact List and stored securely off-site.

5. Recovery Time Objective (RTO) and Recovery Point Objective (RPO) Targets

RTO and RPO targets are defined for critical systems based on their business impact analysis. These targets guide the selection of recovery strategies and procedures.

5.1. RTO/RPO Definitions

  • RTO: The maximum acceptable downtime for a critical system or application.
  • RPO: The maximum acceptable data loss (measured in time) for a critical system or application.

5.2. Critical Systems and Data Targets

| System/Application Group | Description | RTO | RPO | Justification

disaster_recovery_plan.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\n\n\n"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547}\n"); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/\.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/\*\*(.+?)\*\*/g,"$1"); hc=hc.replace(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); } function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}