Skip to main content
Promotions are a school-scoped academic operation that move students from one class to the next for a target year.

Capabilities

The promotion workflow supports:
  • controlled year-end student movement
  • immutable promotion history
  • year and class filtering
  • school-wide atomic execution

Operational rules

  • promotions should be run intentionally, not as a side effect of school edits
  • the operation is all-or-nothing for a school
  • promotion history is read-only through the normal client API
  • exceptional cleanup belongs in the Django admin only

Ordering

Promotion relies on the configured class hierarchy so students are processed in a safe order.

Sections during promotion

If a student’s current section is tied to a different class than the promoted class, that section cannot remain attached after the move. Client workflows should make this outcome explicit so operators understand when a section will become empty.

Viewing history

Use the promotions page to:
  • review promotion history
  • filter by year
  • filter by class
  • paginate through results
This is the recommended place to run and verify school promotions.

Confirmation and recovery

The promotion confirmation is the final opportunity to verify the destination year and scope. Do not refresh or start another run while the operation is processing. Promotion history is the audit record of what moved. It is not an ordinary editable list and should not be deleted to hide a mistake. If a completed promotion has an exceptional problem, stop further academic work and have an administrator review the affected students and history. Task page: