MEP SOAR Portal — OAT Case Manager Portal SOAR Outcome Tracking Application · soar-oats.homesunitedministries.org HomesUnited Ministries · Non Profit 501(c)(3) ───────────────────────────────────────────────────────────────────────────── Ver 4.C | 2026-07-17 | Audit Log + Magic Link Fix + Soft-Delete - audit.html: new admin-only audit log page (requires SOARADMIN code) Stat tiles: Total Events | Logins | Clients Created | Step/Demo Saves | Admin Actions Filters by actor (email/worker code), client (name/ID), action type Action badges: LOGIN, CLIENT_CREATED, STEP_UPDATED, DEMOGRAPHICS_SAVED, ADMIN_APPROVE, ADMIN_REJECT, ADMIN_RESTORE, ADMIN_REMOVE - getAuditLog API: GET /api/audit-log — returns up to 500 events newest-first - logAuditEvent API: POST /api/audit-log — client-side event writer - AuditLog table (mepsoarstorage): partitionKey='log', rowKey=timestamp+suffix - Admin actions (approve/reject/restore/remove) logged server-side in approveWorker - LOGIN events logged on magic link activation (URL token and manual paste) - CLIENT_CREATED events logged on new client intake - Audit Log link added to admin.html header nav bar - activateFromPendingLink() fix: was spreading outer response object {valid, worker} instead of data.worker — caused session.workerCode = undefined ("Assigned Worker: undefined") Fix: validate data.valid, spread data.worker with status='approved' - Remove action changed from hard-delete (deleteEntity) to soft-delete: status='removed', token='', removedAt=timestamp — row kept for audit trail - Re-registration now allowed when prior status is 'removed' or 'rejected' (upsertEntity 'Merge' replaces createEntity in registerWorker) - admin.html: ARCHIVED / REMOVED section + Restore button for removed workers - Total stat tile excludes removed workers (counts only active registrations) - Ver 4.A footer/title label updated to Ver 4.C Ver 4.A | 2026-07-14 | Admin Dashboard + Registration Approval Flow - admin.html: standalone admin dashboard; auth via SOARADMIN code - Stat tiles: Total Registered | PENDING (amber) | Approved | Rejected - Registration cards: full details per applicant with action buttons Pending → [Approve] [Reject] Approved → [Revoke] + magic link copy/email draft Rejected → [Restore] [Remove] - Session action log (in-page, tracks all actions in current browser session) - On Approve: generates workerCode (e.g. SOAR-SMITH-SE-ABC1234) + UUID magic link - approveWorker API: now supports action=approve|reject|restore|remove - registerWorker bugfix: createTableIfNotExists → createTable() with 409 catch (OATRegistrations table now auto-created on first registration) - Region maps added to Managing Entities cards (6 FL regions, self-contained) - White-label ready: all region assets served from /regions/ (no GoDaddy dependency) - SWA config: /admin.html added to navigationFallback.exclude - MEP_SOAR_PORTAL_PROJECT_BRIEF.md created Ver 3.B | 2026-07-12 | Provider Autocomplete + Storage Cleanup - providers.json: 772 FL SOAR provider entries (full statewide list) - Autocomplete on Provider ID field in registration modal - mepsoarstorage: old phantom tables removed, schema cleaned - Clients table verified: 75 demo records intact after cleanup Ver 3.A | 2026-06-02 | NSSC 2 — SOAR Manager Rebrand + Nav Overhaul - "Worker" fully replaced with "SOAR Manager" everywhere in UI - Breadcrumb navigation bar (Portal Home › View › Drill-down) - Provider tiles: 6-stat grid per tile (SSI Appr, SSDI Appr, In Progress, On Hold, SSI Denied, SSDI Denied) with raw counts and percentages - Managing Entities report: 7 ME cards with SSI/SSDI separate stats - Provider mini-cards on ME view - SWR caching (24h TTL, stale-while-revalidate on all API calls) - Stat cards clickable → drill into filtered client views - Application version label: Ver 3.A (header subtitle + footer) - Footer updated: organization address, support email Ver 2.A | 2026-05-20 | NSSC 1 — Statewide Pilot Expansion - Expanded to all 6 Florida SOAR regions - Managing Entities tab with 7 ME cards - Provider report with drill-down to provider client list - Client record panel: step tracking, demographics, outcome fields - OATRegistrations table created; registration modal added - Admin approval flow (manual, email-based — pre-admin.html) - 75-client demo dataset seeded Ver 1.A | 2026-04-04 | Initial Pilot - Azure SWA + Function App provisioned (mep-soar-rg, East US) - mepsoarstorage: Clients, Steps, Demographics, Providers, Forms tables - index.html: auth gate (shared password soarreports) - Clients view: stat tiles + sortable client list - Initial 20-client demo dataset - Custom domain: soar-oats.homesunitedministries.org ───────────────────────────────────────────────────────────────────────────── Internal use only · Details private to NSCC staff