The Graduation Status field (column BM/field 65 on the STUDENT template) in the PA PIMS Download reports whether a student has graduated, transferred, or otherwise completed their program. This field is populated automatically during the PIMS Student Download based on data in the student's Graduation Status (GRADS) program records.
This chapter explains:
-
What setup is required before running the download
-
How the system determines the graduation status value
-
What each warning/error message means
-
How to verify and troubleshoot common issues
Quick Troubleshooting
Use this table to quickly identify the most likely cause for common graduation status issues. For detailed investigation steps, see Deep Troubleshooting.
|
Symptom |
Most Likely Cause |
First Thing to Check |
|---|---|---|
|
Grad status is blank |
GRADS program start date is before the withdrawal date |
Verify GRADS start date equals or is after the withdrawal date |
|
Grad status is blank |
GRADS building does not match the students' enrolled building |
Verify the GRADS building matches the enrollment vector's building |
|
Grad status is blank |
GRADS program dates do not overlap the submission run range |
Verify the GRADS program start/end dates fall within the download's run range |
|
Grad status is blank |
Student is active with no withdrawal date |
Expected behavior — active students do not receive a graduation status |
|
Grad status is blank |
GRADS program is closed, and the end date is before the submission start date |
Expected behavior — the record is no longer retrieved |
|
Active student with a grad status warning |
GRADS program is not closed after the student returns |
Close the GRADS program with an end date set to the day before re-entry |
|
Wrong building pulling grad status |
GRADS building is blank (NULL) — fallback triggered |
Set the GRADS building explicitly to the correct building |
|
Invalid state code error |
Graduation status code missing from the validation table |
Add the code to |
|
Withdrawn student has no grad status warning |
Missing GRADS program record |
Create a GRADS program with the appropriate status code for the withdrawal reason |
What Is Graduation Status?
Graduation Status is a one-character code reported to PDE (Pennsylvania Department of Education) indicating whether a student who left the school graduated, dropped out, or transferred. The valid codes are maintained in the Graduation Status Validation Table (patb_grad_stat) in eSchoolPLUS. Each code maps to a state_code_equiv value that is reported to PDE.
PDE Graduation Status Codes
|
Code |
Description |
Notes |
|---|---|---|
|
A |
Dropped out — Academic problems |
|
|
B |
Dropped out — Behavior problems |
|
|
C |
Dropped out — Child, Married, or Pregnancy |
|
|
D |
Dropped out — Disliked school |
|
|
E |
Exceeded maximum school age: did not complete educational program |
Discontinued for 2017–18 |
|
F |
Exceeded maximum school age: completed educational program |
Discontinued for 2017–18 |
|
G |
Graduation with a regular diploma or GED |
Requires Diploma Type (Field 91) and Expected Post-Graduate Activity (Field 66) |
|
H |
Dropped out — Enrolled but did not show |
|
|
I |
Retired PAsecureID |
PDE USE ONLY |
|
J |
Incorrectly reported, but cannot be deleted |
PDE approval only |
|
L |
Left the PA public school system but did not drop out |
For example, transferred out of PA, transferred to a private school, died |
|
O |
Dropped out — Other reason |
|
|
R |
Dropped out — Runaway or Expelled |
|
|
S |
Previous year special education graduate |
ONLY for students graduating between July 1 and Sep 30 (inclusive) who were reported as graduates in the previous year's Student template |
|
T |
Transferred to another LEA in PA |
|
|
W |
Dropped out — Wanted to work |
|
|
X |
Transferred to another school in the same LEA |
Discontinued for school years 2019–2020 and later |
|
(blank) |
No graduation status |
Student is active or does not qualify |
Code G: When a student has graduation status G, the system also validates that Diploma Type and Expected Post-Graduate Activity are populated. Missing values will generate warnings during the download.
Code S: This code is system-assigned for school years 2015–2022. It applies only when a special education student (SPEC = Y or E) had a previous year graduation status of G and withdrew between July 1 and October 1 of the previous year.
Setup Requirements (Checklist)
Before running the PIMS Student Download, verify that the following setup is complete and correct.
GRADS Program Setup
The GRADS program stores graduation status information for students. Each student who has a graduation status must have a record in this program.
Where to find it: Registration – Entry & Reports – Student Demographic – Programs – GRADS-Graduation Status
What to verify:
|
Item |
What to Check |
|---|---|
|
Program exists |
The GRADS program must be configured in your district. It is linked through |
|
Program value |
Each GRADS record must have a valid graduation status code (for example, T, G, D). |
|
Start date |
Every GRADS record must have a start date. Records without a start date will not be picked up. The start date should typically equal the student's withdrawal date. Setting the start date earlier than the withdrawal date prevents the record from matching the withdrawal event. |
|
End date |
An open record (no end date) means the graduation status is currently active. A closed record (with an end date) means the graduation status has ended. |
|
Building field |
The GRADS program should have a building field (linked via |
Important — Returning Students: If a student leaves the district and later returns, the PA User Guide instructs districts to close the existing GRADS program record by entering an End Date (the day before the student re-enters). This ensures the old graduation status does not carry forward. Refer to Student Returns to the District.
PIMS District Defined Screen (Screen 300)
The Graduation Status field on the PIMS page is linked to the GRADS program through the district-defined screen configuration.
Where to find it: District – Setup – District Defined Screens – Screen 300 – Field 2
What to verify:
|
Item |
What to Check |
|---|---|
|
Field link |
Screen 300, Field 2 must be linked to the GRADS program. |
|
Field value |
When you view a student's PIMS page, the Graduation Status field should reflect the student's current GRADS program status. If the GRADS program is closed, this field should be empty. |
Graduation Status Validation Table
The system validates each graduation status code against the patb_grad_stat table before reporting it. This is one of several PA-specific validation tables maintained under the Pennsylvania State Reporting application.
Where to find it: Administration – General Setup – District – Validation Tables – Pennsylvania State Reporting Application – Graduation Status
Database table: patb_grad_stat
What to verify:
|
Item |
What to Check |
|---|---|
|
Valid codes |
Each graduation status code used in GRADS programs must exist in this table. Refer to the PDE Graduation Status Codes. |
|
State code equivalent |
Each code must have a |
|
Alignment with PDE |
The codes and state equivalents must match the values published in the PIMS Manual Volume 1. |
Building Configuration
Starting with the school year 2023 and later, graduation status is building-specific. The system only reports a grad status if the GRADS program building matches the building on the enrollment vector being processed.
Where to find it: Registration – Entry & Reports – Student Demographic – Programs – GRADS-Graduation Status – Building field
What to verify:
|
Item |
What to Check |
|---|---|
|
Building field populated |
The GRADS program record should have a building value in the GBuilding field. |
|
Building matches enrollment |
The building in the GRADS record must match the building on the enrollment vector being processed. If the buildings do not match, the grad status will not be reported for that vector. |
|
No building specified |
If the building field is left blank (NULL), the system will treat it as a fallback — it will only be used if no building-specific record exists. |
Building Matching Rule (School Year 2023+)
The system evaluates building match in this order:
GRADS building = enrollment vector building – use this grad status
GRADS building = NULL (blank) – fallback, use this grad status
No match – grad status is cleared during processing
If a NULL building record exists alongside a building-specific record, the building-specific record is always used first. The NULL record is only considered when no direct building match is found.
4.5 Related Validation Tables and Fields
In addition to the GRADS program and patb_grad_stat, the following tables and fields interact with graduation status during the download. Verify these are set up correctly.
|
Table / Field |
Menu Path |
Relevance |
|---|---|---|
|
Submission Periods ( |
Administration – General Setup – District – Validation Tables – PA State Reporting – Submission Periods |
Defines the snapshot date for each submission period. If missing, the download uses the run range end date instead. |
|
Diploma Type |
Registration – Entry & Reports – Student Demographic – Academic – Diploma Type |
Required when graduation status is |
|
Expected Post-Graduate Activity |
Registration – Entry & Reports – Student Demographic – Academic – Expected Graduation Plans |
Required when graduation status is anything other than |
|
Foreign Exchange flag |
Registration – Entry & Reports – Student District Defined – PIMS – Foreign Exchange |
Students marked as Foreign Exchange cannot have a graduation status of |
|
Entry/Withdrawal records |
Registration – Entry & Reports – Student Demographic – Entry/Withdrawal |
Withdrawal dates and codes drive graduation status requirements. Students in grades 9–12 who withdraw must have a graduation status. |
Key Database Tables
For support engineers who need to verify data directly, the following tables are involved in graduation status processing:
|
Table |
Purpose |
|---|---|
|
|
Stores GRADS program records (graduation status value, start date, end date, building) |
|
|
Graduation status validation table — maps program codes to PDE state code equivalents |
|
|
Enrollment vectors with entry dates, withdrawal dates, and withdrawal codes |
|
|
Submission period dates — determines snapshot dates for each collection |
|
|
Links program IDs to state code equivalents (identifies which program is GRADS) |
How Graduation Status Is Determined During the Download
All Conditions Required for Grad Status to Be Reported (School Year 2023+)
For a graduation status value to appear in the PIMS extract for a given enrollment vector, all of the following conditions must be met simultaneously:
|
# |
Condition |
What It Checks |
|---|---|---|
|
1 |
GRADS program exists |
The student must have a record in the GRADS program ( |
|
2 |
Program dates overlap submission range |
The GRADS program |
|
3 |
Valid graduation status code |
The program value must exist in the |
|
4 |
Student has a withdrawal date |
The enrollment vector must have a withdrawal date. If the student is active (no withdrawal date), the grad status is automatically set to blank — active students do not receive a graduation status. |
|
5 |
GRADS start date ≥ withdrawal date |
The GRADS program |
|
6 |
Building match |
The GRADS program building ( |
If any one of these conditions fails, the graduation status will be blank for that enrollment vector.
Example — Returning student at North Side Elementary (Building 13):
Student withdrew on 02/12/2026 (W16A) – GRADS created with status
O, start date 02/12/2026, end date 02/26/2026, building blankStudent re-entered on 02/27/2026 (R9A)
Closed vector (withdrawal 02/12): Condition 4 ✓ (has withdrawal date), Condition 5 ✓ (02/12 ≥ 02/12), Condition 6 — building check: GRADS building is blank, student building is 13, so direct match fails – fallback to NULL building ✓ – Grad status
Ois reportedActive vector (re-entry 02/27): Condition 4 ✗ (no withdrawal date) – Grad status is automatically blank
The NULL building fallback is why the grad status is pulled even though the GRADS building does not match Building 13. If the district had set the GRADS building to 13, it would have matched directly without needing the fallback.
Logic Flow Diagram
GRADS program record exist for the student?
│
├─ No ──────────────────────────── Grad status = blank
│
└─ Yes
│
Program dates overlap submission run range?
(start_date <= submission_end
AND (end_date IS NULL OR end_date >= submission_start))
│
├─ No ──────────────────────── Grad status = blank
│
└─ Yes
│
Valid code in patb_grad_stat?
│
├─ No ──────────────────── ERROR: Invalid state code
│
└─ Yes
│
Student has withdrawal date on this vector?
│
├─ No ─────────────── Grad status = cleared (active student)
│
└─ Yes
│
GRADS start_date >= withdrawal date?
│
├─ No ────────── Grad status = blank + warning
│
└─ Yes
│
Building match or NULL fallback?
│
├─ Match ─── REPORT grad status
├─ NULL ──── REPORT grad status (fallback)
└─ No ────── Grad status = blank + warning
When you run the PIMS Student Download with the Student (STU) template selected, the system processes graduation status in the following order.
Step 1 — Retrieve GRADS Program Records
The download retrieves records from the reg_programs table for all students who have a GRADS program record where:
-
The program
start_dateis on or before the submission end date (start_date <= @EndDate) -
The program
end_dateis on or after the submission start date, OR the end date is NULL (end_date >= @StartDate OR end_date IS NULL)
This means:
-
Open programs (no end date) are always included
-
Closed programs are included only if they overlap the submission date range
Key Point: A closed GRADS program with an end date before the submission start date will NOT be picked up.
Step 2 — Validate the Status Code
Once a GRADS record is found for a student, the download:
-
Reads the
program_value(the graduation status code, for example, "T") -
Looks up the code in the
patb_grad_statvalidation table -
If the code is not found in the table → the student record is marked invalid with the error: "Invalid state code for graduation status [code] for Student: [ID]"
-
If the code is found → the
state_code_equivvalue from the table is used as the reported graduation status
Step 3 — Building Matching (School Year 2023+)
For school year 2023 and later, the download applies building-matching logic. This step only runs for students who have a withdrawal date on the enrollment vector being processed.
The download checks, in order:
-
Match by building and date: Does the student have a GRADS record where:
-
The
grad_buildingmatches the student's enrolled building, AND -
The GRADS
start_dateis on or after the student's withdrawal date?
→ If yes: Use this graduation status.
-
-
Fallback — no building specified: If no building-specific record is found, does the student have a GRADS record where:
-
The
grad_buildingis NULL (no building assigned), AND -
The GRADS
start_dateis on or after the student's withdrawal date?
→ If yes: Use this graduation status.
-
-
No valid grad status found: If neither check finds a matching record:
-
The graduation status is cleared during processing
-
A warning is logged: "Student: [ID] - Student does not have a valid grad status for building [building]"
-
For active students (no withdrawal date): The graduation status is cleared during processing. Active students should not have a graduation status.
Step 4 — Active Student Check
After determining the graduation status, the system performs an additional validation for the current school year:
-
If a student has a non-empty graduation status AND their current status is Active ("A"):
-
A warning is logged: "Student [ID] has a current status of Active and a graduation status."
-
For Snapshot downloads, the grad status is automatically cleared
-
This warning exists because an active student should not have a graduation status — this would cause a PIMS validation error. If you see this warning, investigate why the student has both an active enrollment and a graduation status.
Step 5 — Grades 9-12 Withdrawal Check
For students in grades 9 through 12 (or grades 7-8 with withdrawal code WD01) during the current school year:
-
If the student has a current status other than Active and no graduation status:
-
A warning is logged: "Student [ID] has a current status other than Active and no graduation status."
-
This means a withdrawn student in grades 9-12 is expected to have a graduation status explaining why they left
-
Common Scenarios and Expected Results
Student Withdraws with an Active Grad Status
|
Scenario Detail |
Value |
|---|---|
|
Student status |
Withdrawn |
|
GRADS program |
Open (no end date), status = T |
|
GRADS building |
Matches enrolled building |
|
Expected result |
Grad status T is reported |
This is the normal case. The student withdrew, has an open graduation status program for the correct building, and the status is reported.
Student Returns to the District
|
Scenario Detail |
Value |
|---|---|
|
Student status |
Active (re-enrolled) |
|
GRADS program |
Closed (end date set to the day before re-entry) |
|
Expected result — active vector |
Grad status is blank |
|
Expected result — closed vector |
Grad status is retained (historical enrollment correctly reports the dropout event) |
What the district should do:
-
Close the existing GRADS program record by entering an End Date (the day before the student re-enters the district)
-
Do not create a new GRADS record unless the student withdraws again
-
Verify the GRADS program start date — it must be on or after the student's withdrawal date for the building-matching logic (2023+) to find it
Why this works: The download processes each enrollment vector separately. For the closed (withdrawn) vector, the GRADS record is correctly matched and the historical graduation status is reported. For the active (re-entry) vector, the student has no withdrawal date, so the system sets the grad status to blank (Step 3 — line 1929 in ValidateAndSetStudentData.cs).
How GRADS program dates affect retrieval:
-
The GRADS program is retrieved when its date range overlaps the submission date range:
start_date <= EndDate AND (end_date >= StartDate OR end_date IS NULL) -
If the GRADS program end date is before the submission start date, it will not be retrieved at all — no grad status appears
-
If the GRADS program end date falls within the submission range, it will be retrieved and matched to the closed enrollment vector
Common mistake #1: If the district does not close the GRADS program when the student returns, the system may pull a stale graduation status for an active student, generating the warning: "Student has a current status of Active and a graduation status."
Common mistake #2: If the GRADS program start date does not align with the withdrawal date, the building-matching logic (2023+) will fail to find the record and clear the grad status, generating: "Student does not have a valid grad status for building [building]." Adjusting the GRADS start date to match the withdrawal date resolves this.
Known Behavior — CurrentStatus vs. Vector Status
The active student check (Step 4) uses the student's CurrentStatus field, which is computed based on the student's latest enrollment state relative to the run end date — not the enrollment vector being processed. This means that when the download processes a historical (closed) withdrawal vector for a returning student, the student's CurrentStatus may already be 'A' (Active) from the re-enrollment.
This can cause a false warning: "Student has a current status of Active and a graduation status" on the closed vector, even though the graduation status is correct for that historical enrollment. The warning is cosmetic — for non-snapshot downloads, the grad status value is retained in the extract despite the warning. For snapshot downloads, the grad status may be incorrectly cleared.
Workaround: Ensure the GRADS program end date falls before the submission start date so the record is not retrieved at all for the current run. Alternatively, if the closed vector must report grad status, the warning can be safely ignored for non-snapshot downloads.
Grad Status Program Is for a Different Building
|
Scenario Detail |
Value |
|---|---|
|
Student enrolled building |
Lenfest (Building 1) |
|
GRADS program building |
Smedley (Building 5) |
|
Expected result |
Grad status is blank for Building 1 |
Starting with the school year 2023, the system matches the GRADS program building to the student's enrolled building. If they do not match, the grad status is not reported for that building.
What to verify:
-
Check the GRADS program's building field
-
Ensure it matches the building being reported
-
If the student transferred between buildings, each building may need its own GRADS record
Student Has a Closed GRADS Program
|
Scenario Detail |
Value |
|---|---|
|
Student status |
Active |
|
GRADS program |
Closed (end date = 8/5/2025) |
|
PIMS page shows |
No graduation status |
|
Expected result |
Grad status is blank, no warning |
If the GRADS program is properly closed and the student is active:
-
The program's end date determines whether it is even retrieved by the query
-
If retrieved, the active student check (Step 4) clears the grad status
-
If the program end date is before the submission start date, it won't be retrieved at all
If you still see a warning, check whether the GRADS program end date overlaps the submission date range. If it does, the record is still being picked up. Adjust the end date or verify the submission date range.
Student Is Active with No Withdrawal Date
|
Scenario Detail |
Value |
|---|---|
|
Student status |
Active |
|
Withdrawal date |
NULL |
|
GRADS program |
Open, status = T |
|
Expected result |
Grad status is blank |
For school year 2023+, when a student has no withdrawal date (still enrolled), the download clears the grad status during processing regardless of what the GRADS program contains. Active students should not have a graduation status.
Student Has Multiple Enrollment Records
|
Scenario Detail |
Value |
|---|---|
|
Student |
Multiple entry/withdrawal records in the same school year |
|
Expected result |
The enrollment vector being processed determines the building and withdrawal date |
When a student has been enrolled in multiple buildings during the same school year, each enrollment vector is evaluated independently. The grad status building must match the building on the enrollment vector being processed for the value to be reported.
Special Education Graduate from the Previous Year
|
Scenario Detail |
Value |
|---|---|
|
Current year grad status |
Has a value |
|
Previous year grad status |
G (Graduated) |
|
Special education flag |
Y or E |
|
Withdrawal date |
Between July 1 and October 1 of the previous year |
|
Expected result |
Grad status set to S |
This logic applies only to school years 2015 through 2022. The system checks if the student was a previous year graduate with special education status and adjusts the graduation status code to "S" accordingly.
Note: This scenario does not apply for school year 2023 and later, which uses the building-matching logic instead.
Real-World Scenarios from Escalations
The following scenarios are drawn from actual district escalations and illustrate how the graduation status logic handles (or has handled) specific situations. Understanding these helps anticipate similar cases.
Scenario A — Grad Status Blank for a Withdrawn Student (ESP-106270)
District situation: A student withdrew from the district, and the district correctly created a GRADS program with the appropriate graduation status code. The GRADS program start date was set to the same date as the student's withdrawal date. However, when the PIMS Student Download was run, the graduation status appeared as blank instead of the expected value.
What happened: The building-matching logic (for school year 2023+) requires the GRADS program start_date to be on or after the student's withdrawal date. In this case, the dates were equal (start_date = withdrawal_date), but date formatting differences between the stored program date and the enrollment withdrawal date caused the in-memory comparison to fail. The system treated the GRADS record as not matching and cleared the grad status.
How it was addressed: The matching condition was initially changed from a start-date check to an end-date check — looking at whether the GRADS program was open or still active through the withdrawal date, rather than requiring the start date to be on or after withdrawal. This resolved the blank grad status for the reported student.
Side effect: This change also removed a safeguard that cleared graduation status for active students (those without a withdrawal date). That removal introduced a regression where GRADS records were being matched even for students who were still enrolled, causing the problems described in Scenarios B and C below.
Current state: The original start-date matching was restored in a later release. The correct resolution for this type of issue is to ensure the GRADS program start date is properly aligned with the withdrawal date, using consistent date formatting.
Scenario B — False "Active with Graduation Status" Warnings After Update (ESP-109037)
District situation: After the November 2025 update, multiple districts began receiving a high volume of "Student has a current status of Active and a graduation status" warnings during PIMS Student Downloads. The warnings appeared for students who were currently enrolled and should not have had a graduation status. The warning message did not include the building number, making it difficult for districts to determine which building or GRADS record was responsible.
What happened: Two changes from the November 2025 fix (Scenario A above) combined to create this issue:
-
The safeguard that cleared graduation status for actively enrolled students (those with no withdrawal date) was removed. Without this check, the system no longer distinguished between withdrawn and active students during GRADS matching — all students with a GRADS record received a graduation status value, even if they were still enrolled.
-
The change from start-date matching to end-date matching was more permissive. Closed GRADS programs whose end date fell on or after the withdrawal date would match, even when the student had subsequently re-enrolled and the GRADS program no longer applied.
How it was addressed: The warning message was updated to include the building number ("Student has a current status of Active and a graduation status for building X") to help districts identify the source of the warning. However, the underlying false-positive logic was not resolved in this release — the message was improved for diagnostic purposes only.
Current state: The warning message was later reverted to the original format (without building number) as part of the full revert described in Scenario C.
Scenario C — Grad Status Pulling for Wrong Building in Multi-Building Districts (ESP-109547, ESP-109179)
District situation: A multi-building charter school district reported that graduation status was being pulled for the wrong building. Students enrolled in one building were receiving a graduation status value that belonged to a GRADS program configured for a different building. Additionally, closed GRADS programs were incorrectly contributing graduation status values for students who were currently active.
What happened: The end-date based matching introduced in the November 2025 fix (Scenario A) did not properly constrain results by building. When checking end_date IS NULL OR end_date >= withdrawal_date, the system could match a GRADS program from Building A to a student enrolled in Building B, as long as the program's date range overlapped. The building field was checked, but the more permissive date matching allowed records from other buildings to appear in fallback scenarios.
Combined with the removal of the active-student clearing logic, this produced two problems:
-
Active students received graduation status from closed GRADS programs that should no longer apply
-
Students in multi-building districts received graduation status from GRADS programs configured for a different building
How it was addressed: All changes from the November 2025 and January 2026 releases were fully reverted back to the December 2025 release state. This restored:
-
Start-date based matching: The GRADS program
start_datemust be on or after the student's withdrawal date. This ensures the GRADS record corresponds to the specific withdrawal event, not just any overlapping date range. -
Building-specific matching with fallback: The system first looks for a GRADS record matching the student's enrolled building. Only if no building-specific record is found does it fall back to GRADS records with no building assigned (NULL). This prevents cross-building contamination.
-
Active-student clearing: Students without a withdrawal date (still enrolled) automatically have their graduation status set to blank. This prevents stale GRADS records from producing false graduation status values for active students.
-
Original warning message: The building number was removed from the warning message, reverting to the original format.
Current state: This is the current production behavior. The three-tier matching logic (match by building, fallback to no-building, clear if no match) with start-date validation is the approved approach for school year 2023 and later.
Scenario D — Returning Student with GRADS Program Date Overlap (ESP-109962)
District situation: Two students at Central Dauphin ISD had previously withdrawn (with withdrawal code W16A — Runaway/whereabouts unknown) and were correctly given a GRADS program with graduation status O (Dropped out — Other reason). The students later returned to the district and re-enrolled. The district properly closed the GRADS program by setting the end date to the day before re-entry. However, the PIMS download was generating a false warning ("Student has a current status of Active and a graduation status") for the closed enrollment vector.
What happened: The download processes each enrollment vector separately. For the historical (closed) withdrawal vector, the system correctly matched the GRADS record and assigned graduation status O. However, the active student check (Step 4) uses the student's CurrentStatus field, which is computed based on the latest enrollment state — not the vector being processed. Since the student had re-enrolled, CurrentStatus was 'A' (Active), triggering the warning on the historical vector even though the graduation status was correct for that closed enrollment.
For non-snapshot downloads, the warning is cosmetic — the grad status value is retained in the extract. For snapshot downloads, the grad status could be incorrectly cleared by this check.
How it was resolved: Adjusting the GRADS program start date to properly align with the withdrawal date resolved the issue. The key was ensuring the GRADS program date range did not overlap the submission period for the active enrollment run, so the closed GRADS record was only retrieved when processing the historical vector's submission period.
Current state: This is a known behavior where CurrentStatus reflects the student-level status rather than the vector-level status. The workaround is to ensure GRADS program dates are properly aligned so the record is only retrieved for the appropriate submission period.
Scenario E — Grad Status Blank After Cross-Building Transfer with Closed GRADS (ESP-109962)
District situation: A student was enrolled at one building and withdrew with a code indicating the student was committed to a correctional institution. The district created a GRADS program with graduation status O (Dropped out — Other), with the start date set to the day after the withdrawal, a closed-end date several weeks later, and the building field left blank. The student later re-enrolled at a different building within the same district. The student is currently active in the new building. When the PIMS download is run, the graduation status appears blank.
Why the grad status is blank: The download evaluates each enrollment vector separately against the conditions required for grad status to be reported.
For the active enrollment vector at the new building, the student has no withdrawal date. Because active students do not receive a graduation status, the system sets the value to blank immediately. The GRADS program created for the previous building's withdrawal does not carry over to the new building's enrollment. This is the record that appears in the PIMS extract for the student's current enrollment.
For the closed enrollment vector at the original building, the student does have a withdrawal date, and the GRADS program start date is after the withdrawal date, so the date condition passes. The building match uses the NULL fallback since the GRADS building was left blank. Whether the grad status is reported for this vector depends on whether the GRADS program dates overlap the submission run range — if the run range does not include the period when the GRADS program was active, the record will not be retrieved at all, and the closed vector will also be blank.
Key takeaways from this scenario:
-
Grad status does not transfer across buildings. A GRADS program created in connection with a withdrawal from one building does not apply to a subsequent enrollment at a different building. The new building's enrollment is active with no withdrawal, so its grad status is always blank.
-
The GRADS program start date must align with the withdrawal date. The GRADS start date must be on or after the student's withdrawal date for the matching condition to pass. If the start date is set before the withdrawal date, the system will not find a valid match and the grad status will be blank even for the closed vector.
-
Submission run range determines GRADS retrieval. A closed GRADS program is only retrieved when its date range overlaps the submission period. If the run range ends before the GRADS program started, the record is not in the dataset and cannot be matched.
-
Blank building relies on the NULL fallback. When the GRADS building is left blank, the system cannot directly match it to the student's enrolled building. It only matches through the NULL building fallback, which is used when no building-specific GRADS record exists. If a building-specific record existed for the original building, the direct match would take precedence over the NULL fallback.
Warning and Error Messages
Quick Warning Lookup
|
Warning |
Root Cause |
Resolution |
|---|---|---|
|
Active student with grad status |
GRADS program is not closed after the student returned |
Close GRADS with an end date before re-entry |
|
No grad status for building |
GRADS building does not match the enrollment building |
Set GRADS building to match, or verify the start date |
|
Withdrawn student without grad status |
Missing GRADS program record |
Create GRADS with an appropriate status code |
|
Invalid state code |
Code missing from |
Add code with the correct state code equivalent |
|
No diploma type |
Graduation status |
Enter diploma type on the Academic page |
|
No post-graduation activity |
Grad status (not T or L) without post-grad plan |
Enter expected post-graduation activity |
Graduation Status — Direct Errors and Warnings
|
Message |
Severity |
Meaning |
Menu Path |
Resolution |
|---|---|---|---|---|
|
"Invalid state code for graduation status [code] for Student: [ID]" |
Error |
The graduation status code in the GRADS program does not have a valid State Code Equivalent in the |
Registration – Entry & Reports – Student Demographic – Programs – GRADS |
Either enter a valid code in the GRADS program or add the missing code to the Graduation Status validation table (Administration – General Setup – District – Validation Tables – PA State Reporting – Graduation Status). |
|
"Student [ID] has a current status of Active and a graduation status." |
Warning |
The student is currently active but has a graduation status value. Active students cannot have a graduation status in PIMS. This uses the student's overall |
Registration – Entry & Reports – Student Demographic – Programs – GRADS |
Students who have open entry/withdrawal vectors in the current school year do not need a graduation status. If the student returned to the district, close the GRADS program by adding an end date (the day before re-entry). If the GRADS program is already closed, verify that the end date falls before the submission start date, or adjust the GRADS program start date. |
|
"Student [ID] has a current status of Active and a graduation status for building [building]." |
Warning |
Same as above, but includes the building number for easier identification. Added in ESP-109037, reverted in ESP-109547. This message is no longer active in the current release. |
Same as above. |
Same as above. |
|
"Student: [ID] - Student does not have a valid grad status for building [building]" |
Warning |
The student has a withdrawal date and should have a graduation status, but no matching GRADS record was found for their enrolled building (school year 2023+). |
Registration – Entry & Reports – Student Demographic – Programs – GRADS |
Verify: (1) the GRADS program has a record for the correct building, (2) the GRADS start date is on or after the student's withdrawal date. If the building was left blank intentionally, ensure no other building-specific record conflicts. |
|
"Student [ID] has a current status other than Active and no graduation status." |
Warning |
A student in grades 9–12 (or 7–8 with withdrawal code WD01) has withdrawn before the prompt end date, but has no graduation status entered. |
Registration – Entry & Reports – Student Demographic – Programs – GRADS |
Create a GRADS program record for the student with the appropriate graduation status code matching their withdrawal reason. |
Graduation Status — Related Errors and Warnings
These messages appear during the Student Download and involve fields that interact with graduation status:
|
Message |
Severity |
Menu Path |
Resolution |
|---|---|---|---|
|
"Student: [ID] – Student identified as previous year special education graduate, but current grad status is blank." |
Warning |
Programs – GRADS |
If a special education student had a withdrawal date and graduation status for the summer of the previous year (7/1 – 10/1), they need a graduation status on the current year template. |
|
"Student: [ID] - Student identified as previous year special education graduate; Graduation Status set to 'S'" |
Info |
Programs – GRADS |
Informational — the system auto-sets the status to |
|
"Student with graduation status of 'S' does not have previous year status of 'G' or special education flag of 'Y' or 'E' – for Student: [ID]" |
Warning |
Programs – GRADS,
|
The student cannot have status |
|
"Graduation status present but no post-graduation activity for student [ID]" |
Warning |
Academic – Expected Graduation Plans |
Any student with a graduation status other than |
|
"Graduation status present but no diploma type for student [ID]" |
Warning |
Academic – Diploma Type |
Students with graduation status |
|
"Graduation status of 'G' for foreign exchange student [ID]" |
Warning |
PIMS page – Foreign Exchange |
Foreign exchange students should not have graduation status |
|
"Post-Grad Activity of '997' requires Special Ed. value of 'Y' for student [ID]" |
Warning |
Academic – Expected Graduation Plans |
If expected graduation plans is |
|
"Previous year graduation status set to graduated for student [ID]" |
Info |
Programs – GRADS |
When running for a prior school year, students with status |
Deep Troubleshooting
If a student's graduation status is not appearing correctly in the PIMS extract, work through the following steps:
The grad status is BLANK when it should have a value:
-
[ ] Does the student have a GRADS program record? (Student – Programs – Graduation Status)
-
[ ] Is the GRADS program open (no end date), or does the end date overlap the submission date range?
-
[ ] Is the GRADS program start date on or before the submission end date?
-
[ ] Does the GRADS program have a valid graduation status code?
-
[ ] Is the code present in the Graduation Status validation table (
patb_grad_stat)? -
[ ] For school year 2023+: Does the GRADS building match the students' enrolled building?
-
[ ] For school year 2023+: Is the GRADS start date on or after the student's withdrawal date?
-
[ ] Does the student have a withdrawal date? (Active students will always have a blank grad status.)
The grad status has a VALUE when it should be blank:
-
[ ] Is the GRADS program closed (has an end date)?
-
[ ] Is the GRADS program end date before the submission start date? (If not, the record is still being retrieved.)
-
[ ] Is the student currently Active? (Active students should not have a grad status.)
-
[ ] Did the student return to the district? If so, was the GRADS program closed with an end date before re-entry?
-
[ ] Is the GRADS building different from the student's current enrolled building?
The warning message appears but seems invalid:
-
[ ] Check the GRADS program dates — is it actually open, or does it overlap the submission range?
-
[ ] Check the PIMS District Defined Screen (Screen 300, Field 2) — does it show a graduation status value?
-
[ ] Verify the student's enrollment history — are there multiple entry/withdrawal records?
-
[ ] Run the download in debug mode to see the actual SQL queries and data being processed.
Pre-Run Verification Steps
Before running the PIMS Student Download, perform these verification steps to avoid common issues:
Step 1: Verify GRADS Program Data
-
Navigate to Student – Programs – Graduation Status (GRADS)
-
For each student expected to have a graduation status:
-
Confirm the GRADS program record exists
-
Confirm the status code is valid (matches a code in
patb_grad_stat) -
Confirm the start date is set
-
Confirm the building field matches the student's enrolled building
-
-
For students who have returned to the district:
-
Confirm the old GRADS program record is closed (has an end date)
-
Confirm that no new GRADS record was created unless the student has withdrawn again
-
Step 2: Verify Returning Students
-
Identify students who were previously withdrawn and have re-enrolled
-
For each returning student:
-
Check that the previous GRADS program record has an end date set to the day before re-entry
-
Check that the PIMS page (Screen 300) does not show a graduation status value
-
If the PIMS page still shows a value, the GRADS program may not be properly closed
-
Step 3: Verify Building Assignments
-
For districts with multiple buildings, verify that each student's GRADS record has the correct building
-
Pay special attention to students who transferred between buildings during the school year
-
Remember: a grad status for Building A will NOT appear on Building B's report
Step 4: Review the Download Prompts
When setting up the PIMS Download:
|
Prompt |
Guidance |
|---|---|
|
Download Type |
Student |
|
Building List |
Select the building(s) to report. Grad status only appears if the GRADS building matches. |
|
School Year |
The school year determines which logic path is used (pre-2023 vs. 2023+). |
|
Submission Period |
H (or applicable period). The run range dates determine which GRADS records are retrieved. |
|
Run Range |
Records with start dates on/before the end date AND end dates on/after the start date (or NULL) are included. |
|
Download Prompts |
Check Student (STU) to include graduation status. Also check Programs (PRG) if needed. |
Step 5: Run in Debug Mode (Optional)
For complex cases, run the download in debug mode:
-
Enable debug mode before running
-
After the download completes, review the debug log for:
-
The SQL query used to retrieve GRADS records (
SQL for Graduation Status Code) -
Which students had grad status records found
-
Which warnings were generated and why
-
-
The debug log will show the exact data used in each decision
Step 6: Review the Log After Running
After the download completes:
-
Open the task log
-
Search for any graduation status warnings (refer to Common Scenarios and Expected Results)
-
For each warning, follow the Troubleshooting Checklist
-
Verify the output data in: Regulatory – Pennsylvania – Summary – Student Download Summary
Known System Behaviors
These are documented system behaviors that support teams should be aware of. They are not bugs — they are characteristics of how the graduation status logic works.
CurrentStatus vs. Vector Status
The active student check (Step 4) uses the student's CurrentStatus field, which is computed based on the student's latest enrollment state relative to the run end date — not the enrollment vector being processed. For returning students, the CurrentStatus may already be 'A' (Active) from the re-enrollment, triggering a false warning on the historical withdrawal vector. For non-snapshot downloads, the grad status value is retained despite the warning. For snapshot downloads, the value may be incorrectly cleared. Refer to Student Returns to the District for the workaround.
Multiple GRADS Records
If a student has multiple valid GRADS program records that match the retrieval criteria, the download uses the most recent valid record (ordered by start date descending). If multiple records exist for different buildings, the building-matching logic determines which one is used for each enrollment vector.
Date Formatting in Matching
The building-matching logic compares the GRADS start_date against the student's withdrawal date using an in-memory DataTable filter. Date formatting differences (for example, MM/dd/yyyy vs. yyyy-MM-dd) can cause comparisons to fail even when the dates are logically equal. If a GRADS record appears to meet all conditions but the grad status is still blank, date formatting may be the cause. This was the root cause of the original ESP-106270 escalation.
When to Escalate to Engineering
Escalate to the development team if the following conditions are met and the issue cannot be resolved through data corrections:
|
Condition |
What It Means |
|---|---|
|
GRADS record meets all 6 conditions but grad status is still blank |
Possible date formatting issue or logic defect |
|
Building match exists (GRADS building = enrollment building), but grad status is not pulled |
Possible issue with the in-memory DataTable filter |
|
Snapshot download clears a valid grad status for a withdrawn student |
The |
|
Validation table code is correct, but the download still reports "Invalid state code" |
Possible caching issue or |
|
The closed GRADS program is being retrieved when the end date is before the submission start date |
Possible issue with the GRADS retrieval query or submission date configuration |
Before escalating, confirm that:
-
[ ] The GRADS program data has been verified directly in the database (refer to Key Database Tables)
-
[ ] The download has been run in debug mode and the debug log reviewed
-
[ ] The troubleshooting checklist has been completed
-
[ ] The student's enrollment vectors and withdrawal dates have been verified
12. Frequently Asked Questions
Q: A student returned to our district. How do I remove their old graduation status?
A: Close the GRADS program record by adding an End Date set to the day before the student re-entered the district. Do not delete the record — close it. Once closed and the student is active, the system will report a blank graduation status. This is documented in the PA User Guide.
Q: I'm getting the warning "has a current status of Active and a graduation status," but the student's GRADS program is closed. Why?
A: Check whether the GRADS program end date falls within the submission date range. If the end date is within the run range, the record is still being retrieved by the system. Also, verify that the PIMS District Defined Screen (Screen 300, Field 2) does not show a graduation status value.
Q: The grad status is pulling for the wrong building. How do I fix it?
A: Check the GRADS program's building field (GBuilding). Starting with the school year 2023, the system matches this field to the student's enrolled building. Update the GRADS building to match the correct building, or create a separate GRADS record for each building where the student was enrolled.
Q: I see the warning "Student does not have a valid grad status for building X," but the student has a GRADS program.
A: This means the GRADS record exists but does not match the criteria for the student's building. Verify:
-
The GRADS building matches the students' enrolled building
-
The GRADS start date is on or after the student's withdrawal date
-
If neither condition is met, the system cannot find a valid record for that building
Q: Why does the graduation status show correctly for some students but not others?
A: The most common reasons are:
-
Different buildings between the GRADS program and the students' enrollment
-
The GRADS program is closed, but the end date overlaps the submission range
-
The student re-enrolled, and the old GRADS program was not closed
-
The graduation status code in the GRADS program does not match a valid code in the validation table
Q: What is the difference between the PIMS page graduation status and the PIMS extract graduation status?
A: The PIMS page (Screen 300) shows the raw value from the GRADS program link. The PIMS extract value goes through additional processing: building matching, date validation, and code mapping through the validation table. They may show different values if the GRADS program does not meet all the criteria for the extract.
Q: A returning student is getting a false "Active with graduation status" warning. How do I fix it?
A: This happens because the system evaluates the student's overall CurrentStatus (which reflects the latest enrollment) rather than the status of the specific enrollment vector being processed. For the historical withdrawal vector, the student is already re-enrolled, so CurrentStatus = 'A'. The fix is to adjust the GRADS program dates so the record does not overlap the submission date range for the current run. Set the GRADS program end date to the day before re-entry, and ensure the start date matches the withdrawal date. If the end date falls before the submission start date, the GRADS record will not be retrieved, and the warning will not fire.
Q: What happens if the GRADS program has no building assigned?
A: For school year 2023+, the system first looks for a GRADS record matching the student's enrolled building. If none is found, it falls back to GRADS records with a NULL (blank) building. This is intentional — PA allows GRADS records without a building. However, if a building-specific record also exists, the building-specific one takes precedence.
Q: Does changing the GRADS program start date affect which enrollment vector it matches?
A: Yes. For school year 2023+, the building-matching logic requires GRADS start_date >= student's withdrawal date. If the GRADS start date is before the withdrawal date, it will not match, and the grad status will be blank. Aligning the GRADS start date with the withdrawal date ensures the record is found.