4Program Element
Defines all details about a student's academic program, including program code, description, type, college, dates, and status.
Required Element? Yes
Can Repeat? No
- Ensure your school has a tested plan to manage enrollment changes in Oracle Student Financial Planning (SFP) before going active.
- Have a clear strategy for using packaging start dates versus program start dates when starting financial aid packages in SFP.
Field: Program Code
Description: Unique identifier for the program. A change in this code indicates the student is entering a new program, requiring a new enrollment and financial aid package.
Impact on Financial Aid Processing: A new enrollment will create regardless of the current program's enrollment status.
A new program code should only be sent if the student is entering a new degree level that impacts the student's award amounts. If the new program overlaps the prior program, the student should be withdrawn or graduated in the prior program to ensure correct packaging.
Current SFP logic doesn't automate packaging overlapping funding across dual enrollments. Schools should ensure terms that overlaps don't have course, enrollment data, or a cost of attendance configured in both enrollments to prevent financial aid from being packaged inaccurately.
It's recommended to use the enrollment data report to identify concurrent enrollments with overlapping funding.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| BSSOM | Nonblank string | Yes |
Any string Student Academic and Financial Information (SAFI) message can only contain one program within the 'Program' tag |
Yes getCode() |
|
Field: Description
Description: Schools typically use this field to describe more specifically what the student is studying. For example, display the program name and each major the student has declared.
Impact on Financial Aid Processing: Description isn't used to decide when a new enrollment is created in packaging, but can be used within configuration and is viewable to the student in Self Service.
If a school offers multiple programs within the same degree/career level, this field can be used to identify the specific program/plan/major that the student is attending. This will allow you to send in the same program code to prevent new enrollments from being created unnecessarily when a student is changing programs at the same degree level.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| BSSOM Accounting and Information Systems | Nonblank string | Yes |
Any string |
Yes getDescription() |
|
Field: External Program ID
Description: A unique Identifier usually used to define the instance of the program the student is taking.
Impact on Financial Aid Processing: External Program ID isn't used to decide when a new enrollment is created in packaging, but can be used within configuration.
If a school offers multiple programs within the same degree/career level, this field can be used to identify the specific program/plan/major that the student is attending. This will allow you to send in the same program code to prevent new enrollments from being created unnecessarily when a student is changing programs at the same degree level.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| BSSOM Accounting and Information Systems | Nonblank string | Yes |
Any string |
Yes getDescription() |
|
Field: Program Type
Description: Identifies the type of program the student is in. The school is restricted to a set of predefined options.
Impact on Financial Aid Processing: Provided value will be used to calculate the cost of attendance (COA) for the students program during packaging. Program_Type is used within COA_Term_AY.csv and COA.csv to define the cost of attendance. The program type is also used to send the program credential level to Common Origination and Disbursement (COD). It is finally used to calculate student's eligibility in Title IV funds. Be aware of how you're mapping this data in your student information system as it impacts your students' Title IV funding.
If a student is going change their program type it should correlate to a change in your program code to process Title IV funding correctly in SFP.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| Graduate | Enum | Yes |
|
Yes getProgramType() |
|
Field: College
Description: Defines the college that student is enrolled.
Impact on Financial Aid Processing: This is an optional field that can be used for configuring COA or nonfederal funds.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| College of Security and Criminal Justice | Non Blank String | No | Any String | Yes getCollege() | Program Information |
Field: Special Programs
- A = Selective Admission Associate Program
- B = Bachelor's Degree Completion Program
- N = Not Applicable
- P = Preparatory Coursework Graduate Professional Program
- T = Non Credential Teacher Certification Program
- U = Preparatory Coursework Undergraduate Program
Impact on Financial Aid Processing: The value provided is included in COD origination and disbursement records.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| N | Enum | Yes |
|
Yes getSpecialPrograms() | Common Record Information |
Field: Program CIP Code
Description: Defined program Classification of Instructional Programs (CIP) code.
Impact on Financial Aid Processing: Value is communicated to COD based on configuration.
CIP code should match what has been configured in CIP_CODE_RULES configuration workbook and FAS_PROGRAM_CIP_CODE default configuration list defined by US Department of Education (ED). If the CIP code value from SAFI doesn't match a code configured in CIP_CODE_RULES and FAS_PROGRAM_CIP_CODE default configuration list origination will change to origination ready to be sent to COD, but will not trigger to COD.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 11.0102 | String | No | List of possible values defined by the Department of Education: http://nces.ed.gov/ipeds/cipcode/ | No | Common Record Information |
Field: Program Measurement Unit
Description: Defines if a program is credit hour or clock hour
Impact on Financial Aid Processing: Only credit hour is currently supported in SFP. Schools should use a conversion method defined by ED if they use clock hours.
For more information on clock hours, including credit to clock hour conversion see the Federal Student Handbook (Academic Calendar and Payment Periods).
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| Credit | Enum | Yes |
|
Yes getProgramMeasurementUnit() | Program Information |
Field: Assessed Units
Description: Schools use this field to show the number of credits the student passed out of either due to accepted credits or passing out of a course via testing.
Impact on Financial Aid Processing: Included in baseline configuration for grade level progression (default_grade_level.groovy).
Included in the SAP calculation for defining program length that's used in the maximum time frame and pace of completion calculations.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 3.50 | Double | No | Any numeric value | Yes getAssessedUnits() |
|
Field: Total Required Units
Description: Defines the number of units required to complete the student's program.
Impact on Financial Aid Processing: We use this value to identify the number of remaining credits the student needs to complete to finish their program. For term programs, this value isn't used, but appears on the UI.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 120.50 | Double | Yes | Any numeric value | Yes getTotalRequiredUnits() |
|
Field: Primary Location
Description: Primary location of the program
Impact on Financial Aid Processing: This is mainly used in non federal funds configuration when identifying eligibility for a student at a particular campus.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| Main Campus | Non Blank String | Yes | Any string | Yes getPrimaryLocation() | Program Information |
Field: OPEID
Description: Office of Post secondary Education ID (OPEID) for the program
Impact on Financial Aid Processing: Used in communications with COD for Title IV funds. Should match an OPEID configured in your SCHOOL.csv configuration workbook.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 59689526 | 8 Digit String (0-9) | Yes | Any string | Yes getOpeId() | Common Record Information |
Field: Modality
Description: Defines if this program is taken on ground or online
Impact on Financial Aid Processing: We use this field to decide how to calculate the COA based on the institutions specific configuration.
Also, it can be used by our non federal funds configuration engine for eligibility and awarding. At least one of the course sub element's Modality fields should match this modality field.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| Online | Enum | Yes |
|
Yes getModality() | Program Information |
Field: FA Eligible Indicator
Description: Indicates if the program is Title IV eligible
Impact on Financial Aid Processing: Used within the general Title IV, subsidized and unsubsidized eligibility calculations.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| True | Boolean | Yes |
|
Yes getFaEligibleIndicator() |
|
Field: Primary Program Indicator
Description: This field indicates if the program is currently the student's primary program
Impact on Financial Aid Processing: SFP will only package a student when the primary program indicator is true.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| True | Boolean | Yes |
|
No | Program Information |
Field: GPA
Description: This is the student's current program grade point average (GPA) at the point the SAFI is sent.
Impact on Financial Aid Processing: No impact
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 3.25 | Nonnegative Double | No | Any numeric value | Yes getGpa() | Program Information |
Field: Required GPA
Description: This is the program GPA that's required to pass a component of the SAP evaluation.
Impact on Financial Aid Processing: Used as the program required GPA within the GPA component of the SAP evaluation.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 3.25 | Nonnegative Double | No | Any numeric value | Yes getRequiredGpa() |
|
Field: Program Start Date
Description: The program start date defines the point at which the system will begin packaging the student for financial aid.
Impact on Financial Aid Processing: The package will start with the first term that falls on hour after the later of the program start date or the packaging start date, if one was sent in.
If you're bringing a student into SFP mid-program, this value will be ignored and will instead package the student as of the packaging start date. The packaging start date event is an integration message that should be set per student and program.
- If a package start date is sent in 1 day after the term starts, the packaging engine will not start until the following Academic Year (AY).
- A packaging start date event should be sent in with at least the program code and the enrollment ID, if you know it. Without this the packaging start date will apply to all current and future enrollments.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 2025-01-01 | Date | Yes | Any Date but the Program Start Date tag must be on or after 2013-07-01 and the Primary program must not contain a 'Course Start Date on or after Program Start Date | Yes getStartDate() |
|
Field: Change Of Program Start Date
Description: To be used only by non term program students
Impact on Financial Aid Processing: Not used for term programs, this is only used for converting students that are changing programs in a non term program.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 2025-01-01 | Date | No | Any Date | No | Program Information |
Field: Academic Completion Date
Description: Date student finishes their degree program
Impact on Financial Aid Processing: This field is for UI purposes but can be used in custom configuration and letter generation for exit processing.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 2025-01-01 | Date | No | Any Date | Yes getAcademicCompletionDate() | Program Information |
Field: Official Last Date of Attendance
Description: The last date the student attended before leaving or completing their program
Impact on Financial Aid Processing: Date field that describes the student's official last date of attendance. This is used during the R2T4 calculation for program withdrawals, late disbursements, and post withdrawals.
SFP assumes that if the official last date of attendance is before the first academic year start date, then the student hasn't started attending.| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 2025-01-01 | Date | No | Any date Last Date Of Attendance is required when StudentEnrollmentStatus is W, D or G | Yes getOfficialLastDateOfAttendance() |
|
Field: Date of Determination
Description: Date school identifies the student withdrew from school
Impact on Financial Aid Processing: Date field that's used during the R2T4 calculation. For example, to ensure the R2T4 calculation is completed within 30 days of the Date of Determination (DOD) and the post withdrawal process to identify an inadvertent payment checked in Post Withdrawal Disbursement (PWD) criteria.
If the student's DOD is changed within the time period that an R2T4 calculation was scheduled, the calculation will still be run on the day it was originally intended. For example, 14 days from the DOD for an unofficial withdrawal.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 2025-01-01 | Date | No | Any date Date Of Determination is required when StudentEnrollmentStatus is W or D | Yes getDateOfDetermination() |
|
Field: Enrollment Status
Description: Defines a students academic load in the defined program
- AM - Admitted/Not Started
- AC - Academic Complete
- F - Full Time
- H - Half-time or more, but less than full-time
- L - Less than half- time
- A - Approved Leave of Absence
- X - Never Attended
- C - Cancel
- D - Deceased
- W - Withdrawn (voluntary or involuntary
- G - Graduated
Impact on Financial Aid Processing: The program enrollment status can be used when configuring the term enrollment status to control fund eligibility. For example, in baseline configuration if the program enrollment status is X - Never Attended, the enrollment status is set to not attending and the student will not be eligible for Title IV funds.
Also within packaging, this field is also used for deciding how to calculate the COA based on the institutions specific configuration. Ensure your COA doesn't get reduced upon loading a withdrawal SAFI.
Also, the enrollment status is used to decide whether to award or disburse the student if they're in that enrollment status. For awarding, the program enrollment status is configurable (F|H|L|A|X|G|W|AC|AM) The enrollment status is also used within disbursement criteria.
Exit processing is also triggered for D - Deceased, W - Withdrawn (voluntary or involuntary), and G - Graduated to trigger R2T4 calculations and exit counseling notifications as needed.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| AM | Enum | Yes |
|
Yes getEnrollmentStatus() |
|
Field: Enrollment Status Subtype
Description: Used to identify the type of program withdrawal
Impact on Financial Aid Processing: Will be leveraged by R2T4 configuration to decide when to perform the R2T4 calculation based on the value. Within the R2T4.csv configuration workbook the start date time frame can be configured for each enrollment status subtype.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| UW - Unofficial Withdrawal | Enum | No |
|
Yes getEnrollmentStatusSubType() |
|
Field: Enrollment Status Effective Date
Description: Date for which the enrollment status is effective.
Impact on Financial Aid Processing: This should be updated whenever the student's enrollment status changes but has no impact on term programs.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| 2025-01-01 | Date | Yes | Any date | Yes getEnrollmentStatusEffectiveDate() |
|
Field: Admission Status
Description: Student's Student Information System (SIS) defined admission status
- RG - Regular
- RR - Registered
- OP - Orientation Pending
- AM - Admitted
- DF - Deferred
- PV - Provisional
- RI - Registered International Credentials
- CD - Conditional
- ND - Non Degree
- DC - Denied for Cause
- DN - Denied
- DE - Admission Deadline Exceeded
- RE - Re-entry Required
Impact on Financial Aid Processing: This field doesn't drive any downstream processes; however, the awarding and disbursing engine can look at this value, through groovy configuration, to decide whether to award or disburse a student appropriately.
The allowable admission statuses for packaging Title IV funds is configured in the T4_CRIT.csv configuration workbook (RG - Regular|AM - Admitted|PV - Provisional).| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| RG - Regular | Non Blank String | Yes | Any string | Yes getAdmissionStatus() |
|
Field: Academic Status
Description: Student's SIS defined academic status
- RG - Regular
- AP - Academic Probation
- DA - Disqualified for Admission
- AD - Academic Disqualification
- SD - Scholastic Disqualification
- SS - Scholastic Suspension
- EX - Expulsion
Impact on Financial Aid Processing: This field doesn't drive any downstream processes; however, the awarding and disbursing engine can look at this value, through groovy configuration, to decide whether to award or disburse a student appropriately.
The allowable academic statuses for packaging Title IV funds is configured in the T4_CRIT.csv configuration workbook (RG - Regular|AP - Academic Probation).| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| RG - Regular | Non Blank String | Yes | Any string | Yes getAcademicStatus() |
|
Field: Manual SAP Evaluation Indicator
Description: Identifies whether the SAP evaluation needs to be completed by a manual user rather than automatically by SFP.
Impact on Financial Aid Processing: If a true value is loaded for a student, when SAP is required a task will be created in the review SAP evaluation task queue for manual review. This value can also be controlled on the UI from the student summary. The UI value will override any value sent in the SAFI message if overridden.
| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| True | Boolean | No |
|
Yes getManualSapEvaluationIndicator() | Student Summary |
Field: Return to Title IV SAFI Indicator
Description: Used to indicate that the R2T4 should be calculated for using this SAFI
Impact on Financial Aid Processing: Once this value is set to true on a withdrawn SAFI the R2T4 will be triggered for this student using the provided SAFI data.
If the student is withdrawn and a SAFI isn't received with the R2T4 indicator set to true by day 29, the R2T4 calculation will be calculated based on the most recent withdrawn SAFI received.| Example | Data Type | Required | XML Schema Validation | Accessible via Configuration? | Display Locations |
|---|---|---|---|---|---|
| True | Boolean | No |
|
No | Not viewable from UI |