# Provision Extension 101 - Natalya (Receptionist) **Date:** 2026-07-10 **Status:** Ready to provision **Phone:** Already registered (test phone from yesterday) --- ## User Information ``` Extension: 101 Name: Natalya (Receptionist) M365 Account: Customer Service Email: customerservice@valleywideplastering.com Phone MAC: 805e0cdd71b1 Phone Last 4: 71b1 Domain: vwp.91912.service ``` --- ## Current Status **Phone Hardware:** - MAC: 805e0cdd71b1 - Status: Already registered (Status 1) with test credentials - YMCS Device ID: (need to look up) **PacketDial:** - User 101: Does NOT exist yet (needs to be created) - Device for 101: Does NOT exist yet (will be created with user) **YMCS:** - Physical phone: Exists and online - SIP account: Currently has test credentials (need to update with real user 101 credentials) --- ## Provisioning Steps ### Step 1: Create User 101 in PacketDial ```bash bash .claude/scripts/py.sh .claude/skills/packetdial/scripts/ns.py \ create-user vwp.91912.service --body '{ "user": "101", "name-first-name": "Natalya", "name-last-name": "Receptionist", "email": "customerservice@valleywideplastering.com", "emergency-address-id": "a-6a395c03d4cfe" }' --confirm ``` ### Step 2: Create SIP Device for Extension 101 ```bash bash .claude/scripts/py.sh .claude/skills/packetdial/scripts/ns.py \ create-device vwp.91912.service 101 --body '{ "device": "101a@vwp.91912.service" }' --confirm ``` ### Step 3: Get Auto-Generated SIP Password ```bash bash .claude/scripts/py.sh .claude/skills/packetdial/scripts/ns.py \ devices vwp.91912.service 101 | \ python3 -c "import sys, json; d=json.load(sys.stdin); print('SIP Password:', d[0].get('device-sip-registration-password'))" ``` **Save this password** - you'll need it for YMCS update. ### Step 4: Find Existing YMCS SIP Account The test phone already has a SIP account. Find it: ```bash bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py devices | grep -i "71b1" -A 20 ``` Extract: - Device ID (the "id" field) - Look for bound accounts ```bash # Get device ID from above, then check bound accounts bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \ raw GET /v2/dm/devices/{DEVICE-ID}/boundAccounts ``` Extract the account ID from the bound account. ### Step 5: Update Existing YMCS SIP Account with New Credentials ```bash bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \ raw PATCH /v2/dm/sipAccounts/{ACCOUNT-ID} --body '{ "registerName": "101@vwp.91912.service", "username": "101@vwp.91912.service", "password": "{SIP-PASSWORD-FROM-STEP-3}", "label": "Ext 101 - Natalya (Receptionist)", "displayName": "Natalya", "sipServer1": { "host": "pbx.packetdial.com", "port": 5060 }, "remark": "Valley Wide Plastering - customerservice@valleywideplastering.com" }' --confirm ``` ### Step 6: Reboot Phone to Apply New Credentials ```bash bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \ reboot --body '{ "deviceIds": ["{DEVICE-ID}"], "deviceType": 1 }' --confirm ``` ### Step 7: Verify Registration **Check in PacketDial:** ```bash bash .claude/scripts/py.sh .claude/skills/packetdial/scripts/ns.py \ devices vwp.91912.service 101 ``` Look for: - `device-sip-registration-state`: "registered" - `device-sip-registration-contact`: Shows phone IP **Check in YMCS:** ```bash bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \ raw GET /v2/dm/devices/{DEVICE-ID} ``` Look for: - `accounts[].status`: 1 (Registered) --- ## Alternative: Create New YMCS Account Instead of Updating If you prefer to create a NEW SIP account instead of updating the test account: ### Step 4 (Alternative): Unbind Old Account ```bash # First, get the old account ID from boundAccounts bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \ raw DELETE /v2/dm/devices/{DEVICE-ID}/bindAccounts/{OLD-ACCOUNT-ID} --confirm ``` ### Step 5 (Alternative): Create New SIP Account ```bash bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \ add-sipaccount --body '{ "registerName": "101@vwp.91912.service", "username": "101@vwp.91912.service", "password": "{SIP-PASSWORD-FROM-STEP-3}", "label": "Ext 101 - Natalya (Receptionist)", "displayName": "Natalya", "sipServer1": { "host": "pbx.packetdial.com", "port": 5060 }, "remark": "Valley Wide Plastering - customerservice@valleywideplastering.com", "siteId": "1e7578a6fe0e41cfb5a3e8b40933ffee" }' --confirm ``` Save the account ID from response. ### Step 6 (Alternative): Bind New Account to Phone ```bash bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \ raw POST /v2/dm/devices/{DEVICE-ID}/bindAccounts --body '[{ "lineId": 1, "accountType": 0, "accountId": "{NEW-ACCOUNT-ID}" }]' --confirm ``` ### Step 7 (Alternative): Reboot and Verify (Same as Above) --- ## Notes - **Recommended approach:** Update existing YMCS account (simpler, phone already bound) - **Alternative approach:** Create new account if you want clean separation from test - Phone should remain registered throughout (just credentials change) - Extension 101 should be ready for calls immediately after reboot --- **Status After Provisioning:** - Extension 101 created in PacketDial ✓ - SIP device 101a created with password ✓ - YMCS SIP account updated with real credentials ✓ - Phone registered to extension 101 ✓ - Receptionist can make/receive calls ✓