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:
@@ -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.
|
||||
Reference in New Issue
Block a user