Built the missing piece between the test datasheet pipeline and Dataforth's new product API. End-to-end: - Pulled DFWDS (Dataforth Web Datasheet System) VB6 source from AD1\Engineering\ENGR\ATE\Test Datasheets\DFWDS to local for analysis - Decoded its filename validation: A-J prefix decodes (A=10..J=19), all- numeric WO# valid (no leading 0), anything else bad - Ported the validation + move logic to Node (dfwds-process.js) - Built bulk uploader (upload-delta.js) for Hoffman's Swagger API (POST /api/v1/TestReportDataFiles/bulk with OAuth client_credentials) Sanitized 3 prior reference scripts (fetch-server-inventory, test-scenarios, test-upload-two) to read CF_* env vars instead of hardcoded creds. Live drain results: - 897 files moved Test_Datasheets -> For_Web (all valid, no renames, no bad), DFWDS port summary in 1.1s - Pushed entire For_Web (7,061 files) to Hoffman API in 49.7s @ 142/s: Created=803 Updated=114 Unchanged=6,144 Errors=0 - Server count: 489,579 -> 490,382 (+803 net new) Also: - Added clients/dataforth/.gitignore to exclude plaintext Oauth.txt note - Added clients/instrumental-music-center/docs/2026-04-13-ticket-notes.md (ticket write-up of 2026-04-11/12/13 IMC1 RDS removal/SQL migration work) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Instrumental Music Center (IMC)
Music retail + repair shop running AIMsi point-of-sale on-prem.
Infrastructure
Primary server: IMC1 (192.168.0.2)
- OS: Windows Server 2016 Standard (build 14393.7426)
- Role: Domain Controller (IMC.local), file server, AIMsi SQL host, RDS host
- Hardware: Dell R720, 4 physical cores
- Disks:
C:— OS + IIS + a few apps (419 GB, ~77% full as of 2026-04-13)E:— SQL backups, app installers, Server 2016 install media (E:\W2016)F:— Windows Image BackupsS:— Dedicated SSD (Samsung 850 PRO 256 GB), now holding AIMsi SQL DBs
Access
- SSH:
ssh IMC\guru@192.168.0.2(ed25519 key auth; PowerShell default shell) - VPN: OpenVPN
.ovpnprofile (subnet issues with Tailscale 192.168.0.0/24 overlap — disconnect Tailscale first) - Domain admin:
IMC\guru - AIMSQL sysadmin:
IMC\guru(added 2026-04-12 via single-user recovery)
AIMsi / SQL
- Instance:
IMC1\AIMSQL(MSSQL15 = SQL Server 2019 Express, despite folder name) - Databases on
S:\SQL\Data\:AIM.mdf(~8 GB) — production AIMsi databaseIMC.mdf(~9 GB) — legacy, usage unclear (kept out of caution)TestConv61223.mdf(~8 GB) — leftover from 2023-06-12 migration test; safe to droptempdb.mdf
- System DBs remain on
C:\Program Files\Microsoft SQL Server\MSSQL15.AIMSQL\MSSQL\DATA\(master, model, msdb)
Backups
- Local SQL backups:
E:\SQL\MSSQL14.SQLEXPRESS\MSSQL\Backup\IMCAIM_*.bak(nightly at 22:00) - Retention: Automated via
C:\Scripts\Clean-AimsiBackups.ps1scheduled taskIMC AIMsi Backup Retention(daily 23:30, runs as SYSTEM) - Policy: Last 14 dailies + 1st-of-month; safety override keeps 3 newest regardless
- Off-site: Cloudberry/MSP360 "Online Backup" at
C:\ProgramData\Online Backup\
AIM client share
\\IMC1\AIM→S:\AIM(4 connected users typical)- AIM.exe is a 128 KB launcher; real work happens against
IMC1\AIMSQL RequireSecuritySignature = Truein SMB server config — adds auth overhead
Known issues
- Component store corrupted (0x80073701 during RDS role removal). KB5075999 re-apply succeeds but rolls back on reboot due to ETW manifest error (HRESULT 15010, provider GUID
{9c2a37f3-e5fd-5cae-bcd1-43dafeee1ff0}) RDS removal is blocked→ pending 2019 migration strategy (in-place vs. clean)- Oversized
COMPONENTShive (~168 MB, normal is 30-50 MB) SMB1 enabledon server — should disable as security hygiene
Other servers in AD
IMC2— 2016 Essentials, last logon 2023, likely decommissionedIMC-VM— 2016 Standard, last logon 2021, deadSERVERIMC(192.168.0.63) — SSH-only, 2016 Essentials per AD, state unclear
Open work
- Decide Server 2019 migration path (in-place vs. clean build + migrate)
- Consider dropping
TestConv61223DB after verifying nothing references it - Disable SMB1
- Add IMC vault entry for SSH/SQL/domain credentials