sync: auto-sync from GURU-5070 at 2026-07-03 13:18:27

Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-07-03 13:18:27
This commit is contained in:
2026-07-03 13:19:15 -07:00
parent 41c12a934f
commit 78f794a924
6 changed files with 275 additions and 1 deletions

View File

@@ -0,0 +1,55 @@
# Datto -> SharePoint FULL reconciliation - COMPLETE - 2026-07-02/03
## Outcome
**557 missing files recovered; all 5 site mappings independently verified at zero genuinely-missing.**
| Site | Datto files | Missing found | Recovered | Verified residual |
|---|---|---|---|---|
| Donor Services | 57,329 | 74 | 73 | 1 = intentional ghost-skip ("26-02328 - Copy.pdf", same-size renamed sibling in SP) |
| Admin | 6,301 | 472 | 468 + 4 (long-path retry) | 0 |
| Birth Biologic Activity Reports | 1 | 1 | 1 | 0 |
| Quality (QSD) | 3,768 | 11 | 11 | 0 |
| Supply Management | 160 | 0 | - | 0 |
sp-only counts (files in SP not in Datto: staff's new post-migration work) and size-diffs
(docx uniformly larger in SP = SharePoint Office property promotion; content-harmless) are
expected and documented per-site in C:\GuruCompare\ on ACG-DWP-X-BB.
## Root cause (answers "how was it missing after the sync to 0")
The 6/27 delta upload used simple Graph PUTs which **silently skip files >=4MB**; the
"reconciled to 0" claim trusted the uploader's own success reporting. Quality got the
chunked-upload fix 6/30; Donor Services and Admin were never re-verified. Admin was worst
(472 files, incl. >260-char long-path victims in consultant folder trees). Staff had begun
manually recreating missing donor PDFs (e.g. 26-04085.pdf, Mary Ster, 7/2).
## Method (repeatable)
`C:\GuruCompare\bb-fix-all.ps1` on ACG-DWP-X-BB (source in ClaudeTools scratch/session log):
per-site full inventory diff (path+size, case-insensitive) + rail-guarded fix:
- chunked upload sessions for >=4MB, simple PUT below
- conflictBehavior=fail (never overwrites SP)
- same-size-in-folder ghost detection (never resurrects renamed files)
- \\?\ long-path file opens; FileShare::ReadWrite (Datto service can stay running)
- fail-hard SP enumeration w/ 429 retry; sanity-abort if SP looks empty; per-site fresh token
Run via GuruRMM per site: `powershell -File C:\GuruCompare\bb-fix-all.ps1 -Site <n>`
(fresh Graph token to C:\GuruCompare\tok.txt first). Logs: C:\GuruCompare\<site>-fix-log.txt.
## Gotchas hit (memorialized)
- PS5.1 under RMM powershell -File: `-Headers $H` script-scope hashtable sent EMPTY
Authorization ("Access token is empty") - build headers inline. Memory: ps51-invoke-restmethod-headers-variable.
- Two failed runs masqueraded as token expiry / clock skew; capturing the Graph error BODY
was what cracked it.
- ACG-DWP-X-BB clock was NTP-corrected 8:03 PM 7/2 (had drifted while parked).
## Open items
- OneDrive placeholder mirror on ACG-DWP-X-BB for standing local comparisons: policies ready
to push; needs interactive OneDrive sign-in as sysadmin@birthbiologic.com via ScreenConnect.
- Datto Workplace service on the VM left RUNNING (catch-net for the still-active
donor-scan-to-Datto workflow; 2 scans from 6/29 + HR file were among the recovered).
Decide: keep as ongoing catch-net vs re-freeze.
- Client comms: staff can stop manually recreating missing April/May donor records.