Enroll a student and create a dated class placement
An enrollment records a student's campus, academic year, program, grade, and curriculum. A class placement links that enrollment to a particular class, roll number, and date range. This guide creates those records for an existing student, then checks how the placement supplies the daily attendance roster.
The steps describe the reviewed Odoo 20 Community source and supplied forms. They have not been exercised as a complete browser journey. The suite's limited compatibility qualification does not establish full product acceptance; earlier Phase 3 gates remain unfinished. See Education: getting started for the qualification scope.
Before you begin
Use the Students addon with its Academics, Documents, and Contacts dependencies and the underlying Core module. Admissions is not required for this direct enrollment workflow. Creating an enrollment here does not accept an admission offer or convert an application.
Use a Student Officer account, or a Student Manager account that inherits that role. Assign the intended campus in Allowed Campuses and enable its company. This guide requires that campus assignment for both roles; Student Manager's broader record visibility does not by itself exempt enrollment creation from the campus check. Teacher under Education Academics and Attendance Officer alone can read these records but cannot create enrollments or placements.
Have these records ready:
- An existing Student record that the operator can update, in the same education group as the enrollment campus. This guide covers initial enrollment and placement, not a branch transfer or a change of permanent student identity.
- An Academic Year and Program that both include the campus, a Grade belonging to that program, and an Active Curriculum matching the program, grade, and campus. The enrollment form offers Active curricula.
- A Class Section with the same campus, academic year, program, and grade as the enrollment. The academic team prepares class sections under Education → Academics → Class Sections.
- The authorized admission and joining dates, placement start date, and a roll number unused anywhere in that class's retained placement history.
Check capacity with the responsible team. Active placements count toward a nonzero class capacity, including future-dated Active placements. When Admissions is installed, reserved admission seats also count in the placement capacity check. A displayed seat count should not be treated as a complete check of those reservations.
Prepare and submit the enrollment
- Open Education → Students → Enrollments and search for the student, program, and academic year. The list initially filters to Enrolled; remove that filter to find Draft, Submitted, or other records before creating another. A student cannot have two Enrolled or Suspended enrollments for the same program and academic year.
- Create an enrollment and select Student, Campus, Academic Year, Program, Grade, and Curriculum. Check the derived Company. The campus must be available in the year and program, and the curriculum must match the program, grade, and campus.
- Choose the appropriate Enrollment Type, and enter Admission Date and Join Date. Join Date cannot precede Admission Date. Leave Admission No. at its new-record default to use the supplied numbering sequence, then save.
- Review the student's identity, campus, academic selection, and dates. Choose Submit and confirm Submitted status. Submission fixes these governing facts against ordinary edits; a Student Manager can reset a Submitted or Cancelled enrollment to Draft when appropriate.
Expected result: one numbered Submitted enrollment, ready for its class placement. Submission does not itself place the student in a class or mark the enrollment Enrolled.
Create the class placement
- On the enrollment, choose the Placements smart button, then create a placement. Confirm that Enrollment is the intended record and that Student, Campus, and Academic Year reflect it. You can also reach placement records through Education → Students → Class Placements.
- Select Class, enter Roll Number, and set Date Start. Use the start date approved for this student's class participation, consistent with the joining date and school calendar. For an open-ended placement, leave Date End empty. If an end date is needed at creation, it must be on or after Date Start.
- Check every value before saving. The selected class must match the enrollment's campus, year, program, and grade. The student's Active placement ranges must not overlap, even across different classes or enrollments. Start and end dates are inclusive, so sharing an end/start date can still be an overlap.
- Save and confirm Active status. A new placement defaults to Active; there is no separate activation step. Enrollment, class, roll number, and start date become immutable immediately after this save. State, closure date, and transfer linkage are subsequently managed through workflow actions. Enrollment and placement history cannot be deleted.
Expected result: an Active placement with a stable student/class identity and date range. Its creation is a separate step from enrolling the student.
Enroll and check the result
- Return to the Submitted enrollment and choose Enroll. This action requires at least one Active class placement and permission to update the Student. Confirm Enrolled status.
- Check the Student record: Enroll sets its status to Active and its primary campus to the enrollment campus. It fills the Student's admission date only if that date was previously empty. These are immediate changes; a future placement start date does not defer the Enroll action.
- Inspect Current Placement on the enrollment. It is populated by an Active placement whose date range covers today. A future-dated Active placement can satisfy Enroll while leaving Current Placement empty until its start date. Check the placement itself before concluding that a record is missing.
Expected result: an Enrolled student with the intended Active placement. Verify the start date rather than using Enrolled status alone as proof that the student belongs on a particular day's attendance sheet.
Check the dated attendance roster
- Continue to Record daily attendance. On a Draft Daily sheet for this class and the intended attendance date, choose Generate Students and check the student and roll number.
Generation uses visible placements that are not Cancelled and whose dates cover the attendance date. It does not require the enrollment to be Enrolled, check Join Date, or use the enrollment's Current Placement field. Completed, Transferred, and Withdrawn placements can still supply historical attendance on dates they cover. This is why the class and dates need review before the placement is saved.
Generating a roster supplies attendance defaults, not observed attendance. Follow the daily-attendance guide to review actual statuses, Confirm, and Lock. Changes to placements do not automatically remove or revise attendance rows already on a sheet.
Understand later changes
The placement form provides Complete and Cancel for an Active placement. Complete records today's date as Date End and changes the state to Completed. It is not a control for selecting an arbitrary historical closure date, and it can be rejected if today is before Date Start. Cancel changes the placement to Cancelled and excludes it from subsequent roster generation, including historical dates. Neither action deletes the placement or frees its roll number for reuse in the same class.
Use the school's appropriate completion, withdrawal, or transfer procedure for later changes. This guide does not supply a backdated correction or branch-transfer workflow. Enrollment Cancel is available before enrollment and does not itself cancel its placements, so review linked placements when abandoning a Submitted enrollment.
Try it with fictional records
In an authorized training environment, have the teams prepare fictional student Mina Reed and a practice Class 5A whose academic year covers 1–3 November 2026. Ensure Mina has no conflicting enrollment or placement, the class has capacity, and roll PRACTICE-01 is unused. These are exercise instructions, not records supplied or created by this guide.
Follow the steps with Admission Date, Join Date, and placement Date Start set to 2 November 2026, and leave the placement Date End empty. After Enroll, expect the enrollment to be Enrolled and the placement Active. Current Placement depends on today's date.
For the roster check, use separate new Draft Daily sheets for 1 November and 2 November. The source predicts that Mina is omitted on 1 November and included on 2 November. Inspect the generated rows; continue to attendance confirmation only through the separate daily-attendance procedure.
Troubleshooting
| Stopping point | What to check |
|---|---|
| Student, year, program, curriculum, or class is missing | Check campus assignment, enabled company, role permissions, and academic relationships. The enrollment form offers only Active curricula. |
| Existing enrollment or placement seems missing | Remove the default Enrolled filter on Enrollments or Active filter on Class Placements to inspect retained history. |
| Class scope is rejected | The class must match the enrollment's campus, academic year, program, and grade. |
| Roll number is rejected | The roll must be unique in the class across retained history, including completed or cancelled placements. |
| Active placement overlap is rejected | Check all Active placements for the student and their inclusive dates. A missing Date End leaves the range open. |
| Class capacity is reached | Review Active placements, future-dated Active records, and any reserved admission seats with the responsible team. |
| Enroll is blocked | The enrollment must be Submitted, with an Active placement; the operator must also be allowed to update the Student. |
| Saved class, roll, or start date cannot be edited | These placement facts are fixed at creation. Do not assume that editable-looking form fields permit rewriting retained history. |
| Student is absent from a dated attendance roster | Check placement class, cancellation state, start/end dates, campus/company visibility, and whether a row already exists on the sheet. |
This guide does not qualify admission decisions, offer acceptance, customer portal access, official grades, progression, outbound messages, or full runtime acceptance. Return to Education setup and access or continue with daily attendance.