Academic Calendar File Specification
Overview
The academic calendar file provides term and session (sub-term) data from the institution's SIS. Meadow uses it to define the academic period structure, including start and end dates and registration windows. Each row is either an academic term or an academic session within a term.
File Details
| Field | Value |
|---|---|
| File format | CSV (comma-separated), zipped before upload |
| File name format | YYYY-MM-DDTHHMMSSZ_[school abbreviation]_academicCalendar.csv |
| Header row | Required |
| Encoding | UTF-8 |
Example: 2026-03-19T143022Z_SCH_academicCalendar.csv
File Layout
- One row per term or session
- Terms with sessions produce multiple rows, like 2026/FALL/MAIN and 2026/FALL/SPECIAL
- If your SIS stores term-level rows or you do not have any sessions in a term, leave
academic_sessionblank. It's OK to mix term and session-level rows. Follow your SIS's convention.
Field Definitions
| Column name | Required | Description | PeopleSoft Suggested Location | Special Functionality | Format / notes |
|---|---|---|---|---|---|
academic_year |
Yes | Calendar year in which the academic term begins OR code identifier for the year if your SIS has one. | PS_TERM_TBL.TERM_BEGIN_DT (year only) |
Integer (YYYY) | |
academic_term |
Yes | Code identifier for the term. Do not put the human-readable label here; put that in academic_term_description. |
PS_TERM_TBL.STRM |
integer, GUID, or string code like SPR |
|
academic_session |
No | Session or sub-term code identifier. | Blank if not applicable | ||
start_date |
Yes | Start date of the term or session | PS_TERM_TBL.TERM_BEGIN_DT |
yyyy-MM-dd H:mm:ss |
|
end_date |
Yes | End date of the term or session | PS_TERM_TBL.TERM_END_DT |
yyyy-MM-dd H:mm:ss |
|
academic_weeks |
No | Number of weeks in the term | Integer | ||
academic_months |
No | Number of months in the term | Integer | ||
fiscal_year |
No | If your SIS tracks a different fiscal year vs the calendar year, put that here. For example, fiscal year might run July - June instead of Jan - Dec. | String | ||
true_academic_year |
Yes | If your SIS tracks a different academic year vs the calendar year, put that here. For example, Fall, Spring, and Summer are all in the same academic year but different calendar years. | PS_TERM_TBL.ACAD_YEAR |
String | |
pre_reg_date |
No | Pre-registration start date | yyyy-MM-dd H:mm:ss |
||
reg_date |
No | Registration start date | yyyy-MM-dd H:mm:ss |
||
last_reg_date |
No | Registration end date | yyyy-MM-dd H:mm:ss |
||
term_sort_order |
No | Sort order of the term. Can be globally sortable or sortable within the academic year. | PS_TERM_TBL.STRM |
int or string | |
session_sort_order |
No | Sort order of the session. Can be globally sortable or sortable within the academic term. | int or string | ||
created_at |
No | When the calendar row was created. | yyyy-MM-dd H:mm:ss |
||
modified_at |
No | When the calendar row was last modified. | yyyy-MM-dd H:mm:ss |
||
academic_term_description |
No | Term label we will show in the UI, like Fall 2026. |
PS_TERM_TBL.DESCR (from the 6th character onward, dropping the year prefix) |
String | |
academic_session_description |
No | Session label we will show in the UI, like Fall 2026 |
String | ||
long_academic_calendar_id |
No | If your SIS has a GUID identifier for the calendar row, put it here. Required for some API integrations. | GUID |
Business Rules
True Academic Year Logic
Some SIS's track a true academic year separate from the calendar year, typically by making Fall the first term and placing subsequent terms in the same year. We expect the academic_year column to be the calendar year and true_academic_year to be the one that doesn't necessarily track calendar year. If your SIS has no such concept, place the calendar year in both fields.
- Fall's true academic year matches the calendar year.
- Spring's and Summer's true academic years stay with Fall (i.e. one year less than the calendar year).
Term Versus Session Logic
- If session data exists, use session-level dates and sort order.
- If no session exists, use term-level data.
academic_sessionis blank for term-only rows.
Date Hierarchy
| Field | Logic |
|---|---|
start_date |
Session start, else term start |
end_date |
Session end, else term end |
reg_date |
Session registration start, else term |
last_reg_date |
Session registration end, else term |
Formatting Rules
- All date fields are formatted as
yyyy-MM-dd H:mm:ss. - Blank fields must be included in the file and left empty.
- Sort order fields are cast to string and left blank if not available.
Sample File
academic_year,academic_term,academic_session,start_date,end_date,academic_weeks,academic_months,fiscal_year,true_academic_year,pre_reg_date,reg_date,last_reg_date,term_sort_order,session_sort_order,created_at,modified_at,academic_term_description,academic_session_description,long_academic_calendar_id
2024,FA,,2024-08-20 00:00:00,2024-12-15 00:00:00,,,,2024,,2024-04-01 00:00:00,2024-09-01 00:00:00,01,,,"","Fall Term","",""
2024,FA,1A,2024-08-20 00:00:00,2024-10-10 00:00:00,,,,2024,,2024-04-01 00:00:00,2024-08-25 00:00:00,01,01,,,"Fall Term","",""
2024,FA,1B,2024-10-11 00:00:00,2024-12-15 00:00:00,,,,2024,,2024-08-26 00:00:00,2024-10-20 00:00:00,01,02,,,"Fall Term","",""
2025,SP,,2025-01-10 00:00:00,2025-05-05 00:00:00,,,,2024,,2024-11-01 00:00:00,2025-01-20 00:00:00,02,,,"","Spring Term","",""
2025,SU,,2025-05-19 00:00:00,2025-08-08 00:00:00,,,,2024,,2025-03-01 00:00:00,2025-05-30 00:00:00,03,,,"","Summer Term","",""
Notes
- Include all active and upcoming terms and sessions.
- Do not include duplicate term and session combinations.
- Legacy fields are required for schema consistency across Meadow integrations.
- This file is typically delivered as part of a daily SIS extract.