Case Study: DRA Advisors

Despite the obvious destruction around us, we were never worried about the safety and availability of the data we protect using Storage Guardian

Wilfred Sessoms

NY Tech Central

Lessons from Hurricane Sandy: Why Disaster Recovery is Essential for Businesses in the Modern World

In today's changing world - both political and environmental - businesses all over North America have had to pay more attention to developing their disaster recovery solutions. It is no longer good enough to simply take home backup tapes, thinking that a fire is about the worst case scenario if you live in the northern part of the U.S. or in Canada.

Hurricane Sandy of 2012 ripped through the U.S. East Coast and devastated much of New Jersey and New York, with other states also declaring a state of emergency.

With Hurricanes Katrina and Sandy having made their mark on the U.S., there is no telling whether or not this will be a more common reality.

One Manhattan-based outsourced IT Services organization managed to escape the monumental physical damage the city incurred, but was without power for almost 21 days, a crippling blow to any business. Not only that, the CEO of the company had also lost power at home so he couldn't operate from his home office either.

Thankfully, NY Tech Central has been a reseller of Storage Guardian solutions for almost seven years and therefore was never concerned about data.

"Despite the obvious destruction around us, we were never worried about the safety and availability of the data we protect using Storage Guardian", says Wilfred Sessoms of NY Tech Central.

"We have always had a very high level of comfort with Storage Guardian, and this disaster only solidified that. With the help of Storage Guardian, we suffered no data loss and were back in business as soon as the power came back. There are never any issues and we feel they offer an excellent service."

More case studies:

// 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); } }); });