Files
claudetools/projects/gps-rmm-audit/session-logs/2026-07/2026-07-08-howard-gps-billing-reconcile-winter-deploy-split.md
Howard Enos b3ea44a8ff sync: auto-sync from HOWARD-HOME at 2026-07-08 18:20:05
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-08 18:20:05
2026-07-08 18:20:34 -07:00

9.5 KiB

User

  • User: Howard Enos (howard)
  • Machine: Howard-Home
  • Role: tech

Session Summary

Built and delivered the GPS -> GuruRMM paying-vs-enrolled reconciliation to Winter, then ran a live billing reconciliation with Winter and Mike in #ct-forum and turned the answers into an actionable deploy split. Started from gps-master-status.md (2026-07-07), pulled a live GuruRMM /api/agents count (2026-07-08) for all 40 active GPS clients, and produced a per-client table of GPS devices billed (Syncro) vs unique machines enrolled (RMM), grouped into under-enrolled / matched / over-enrolled. Sent the full list to Winter via Discord DM (and to Howard), then posted the billing questions to the private #ct-forum forum thread and blocked on human replies via the ask-forum background-wait pattern.

Winter and Mike answered over several rounds. Over-enrolled clients turned out to be stale billing on our side: live Syncro confirmed Safesite (47), Dataforth (52), Design & Brand Envoys (3), Quantum Wealth (4), and Arizona Medical Transit (2) all now match RMM. Cascades bills off a Syncro-asset counter (not a fixed qty). Jimmy Company is billed annually (qty 12 = 1 machine x 12 months minus a prepay discount) — 1 machine, correct. Mike ruled MVAN stays on GPS, PUTT keeps GPS only for the owner's personal account, and Stamback's count was wrong; Winter then adjusted PUTT 7->2 and Stamback 8->3 in Syncro (both now match RMM). For the remaining under-enrolled clients (Horseshoe, Reliant, Grabb, RARE, etc.) Winter said the bills are correct — auto-install agents where possible.

Howard corrected a skill-first violation mid-session (I had hand-rolled raw curl against ScreenConnect and Syncro instead of using the /screenconnect sc.py wrapper and /rmm-search). Switched to the skills: pulled the full ScreenConnect Access fleet (959 sessions) via sc.py, listed each target client's enrolled hostnames via rmm-search, and cross-referenced to compute the true deployable gap (SC-online + Windows + not in RMM). Result: 4 machines are auto-installable right now — Horseshoe DESKTOP-5DD8C43, T&C Sorensen SERVER, Residential & Renovation DESKTOP-83II6D8, MVAN JUNE — everything else in the gap is genuinely onsite (no SC session, long-offline, or Mac). No agents were pushed (end of day).

Closed by documenting everything: rewrote gps-master-status.md with live counts + a reconciliation section, added a dated section + next-session plan to tracker.md, marked the onsite sites in onsite-check-list.md, fixed targets.json (PUTT/Stamback), and updated 15 customer wiki articles (via a background documentation agent) with each client's account change.

Key Decisions

  • Used the authoritative gps-master-status.md list but live-refreshed RMM counts (2026-07-08) before sending to Winter — over/under gaps are billing decisions, so current data mattered.
  • Routed the billing questions through /ask-forum (human-in-the-loop) rather than guessing; Winter is billing authority, Mike is owner. Multi-round background waits, zero tokens idle.
  • Grouped the list under/matched/over so the billing signal (possible under-billing vs deploy gap) is explicit for Winter.
  • Deploy split computed as SC-online AND Windows AND not-already-in-RMM — many online SC sessions (GND-SERVER, HSM-NEWSERVER, T&C already-enrolled boxes) are already managed, so raw SC reachability would overstate the gap.
  • Did NOT push any agents — Howard was wrapping for the day; recorded the 4 reachable targets + method for tomorrow.
  • Held Glaz-Tech (159 monthly / 88) and Brett (4 RMM / 3 billed) as open — Mike/Winter ruling pending; not chased.

Problems Encountered

  • Skill-first violation: hand-rolled curl against ScreenConnect + Syncro instead of using /screenconnect (sc.py) and /rmm-search. Howard corrected it; logged to errorlog.md (--correction). Switched to skills for the reachability + enrollment lookups.
  • SC company tags are inconsistent (typos/splits): "MVAN Enterprised", "BST - Business Services of Tucon", "Reliant / Farwest" (mixes Farwest/Wilcox, separate clients). Cross-referenced by hostname against RMM per client instead of trusting CP1 tags alone.
  • rmm-search -c "Residential" matched Sombra Residential LLC, not RARE — RARE has 0 in RMM; its SC machines (DESKTOP-83II6D8 online, DESKTOP-K8UVNL5 offline) are under the "Residential and Renovation" SC company.
  • SC session OS lives at .GuestInfo.OperatingSystemName (top-level GuestOperatingSystemName is absent) — confirmed all 4 deploy candidates are Windows (MVAN JUNE is a Win11 box, not the Mac).

Configuration Changes

  • Modified projects/gps-rmm-audit/gps-master-status.md — full rewrite: live 2026-07-08 counts, 2026-07-08 reconciliation section, corrected billing, deploy split, open items.
  • Modified projects/gps-rmm-audit/tracker.md — added "2026-07-08 Winter/Mike billing reconciliation + deploy split" section with next-session plan.
  • Modified projects/gps-rmm-audit/onsite-check-list.md — 2026-07-08 update: 4 reachable push-pending machines called out; removed PUTT/Stamback (resolved by billing); updated MVAN, RARE, Marc, QWM entries; Jimmy resolved, Glaz-Tech/Brett held.
  • Modified projects/gps-rmm-audit/targets.json — PUTT target 7->2, Stamback 8->3 (bucket B).
  • Modified 15 wiki articles under wiki/clients/ (putt-land-surveying, stamback-septic, jimmy, cascades-tucson, safesite, dataforth, design-and-brand-envoys, quantumwms, arizona-medical-transit, mvan-enterprises, horseshoe-management, reliant-well-drilling, grabb-durando, residential-renovation-engineering, tc-sorensen) — each with its 2026-07-08 account change.
  • Appended one correction entry to errorlog.md.

Credentials & Secrets

None created or newly discovered. Used existing vaulted credentials via skills: Syncro per-user API key (howard), ScreenConnect api_secret (msp-tools/screenconnect.sops.yaml), Discord bot token (projects/discord-bot/bot-token.sops.yaml), GuruRMM auth (rmm-auth.sh).

Infrastructure & Servers

  • GuruRMM API: live /api/agents (via rmm-auth.sh); 475 agent rows, 2026-07-08.
  • ScreenConnect: https://computerguru.screenconnect.com — 959 Access + 26 Support sessions.
  • Syncro: https://computerguru.syncromsp.com/api/v1 — recurring schedules per customer.
  • #ct-forum thread 1524553413629837444 (Discord) — the reconciliation Q&A.
  • Deploy sites: Horseshoe GOLD-OCEAN-4982, T&C Sorensen IRON-FORGE-1700, RARE LIGHT-TIGER-4397, MVAN LOWER-FORGE-6736.

Commands & Outputs

  • Live RMM per-client counts: curl /api/agents | jq group_by(client_name) unique hostnames.
  • SC fleet: sc.py sessions --json (959) ; online = ActiveConnections[].ProcessType==2 ; OS = .GuestInfo.OperatingSystemName.
  • Enrolled per client: rmm-search.sh -c "<client>" --json | jq .[].hostname.
  • Syncro billed GPS qty: GET /schedules?customer_id=<cid> -> GET /schedules/<id> -> sum GPS device SKUs (exclude AntiVirus/addon/discount/setup/trial).
  • ask-forum background wait: ask-forum.sh --wait <thread> --after <msg_id> --timeout 3600.

Pending / Incomplete Tasks

  • NEXT SESSION (2026-07-09): push GuruRMM one-liner to the 4 reachable machines via /screenconnect send-command --confirm (site one-liner iex (irm 'https://rmm.azcomputerguru.com/install/<SITE_CODE>/windows')), verify each via rmm-search.
  • Get Mike/Winter ruling on Glaz-Tech (159 billed monthly / 88 RMM) and Brett Interiors (4 RMM / 3 billed, +1).
  • Onsite queue: MVAN x3 (CPC-chris-UZR6E, DESKTOP-I7504C5, June's MacBook, MITCH-LAPTOP), Grabb x3 (GND-ASUSWS, GND-JEANNETTE, HOMEPC), Horseshoe x2 (HSM-RANDI, HSM-SURFACE), Reliant reconcile (~13 assets vs 9 billed), Multicultural x1, BSoT x1, Marc x1 (Mac), Heieck/Little Hearts/Andy's (no footprint).
  • Optional: run /wiki-compile to refresh affected client articles from these logs.

Reference Information

  • Plan docs: projects/gps-rmm-audit/{gps-master-status.md,tracker.md,onsite-check-list.md,targets.json}.
  • SC deploy method verified 2026-07-08 (memory reference_rmm_deploy_via_screenconnect, /screenconnect SKILL.md).
  • Forum thread: 1524553413629837444. Winter Discord id 624666486362996755; Mike 264814939619721216.

Update: 18:19 PT — pushed the 4 reachable machines

Pushed the GuruRMM self-enroll one-liner via /screenconnect send-command --confirm to the 4 SC-online Windows targets. Verified site codes against live GuruRMM (/api/sites, all Main) before sending. Result: 3 of 4 enrolled within a minute.

  • Horseshoe / DESKTOP-5DD8C43 (GOLD-OCEAN-4982) — ENROLLED (agent ba35f3d6-3077-4ed4-af98-9f53877f066b). Horseshoe 6->7.
  • Residential & Renovation / DESKTOP-83II6D8 (LIGHT-TIGER-4397) — ENROLLED (61f4be89-3c5f-40a6-a8bd-81a2a6d93088). RARE 0->1.
  • MVAN / JUNE (LOWER-FORGE-6736) — ENROLLED (92f583bc-1095-400c-8cd3-2e15a881ab3d). MVAN 0->1.
  • T & C Sorensen / SERVER (IRON-FORGE-1700) — FAILED to enroll. SC guest IS connected (ActiveConnections ProcessType==2 since 2026-07-05, GuestInfo current) so it is not a queue-on-reconnect; the install is not completing on the Server 2016 Essentials box. Sent twice, no enrollment after ~15 min. NEXT: diagnose (Get-CimInstance Win32_Processor / WMI, TLS egress, PS-via-SC output capture) — same class as SRV02 (2008 R2) / CP-QB (broken WMI). SC session 08eaff71-3dd7-4f75-999e-a598bfd355dc.

Lesson: SC "online" via ActiveConnections ProcessType==2 can persist for a connected-but- unresponsive/failing guest; enrollment (rmm-search) is the only real confirmation — the send returns {} regardless. Updated gps-master-status.md, onsite-check-list.md counts (Horseshoe 7, MVAN 1, RARE 1; no-footprint now 3).