Skip to content

Reporting ​

Generate institutional reports for federal compliance, enrollment analysis, and academic performance.

Overview ​

The reporting module provides pre-built reports for common institutional reporting needs, all under the Reports menu:

ReportDescription
IPEDSFederal reporting data for the Integrated Postsecondary Education Data System
All StudentsStudents enrolled in the chosen periods, pivoted by major or minor, with a drill-down to the students behind each number
All GradesStudent grade records across terms
Grade SummaryAggregated grade distribution by course or section
Midterm GradesStudents with a midterm grade of concern, for registrars, deans, advisors and faculty

Available Reports ​

All Students Report ​

The All Students report counts the students enrolled in the chosen academic years or terms, by major or minor, and lists the students behind any count.

Filters: academic year or term (several of either), campus, major, minor, and whether rows are majors or minors.

Student list columns:

  • Student ID, name, preferred first name, preferred and primary email
  • Date of birth, gender, ethnicity, religion, races, country of birth, citizenship
  • Majors and minors held in the periods on screen, and the student's current majors and minors
  • Academic status -- the latest status on file; on a single-term run, the status as of the term's end
  • Class standing
  • Start Term -- the start term Colleague declares for the student (STA_START_TERM), at the same academic level the report reads GPA and class standing from. It sorts by the term's start date. It is not the first term the student enrolled in, and the two differ for about one current student in six
  • Overall GPA and, when exactly one term is selected, Term GPA (migration 275, see below)

GPA columns need their own permission

Overall and term GPA appear only for viewers who hold REPORTS.ALL_STUDENTS.GPA (migration 275), an action node under the report. It is granted to the Registrar and Super Admin roles; anyone else sees the report without the GPA columns, in the CSV export as well. It is separate from GRADING.GPA because students hold that one for their own GPA, and the question here is whether staff may see other students' GPA on a list.

The figures are read from the stored GPA and standing, not recalculated. A student enrolled at two academic levels is reported at the level carrying the most attempted credits in the selected periods; a student with no per-level record falls back to the all-levels figures on the student record.

All Grades Report ​

The All Grades report provides a detailed view of student grades across courses and terms.

Included fields:

  • Student ID and name
  • Course code and title
  • Section number
  • Term
  • Grade earned
  • Credits attempted and earned
  • GPA points

Filters:

FilterDescription
TermAcademic term
CourseSpecific course
GradeFilter by specific grade
InstructorFilter by faculty member

Grade Summary Report ​

The Grade Summary report provides aggregate grade distributions, useful for assessing course outcomes.

Included fields:

  • Course code and title
  • Section number
  • Instructor
  • Total enrollment
  • Grade distribution (count and percentage per grade)
  • Average GPA for the section

Filters:

FilterDescription
TermAcademic term
DepartmentFilter by academic department
CourseSpecific course
InstructorFilter by faculty member

Midterm Grades Report ​

The Midterm Grades report (migration 292) lists, one row per enrollment, the students whose midterm grade is of concern. The screen starts with C- and below selected; any set of letters can be chosen, across every grading scale, and students with no midterm grade can be included. Further filters: term, major, course and instructor. Withdrawn enrollments are left out unless asked for, and dropped or cancelled ones are never listed -- the same population as All Grades.

Each row shows the student, their majors, the course and section, the instructor, the midterm grade with its date, who entered it, and the final grade if one exists. Export it as CSV.

Who sees what. Unlike the other grade reports, this one is meant for advisors and faculty, so its grant scope narrows the rows:

Role (default grant)ScopeRows
Registrar, Super AdminALLEveryone
Academic AdministratorUNITTheir units' courses or students
AdvisorADVISEESTheir current advisees
FacultyOWN_SECTIONSSections they teach

Where midterm grades come from. A midterm grade is either entered on the grade roster or imported nightly from Colleague. A grade entered -- or cleared -- in the SIS is never overwritten by the import; the report shows the source of each grade.

Reading the All Students report correctly ​

Rows sum above the unique student total, by design

The report is point-in-time — majors and minors are reported as of the selected term, not as they stand today — and it fans out: a student is counted under every major and minor they hold.

So a double-major appears twice, and adding up the rows gives a number larger than the count of distinct students. That is the intended behaviour, not double counting. If you need a headcount, use the unique total rather than a sum of rows.

Migration 255 disambiguated major labels, which is why several similarly named programmes (six Nursings, for instance) now read distinctly rather than collapsing together.

Reading the All Grades report ​

Migration 250 added a GPA column to the pivot, and periods that have not yet started are hidden rather than shown empty.

Drill-downs are paged ​

A drill-down pages the key, not the row. Applying LIMIT over the aggregate projection put the query planner off a cliff — around 45 seconds — so the drill-down selects a page of keys first and then fetches their rows.

Two consequences for anyone calling these endpoints

with_count=false must omit the count entirely, not return zero.

And a student link takes person_id, not student_id — passing an integer student_id to the by-person lookup returns a 500. scripts/person-id-check.mjs enforces this at build time, so a regression fails npm run build rather than reaching a user.

Data freshness after an import ​

The nightly import ends by running ANALYZE on the tables it writes (analyzeImportedTables in cmd/migrate-daily). Anything that bulk-loads those tables some other way -- a hand-run SQL fix, a dump restore -- should ANALYZE them too, or these reports will plan badly against stale statistics.

Running a Report ​

  1. Navigate to Reports and choose the report
  2. Set the desired filters
  3. Review results on screen, drill into a number to see its students, or export

Export Options ​

Every report and drill-down exports as CSV (UTF-8). Spreadsheet programs open it directly.

Scheduling ​

Reports are generated on demand. For recurring reporting needs, consider setting up a periodic schedule to run and archive key reports at the end of each term.

Data Freshness ​

Reports reflect the current state of the database at the time they are generated. If you need a point-in-time snapshot (e.g., enrollment as of census date), generate and export the report on the desired date.

Access Control ​

Each report is its own permission node under REPORTS, and the grant's scope decides which rows a user sees:

PermissionReport
REPORTS.IPEDSIPEDS Reports (unrestricted grants only)
REPORTS.ALL_STUDENTSAll Students
REPORTS.ALL_STUDENTS.GPAThe GPA columns of All Students
REPORTS.ALL_GRADESAll Grades
REPORTS.GRADE_SUMMARYGrade Summary
REPORTS.MIDTERM_GRADESMidterm Grades

A UNIT grant limits a report to the org units the user administers. Only Midterm Grades accepts advisee and own-section scopes; at those scopes every other report is empty. Contact your security administrator to request report access. Engineers adding a report: see Adding a Report.

Student Information System Documentation