University of Mid Florida · iCyber Enterprises

Satisfactory Academic Progress (SAP) Report

Functional & technical specification for the CampusOS engineering team

Regulatory basis: 34 CFR § 668.34 (Title IV) Purpose: MSCHE accreditation evidence Version: 1.0 · 2026-06-28
What this document is. A build-ready spec that defines the SAP report CampusOS must produce, the calculations behind it, the new configuration/fields required, and acceptance tests using real UMF student records. CampusOS already stores the raw inputs (cumulative attempted/earned credits, quality points, GPA, and per-course grade/credit/term — visible today on each student's Transcripts tab). This spec adds the evaluation, status, and reporting layer on top.

Policy ownership. The numeric thresholds below are the federally-typical defaults and UMF's recommended graduate values, but UMF's Financial Aid Office must ratify the final published SAP policy. CampusOS should implement every threshold as configurable, not hard-coded. This is a technical specification, not legal advice.
Contents
  1. Regulatory requirement & the three SAP measures
  2. Definitions, formulas & configurable thresholds
  3. Grade-treatment matrix (how each grade counts)
  4. SAP status model (state machine)
  5. Evaluation frequency & triggers
  6. The report: layout, columns, filters, exports
  7. Data already in CampusOS vs. new fields required
  8. Acceptance test cases (real UMF students)
  9. Open policy decisions for UMF to confirm

1 · Regulatory requirement

Under 34 CFR § 668.34, an institution disbursing Title IV federal student aid must have a written SAP policy and evaluate each aid recipient against three components. A student must satisfy all three to be "making satisfactory academic progress."

MeasureWhat it checksFederal rule
Qualitative (grades)Academic quality, expressed as cumulative GPA.Must use a GPA (or comparable) standard consistent with graduation requirements.
Quantitative — PaceWhether the student completes coursework fast enough to finish on time.Pace = cumulative completed ÷ cumulative attempted; institution sets the minimum (commonly 67%).
Quantitative — Max TimeframeCap on how long a student may take.May not exceed 150% of the published program length (in credit hours).

2 · Definitions, formulas & thresholds

All values in CONFIG are institution-set parameters CampusOS must expose in an admin SAP-policy screen (per program). Recommended UMF graduate defaults shown.

ParameterRecommended (grad)Definition / formula
Minimum cumulative GPA CONFIG3.00Qualitative measure. May optionally be tiered by credits attempted (e.g., lower bar in term 1).
Minimum pace % CONFIG67%pace = earnedCredits / attemptedCredits (cumulative).
Published program length CONFIG30 credits (confirm)Credits required to graduate the program.
Max-timeframe multiplier CONFIG150%maxAttempted = programLength × 1.50 → 30 × 1.5 = 45 credits.
Evaluation frequency CONFIGEach termEnd of each payment period/term (federally must be ≥ annual).
"Approaching max TF" warning band CONFIG≥ 90% of maxFlag when attempted ≥ 0.90 × maxAttempted (e.g., ≥ 40.5 credits) so advisors intervene early.

Per-student computed values

qualitativePass = cumulativeGPA ≥ minGPA
pace = earnedCredits / attemptedCredits
pacePass = pace ≥ minPace
maxAttempted = programLengthCredits × maxTimeframeMultiplier
maxTFpass = attemptedCredits ≤ maxAttempted
projectedToFinish = (programLengthCredits − earnedCredits) ≤ (maxAttempted − attemptedCredits)
meetsSAP = qualitativePass AND pacePass AND maxTFpass
Critical design decision — in-progress (IP) credits. In the current CampusOS data, many courses are graded IP (in progress). If IP credits are counted in the attempted denominator before they are graded, every active student's pace is artificially depressed (e.g., a student mid-program shows pace far below 67% only because future/current courses are already on the record). The policy must specify: current-term and not-yet-graded (IP) credits are typically excluded from the pace denominator until a grade is posted, but included in the maximum-timeframe attempted count. CampusOS must let UMF set this behavior and must compute pace on graded attempted credits by default.

3 · Grade-treatment matrix

How each CampusOS grade symbol feeds the three measures. This table must be CONFIG-editable, because it is the single most audited part of an SAP policy.

GradeIn GPA?In Attempted (pace)In Attempted (max TF)Counts as Earned/Completed?
A+ … D (passing letters)YesYesYesYes
Pass (P)NoYesYesYes
F / FailYes (0.0)YesYesNo
IP — In Progress (current term)NoExclude until gradedYesNo (yet)
I — IncompleteNo (until resolved)YesYesNo until completed
W — WithdrawNoYesYesNo
Retake / RepeatPer policy (last or highest)Each attempt = attemptedEach attempt = attemptedCounts once toward earned
Transfer credits (accepted)NoYesYesYes
AuditNoNoNoNo
Repeated coursework & Title IV. Federal aid pays for a repeat of a previously passed course only once. For SAP, every attempt counts toward attempted credits (pace and max-TF), but a passed course counts once toward earned credits. CampusOS must dedupe earned credits by course code while keeping all attempts in the attempted totals. UMF's CIS/HMA/MBA data already shows Retake rows that must be handled this way.

4 · SAP status model

Each evaluation assigns the student exactly one status. CampusOS must store the status, the prior status, and the evaluation snapshot, and drive transitions by this state machine.

StatusMeaningAid effectEntered when
Meeting SAPAll three measures pass.Eligible.meetsSAP = true.
Financial Aid WarningFailed a measure; one-term grace (no appeal needed).Remains eligible 1 term.Was "Meeting"; now fails ≥1 measure (only if UMF evaluates each term).
Financial Aid ProbationStill failing after Warning; appeal approved.Eligible 1 term, usually with an Academic Plan.Was "Warning"; still failing; appeal granted.
Academic PlanMulti-term path back to SAP, tracked each term.Eligible while meeting the plan.Appeal granted with a plan; re-checked each term.
Not Meeting SAP / SuspendedFailing with no (or denied) appeal, or plan broken.Ineligible until reinstated.Warning lapsed without recovery, or appeal denied.
Max Timeframe ExceededCannot finish within 150%.Ineligible.maxTFpass = false, or projectedToFinish = false.

Supporting records CampusOS must capture: Appeal (reason code, narrative, documents, reviewer, decision, date) and Academic Plan (target metrics per term, progress check).

5 · Evaluation frequency & triggers

  1. Scheduled batch run at the end of each term/payment period — evaluate every enrolled aid recipient automatically.
  2. On-demand single-student re-evaluation (e.g., after a grade change, incomplete resolution, or appeal decision).
  3. Snapshot persistence — every run writes an immutable evaluation record (date, term, all inputs & outputs, status). MSCHE and Title IV audits require the historical trail, not just the current value.

6 · The SAP report

Two linked outputs: a roster report (one row per student) and a per-student SAP letter/detail (the evidence document).

6.1 Roster report — columns

ColumnSource / formula
Student name, ID, Program, Term evaluatedStudent record
Cumulative GPA · Qual resultGPA · pass/fail vs minGPA
Credits Attempted / EarnedTranscript cumulative
Pace % · Pace resultearned/attempted · pass/fail vs minPace
Max-TF: attempted / max allowed · resultattempted vs programLen×1.5
Overall SAP statusState machine (§4)
Prior status · Action / flag · NotesSnapshot history; e.g., "Appeal due", "Approaching max TF"

6.2 Filters, aggregation, export

Filter by program, term, status, aid-recipient-only. Summary counts per status. Export to PDF (signed evidence for MSCHE) and CSV/XLSX. Per-student detail prints the full term-by-term transcript plus the three-measure computation and resulting status.

7 · CampusOS data: have vs. need

✓ Already in CampusOS

  • Cumulative Attempted Credits, Earned Credits, Quality Points, GPA (Transcripts tab)
  • Per-course code, name, credits, grade, term
  • Per-term and cumulative GPA
  • Grade symbols incl. IP, Retake, Withdraw, Fail
  • Program / stream assignment per student

+ Must be built

  • SAP policy config (per program): minGPA, minPace, programLength, 150% multiplier, frequency, grade-treatment table
  • Pace & max-TF computation with the IP/repeat rules
  • SAP status field + state machine on the student record
  • Evaluation snapshots (immutable history)
  • Appeal & Academic Plan records
  • Batch evaluator + on-demand re-eval
  • Roster report + per-student PDF with filters/exports
  • Flag: aid recipient vs. non-aid (scope of who must be evaluated)

8 · Acceptance test cases (real UMF students)

Using live transcript data pulled 2026-06-28. Assumes program length = 30 cr → max attempted = 45 cr; minGPA = 3.00; minPace = 67%. Pace shown on total attempted; see the IP caveat in §2 — the engine should also report a graded-only pace.

Student / ProgramGPA → QualEarned / Attempted → PaceMax TF (≤45)Expected status
Wisvel Joseph · CIS4.00 → Pass30/30 = 100% → Pass30 → OKMeeting SAP
Vicent Mitimingi · MBA1.02 → Fail24/28 = 86% → Pass28 → OKWarning / Not meeting (GPA)
Tanko Abdulai Ibrahim · HMA0.00 → Fail3/27 = 11% → Fail27 → OKNot meeting (GPA + pace)
Kenya Glenn · MBA3.88 → Pass24/43 = 56% raw → Fail*43 → Approaching (≥40.5)Review — *pace driven by IP credits; recompute on graded-only
Favour Ikhile · HMA1.55 → Fail6/42 = 14% → Fail42 → ApproachingNot meeting + near max TF
Georgina Amoako · MBA3.94 → Pass24/43 → see IP note43 → ApproachingMeeting (transcript locked/official)
What these tests prove the engine must handle: a high-GPA student can still fail SAP on pace; the IP-credit rule materially changes pace and must be configurable; and several students are already near the 45-credit ceiling, so the "approaching max timeframe" flag is needed for real interventions.

9 · Open policy decisions for UMF to confirm

  1. Published program length in credits for each program (CIS / HMA / MBA) — drives the 150% cap.
  2. Graduate minimum cumulative GPA (3.00 recommended) and whether it is tiered by credits attempted.
  3. Minimum pace percentage (67% recommended).
  4. IP / in-progress treatment in the pace denominator (recommend: exclude until graded).
  5. Repeat-course GPA rule (last grade vs. highest) and the once-only earned-credit dedupe.
  6. Evaluation cadence (each term recommended) and which population is in scope (all students vs. Title IV recipients only).
  7. Appeal grounds, documentation, and reviewer workflow; academic-plan template.
Hand-off summary for CampusOS engineering. Build (a) a per-program SAP policy configuration; (b) a computation service implementing the §2 formulas and §3 grade matrix; (c) a status state machine (§4) with appeal/plan records; (d) a scheduled + on-demand evaluator writing immutable snapshots (§5); and (e) the roster report and per-student PDF (§6) with PDF/CSV export. All raw inputs already exist on the student transcript; nothing requires new academic data entry — only the evaluation, status, and reporting layer.