sync: auto-sync from GURU-5070 at 2026-07-10 06:59:57
Author: Mike Swanson Machine: GURU-5070 Timestamp: 2026-07-10 06:59:57
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# OIT/PacketDial Client Onboarding Checklist (reusable template)
|
||||
|
||||
Reusable runbook for onboarding a new client to VoIP on the **OIT/PacketDial (NetSapiens)**
|
||||
platform with **Yealink YMCS** device management. Structured on the NetSapiens 17-step
|
||||
white-label onboarding flow (voipdocs.io/onboarding-recommendations), annotated with the
|
||||
ACG/OIT specifics and gotchas learned in the field.
|
||||
|
||||
**How to use:** copy this file to `clients/<slug>/voip/ONBOARDING-CHECKLIST.md`, fill the
|
||||
placeholders, and work the boxes. Keep client-specific detail in the client copy; keep this
|
||||
template generic.
|
||||
|
||||
Legend: `[x]` done · `[ ]` not started · `[~]` in progress · `[?]` verify
|
||||
|
||||
---
|
||||
|
||||
## Key references (fill per client)
|
||||
|
||||
| Item | Value |
|
||||
|---|---|
|
||||
| Client / slug | `<name>` / `<slug>` |
|
||||
| PacketDial domain | `<domain>.<reseller>.service` |
|
||||
| Reseller | `91912.service` (ACG) |
|
||||
| Main number | `<E.164 / 10-digit>` |
|
||||
| Timezone / dial policy | `America/Phoenix` / `US and Canada` |
|
||||
| **RPS provisioning URL** | `http://ndp.ucaasnetwork.com/cfg` (OIT/PacketDial) |
|
||||
| YMCS site / site ID | `<site name>` / `<site id>` |
|
||||
| E911 address ID | `<a-...>` |
|
||||
| Credentials | vault `msp-tools/oitvoip-provisioning.sops.yaml` (Prov_Admin) + `msp-tools/oitvoip.sops.yaml` (reseller API key) |
|
||||
|
||||
---
|
||||
|
||||
## Client intake / prep (steps 1-8)
|
||||
|
||||
- [ ] **1. Welcome correspondence** sent to the client.
|
||||
- [ ] **2. Payment authorization (CC/ACH)** on file — NetSapiens flags this as the prerequisite for every step after. Do not go live without it.
|
||||
- [ ] **3. Service start timing** decided — port-dependent (wait for numbers) or immediate with temporary numbers.
|
||||
- [ ] **4. Recent billing docs** collected from the current carrier (bill copy / CSR) for the port.
|
||||
- [ ] **5. Numbers-to-port list** — every DID + its intended purpose (main line, fax, direct dials).
|
||||
- [ ] **6. User roster** — names, contact info, desired extensions, voicemail-to-email preference. Match to the client's M365 tenant where possible (emails drive vmail delivery).
|
||||
- [ ] **7. Equipment source + MAC addresses** — who supplies phones (ACG vs client), models, tracking, and **MACs** (Yealink RPS + YMCS bind key on the MAC).
|
||||
- [ ] **8. Client orientation call** scheduled/held.
|
||||
|
||||
## Platform build-out (steps 9-17)
|
||||
|
||||
- [ ] **9. Billing account / domain** created under the ACG reseller (`<domain>.<reseller>.service`), timezone + dial policy set.
|
||||
- [ ] **10. Port application** submitted (after steps 4-5); track FOC date.
|
||||
- [ ] **11. Domain infrastructure** configured — domain settings, dial plan, main caller ID.
|
||||
- [ ] **12. DID numbers** created and ready to route.
|
||||
- [ ] **13. User accounts** registered. For >5 users use the **CSV bulk import** (PacketDial: Domains → `<domain>` → Users → Import). Create **users only, no devices** — assign devices later as phones are physically distributed.
|
||||
- [ ] **14. Auto-attendants + call queues** built (reception queue, main AA; add dept queues as needed).
|
||||
- [ ] **15. Number routing** configured — point DIDs at the AA/queue; add business-hours vs after-hours **timeframes** for time-based routing.
|
||||
- [ ] **16. E911 / emergency services** activated — register the physical service address, capture the E911 address ID, confirm each device/extension maps to a valid address.
|
||||
- [ ] **17. Hardware deployed** — provision + register each phone (device-assignment workflow below).
|
||||
|
||||
---
|
||||
|
||||
## Per-phone device-assignment workflow (step 17 detail)
|
||||
|
||||
Users are created without SIP devices; bind a device to a user when the physical phone is handed out.
|
||||
|
||||
1. **User provides the last 4 of the phone's MAC.**
|
||||
2. **Create the SIP device in PacketDial** (auto-generates the SIP registration password):
|
||||
```bash
|
||||
bash .claude/scripts/py.sh ns.py create-device <domain> <ext> \
|
||||
--body '{"device": "sip:<ext>a@<domain>"}' --confirm
|
||||
```
|
||||
3. **Read the SIP password** back from the device (`device-sip-registration-password`).
|
||||
4. **Create the YMCS SIP account** with that password, pointing `sipServer1.host` at `pbx.packetdial.com:5060` and `siteId` at the client's YMCS site.
|
||||
5. **Find the physical phone** in YMCS by the last-4 MAC (`ymcs.py devices | grep <last4>`).
|
||||
6. **Bind** the account to the phone (`/v2/dm/devices/{id}/bindAccounts`) and **reboot** to apply.
|
||||
|
||||
Detailed commands: copy the client's `DEVICE-ASSIGNMENT-COMMANDS.md` (see the VWP example).
|
||||
|
||||
---
|
||||
|
||||
## Gotchas learned in the field
|
||||
|
||||
- **TWO whitelabel accounts — use the right RPS URL.** ACG has both Whitelabel Communication (WLC, `ftp://p.packetdials.net`) and OIT/PacketDial (`http://ndp.ucaasnetwork.com/cfg`). A phone provisioned against the wrong RPS URL stays **unregistered** with otherwise-correct SIP creds. OIT clients MUST use `http://ndp.ucaasnetwork.com/cfg`. (Root cause of the VWP registration failure, 2026-07-09.)
|
||||
- **YMCS `sipServer1` schema is strict.** The SIP-account create expects `sipServer1` as an object (`{"host": ..., "port": 5060}`), not a string; a bad shape returns HTTP 412 "Parameter error". Confirm against `.claude/skills/yealink-ymcs/docs/SIPSERVER_SCHEMA.md`.
|
||||
- **Match extensions to M365 by email** so voicemail-to-email lands correctly; park unmatched/shared extensions (kitchen, conference, warehouse) and confirm names with the client before creating accounts.
|
||||
- **Bulk import = users only.** Import creates users without devices by design; devices are bound per-phone at hand-out. This keeps unassigned phones from registering to the wrong person.
|
||||
|
||||
## Tooling & support
|
||||
|
||||
- **Skills:** `.claude/skills/packetdial/` (PacketDial/NetSapiens API — `ns.py`), `.claude/skills/yealink-ymcs/` (YMCS — `ymcs.py`)
|
||||
- **Credentials:** vault `msp-tools/oitvoip*.sops.yaml`
|
||||
- **PacketDial UI:** https://pbx.packetdial.com/ · **API:** `https://pbx.packetdial.com/ns-api/v2` (fallback `https://api.ucaasnetwork.com/ns-api/v2`) · **docs:** https://docs.ns-api.com
|
||||
- **YMCS UI:** https://us.ymcs.yealink.com/
|
||||
- **OIT support:** support@oitvoip.com · **Onboarding best-practices:** https://voipdocs.io/onboarding-recommendations
|
||||
- **Worked example:** `clients/valleywide/voip/` (Valley Wide Plastering)
|
||||
@@ -0,0 +1,62 @@
|
||||
## User
|
||||
- **User:** Mike Swanson (mike)
|
||||
- **Machine:** GURU-5070
|
||||
- **Role:** admin
|
||||
|
||||
## Session Summary
|
||||
|
||||
Read the NetSapiens white-label VoIP onboarding best-practices guide (voipdocs.io/onboarding-recommendations) and the ns-api `GET /ns-api/v2/version` reference, then produced two onboarding checklist documents for the OIT/PacketDial VoIP work.
|
||||
|
||||
Reviewed the existing Valley Wide Plastering (VWP) VoIP provisioning docs under `clients/valleywide/voip/` (README, PROVISIONING-STATUS, COMPLETE-CLIENT-SETUP) to capture actual project state before writing. Created a VWP-specific onboarding checklist mapping the NetSapiens 17-step onboarding flow to VWP's real status: user roster/domain/E911/RPS-fix done; user CSV upload is the immediate next step; DID routing, auto-attendant/queue build, and per-phone hardware handout are mid-flight; and the billing/porting-side steps (payment authorization, port application, orientation call) flagged for verification since they are account/sales-side and not confirmable from the repo.
|
||||
|
||||
Created a reusable general OIT/PacketDial onboarding template in the packetdial skill's references directory so it deploys globally on sync and is discoverable for future client onboardings. The template uses the same 17-step spine plus ACG-specific detail: the per-phone device-assignment workflow (PacketDial SIP device -> YMCS SIP account -> bind -> reboot), the field gotchas that cost time on VWP (the two-whitelabel RPS URL trap, the YMCS `sipServer1` HTTP 412 schema, users-only bulk import, M365 email matching), and vault paths / tooling / support contacts.
|
||||
|
||||
No code, API calls, or live provisioning were performed this session — documentation only. The earlier VWP provisioning work (domain creation, RPS URL fix, CSV prep) was done in a prior session on Mike's MacBook (commit db10206a).
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- **Two separate docs, two homes** — the VWP-specific checklist lives with the client (`clients/valleywide/voip/`) and reflects live state; the generic reusable template lives in `.claude/skills/packetdial/references/` so it deploys globally and is found by the skill on future onboardings. Kept client-specific detail out of the template.
|
||||
- **Placed the template in packetdial/references, not a new docs/ dir** — the skill already keeps reusable reference material in `references/` (api.md); the previously-referenced `docs/VOIP_ONBOARDING_WORKFLOW.md` did not actually exist, so followed the established `references/` pattern.
|
||||
- **Marked billing/porting steps [?]/[ ] rather than asserting done** — payment auth, port application, and orientation call are account/sales-side; status was not confirmable from the repo, so flagged for verification instead of guessing.
|
||||
- **ASCII checkbox markers, not the emoji check/cross style** — the existing VWP docs use emoji; house rule is no emojis, so used `[x]`/`[~]`/`[ ]`/`[?]` markdown checkboxes.
|
||||
|
||||
## Configuration Changes
|
||||
|
||||
- Created `clients/valleywide/voip/ONBOARDING-CHECKLIST.md` — VWP-specific 17-step onboarding checklist mapped to current state.
|
||||
- Created `.claude/skills/packetdial/references/OIT-ONBOARDING-CHECKLIST.md` — reusable general OIT/PacketDial + YMCS onboarding template.
|
||||
|
||||
## Credentials & Secrets
|
||||
|
||||
No new credentials. Referenced existing vault entries only:
|
||||
- `msp-tools/oitvoip-provisioning.sops.yaml` (Prov_Admin — RPS/portal login)
|
||||
- `msp-tools/oitvoip.sops.yaml` (reseller API key)
|
||||
|
||||
## Infrastructure & Servers
|
||||
|
||||
- **VWP domain:** `vwp.91912.service` (reseller 91912.service / ACG), main number 480-705-9500, timezone America/Phoenix, dial policy US+Canada.
|
||||
- **RPS provisioning URL (OIT/PacketDial):** `http://ndp.ucaasnetwork.com/cfg` — NOT the Whitelabel Communication (WLC) `ftp://p.packetdials.net`. Using the wrong one leaves phones unregistered with otherwise-correct SIP creds.
|
||||
- **YMCS site:** Valley Wide Plastering / `1e7578a6fe0e41cfb5a3e8b40933ffee`.
|
||||
- **VWP E911 address ID:** `a-6a395c03d4cfe` (301 N 56TH ST, Chandler AZ 85226).
|
||||
- **PacketDial API:** `https://pbx.packetdial.com/ns-api/v2` (fallback `https://api.ucaasnetwork.com/ns-api/v2`).
|
||||
|
||||
## Commands & Outputs
|
||||
|
||||
Documentation session — no live commands run. Per-phone device-assignment sequence captured in both checklist docs:
|
||||
`ns.py create-device` -> read `device-sip-registration-password` -> `ymcs.py add-sipaccount` (sipServer1 as object {host,port}) -> `ymcs.py ... bindAccounts` -> `ymcs.py reboot`.
|
||||
|
||||
## Pending / Incomplete Tasks
|
||||
|
||||
- **VWP immediate next step:** upload `vwp-users-import.csv` to PacketDial (Domains -> vwp.91912.service -> Users -> Import); verify 11 users created without devices.
|
||||
- **VWP 7 parked extensions** need client clarification (101 Natalya, 106 Tammy, 108 Shannon, 111 Kitchen, 112 Conference, 117 "Jesse III"/Ryan?, 118 Warehouse) -> second CSV / shared-phone decision.
|
||||
- **VWP Phase 2:** reception queue 8000, main AA 3000, assign DID 480-705-9500, test inbound; Phase 3 business-hours timeframes.
|
||||
- **VWP billing/porting side** unverified: payment authorization, port application, orientation call.
|
||||
- **YMCS `sipServer1` HTTP 412** schema blocker from prior session still needs confirmation against `.claude/skills/yealink-ymcs/docs/SIPSERVER_SCHEMA.md` before smooth end-to-end device binding.
|
||||
|
||||
## Reference Information
|
||||
|
||||
- VWP checklist: `clients/valleywide/voip/ONBOARDING-CHECKLIST.md`
|
||||
- Reusable template: `.claude/skills/packetdial/references/OIT-ONBOARDING-CHECKLIST.md`
|
||||
- Onboarding best-practices: https://voipdocs.io/onboarding-recommendations/orders-tasks/version/1
|
||||
- NetSapiens API docs: https://docs.ns-api.com — `GET /ns-api/v2/version`
|
||||
- Prior VWP provisioning commit: db10206a (feat(voip): VWP complete provisioning prep + setup documentation)
|
||||
- Related VWP docs: `clients/valleywide/voip/{README,PROVISIONING-STATUS,COMPLETE-CLIENT-SETUP,DEVICE-ASSIGNMENT-COMMANDS,extension-mapping,SESSION-SUMMARY-2026-07-09}.md`, `vwp-users-import.csv`
|
||||
61
clients/valleywide/voip/ONBOARDING-CHECKLIST.md
Normal file
61
clients/valleywide/voip/ONBOARDING-CHECKLIST.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# VWP VoIP Onboarding Checklist
|
||||
|
||||
Client-specific onboarding checklist for **Valley Wide Plastering** on OIT/PacketDial +
|
||||
Yealink YMCS, mapped to the NetSapiens 17-step onboarding flow
|
||||
(voipdocs.io/onboarding-recommendations). Tracks the birds-eye onboarding state; the
|
||||
implementation detail lives in the sibling docs.
|
||||
|
||||
- **Domain:** vwp.91912.service (reseller 91912.service / ACG)
|
||||
- **Main number:** 480-705-9500
|
||||
- **RPS server:** `http://ndp.ucaasnetwork.com/cfg` (OIT/PacketDial — NOT the WLC `ftp://p.packetdials.net`)
|
||||
- **YMCS site:** Valley Wide Plastering / `1e7578a6fe0e41cfb5a3e8b40933ffee`
|
||||
- **Credentials:** vault `msp-tools/oitvoip-provisioning.sops.yaml` (Prov_Admin)
|
||||
- **Last updated:** 2026-07-10
|
||||
|
||||
Legend: `[x]` done · `[ ]` not started · `[~]` in progress · `[?]` verify (owner/status unconfirmed)
|
||||
|
||||
---
|
||||
|
||||
## Client intake / prep (steps 1-8)
|
||||
|
||||
- [?] **1. Welcome correspondence sent** — confirm sales/account side handled this
|
||||
- [?] **2. Payment authorization (CC/ACH)** — prerequisite for go-live; confirm billing on file with OIT/ACG
|
||||
- [~] **3. Service start timing** — main line 480-705-9500 live; determine port-dependent vs temp-number cutover
|
||||
- [?] **4. Recent billing docs collected** — needed for the port (CSR/LOA from current carrier)
|
||||
- [~] **5. Numbers-to-port list** — main 480-705-9500 identified; confirm any additional DIDs + intended use
|
||||
- [x] **6. User roster gathered** — `extension-mapping.md`: 11 matched to M365, 7 unmatched/shared (parked)
|
||||
- [~] **7. Equipment source + MAC addresses** — Yealink phones on hand; MACs collected per-phone at assignment (last-4 workflow)
|
||||
- [?] **8. Client orientation call** — schedule/confirm
|
||||
|
||||
## Platform build-out (steps 9-17)
|
||||
|
||||
- [x] **9. Billing account established** — domain `vwp.91912.service` created under ACG reseller
|
||||
- [ ] **10. Port application submitted** — pending billing docs (step 4) + cutover decision (step 3)
|
||||
- [x] **11. Domain infrastructure configured** — domain, timezone America/Phoenix, dial policy US+Canada, **RPS URL fixed** (critical)
|
||||
- [~] **12. DID numbers established** — main DID 480-705-9500 pending routing assignment (Phase 2)
|
||||
- [~] **13. User accounts registered** — CSV of 11 matched users ready; **upload to PacketDial is the current NEXT STEP** (users only, no devices)
|
||||
- [ ] **14. Auto-attendants + call queues built** — Phase 2: reception queue 8000, main AA 3000 (+ optional mgmt 8001 / accounting 8002)
|
||||
- [ ] **15. Number routing configured** — Phase 2/3: route main DID → AA/queue; Phase 3 adds business-hours vs after-hours timeframes (M-F 7a-5p)
|
||||
- [x] **16. Emergency services (E911) activated** — E911 address `a-6a395c03d4cfe` (301 N 56TH ST, Chandler AZ 85226)
|
||||
- [~] **17. Hardware deployed** — test phone (MAC …71b1) registered; remaining phones assigned per-user as distributed (see `DEVICE-ASSIGNMENT-COMMANDS.md`)
|
||||
|
||||
---
|
||||
|
||||
## Immediate next actions
|
||||
|
||||
1. **Upload `vwp-users-import.csv`** to PacketDial (Domains → vwp.91912.service → Users → Import) — creates the 11 matched users without devices.
|
||||
2. **Verify** all 11 users created cleanly.
|
||||
3. **Clarify the 7 parked extensions** with the client (101 Natalya, 106 Tammy, 108 Shannon, 111 Kitchen, 112 Conference, 117 "Jesse III"/Ryan?, 118 Warehouse) → second CSV for real users, decide shared-phone handling.
|
||||
4. **Assign devices** per phone as distributed (create PacketDial SIP device → YMCS SIP account → bind → reboot).
|
||||
5. **Phase 2 main line:** reception queue 8000, AA 3000, assign DID 480-705-9500, test inbound.
|
||||
|
||||
## Related docs (this directory)
|
||||
|
||||
- `PROVISIONING-STATUS.md` — detailed status + per-phone device-assignment commands
|
||||
- `COMPLETE-CLIENT-SETUP.md` — full setup guide (DIDs, queues, IVRs, time frames)
|
||||
- `DEVICE-ASSIGNMENT-COMMANDS.md` — copy-paste device-assignment command reference
|
||||
- `extension-mapping.md` — extension → M365 account mapping
|
||||
- `vwp-users-import.csv` — bulk import file (ready)
|
||||
- `SESSION-SUMMARY-2026-07-09.md` — full session narrative
|
||||
|
||||
General reusable template: `.claude/skills/packetdial/references/OIT-ONBOARDING-CHECKLIST.md`
|
||||
Reference in New Issue
Block a user