Voice Go-Live Weekend
Three checklists already cover the gates: the platform-wide production go-live checklist, the PSTN voice go-live checklist (numbers, identity, routing, recording, compliance), and the contact-center go-live runbook (softphone, queues, IVR, cutover). None of them answers “what do I do in what order this weekend?” — they list what must be true, not when to make it true. This page is the execution sequence. It walks one worked tenant — Three Rivers Insurance — through three DIDs, one SIP trunk, and one support queue, from Saturday 09:00 to a phone system that takes real callers on Monday morning.How to use this page
Inventory before you build. Every walkthrough below writes new rows onto live objects; capture what exists first so Saturday 09:00 starts from a snapshot, not a guess:GET /api/v1/numbers— the current DID estate and each number’s route.GET /api/v1/voice/sip-trunks— trunks already authorized.GET /api/v1/voice/queues— queues, agents, and SLA targets. The same dump doubles as the Saturday-11:00 baseline.
Prerequisites
Do not start Saturday without these — a missing one turns an execution weekend into a discovery weekend:- The platform gates of the production go-live checklist pass: KYC approved, live API key active, wallet funded, webhooks verified.
- Inventory on the old system: every DID, its current route, and its carrier account number — you cannot wave-order what you have not listed.
- The three owners named and reachable for Saturday and Sunday.
- A roll-forward plan for Monday (see Sunday 16:00), approved by all three before the first LOA is signed.
The worked tenant
Three Rivers Insurance migrates off a premises PBX with:
Wave order and the routing decision come from this table; the rest of the page treats it as the spec.
Saturday 09:00 — Number inventory and porting wave order
Owner: Maya (Operations). Time: 90 minutes. Ports are the only step in this plan whose lead time you do not control, so they go first.- Collect the three accounts. For each DID, pull the carrier account number, the PIN, and the authorized signer from the losing carrier. Build the inventory against Port numbers.
-
Sign three LOAs, one per DID. Every port needs a letter of agency from the account holder. Walk the paperwork end to end once with the first-port walkthrough so the second and third are copy-paste;
POST /api/v1/numbers/portingsubmits each order against the same carrier account. -
Assign waves. The wave plan exists so a stuck FOC never strands the main number:
- Request FOC for Monday 06:00 on all three. Firm order commitments from the losing carrier land before the weekend closes; Monday 06:00 keeps the cutover off-peak and ahead of business hours.
-
Record the windows. Each porting order exposes its FOC date and status timeline (
GET /api/v1/numbers/porting/{id}/timeline).filledwaves cleanly; afoc_rejectedor a port that stalls insubmittedbumps the affected DIDs to the next carrier window and flips the rollback names in the Sunday-16:00 worksheet. Batch cadence and status vocabulary follow porting sequence.
Saturday 11:00 — Routing decision
Owner: Devon (Engineering). Time: 2 hours. Pick how live calls reach the tenant now, because everything after lunch configures a different path.- SIP trunk (BYOC). Your own PBX keeps dialing out; inbound terminates at Orbit over a trunk you authorize. Choose it when a premises system survives the migration — Three Rivers keeps its conference-room PBX, so the trunk is the connecting leg. Guide: Connect a SIP trunk (BYOC).
- API direct. No reuse hardware; the Devotel softswitch handles the trunk. Choose it when nothing from the old system is kept.
- Host-associated DID. A DID rings a registered PBX or softphone extension. Choose it when you only need a direct line live, not a queue.
- Authorize the trunk (
POST /api/v1/voice/sip-trunks): SSL on, the TLS endpoint IP and port set, digest credentials minted, and the PBX’s public egress IP allowlisted. - Register both legs and place the loop. Register the conference-room PBX on the trunk leg and one browser softphone on the app leg per the browser softphone guide. The first-call walkthrough supplies the probe (
/api/v1/voice/sip-trunks/probe) and the exact 200 OK INVITE/REGISTER checks. - One registered softphone loop per leg. Place an outside-to-PBX call across the trunk and a softphone-to-softphone call on the app leg. Sprint rule: a leg that loops in one direction only is a misconfiguration, not a partial success — fix it before leaving the slot.
Saturday 14:00 — STIR/SHAKEN attestation and E911 drill
Owner: Priya (Compliance). Time: 90 minutes. Both drills run before any DID carries traffic, so a caller-ID or emergency-address defect is found on Saturday, not Monday.- Set the attestation posture. Assemble the STIR/SHAKEN attestation guide end to end: resolve each DID to the ownership level it actually qualifies for (full A where the number is yours and the identity matches), set the attestation floor, and own the delegate-certificate lifecycle on any ported number the floor depends on.
- Verify on the wire. Read the attestation header off the live trace from the 11:00 test calls — full
A, notBorC— and cross-check the attestation checklist tool, which reports the same level the carrier sees on each DID. - Enable E911 drill mode. Point the emergency dial at the test destination per the E911 drill guide — a drill routes to the test desk, never a live PSAP.
- Dial 933 and read back the address. The drill returns the address-of-record for the customer’s physical service address. File the returned address in the compliance binder; if it reads stale or wrong, correct the address on file and re-drill — this gate blocks only its own exit test.
- File acceptance, then exit drill mode. The drill acceptance report (the dial-to-test-destination check, the address it returned, the timestamp) goes into the binder with the attestation snapshot. Live short emergency codes (911/112/999/000) remain blocked at platform dispatch — drill mode exercises the 933 path only.
A on a live outbound trace, the checklist tool reads green on all three DIDs, the 933 drill returned the filed address, and the acceptance report is in the binder.
Sunday 09:00 — Queue staffing
Owner: Maya (Operations). Time: 2 hours. Build the queue the main DID will terminate into:- Create the
supportqueue per Set up and run voice queues — concrete values, not defaults:maxWaitSeconds,targetServiceLevelSeconds, theoverflowAction(voicemail box), theroutingStrategy, and the skill tags a caller must match. - Enroll the first agent and mint the softphone credential. Register one agent’s softphone end to end per the browser softphone guide and enroll the agent with the matching skill so the eligibility set is not empty. Enroll only where the skill matches — a queue that filters on a skill nobody holds answers no one. (The first-queue tutorial this slot pairs with is the
voice-queuesguide.) - Wire wrap-up codes. Define the queue’s disposition catalog per wrap-up codes: at minimum
resolved,callback-requested,wrong-department, and the code the Saturday-16:00 SIP fallback call used (trunk-fallback). SetrequireDispositionon for launch week so every call carries an outcome. - Point the main DID. Attach the queue route to
+1 312 555 0164(route typequeuewith the newqueueId) — the port has not landed, so this is pre-positioning, not traffic. - Place one real outside call. From a personal mobile, dial the toll-free number already moved (or the softphone’s test DID), reach the queue, and let the enrolled agent answer. This single call is the first outside caller the queue ever served — if it lands, wiring, eligibility, and the softphone registry are all proven at once against the live floor.
GET /api/v1/numbers.
Sunday 13:00 — Recording, retention, and compliance flags
Owner: Priya (Compliance). Time: 90 minutes. Recording is a tenant-owned control: you decide whether calls record, for how long they live, and where the media lands.- Turn the recording lifecycle on. Enable recording per recording lifecycle operations and set the retention window — Three Rivers records all three DIDs and keeps media 90 days, because its regulator requires a defined window rather than indefinite retention. Choose Orbit-managed storage unless the tenant owns the archive, and verify the lifecycle job enforces the window, not just records it.
- Wire BYO storage if the tenant owns the archive. If retention must land in the tenant’s own bucket, follow voice recording BYO storage and confirm a recorded call materializes an object in the tenant bucket — not just a green config row.
- Choose the consent prompt or beep per jurisdiction. Two-party consent jurisdictions take the per-queue consent prompt; one-party jurisdictions take the periodic beep. Set the flag per queue, then verify the prompt or beep actually fires on a live test call per the consent prompt configuration. The prompt is a tenant-owned control; the platform carries it, your jurisdiction chooses it.
- Verify on both call shapes. A recorded call produces a media object with the retention date set and the consent artifact in the CDR; a call you excluded from recording produces nothing. Both outcomes are proof — check each.
Sunday 16:00 — Rollback, sign-off, and the Monday plan
Owner: all three. Time: 60 minutes. Close the weekend with a rollback path you can execute, a worksheet you can sign, and a Monday you can run. Rollback. Every DID keeps its old route stored against it, so rollback is a re-pointable single write per DID:- Repoint
+1 312 555 0164back at the legacy destination by updating the number’s route (PATCH /api/v1/numbers/{id}) to the pre-migration value. The port never landed in-tenant, so the carrier simply keeps answering the old path. - The trunk disable is the second line: flip the trunk row inactive on
PATCH /api/v1/voice/sip-trunks/{id}and the monitored alarms go quiet with the legs. - Fill the PSTN/CCaaS sign-off worksheet — every check on the PSTN checklist and the CCaaS runbook now has an owner, a result, and evidence in the binder. Those sheets remain the preflight record; this page was the order you ran them in.
The PSTN checklist and the CCaaS runbook hold the sheet format; this table is when to run each line of it.
Failure playbook — the three likeliest jams
- FOC rejected on a wave. The losing carrier bounced the port (bad account number, mismatched signer, or a freeze on the line). The affected DID falls back to its wave’s rollback name; correct the rejection reason per porting sequence and resubmit for the next window. The main number never ports before wave 1 clears, so a wave-1 rejection delays the schedule, never strands it.
- Trunk registration 401-loop before 15:00. The SIP credential on the trunk leg does not match what the PBX presents, or the egress IP is not allowlisted. Triage off the troubleshooting page (REGISTER/401/REGISTER-200OK triplet) and stay in drill mode — do not proceed to DID re-pointing until the Saturday-11:00 exit test passes again.
- Consent prompt or beep silent on a live call. The per-queue consent flag is off, or the prompt asset failed to attach. Re-check the recording-consent configuration, place one more test call, and only then close the Sunday-13:00 slot. A missing consent artifact in a recorded call is a regulator finding, not a cosmetic defect.
Related reading
- PSTN voice go-live checklist — the preflight evidence this sequence orders
- Contact-center (voice/CCaaS) go-live runbook — the queue-and-softphone layer, stacked on the PSTN sheet
- Production go-live checklist — the platform gates required before Saturday
- Port numbers — LOA, FOC, and wave mechanics
- SIP trunk first call — the probe and the exact 11:00 exit test
- Browser softphone — the agent credential every leg registers with
- Voice country coverage — confirm Monday’s outbound destinations before first dial