sync: auto-sync from HOWARD-HOME at 2026-07-06 09:41:46
Author: Howard Enos Machine: HOWARD-HOME Timestamp: 2026-07-06 09:41:46
This commit is contained in:
@@ -1,130 +1,117 @@
|
||||
# GPS Backup Verification — Per-Customer Destination Map
|
||||
# GPS Backup Verification — Per-Customer Destination + Status Map
|
||||
|
||||
**Purpose:** Resolve every billed GPS "Data Backup" line to a real, *working* destination.
|
||||
Feeds Phase 4 of the GPS -> GuruRMM coverage audit. See `wiki/projects/gps-rmm-audit.md`.
|
||||
**Purpose:** For every GPS client, resolve the billed backup line to a real, *working*
|
||||
destination and verify a machine is actually backing up. Phase 4 of the GPS -> GuruRMM
|
||||
audit. See `wiki/projects/gps-rmm-audit.md`.
|
||||
|
||||
- Built 2026-07-05 (Howard). Sources: **MSP360 MBS API (authoritative backup layer)** +
|
||||
B2 (destination) + Seafile + ownCloud. Datto Workplace pending Mike's super-admin key.
|
||||
- **MSP360 is the source of truth for "is it backing up":** `/api/Monitoring` reports every
|
||||
backup plan (computer, last run, status, data) across 37 companies / 66 plans. B2 buckets
|
||||
are just where the Cloud plans land. Creds: `msp-tools/msp360-api.sops.yaml`.
|
||||
- Billed-backup flags from tracker.md `Svc` column (B = Data Backup billed).
|
||||
- Reconciliation note: bucket presence != a backup ran. MSP360 `LastStart` + `Status` is the
|
||||
real signal — used below.
|
||||
- Last verified: **2026-07-06 (Howard)**. Sources (all live):
|
||||
- **Syncro recurring schedules** = authoritative "billed backup seats" (Data Backup line
|
||||
qty per client). Pulled 2026-07-06 across all 40 GPS customers.
|
||||
- **MSP360 MBS `/api/Monitoring`** = authoritative "is it backing up" (per-machine last
|
||||
run + status). Via the `msp360` skill.
|
||||
- **B2 / Seafile / ownCloud** = destination/backend detail. **Datto Workplace pending**
|
||||
Mike's super-admin key.
|
||||
- **Only 16 of 40 GPS clients actually bill a backup line** (Syncro-verified). The tracker's
|
||||
old `Svc=B` flags were wrong for several — corrected here.
|
||||
- Rule (Howard): a client passes if a machine is currently backing up per the billed seats;
|
||||
old restore points sitting in a bucket are fine as long as something current runs. Seat
|
||||
vs machine mismatches are a BILLING question for Mike/Winter, not a deploy instruction
|
||||
([[feedback_backup_targets_never_guessed]]).
|
||||
|
||||
---
|
||||
|
||||
## 1. Billed-backup GPS clients (Svc = B) -> verified status
|
||||
## 1. Billed-backup clients (16) — seats vs machines actually backing up
|
||||
|
||||
20 of the 40 active GPS clients bill a Data Backup line.
|
||||
| Client | Seats | $/mo | Current backups | Verdict |
|
||||
|--------|:-----:|:----:|-----------------|---------|
|
||||
| Dataforth Corp | 7 | 95 | 7 machines daily (AD1/AD2/…) | **OK** |
|
||||
| Valley Wide Plastering | 4 | 60 | VWP-FILES/QBS/SERVER/WINFileSvr | **OK** (VWP-SERVER has a bogus 2051 timestamp — cosmetic) |
|
||||
| Curtis Plumbing | 2 | 50 | CP-QB + SRV02 daily | **OK** |
|
||||
| Ridgetop Group | 1 | 0 | RGI-DC | **OK** |
|
||||
| Brett Interiors | 1 | 15 | Server image daily | **OK** |
|
||||
| Gary A Hartman LLC | 1 | 20 | DESKTOP-EVA4H1A | **OK** |
|
||||
| Mineralogical Record | 1 | 10 | ownCloud `minrec` (98 GB) | **OK — confirm** ownCloud sync-active (slow query pending) |
|
||||
| Jimmy Company | 12 | 240 | Blaster2 only (1 machine) | **REVIEW** — 12 seats billed, 1 machine (known 12/1 anomaly) |
|
||||
| Glaz-Tech Industries | 2 | 45 | GTI-FINANCESVR current; **GTI-INV-VMHOST 251d stale** | **REVIEW** — 2 seats, 1 truly current |
|
||||
| Grabb & Durando Law | 1 | 49 | GND-SERVER cloud plan **failing / 0 bytes (flapping)** | **NOT BACKING UP** |
|
||||
| Bill Tedards | 1 | 45 | DESKTOP-SUFJR0J **last good 359d ago** | **NOT BACKING UP** (stale ~12 mo) |
|
||||
| Arizona Medical Transit | 1 | 0 | MSP360 company exists, **0 plans** | **NOT BACKING UP** |
|
||||
| Reliant Well Drilling | 1 | 40 | none found (no MSP360/B2/Seafile/ownCloud) | **HELD — unconfirmed** (Datto key) |
|
||||
| The Prairie Schooner | 1 | 10 | none found | **HELD — unconfirmed** (Datto key) |
|
||||
| Janet Altschuler | 2 | 0 | none found | **HELD — unconfirmed** (Datto key) |
|
||||
| Design and Brand Envoys | 1 | 0 | none found | **HELD — unconfirmed** (Datto key) |
|
||||
|
||||
| Client | Bkt | Backing up? | Evidence (MSP360 unless noted) | Verdict |
|
||||
|--------|:---:|:-----------:|-------------------------------|---------|
|
||||
| Dataforth Corp | A | YES | 12 plans, AD1/AD2/etc daily Success (-> `ACG-Dataforth`) | RESOLVED |
|
||||
| Valley Wide Plastering | A | YES | 4 plans, VWP-* daily Success (-> `VWP-Backup`) | RESOLVED |
|
||||
| Arizona Medical Transit | A | **NO** | MSP360 company exists, **0 backup plans** | **FINDING: billed, not backing up** |
|
||||
| Glaz-Tech Industries | B | PARTIAL | GTI-FINANCESVR daily Success; **GTI-INV-VMHOST last 2025-10-26 (stale)** (-> `ACG-GLAZTECH`) | RESOLVED (1 server stale) |
|
||||
| Jimmy Company | B | YES | Blaster2 Cloud Success; local plans failing (disk full) | RESOLVED (billing flag: 12 billed/1 box) |
|
||||
| Horseshoe Management | B | YES | HSM-NewServer daily Success (-> `Horseshoe`) | RESOLVED |
|
||||
| Grabb & Durando Law | B | **NO** | GND-SERVER Cloud plan **status=Failed, 0 bytes** | **FINDING: backup failing** |
|
||||
| Quantum Wealth Mgmt | B | ? | **No MSP360 company** | MISSING — Datto candidate |
|
||||
| Reliant Well Drilling | C | ? | **No MSP360 company** | MISSING — Datto candidate |
|
||||
| Curtis Plumbing | C | YES | CP-QB + SRV02 daily Success | RESOLVED |
|
||||
| The Prairie Schooner | C | ? | **No MSP360 company** | MISSING — Datto candidate |
|
||||
| Mineralogical Record | C | YES | ownCloud `minrec` (98 GB) | RESOLVED (ownCloud) |
|
||||
| T & C Sorensen | C | **NO** | MSP360 company "Sorensen" exists, **0 plans** (ACG-TCA is NOT theirs — see §3) | **FINDING: billed, not backing up** |
|
||||
| Ridgetop Group | C | YES | RGI-DC Cloud Success | RESOLVED |
|
||||
| Brett Interiors | C | YES | Server image daily Success (-> `ACG-Brett`) | RESOLVED |
|
||||
| Bill Tedards | C | **STALE** | Tedards DESKTOP-SUFJR0J last Success **2025-07-12 (~1 yr ago)** | **FINDING: backup stale ~12 mo** |
|
||||
| Janet Altschuler | C | ? | **No MSP360 company** | MISSING — Datto candidate |
|
||||
| Business Svcs of Tucson | C | YES | KAT1 Local Profile Success (-> `ACG-BST` + ownCloud `bst`) | RESOLVED |
|
||||
| Design and Brand Envoys | C | ? | **No MSP360 company** | MISSING — Datto candidate |
|
||||
| Gary A Hartman LLC | C | YES | Hartman DESKTOP-EVA4H1A backing up (path warnings) | RESOLVED |
|
||||
**Rollup (16 billed):** 7 OK · 2 REVIEW (seat>machine) · 3 NOT BACKING UP (Grabb, Tedards,
|
||||
AMT) · 4 HELD-unconfirmed pending Datto Workplace enumeration.
|
||||
|
||||
**Tally (20):** 11 RESOLVED (actively backing up) · 4 FINDINGS (destination exists but
|
||||
broken) · 5 MISSING (no destination anywhere — Datto candidates).
|
||||
|
||||
- **MISSING (5) — check once Datto enumerates:** Quantum Wealth, Reliant Well Drilling,
|
||||
The Prairie Schooner, Janet Altschuler, Design and Brand Envoys. If not Datto users, these
|
||||
are billed-but-unbacked.
|
||||
The 4 HELD are billed for backup but have no destination in any backend we can currently
|
||||
read. They are **not** flagged as failing — they may be Datto Workplace users. Re-check the
|
||||
moment Mike enables the super-admin API key:
|
||||
`py .claude/skills/datto-workplace/scripts/datto_workplace.py projects --json`.
|
||||
|
||||
---
|
||||
|
||||
## 2. Backup-health findings (billed + configured, but NOT protected right now)
|
||||
## 2. Revenue leak — backing up but NOT billed for backup (GPS clients)
|
||||
|
||||
These are the highest-priority operational findings — the client pays for backup and a
|
||||
destination/company exists, but no good recent restore point is being produced.
|
||||
Machine actively backing up in MSP360, but Syncro has **no Data Backup line**. Bill vs
|
||||
decommission = Mike/Winter decision (HELD, nothing sent).
|
||||
|
||||
| Client | Machine | Problem | Last good backup |
|
||||
|--------|---------|---------|------------------|
|
||||
| Arizona Medical Transit | — | MSP360 company but **zero plans** configured | never |
|
||||
| T & C Sorensen | — | MSP360 company "Sorensen" but **zero plans** | never |
|
||||
| Grabb & Durando | GND-SERVER | Cloud plan **Status=Failed, 0 bytes** | check console for last success |
|
||||
| Bill Tedards | DESKTOP-SUFJR0J | Backing up but **last success ~2025-07-12** (~12 mo stale) | 2025-07-12 |
|
||||
| Glaz-Tech | GTI-INV-VMHOST | Second server image **last 2025-10-26** (~8 mo stale); GTI-FINANCESVR is current | 2025-10-26 |
|
||||
| Len's Auto | LAB-SVR | IMAGE last 2026-06-07, FILES last 2026-06-17 — matches tracker "LAB-SVR offline since 2026-06-18" | 2026-06-17 |
|
||||
| Client | Backing up | Backend |
|
||||
|--------|-----------|---------|
|
||||
| Cascades of Tucson | CS-SERVER daily | B2 `ACG-Cascades` |
|
||||
| Len's Auto Brokerage | LAB-SVR (now stale) | B2 `ACG-Lens` |
|
||||
| Russo Law Firm | RUSSO-SRV (2.7 TB) + Seafile 2.2 TB | Cloud + Seafile |
|
||||
| Horseshoe Management | HSM-NewServer daily | B2 `Horseshoe` |
|
||||
| Business Services of Tucson | KAT1 daily | B2 `ACG-BST` + ownCloud `bst` |
|
||||
|
||||
Also non-GPS but worth a note to Mike: **Peaceful Spirit** PST-SERVER Files plan
|
||||
**Status=Failed** (0 bytes) despite 22K historical files in `ACG-PST`; **Desert RV**
|
||||
local-storage plan Critical (E:\ unreachable). These are outside GPS scope.
|
||||
Also non-GPS (outside audit scope): The Marc Group (ownCloud, billed email only), + the
|
||||
orphan destinations in §4.
|
||||
|
||||
## 2b. $0-priced backup lines (billed a seat at $0 — bundled or under-billed)
|
||||
|
||||
Ridgetop Group, Janet Altschuler, Design & Brand Envoys, Arizona Medical Transit — each has
|
||||
a Data Backup line at $0 `price_retail`. Flag for Mike/Winter (bundled deliberately, or
|
||||
should be billing?).
|
||||
|
||||
## 2c. Corrections vs the (deleted) 2026-07-05 Winter message
|
||||
|
||||
The weekend findings DM to Winter was deleted 2026-07-06 (wrong). Key corrections now:
|
||||
- **T&C Sorensen** and **Quantum Wealth** do NOT bill for backup — not backup concerns.
|
||||
- **Business Services of Tucson**: not billed but IS backing up -> a leak (§2), not a gap.
|
||||
- **Mineralogical Record**: billed + on ownCloud (message wrongly said "nothing running").
|
||||
- `ACG-TCA` = Tucson Coin & Autograph, NOT T&C Sorensen; `ACG-PST` = Peaceful Spirit.
|
||||
|
||||
---
|
||||
|
||||
## 3. Revenue-leak / billing-mismatch (data landing, backup NOT billed) — held for Mike/Winter
|
||||
## 3. Backend destinations (reference)
|
||||
|
||||
| Client | Destination | Billed Svc | Note |
|
||||
|--------|-------------|:----------:|------|
|
||||
| Cascades of Tucson | MSP360 CS-SERVER -> `ACG-Cascades` (active Success) | A E V | Backing up, **no B line billed** |
|
||||
| Len's Auto Brokerage | MSP360 LAB-SVR -> `ACG-Lens` | E | Has backups, no B line (and LAB-SVR now stale) |
|
||||
| Russo Law Firm | MSP360 RUSSO-SRV -> Cloud (2.7 TB) + Seafile `russo@rrs-law.com` (2.2 TB) | A E V | Backing up + 2.2 TB Seafile, **no B line** |
|
||||
| The Marc Group | ownCloud `themarcgroup` (29 GB) | E | 29 GB stored, billed email only |
|
||||
- **MSP360/B2 Cloud plans**: the bulk of GPS backups. Bucket = destination; MSP360 = truth.
|
||||
- **Seafile**: Russo (russo@rrs-law.com, 2.2 TB) among GPS; rest non-GPS/internal.
|
||||
- **ownCloud**: Mineralogical (`minrec`), The Marc Group (`themarcgroup`), Business Svcs
|
||||
(`bst`); `pavon` 14.2 TB = video archive, not a backup.
|
||||
- **Datto Workplace**: Birth Biologic confirmed (RMM detection); full enumeration pending
|
||||
Mike's super-admin key. The 4 HELD clients in §1 are the ones to check there.
|
||||
|
||||
---
|
||||
## 4. Orphan destinations — identified (non-GPS / internal / stale)
|
||||
|
||||
## 4. Orphan destinations — identified (non-GPS clients / ACG internal / stale)
|
||||
|
||||
All resolved via MSP360 company names + IX cPanel map + client wiki. None are GPS gaps.
|
||||
|
||||
**Now identified (were unknown):**
|
||||
- `ACG-PST` (22,054 files) = **Peaceful Spirit** (MSP360 PST-SERVER; current plan failing).
|
||||
- `ACG-TCA` (404 files) = **Tucson Coin and Autograph** (MSP360 DESKTOP-P36LUUN + Seth-PC,
|
||||
both Success). NOT T&C Sorensen.
|
||||
- `ownCloud mara` / `jburger` — still unidentified (small; low priority).
|
||||
|
||||
**Non-GPS clients with active MSP360 backups (not audit gaps):** Financial Safeguards
|
||||
(FSG-SRV-02 **active** — the `MSPBackups20200311` bucket is stale but FSG uses a current
|
||||
one), Rednour Law (`ACG-REDNOUR`), Rohrbach (`ACG-Rohrbach` + ownCloud), Martell &
|
||||
Associates (ownCloud `Martell`), Universal Cryogenics, Tucson Coin & Autograph, Tucson
|
||||
Safety and Medical (last 2026-02-25 — stale), Khalsa Montessori, LaHC, Desert RV, Anaise,
|
||||
Peaceful Spirit.
|
||||
|
||||
**ACG internal:** `ACG-Internal`, `ACG-Tech03L-Backup`, ownCloud `sysadmin`, Seafile
|
||||
`mike`/`howard`, MSP360 ACG-Internal (NEPTUNE Exchange backup).
|
||||
|
||||
**Not a backup:** ownCloud `pavon` (14.2 TB) — Pavon video-surveillance archive, ownCloud
|
||||
is source of truth (`wiki/clients/pavon.md`).
|
||||
|
||||
**Stale / cleanup (Mike's call):** `MSPBackups20200311` (ex-client FSG, 2021).
|
||||
|
||||
---
|
||||
|
||||
## 5. Datto Workplace (enumeration pending Mike's super-admin key)
|
||||
|
||||
- Confirmed via RMM detection: Birth Biologic (`ACG-DWP-X-BB`, `BB-*`/`KSTEEN*`/`EVO-X1`).
|
||||
- When the key lands: `py .claude/skills/datto-workplace/scripts/datto_workplace.py projects --json`,
|
||||
then check the 5 MISSING clients (§1) against it.
|
||||
`ACG-PST`=Peaceful Spirit (22k files) · `ACG-TCA`=Tucson Coin & Autograph · `ACG-REDNOUR`=
|
||||
Rednour Law · `ACG-Rohrbach`=Rohrbach · `ACG-IX`/`ACG-Internal`/`ACG-Tech03L`=ACG internal ·
|
||||
`MSPBackups20200311`=stale ex-client FSG (deletion candidate) · Seafile Stoltz Law / Sonoran
|
||||
Glass = non-GPS · ownCloud `mara`/`jburger` = still unidentified.
|
||||
|
||||
---
|
||||
|
||||
## Next actions
|
||||
|
||||
1. **Datto (blocked on Mike):** enumerate; resolve the 5 MISSING — Quantum Wealth, Reliant,
|
||||
Prairie Schooner, Janet Altschuler, Design & Brand Envoys.
|
||||
2. **Backup-health findings (§2) — operational, fix these:** AMT + T&C Sorensen have no
|
||||
backup plans at all; Grabb GND-SERVER failing; Bill Tedards ~12 mo stale; Glaz-Tech
|
||||
GTI-INV-VMHOST ~8 mo stale; Len's LAB-SVR stale (offline). Route per client.
|
||||
3. **Held for Mike/Winter (§3):** Cascades/Len's unbilled backups; Russo 2.7 TB Cloud + 2.2 TB
|
||||
Seafile no B line; Marc Group ownCloud.
|
||||
4. **Cleanup:** confirm `MSPBackups20200311` (FSG) for deletion; identify ownCloud `mara`/`jburger`.
|
||||
5. Optional: build a small `msp360` read-only skill (login + Monitoring) — this pass was done
|
||||
via direct API; a skill would make backup-status checks repeatable for the whole fleet.
|
||||
1. **Datto (blocked on Mike):** enumerate; resolve the 4 HELD — Reliant, Prairie Schooner,
|
||||
Janet Altschuler, Design & Brand Envoys.
|
||||
2. **Not backing up — operational, route per client (HELD for Mike/Winter, not sent):**
|
||||
Grabb GND-SERVER failing (0 bytes); Bill Tedards ~12 mo stale; AMT 0 plans; Glaz-Tech
|
||||
GTI-INV-VMHOST 251d.
|
||||
3. **Confirm Mineralogical** ownCloud `minrec` is sync-active (ownCloud usage query is slow).
|
||||
4. **Billing questions (HELD, Mike/Winter):** the 5 leaks (§2), the $0 lines (§2b), Jimmy
|
||||
12/1 seat gap.
|
||||
5. Nothing outbound until Howard releases — the weekend Winter DM was deleted as wrong.
|
||||
|
||||
*Data: `gps-clients.json` (40 clients + cids). Backup-status source: `msp360` skill +
|
||||
memory `[[reference_msp360_backup_monitoring]]`.*
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
Online = ActiveConnections ProcessType==2 (guest agent connected). Recency = GuestInfoUpdateTime.
|
||||
Rebuilt 2026-07-04. Staging installer pushed to all ONLINE machines (land in Staging -> reassign-staging.py).
|
||||
|
||||
## ONLINE now (2)
|
||||
## ONLINE now (1)
|
||||
- IMC-PRINTSERVER [Instrumental Music Center] (1d)
|
||||
- ZEUS-SHERRI [Zeus Nestora] (0d)
|
||||
|
||||
## active <=14d (14)
|
||||
## active <=14d (13)
|
||||
- KAT1 [Business Services of Tucson LLC] (0d)
|
||||
- HSM-CATHY [Horseshoe Management] (3d)
|
||||
- IMC-M-EDSERVICE [Instrumental Music Center] (4d)
|
||||
@@ -21,12 +20,11 @@ Rebuilt 2026-07-04. Staging installer pushed to all ONLINE machines (land in Sta
|
||||
- DESKTOP-V9F9L23 [Safesite] (0d)
|
||||
- JEREE [Stamback Septic] (3d)
|
||||
- DESKTOP-6HT5SJ9 [The Marc Group] (0d)
|
||||
- ZEUS1 [Zeus Nestora] (2d)
|
||||
|
||||
## stale 15-45d (4)
|
||||
- GND-L-3 [Grabb & Durando Law Office] (22d)
|
||||
- DESKTOP-KRHQ5TS [Instrumental Music Center] (17d)
|
||||
- RWD-ALLENDESKTO [Reliant Well Drilling and Pump Corporate] (19d)
|
||||
- RWD-ALLENDESKTO [Reliant Well Drilling and Pump Corporate] (20d)
|
||||
- DESKTOP-FMDIK0Q [Safesite] (44d)
|
||||
|
||||
## dead/no-session (58)
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
[
|
||||
{"client":"Instrumental Music Center","cid":7088508,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[365662],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Safesite","cid":26563106,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[374386],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Horseshoe Management","cid":625269,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[323028,2379],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Grabb & Durando Law Office","cid":14232794,"backup_seats":1,"backup_monthly":49,"backup_lines":["Service - Data Backup"],"schedule_ids":[478096,126669],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Quantum Wealth Management","cid":7088747,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[456876,193901],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Jimmy Company","cid":18560272,"backup_seats":12,"backup_monthly":240,"backup_lines":["Service - Data Backup"],"schedule_ids":[402452,205345],"frequency":"Annually","note":"ok"},
|
||||
{"client":"Stamback Septic","cid":11513046,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[215079,154608],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Reliant Well Drilling and Pump Corporate","cid":10736261,"backup_seats":1,"backup_monthly":40,"backup_lines":["Service - Data Backup"],"schedule_ids":[144683,54149],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Zeus Nestora","cid":1196974,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[8332],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Little Hearts Little Hands","cid":1144233,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[333952,7547],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"PUTT LAND SURVEYING, INC.","cid":7180175,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[418370],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Curtis Plumbing","cid":416585,"backup_seats":2,"backup_monthly":50,"backup_lines":["Service - Data Backup"],"schedule_ids":[242342,9956,3399],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"The Prairie Schooner","cid":3664974,"backup_seats":1,"backup_monthly":10,"backup_lines":["Service - Data Backup"],"schedule_ids":[113429,46694],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Mineralogical Record","cid":207770,"backup_seats":1,"backup_monthly":10,"backup_lines":["Service - Data Backup"],"schedule_ids":[334414],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"T & C Sorensen","cid":344886,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[339403,269337,53177,53172,11392],"frequency":"Annually","note":"no backup line"},
|
||||
{"client":"MVAN Enterprises Inc","cid":29462761,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[379467],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Ridgetop Group","cid":9413367,"backup_seats":1,"backup_monthly":0,"backup_lines":["Service - Data Backup"],"schedule_ids":[155169],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Multicultural Counseling Center","cid":35483539,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[505004,498702],"frequency":"Annually","note":"no backup line"},
|
||||
{"client":"Brett Interiors","cid":15726057,"backup_seats":1,"backup_monthly":15,"backup_lines":["Service - Data Backup"],"schedule_ids":[101780],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Heieck, Sheila","cid":12045942,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[87583],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"The Marc Group","cid":869073,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[51489,5669,3330],"frequency":"Annually","note":"no backup line"},
|
||||
{"client":"Residential and Renovation Engineering","cid":7088403,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[336905,335126,66653],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Bill Tedards","cid":487887,"backup_seats":1,"backup_monthly":45,"backup_lines":["Service - Data Backup"],"schedule_ids":[2023],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Janet Altschuler","cid":457710,"backup_seats":2,"backup_monthly":0,"backup_lines":["Service - Data Backup"],"schedule_ids":[2666],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Business Services of Tucson LLC","cid":29338800,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[503850,373682],"frequency":"Annually","note":"no backup line"},
|
||||
{"client":"Andy's Mobile Fuel","cid":27364453,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[305466,305246],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Design and Brand Envoys","cid":26747288,"backup_seats":1,"backup_monthly":0,"backup_lines":["Service - Data Backup"],"schedule_ids":[332981,321139],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Pro-Tech Services","cid":23702122,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[389697],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Inside Track Productions","cid":3021358,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[30294,29759],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Gary A Hartman LLC","cid":29038261,"backup_seats":1,"backup_monthly":20,"backup_lines":["Service - Data Backup"],"schedule_ids":[351565],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Robyn Pittman","cid":17031534,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[114036],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Marty Ryan","cid":140717,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[336179,123459,713],"frequency":"Annually","note":"no backup line"},
|
||||
{"client":"Dataforth Corp","cid":578095,"backup_seats":7,"backup_monthly":95,"backup_lines":["Service - Data Backup","Service - Data Backup","Service - Data Backup"],"schedule_ids":[378819,362646],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Cascades of Tucson","cid":20149445,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[434199],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Valley Wide Plastering","cid":31694734,"backup_seats":4,"backup_monthly":60,"backup_lines":["Service - Data Backup"],"schedule_ids":[500734,500215],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"Len's Auto Brokerage","cid":3289131,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[482424,11865],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Arizona Medical Transit","cid":7088349,"backup_seats":1,"backup_monthly":0,"backup_lines":["Service - Data Backup"],"schedule_ids":[151853,35028],"frequency":"Monthly","note":"ok"},
|
||||
{"client":"AT Trebesch","cid":238740,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[2387],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Russo Law Firm","cid":23331699,"backup_seats":0,"backup_monthly":0,"backup_lines":[],"schedule_ids":[513484,509659,499925],"frequency":"Monthly","note":"no backup line"},
|
||||
{"client":"Glaz-Tech Industries","cid":143932,"backup_seats":2,"backup_monthly":45,"backup_lines":["Service - Data Backup","Service - Data Backup"],"schedule_ids":[134087],"frequency":"Monthly","note":"ok"}
|
||||
]
|
||||
@@ -1,73 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -u
|
||||
BASE="https://computerguru.syncromsp.com/api/v1"
|
||||
KEY="Tde5174a6e9e312d14-02fd5bfe0f0ee40c87d027507c680e18"
|
||||
CLIENTS="C:/claudetools/projects/gps-rmm-audit/gps-clients.json"
|
||||
|
||||
# iterate customers
|
||||
n=$(jq 'length' "$CLIENTS")
|
||||
echo "["
|
||||
first=1
|
||||
for i in $(seq 0 $((n-1))); do
|
||||
client=$(jq -r ".[$i].client" "$CLIENTS")
|
||||
cid=$(jq -r ".[$i].cid" "$CLIENTS")
|
||||
|
||||
# fetch schedules list
|
||||
slist=$(curl -s "$BASE/schedules?customer_id=$cid&api_key=$KEY" | tr -d '\000-\037')
|
||||
sids=$(echo "$slist" | jq -r '.schedules[]?.id' 2>/dev/null)
|
||||
|
||||
seats=0
|
||||
monthly=0
|
||||
lines_json="[]"
|
||||
sids_json="[]"
|
||||
freq="null"
|
||||
note="ok"
|
||||
|
||||
if [ -z "$sids" ]; then
|
||||
note="no recurring schedule"
|
||||
seats=0
|
||||
else
|
||||
# collect sids into json array
|
||||
sids_json=$(echo "$sids" | jq -R . | jq -s -c 'map(tonumber)')
|
||||
matched_lines="[]"
|
||||
any_backup=0
|
||||
for sid in $sids; do
|
||||
det=$(curl -s "$BASE/schedules/$sid?api_key=$KEY" | tr -d '\000-\037')
|
||||
# frequency (take first non-null)
|
||||
f=$(echo "$det" | jq -r '.schedule.frequency // empty' 2>/dev/null)
|
||||
if [ -n "$f" ] && [ "$freq" = "null" ]; then freq="$f"; fi
|
||||
# backup lines: name or description contains backup (case-insensitive)
|
||||
bl=$(echo "$det" | jq -c '[.schedule.lines[]? | select((.name // "") | ascii_downcase | test("backup"))]' 2>/dev/null)
|
||||
if [ -z "$bl" ]; then bl="[]"; fi
|
||||
cnt=$(echo "$bl" | jq 'length')
|
||||
if [ "$cnt" -gt 0 ]; then
|
||||
any_backup=1
|
||||
# sum quantity (quantity is a string like "18.0")
|
||||
q=$(echo "$bl" | jq '[.[].quantity // 0 | tonumber] | add')
|
||||
# sum quantity*price_retail
|
||||
m=$(echo "$bl" | jq '[.[] | ((.quantity // 0 | tonumber) * (.price_retail // 0 | tonumber))] | add')
|
||||
seats=$(awk "BEGIN{printf \"%g\", $seats + $q}")
|
||||
monthly=$(awk "BEGIN{printf \"%g\", $monthly + $m}")
|
||||
# append names
|
||||
nm=$(echo "$bl" | jq -c '[.[].name]')
|
||||
matched_lines=$(echo "$matched_lines $nm" | jq -s -c 'add')
|
||||
fi
|
||||
done
|
||||
lines_json="$matched_lines"
|
||||
if [ "$any_backup" -eq 0 ]; then
|
||||
note="no backup line"
|
||||
fi
|
||||
fi
|
||||
|
||||
# normalize monthly number
|
||||
if [ "$monthly" = "0" ]; then monthly="0"; fi
|
||||
if [ "$freq" != "null" ]; then freq="\"$freq\""; fi
|
||||
|
||||
# emit
|
||||
if [ $first -eq 0 ]; then echo ","; fi
|
||||
first=0
|
||||
printf '{"client":%s,"cid":%s,"backup_seats":%s,"backup_monthly":%s,"backup_lines":%s,"schedule_ids":%s,"frequency":%s,"note":%s}' \
|
||||
"$(echo "$client" | jq -R .)" "$cid" "$seats" "$monthly" "$lines_json" "$sids_json" "$freq" "$(echo "$note" | jq -R .)"
|
||||
done
|
||||
echo ""
|
||||
echo "]"
|
||||
@@ -200,3 +200,32 @@ Howard asked for (check-the-wiki-for-status, and use-the-skills-to-set-up).
|
||||
**Published:** commits `976bfe7` (skill) + `a8e76ba` (routing/memory) pushed to origin;
|
||||
Phase 5c installed msp360 to global. Memory `reference_msp360_backup_monitoring` updated
|
||||
(skill now exists, full not read-only).
|
||||
|
||||
## Update: 2026-07-06 — deleted wrong Winter DM + full GPS backup verification
|
||||
|
||||
**Deleted the wrong weekend Winter message.** The 2026-07-05 03:44 UTC GPS-audit findings
|
||||
DM to Winter (`[GPS AUDIT] Billing + service findings`) was superseded/wrong now that we
|
||||
have MSP360 + Syncro-seat data. Resolved Winter's DM channel via the bot (user id
|
||||
624666486362996755 -> channel 1519394696873513060), confirmed the target message content,
|
||||
`DELETE /channels/{ch}/messages/1523172725391233044` -> HTTP 204. The identical message
|
||||
also went to Mike (`...715039559760`) and Howard (`...736904593588`) — left in place (Howard
|
||||
only asked for Winter's). Bot can only delete its own messages (bounded risk).
|
||||
|
||||
**Full GPS backup verification (Howard: all 40 clients, flag seat-vs-machine gaps).**
|
||||
- Built `projects/gps-rmm-audit/gps-clients.json` (40 clients + Syncro cids).
|
||||
- Delegated a Syncro read-only sub-agent to pull recurring-schedule Data Backup line qty
|
||||
(billed backup seats) for all 40. It caught a false-positive: base GPS Workstation/Server
|
||||
products carry "Backups" in their boilerplate DESCRIPTION — matching restricted to line
|
||||
NAME. Result: **only 16 of 40 actually bill a backup line** (tracker `Svc=B` flags were
|
||||
wrong for Horseshoe, Quantum Wealth, T&C Sorensen, Business Svcs of Tucson).
|
||||
- Reconciled billed seats vs live MSP360 current-machine backups. Verdict (16 billed):
|
||||
7 OK (Dataforth, Valley Wide, Curtis, Ridgetop, Brett, Gary Hartman, Mineralogical/ownCloud);
|
||||
2 REVIEW seat>machine (Jimmy 12/1, Glaz-Tech 2/1 w/ GTI-INV 251d stale);
|
||||
3 NOT BACKING UP (Grabb GND-SERVER failing 0-byte, Bill Tedards 359d stale, AMT 0 plans);
|
||||
4 HELD-unconfirmed pending Datto key (Reliant, Prairie Schooner, Janet Altschuler, D&B Envoys).
|
||||
- Leaks (backing up, not billed): Cascades, Len's, Russo, Horseshoe, Business Svcs of Tucson.
|
||||
$0-priced backup lines: Ridgetop, Janet Altschuler, D&B Envoys, AMT.
|
||||
|
||||
**Howard's decisions:** hold the 4 Datto candidates as unconfirmed (not failing); HOLD all
|
||||
outbound (no corrected Winter/Mike message yet) — just persist. `backup-map.md` fully
|
||||
rewritten with the authoritative Syncro-seat + MSP360 reconciliation. Nothing sent.
|
||||
|
||||
Reference in New Issue
Block a user