3.7 KiB
Birth Biologic — Quality Systems Department -> Datto sync — COMPLETE
Date: 2026-06-30 Completed by: Mike Swanson / claude-main (GURU-5070) Status: COMPLETE — verified against live Graph enumeration
Outcome
Every file in the Datto source is now present in SharePoint.
| Datto (source) | SharePoint (final) | |
|---|---|---|
| Files | 3,768 | 3,769 |
| Datto files missing from SharePoint | — | 0 |
All 301 large files (>=4MB, ~29.7 GB total, largest a 3.94 GB .mov) were uploaded via Graph chunked upload sessions. The idempotent size-check pass also detected and re-uploaded ~700 files that existed in SharePoint with a mismatched size (partial/corrupt residue from the earlier failed OneDrive/PUT attempts).
The 4 intentional differences (live current work — PRESERVED per Mike, 2026-06-30)
These are the "recently modified, do not clobber" carve-out. Confirmed as live edits made today by named client staff, so they were left intact rather than forced to match Datto:
| File | Datto size | SharePoint size | Note |
|---|---|---|---|
LOGS/Equipment/3. Temp Excursions/Temperature Excursion Log.xlsx |
not present | 40,253 | Created 2026-06-30 by Mary Ster, edited by Kristin Steen |
LOGS/Equipment/2. Validation List/QSP-200.003.A Validation List.Current.docx |
41,908 | 51,510 | Locked/open, edited today |
LOGS/Equipment/1.Equipment List/QSP-200.001.C Equipment List.Current.docx |
47,947 | 57,545 | Locked/open, edited today |
LOGS/Quality Assurance Reporting Log/Deviations/2024/DEV39.Exhibit B.docx |
15,525 | 22,437 | In use, edited today |
The three docs surfaced as upload "errors" (HTTP 423 Locked / 409 Conflict) precisely because staff had them open — SharePoint's lock protected live work. That is the correct result, not a failure.
What actually fixed it (root cause of the all-day Mac failures)
- The prior upload script skipped every file >=4MB. Datto has 301 such files (~29.7 GB).
The old approach could never reach 3,768 no matter how many times it ran. Fix: proper Graph
upload sessions (10 MB chunks,
Content-Range) for large files. - RMM agent ignores the
timeoutfield; it honorstimeout_seconds. Commands sent withtimeoutwere capped at ~300 s, so long uploads died / went zombie ("running", no output). Usingtimeout_secondsallowed multi-minute/multi-hour commands to run to completion. - Long paths (>260 chars) in the Datto tree were handled with the
\\?\prefix for file reads.
Method
clients/birth-biologic/scripts/enumerate-datto.ps1— enumerate Datto, write arelpath|sizemanifest toC:\Windows\Temp\quality-manifest.txton ACG-DWP-X-BB.clients/birth-biologic/scripts/upload-quality-final.ps1— idempotent uploader: for each Datto file, skip if SharePoint already has it at matching size; else upload (simple PUT <4MB, chunked upload session >=4MB). Long-path safe, refreshes the Graph token on long runs, internal time budget + progress log (C:\Windows\Temp\quality-upload.log).- Ground truth verified from this machine via the Graph delta endpoint (whole-drive
enumeration; far fewer round-trips than recursive
childrencalls).
Agent / drive
- Agent: ACG-DWP-X-BB (
a4524e85-8a07-45d0-91b1-51ce7e2ca74a) - Datto source:
C:\Users\Public\Desktop\Datto Workplace Server Projects\Quality Department - SharePoint drive:
b!F8BzMb1YakCIWCyWlmczb09LHqtxDxVMpLT6kAwYmsM7NUY4oPLSRq7ng3tJq-E9 - Graph app:
msp-tools/computerguru-tenant-admin(tenant 19a568e8-...)
Note on the earlier docs
The earlier 2026-06-30-quality-sync-to-datto.md (surgical 5-file delete) and
CONTINUE-QUALITY-SYNC.md (wipe + re-upload, in progress) describe superseded intermediate
states. This file is the authoritative final record.