Project forms
Choose a form from the tools page.
Your answers go to our team at sales@cloud2networks.com and you get a copy by email. Nothing in your Microsoft tenant is touched by filling this in.
window.C2N_FORMS = { 'new-client': { type: 'application', name: 'New client application', group: 'start', cta: 'Submit application', blurb: 'Opens your account with us: company, contacts, Microsoft tenant basics and the first thing you want done. You fill it in once; every project after starts from it.', fields: [ { l: 'Website', t: 'url' }, { l: 'Industry', r: 1 }, { l: 'Employees', t: 'select', r: 1, o: ['1–25', '26–100', '101–300', '301–1,000', '1,000+'] }, { l: 'Billing contact (name and email)' }, { l: 'Technical contact (name and email)' }, { l: 'Primary Microsoft 365 domain', h: 'For example contoso.com' }, { l: 'Current Microsoft licensing', t: 'select', o: ['None yet', 'Bought direct from Microsoft', 'Through another partner', 'Mixed / not sure'] }, { l: 'Compliance frameworks that apply', t: 'checks', o: ['HIPAA', 'CMMC / NIST 800-171', 'SOC 2', 'PCI DSS', 'GDPR', 'None / not sure'] }, { l: 'What do you want done first?', t: 'textarea', r: 1 }], after: 'An engineer will reply within one business day to set up your onboarding call.' }, 'm365-migration': { type: 'questionnaire', name: 'Microsoft 365 migration questionnaire', group: 'start', pairs: 'Migration Estimator', pairsUrl: '/tools/migration-estimator/', blurb: 'Where your mail and files live today, how much there is, and when you need to be done. Your answers turn into a fixed-price migration quote.', fields: [ { l: 'Source platform', t: 'select', r: 1, o: ['Google Workspace', 'On-premises Exchange', 'Hosted Exchange / IMAP provider', 'Another Microsoft 365 tenant', 'Other'] }, { l: 'Mailboxes to move', t: 'number', r: 1 }, { l: 'Shared mailboxes and resource calendars', t: 'number' }, { l: 'Total mail data (GB, rough)', t: 'number' }, { l: 'File data to move (GB, rough)', t: 'number', h: 'Google Drive, file shares, Dropbox, Box…' }, { l: 'Devices to re-point (Outlook, phones)', t: 'number' }, { l: 'Also moving', t: 'checks', o: ['Calendars and contacts', 'Shared drives / file shares', 'Teams or chat history', 'Archives / PST files'] }, { l: 'Target completion date', t: 'date' }, { l: 'Anything unusual we should know?', t: 'textarea' }] }, 'tenant-to-tenant': { type: 'questionnaire', name: 'Tenant-to-tenant migration questionnaire', group: 'start', blurb: 'For acquisitions, divestitures and consolidations: both tenants, what moves, which domains, and the cutover window. Scopes the migration and how the two sides coexist meanwhile.', fields: [ { l: 'Reason', t: 'select', r: 1, o: ['Acquisition / merger', 'Divestiture', 'Consolidating our own tenants', 'Rebrand'] }, { l: 'Source tenant domain', r: 1 }, { l: 'Destination tenant domain', r: 1 }, { l: 'Users moving', t: 'number', r: 1 }, { l: 'Workloads moving', t: 'checks', o: ['Mailboxes', 'OneDrive', 'SharePoint sites', 'Teams', 'Entra ID identities and groups', 'Intune-managed devices'] }, { l: 'Domains moving between tenants' }, { l: 'Coexistence needed (shared calendars, free/busy)?', t: 'select', o: ['Yes', 'No', 'Not sure'] }, { l: 'Preferred cutover window' }, { l: 'Notes', t: 'textarea' }] }, 'ad-to-entra': { type: 'intake', name: 'Active Directory to Entra ID transition intake', group: 'start', blurb: 'Your domain controllers, sync setup, devices, Group Policy and the apps that still authenticate on-premises. What our engineers need before moving you to Microsoft Entra ID.', fields: [ { l: 'Domain controllers (count and OS versions)', r: 1 }, { l: 'AD forests / domains' }, { l: 'Current sync', t: 'select', o: ['Entra Connect Sync', 'Entra Cloud Sync', 'None', 'Not sure'] }, { l: 'Domain-joined Windows devices', t: 'number' }, { l: 'Group Policy objects in use (rough count)', t: 'number' }, { l: 'Apps that use AD / LDAP / Kerberos', t: 'textarea' }, { l: 'File servers and printers still on-premises?', t: 'textarea' }, { l: 'Target date', t: 'date' }] }, 'intune-autopilot': { type: 'intake', name: 'Intune and Autopilot setup intake', group: 'start', blurb: 'Devices, operating systems, who owns them, the apps to deploy and the policies you expect. Collected before Intune and Windows Autopilot setup starts.', fields: [ { l: 'Windows devices', t: 'number' }, { l: 'Macs', t: 'number' }, { l: 'iPhones / iPads', t: 'number' }, { l: 'Android devices', t: 'number' }, { l: 'Ownership', t: 'select', r: 1, o: ['All company-owned', 'All personal (BYOD)', 'Mixed'] }, { l: 'Hardware vendor / reseller (for Autopilot registration)' }, { l: 'Current device management', t: 'select', o: ['None', 'Group Policy / SCCM', 'Another MDM', 'Intune partly'] }, { l: 'Apps to deploy', t: 'textarea' }, { l: 'Policies you expect (BitLocker, updates, compliance…)', t: 'textarea' }] }, 'defender-endpoint': { type: 'questionnaire', name: 'Defender for Endpoint implementation questionnaire', group: 'start', blurb: 'Endpoints per platform, the antivirus you run now, the licensing you have and how you want incidents handled. Scopes the rollout and the hand-off to your team.', fields: [ { l: 'Windows endpoints', t: 'number' }, { l: 'Windows servers', t: 'number' }, { l: 'macOS', t: 'number' }, { l: 'Linux servers', t: 'number' }, { l: 'Mobile', t: 'number' }, { l: 'Current antivirus / EDR' }, { l: 'Licensing in place', t: 'select', o: ['Business Premium', 'Microsoft 365 E3', 'Microsoft 365 E5', 'Defender for Endpoint P1/P2 standalone', 'Not sure'] }, { l: 'Who should respond to alerts?', t: 'select', o: ['Our internal team', 'Cloud2Networks', 'Both'] }, { l: 'Notes', t: 'textarea' }] }, 'message-encryption': { type: 'intake', name: 'Message encryption setup intake', group: 'start', blurb: 'Who sends encrypted email, to whom, with which branding and rules. Collected before Microsoft Purview Message Encryption is configured.', fields: [ { l: 'Users who send encrypted mail', t: 'number' }, { l: 'When should mail encrypt?', t: 'checks', o: ['User chooses (button / keyword)', 'Automatically for sensitive data', 'Always to certain domains'] }, { l: 'Keyword or subject tag, if any' }, { l: 'Logo and brand colors for the encrypted mail portal' }, { l: 'Regulations driving this', t: 'checks', o: ['HIPAA', 'GLBA', 'CMMC', 'State privacy law', 'Internal policy'] }, { l: 'Notes', t: 'textarea' }] }, 'teams-phone': { type: 'request', name: 'Teams Phone setup and number porting request', group: 'start', pairs: 'Teams Phone Licensing Calculator', pairsUrl: '/tools/teams-phone-calculator/', blurb: 'Users, numbers to port, your current carrier, auto attendants and call queues. Starts Teams Phone setup and the port order.', fields: [ { l: 'Users needing a phone number', t: 'number', r: 1 }, { l: 'Numbers to port', t: 'number' }, { l: 'Current carrier and account number' }, { l: 'Name and service address on the carrier account', t: 'textarea' }, { l: 'PSTN connectivity', t: 'select', o: ['Microsoft Calling Plan', 'Operator Connect', 'Direct Routing', 'Help me choose'] }, { l: 'Auto attendants and call queues', t: 'textarea', h: 'Main line, departments, after-hours routing' }, { l: 'Common-area / desk phones', t: 'number' }, { l: 'Desired go-live date', t: 'date' }] }, 'new-user': { type: 'request', name: 'New user provisioning request', group: 'managed', blurb: 'For clients we already manage: the new person, their role, licenses, groups, mailbox and device. One request provisions the account, licensing and access together.', fields: [ { l: 'New user full name', r: 1 }, { l: 'Job title and department', r: 1 }, { l: 'Start date', t: 'date', r: 1 }, { l: 'Manager' }, { l: 'License', t: 'select', o: ['Same as a colleague (name below)', 'Business Basic', 'Business Standard', 'Business Premium', 'E3', 'E5', 'Other'] }, { l: 'Copy access from (colleague name)' }, { l: 'Groups, shared mailboxes and Teams', t: 'textarea' }, { l: 'Device', t: 'select', o: ['Ship a new laptop', 'Reuse an existing device', 'Personal device only', 'None'] }] }, 'tenant-scan': { type: 'tenant scan', name: 'Tenant Optimizer scan request', group: 'hidden', cta: 'Request my scan', fields: [ { l: 'Primary Microsoft 365 domain', r: 1 }, { l: 'Licensed users (rough)', t: 'number' }, { l: 'Your role', t: 'select', r: 1, o: ['Global Administrator', 'Other admin', 'IT manager (not an admin)', 'Business owner / executive'] }, { l: 'Most interested in', t: 'checks', o: ['License waste', 'Dormant accounts', 'Security gaps', 'Configuration drift', 'Copilot readiness'] }, { l: 'Anything specific?', t: 'textarea' }], after: 'An engineer will email you within one business day with the read-only consent link and a time to walk through the report.' }, 'quote': { type: 'quote', name: 'Quote request', group: 'hidden', cta: 'Request a quote', fields: [{ l: 'What should we quote?', t: 'textarea', r: 1, h: 'Products and quantities, or paste your calculator result' }, { l: 'Term', t: 'select', o: ['Annual, paid upfront', 'Annual, billed monthly', 'Monthly', 'Not sure'] }, { l: 'Segment', t: 'select', o: ['Commercial', 'Nonprofit', 'Education', 'Government'] }, { l: 'Needed by', t: 'date' }], extra: function () { var q = new URLSearchParams(location.search).get('items'); return q ? { 'From calculator': q } : {}; }, after: 'You will have a written quote within one business day. A person checks every quote before it is final.' }, 'suggestion': { type: 'suggestion', name: 'Tool suggestion', group: 'hidden', optionalEmail: true, cta: 'Send suggestion', fields: [{ l: 'What tool, calculator or report would help you?', t: 'textarea', r: 1 }] } };(function () { var HOOK = 'https://cloud.activepieces.com/api/v1/webhooks/NB6K7JekBzHAm3mRTyAPS'; var t0 = Date.now(), n = 0, P = 'f'; function esc(s) { return String(s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } function field(f, i) { var id = P + i, req = f.r ? ' required' : '', lab = '<label for="' + id + '">' + esc(f.l) + (f.r ? ' <span aria-hidden="true">*</span>' : '') + '</label>'; var hint = f.h ? '<small>' + esc(f.h) + '</small>' : ''; if (f.t === 'textarea') return '<div class="c2n-f c2n-f-wide">' + lab + '<textarea id="' + id + '" name="' + esc(f.l) + '" rows="4"' + req + '></textarea>' + hint + '</div>'; if (f.t === 'select') return '<div class="c2n-f">' + lab + '<select id="' + id + '" name="' + esc(f.l) + '"' + req + '><option value="">Choose…</option>' + f.o.map(function (o) { return '<option>' + esc(o) + '</option>'; }).join('') + '</select>' + hint + '</div>'; if (f.t === 'checks') return '<fieldset class="c2n-f c2n-f-wide"><legend>' + esc(f.l) + '</legend><div class="c2n-checks">' + f.o.map(function (o, j) { return '<label><input type="checkbox" name="' + esc(f.l) + '" value="' + esc(o) + '"> ' + esc(o) + '</label>'; }).join('') + '</div>' + hint + '</fieldset>'; return '<div class="c2n-f">' + lab + '<input id="' + id + '" type="' + (f.t || 'text') + '" name="' + esc(f.l) + '"' + req + (f.t === 'number' ? ' min="0"' : '') + '>' + hint + '</div>'; } window.c2nRenderForm = function (el, spec) { var base = [{ l: 'Your name', r: !spec.optionalEmail, k: 'name' }, { l: 'Work email', t: 'email', r: !spec.optionalEmail, k: 'email' }, { l: 'Company', r: !spec.optionalEmail, k: 'company' }]; var all = base.concat(spec.fields), pre = P = 'c2nf' + (n++) + '-'; el.innerHTML = '<form class="c2n-form" novalidate>' + all.map(field).join('') + '<div class="c2n-hp" aria-hidden="true"><label>Leave this empty<input name="website_url" tabindex="-1" autocomplete="off"></label></div>' + '<div class="c2n-f-wide"><button class="c2n-btn" type="submit">' + esc(spec.cta || 'Send') + '</button><p class="c2n-form-msg" role="status" aria-live="polite"></p></div></form>'; var form = el.querySelector('form'), msg = form.querySelector('.c2n-form-msg'); form.addEventListener('submit', function (e) { e.preventDefault(); if (!form.checkValidity()) { form.reportValidity(); return; } var data = {}, fields = {}; all.forEach(function (f, i) { var v = f.t === 'checks' ? [].slice.call(form.querySelectorAll('input[name="' + CSS.escape(f.l) + '"]:checked')).map(function (x) { return x.value; }).join(', ') : form.querySelector('#' + pre + i).value.trim(); if (f.k) data[f.k] = v; else fields[f.l] = v; }); if (spec.extra) Object.assign(fields, spec.extra()); var btn = form.querySelector('button'); btn.disabled = true; msg.textContent = 'Sending…'; fetch(HOOK, { method: 'POST', headers: { 'Content-Type': 'text/plain;charset=UTF-8' }, body: JSON.stringify(Object.assign(data, { form_type: spec.type, form_name: spec.name, page: location.href, t: Date.now() - t0, hp: form.website_url.value, fields: fields })) }) .then(function (r) { if (!r.ok) throw r; form.innerHTML = '<div class="c2n-promise"><p><strong>Sent. Thank you.</strong> It is in our team inbox now, and a confirmation is on its way to you. ' + (spec.after || '') + '</p></div>'; }) .catch(function () { btn.disabled = false; msg.innerHTML = 'That did not send. Please try again, or email <a href="mailto:sales@cloud2networks.com">sales@cloud2networks.com</a>.'; }); }); }; })(); (function () { var k = new URLSearchParams(location.search).get('f'), s = C2N_FORMS[k]; if (!s) return; document.getElementById('c2n-form-title').textContent = s.name; document.getElementById('c2n-form-blurb').textContent = s.blurb || (k === 'quote' ? 'Tell us what to price. A person checks every quote and replies within one business day.' : ''); document.title = s.name + ' | Cloud2Networks'; c2nRenderForm(document.getElementById('c2n-form'), s); var it = new URLSearchParams(location.search).get('items'); if (it) document.querySelector('#c2n-form textarea').value = it; })();