Specifications — Technical Details

Onboarding

Technical detail on the PanOps self-serve onboarding sequence, pre-onboarding IT requirements, and the employee enrollment data model.

← Back to Specifications

Pre-Onboarding IT Requirements

The pre-onboarding checklist is distributed to the customer administrator 5–7 business days before the onboarding session. Each item must be confirmed complete before the call begins. The most common session failure mode is unresolved conditional access policies — the extended lead time is deliberate.

Checklist ItemPlatformAction RequiredWho
Azure AD conditional access policyMicrosoft 365Add PanOps to approved third-party apps; allow multi-tenant OAuth appGlobal Admin
Google Workspace app approvalGoogle WorkspaceAllow PanOps OAuth app domain-wide consent in Admin ConsoleSuper Admin
Zoom app approvalZoomApprove PanOps in Zoom Marketplace app managementZoom Admin
Cloud recording policyTeams / Zoom / Google MeetConfirm org-wide cloud recording enabled; auto-save to OneDrive / Zoom Cloud / Google DriveIT Admin
Admin role availabilityAllConfirm Global Admin / Super Admin / Zoom Admin will be present and available during the sessionAdmin
Employee rosterAllCustomer to deliver employee roster by name, location, role, and department, with all connected identifiers (i.e., email address and platform-specific usernames). Preferred format: CSV file.Admin
Most common enterprise blocker: Azure AD conditional access policies that block third-party OAuth apps by default. These require IT administrator action — they cannot be resolved during the session. The 5–7 day lead time gives IT teams room to resolve without rescheduling.

Onboarding Session Flow — Technical Sequence

Total session time: 60 minutes. PanOps team member + customer administrator. All connector authorizations are completed through the PanOps Onboarding Portal — a web-based interface that manages OAuth redirect flows, validates authorization success, and displays real-time connector status.

StepDurationTechnical Action
1. Portal setup2 minCreate customer account; set CEO name and output language preference (ISO 639-1 language code stored per customer in Aurora)
2. M365 / Gmail OAuth10 minAdmin initiates OAuth redirect; grants org-wide consent; token stored in AWS Secrets Manager scoped to customer + platform; connector status turns green
3. Slack + Teams messaging10 minSlack OAuth app authorization (separate from M365); Teams messaging scopes added to existing M365 app registration via Graph API
4. Video connectors8 minTeams video covered by M365 auth; Google Meet covered by Google auth; Zoom Meetings — separate OAuth app registration, cloud recording webhook receiver activated
5. SMS / voice connector8 minCustomer-selected platform (RingCentral, Dialpad, Zoom Phone, or OpenPhone); webhook URL registered with platform; API credentials stored in Secrets Manager; webhook signature verification confirmed
6. Employee enrollment links5 minDirectory queried via M365 Graph API or Google Directory API; unique UUID enrollment URLs generated per employee; stored in Aurora; admin confirms list and distribution method
7. CEO access5 minCEO login created with CEO role; role-based access assigned (Signal + Archive + Admin); Signal walkthrough with live connector data ingestion confirmed
8. Confirm and close5 min + bufferAll connectors confirmed green; first sync expected within 6 hours; 30-min post-call sync check scheduled

OAuth App Registration Requirements

PanOps registers once per platform as an authorized third-party application. These registrations must be completed and approved before any customer onboarding can proceed. Review timelines vary significantly by platform.

PlatformRegistration TypeReview TimelineRequired Scopes
Microsoft Azure ADMulti-tenant OAuth app1–3 week review cycleMail.Read, ChannelMessage.Read.All, OnlineMeetings.Read.All, Directory.Read.All
Google CloudOAuth app + domain-wide delegationDays; requires verificationgmail.readonly, drive.readonly, directory.readonly, meet.recordings
SlackSlack app with OAuth scopesSame-day typicallychannels:history, channels:read, groups:history, groups:read, users:read
Zoom MarketplaceOAuth app with webhook1–3 daysrecording:read, user:read; webhook: recording.completed
SMS / voice platformsDeveloper portal accountVaries by platformWebhook receiver + API read credentials
Zero dev leverage while waiting for Microsoft review. Azure AD multi-tenant app approval can take 1–3 weeks. OAuth app registrations must be submitted before any connector development begins.

Employee Enrollment — Data Model

Employee enrollment is the process by which individual employees are mapped across platforms and provide explicit consent for their communications data to be ingested by PanOps. It runs asynchronously after the onboarding session.

Identity Resolution

Email address is the primary identity key across all platforms. Display name is used as a secondary fallback only. At enrollment, each employee reviews a pre-populated identity mapping (their email and display name as resolved from the directory) and confirms or corrects it. This resolved identity is stored in Aurora and used to attribute all ingested communications to the correct employee record.

Consent Data Logged Per Employee

employee_consent table (Aurora, RLS-scoped to customer tenant)
─────────────────────────────────────────────────────
employee_id          UUID (primary key)
customer_id          UUID (foreign key, RLS tenant)
email                VARCHAR (primary identity key)
display_name         VARCHAR
enrollment_timestamp TIMESTAMPTZ
consent_version      VARCHAR (consent text version)
channels_consented   JSONB (array of channel identifiers)
ip_address           VARCHAR (enrollment device)
user_agent           VARCHAR (enrollment browser)
revoked              BOOLEAN (default false)
revoked_at           TIMESTAMPTZ (nullable)

Enrollment Link Generation

Directory query (M365 Graph API / Google Directory API)
  → Per-employee UUID token generated
  → Enrollment URL: https://app.panops.io/enroll/{uuid}
  → Stored in Aurora with employee_id, customer_id, expiry (7 days)
  → Distributed by customer admin via their preferred method
Target: >80% enrollment within 48 hours. PanOps monitors enrollment progress post-session. Employees who have not enrolled after 48 hours are flagged in the admin roster for follow-up. Data ingestion for an employee does not begin until their consent is logged.

Post-Onboarding Monitoring

TimingCheckAction on Failure
30 min post-callConfirm first sync is running (connector polling logs active)Investigate connector auth; re-trigger polling if needed
3–4 hrs post-callConfirm first sync completed for all green connectorsFlag any stale connectors; check Secrets Manager token validity
24 hrs post-callCheck-in with administrator; confirm no IT blockers surfacedProvide async support for any outstanding issues
48 hrs post-callConfirm >80% employee enrollment; review connector health dashboardRe-send enrollment links for pending employees; escalate persistent connector failures

Common Onboarding Issues & Resolutions

IssueRoot CauseResolution
Conditional access blocking OAuthAzure AD default policy blocks third-party OAuth appsIT admin adds PanOps app to approved list in Azure AD conditional access policy — must be done in advance
Zoom cloud recording not enabledOrg-wide cloud recording disabled by defaultZoom Admin enables org-wide cloud recording in Zoom Admin Portal before session
Global Admin not available on callAdmin role not confirmed before sessionAdmin role confirmation is on the pre-onboarding checklist — must be resolved before scheduling
OpenPhone API key locationOpenPhone API key not surfaced in standard admin UICustomer locates API key in OpenPhone Settings → Integrations → API; PanOps provides step-by-step guide

← Back to overview