Balancing Rising Security Needs with DR Readiness

With cyberattack on the rise, use our DR tool to customize your own DR runbook to engage management and prepare them for ransomware attacks.

Now integrated with Microsoft Teams! Make your declaration directly on Teams and alerts your organization as soon as a disaster occurs.

Replicate

Define & replicate your applications and data using the Storage Guardian Wizard and publish your custom disaster recovery runbook.

Initiate Recovery

In a disaster, simply call or text our Fast Failover hotline and enter a secret PIN that we arrange in advance.

Stand By

Our automated service recovers your apps and data onto the destination you create, public or private.

Review & Monitor

24/7 monitoring to ensure RTO & RPO meet defined objective. Secure access information is sent to your team so you can continue to work through the disaster.

How does Fast Failover stack up?

Fast Failover creates a framework to allow users to successfully define the disaster recovery process. Automating nearly all the steps needed to recover from a disaster, making recovery faster and enabling you to initiate the recovery yourself.

Traditional Recovery

CAN TAKE DAYS OR WEEKS

  • We do the recovery for you.
  • Lengthy process for us to spin up servers, recover apps and data, and send you VPN links to access the new servers.
  • DR drill is difficult to coordinate and involve an extended period of time.

Fast Failover

OFTEN MINUTES OR HOURS

  • Call or text your secret PIN to our 24-hour Fast Failover hotline.
  • Fast Failover automatically handles the rest.
  • Define your RAMs and Cores; shrink and grow your system to your requirement.

Putting recovery into the right hands

Usually DRaaS (disaster recovery as a service) is reserved for Enterprise and large scale organization; we designed our fast failover with small and medium size business in mind.

Regardless of size, the most appropriate person to declare a disaster is often the owner of a business, but some business owners lack the technical ability to initiate recoveries and ensure that everyone can access the recovered applications and data.

Fast Failover is an automated process where all key stakeholders within the organization, including the IT consultant, MSPs (managed service provider), and insurance contacts will be notified upon the incident.

This means that in case of a disaster, you are prepared. Add in semi-annual drills plus documentation of the plan, and you are ready to deal with any incidents in the most efficient way.

Core Features

Fully Defined SOW

There is a lot of buzz around around DRaaS. Fast Failover is build to accelerate the bring up of the system and document the process. At its core, it has clear statement of work where each step and responsibility is defined.

Platform agnostic

Any company that uses hypervisor-based backup sets can use our Fast Failover service, regardless of the backup software that they use.

Secure and compliant

If you use Storage Guardian as the backup provider, your data is stored in our SAS 70 Type II data center and meets industry regulations such as HIPAA, SSAE 16 SOC 2, FIPS.

Affordable

Our economies of scale enable us to provide prices that are similar to those of conventional cloud hosting platforms such as AWS. Contact us for a quote.

Recover yourself

Initiate a recovery on your own, 24/7/365, with no necessary input or support from an engineer. Just call our Fast Failover service and follow the prompts.

Phone-based recovery

If the internet is down in a disaster, you can use your regular phone (landline or cell) to initiate a recovery.

24/7 Monitoring

We integrate our web service with your PSA to monitor RTO, RPO, and declaration 24/7/365.

Easy fail-back

Once the disaster is over and your in-house systems are back online, our established processes are in place to make it easy to migrate back to them.

View our DR Runbook demo

// Ensure the DOM is fully loaded before running the script document.addEventListener('DOMContentLoaded', function() { console.log('Script: DOMContentLoaded event fired. Attempting to initialize form validator.'); // Get the form element by its ID. // IMPORTANT: You MUST replace 'webflow-form' with the actual ID of your Webflow form. // To find the ID: // 1. Publish your Webflow site. // 2. Open it in your browser. // 3. Right-click on your form and select "Inspect" (or "Inspect Element"). // 4. Look for the
tag and its 'id' attribute. // It might look something like or similar. const form = document.getElementById('webflow-form'); // If the form doesn't exist on the page, log an error and exit. if (!form) { console.error('Script Error: Webflow form with ID "webflow-form" not found.'); console.error('Please verify the form ID in your Webflow designer and update the script accordingly.'); return; // Exit the script if the form is not found } console.log('Script: Form found with ID:', form.id); // Get the message display elements. // You should have div elements in your Webflow design with these IDs to display messages. const errorMessageDiv = document.getElementById('error-message'); const successMessageDiv = document.getElementById('success-message'); if (!errorMessageDiv) { console.warn('Script Warning: Error message div with ID "error-message" not found. Messages will not be displayed.'); } if (!successMessageDiv) { console.warn('Script Warning: Success message div with ID "success-message" not found. Messages will not be displayed.'); } /** * Displays a message in the designated message div. * It also ensures the other message type is hidden. * @param {HTMLElement} element - The div element to display the message in. * @param {string} message - The message text to display. * @param {boolean} isError - True if it's an error message, false for success. */ function showMessage(element, message, isError) { if (element) { // Check if the element exists before trying to manipulate it element.textContent = message; element.style.display = 'block'; // Make the message div visible console.log(`Script Message: ${isError ? 'Error' : 'Success'} - ${message}`); } else { console.warn(`Script Warning: Attempted to show message "${message}" but target element was not found.`); } // Ensure the opposite message type is hidden if (isError && successMessageDiv) { successMessageDiv.style.display = 'none'; } else if (!isError && errorMessageDiv) { errorMessageDiv.style.display = 'none'; } } /** * Hides all message divs and clears their content. */ function hideMessages() { if (errorMessageDiv) { errorMessageDiv.style.display = 'none'; errorMessageDiv.textContent = ''; } if (successMessageDiv) { successMessageDiv.style.display = 'none'; successMessageDiv.textContent = ''; } } // Add an event listener for the form's submit event form.addEventListener('submit', function(event) { console.log('Script: Form submission attempted.'); // Hide any previous messages before re-validating hideMessages(); // Get the values from the input fields by their IDs. // IMPORTANT: Ensure these IDs ('form-validator-1', 'form-validator-2', 'form-validator-3') // exactly match the IDs of your input fields in Webflow. const validator1Input = document.getElementById('form-validator-1'); const validator2Input = document.getElementById('form-validator-2'); const validator3Input = document.getElementById('form-validator-3'); // Check if all required input elements exist if (!validator1Input || !validator2Input || !validator3Input) { console.error('Script Error: One or more form validator fields not found.'); console.error('Please check IDs: "form-validator-1", "form-validator-2", "form-validator-3" in your Webflow designer.'); // Prevent submission if critical fields are missing event.preventDefault(); showMessage(errorMessageDiv, 'Form validation setup error: Missing one or more required fields.', true); return; } const validator1 = validator1Input.value; const validator2 = validator2Input.value; const validator3 = validator3Input.value; console.log('Script: Field 1 value:', validator1); console.log('Script: Field 2 value:', validator2); console.log('Script: Field 3 value:', validator3); let isBlocked = false; let blockReason = ''; // Condition 1: field ID "form-validator-1" contains "RobertUnord" if (validator1.includes('RobertUnord')) { isBlocked = true; blockReason = 'Field 1 contains "RobertUnord".'; } // Condition 2: field ID "form-validator-2" contains "RobertUnord" else if (validator2.includes('RobertUnord')) { isBlocked = true; blockReason = 'Field 2 contains "RobertUnord".'; } // Condition 3: field ID "form-validator-3" equals "google" else if (validator3 === 'google') { isBlocked = true; blockReason = 'Field 3 equals "google".'; } // If any blocking condition is met if (isBlocked) { event.preventDefault(); // Stop the form from submitting console.log('Script: Form blocked. Reason:', blockReason); showMessage(errorMessageDiv, `Form submission blocked: ${blockReason} Please correct the entry.`, true); } else { console.log('Script: Form validation passed. Allowing submission.'); // If the form is NOT blocked, allow it to submit normally. // In a Webflow context, this means the form's native submission // (e.g., to a Webflow form backend, or a custom integration) will proceed. // DO NOT add event.preventDefault() here if you want Webflow's default submission to occur. // If you want to show a success message *before* the form submits (and potentially redirects), // you would need to prevent default here and handle the submission via AJAX. // For now, we assume a successful validation allows Webflow's default submission. // showMessage(successMessageDiv, 'Form validated successfully! Submitting...', false); } }); });