Course Registration
Data Entity
Description
Records a peer mentor or coordinator's enrollment in a training course, tracking registration status, completion, and certification eligibility.
Data Structure
| Name | Type | Description | Constraints |
|---|---|---|---|
id |
uuid |
Primary key | PKrequiredunique |
course_id |
uuid |
Foreign key to courses table | required |
user_id |
uuid |
Foreign key to users table — the enrollee | required |
status |
enum |
Current registration status | required |
registered_at |
datetime |
Timestamp when the registration was created | required |
confirmed_at |
datetime |
Timestamp when registration was confirmed by coordinator or system | - |
completed_at |
datetime |
Timestamp when the user completed the course | - |
cancelled_at |
datetime |
Timestamp when the registration was cancelled | - |
cancellation_reason |
text |
Optional reason provided when cancelling | - |
waitlist_position |
integer |
Position in waitlist when status is waitlisted; null otherwise | - |
registered_by_user_id |
uuid |
User who performed the registration — may differ from user_id if a coordinator registered on behalf | required |
attendance_confirmed |
boolean |
Whether physical/virtual attendance was confirmed by the facilitator | required |
certificate_issued |
boolean |
Whether a peer mentor certificate was issued following completion | required |
notes |
text |
Internal notes added by coordinator about this registration | - |
created_at |
datetime |
Record creation timestamp | required |
updated_at |
datetime |
Record last-updated timestamp | required |
Database Indexes
idx_course_registrations_course_id
Columns: course_id
idx_course_registrations_user_id
Columns: user_id
idx_course_registrations_user_course
Columns: user_id, course_id
idx_course_registrations_status
Columns: status
idx_course_registrations_registered_at
Columns: registered_at
Validation Rules
valid_course_reference
error
Validation failed
valid_user_reference
error
Validation failed
status_transition_guard
error
Validation failed
completed_at_required_on_completion
error
Validation failed
cancelled_at_required_on_cancellation
error
Validation failed
waitlist_position_only_when_waitlisted
error
Validation failed
Business Rules
no_duplicate_registration
A user may not register for the same course more than once unless the previous registration was cancelled
capacity_check
If the course has reached its maximum participant count, new registrations are placed on the waitlist automatically
waitlist_promotion
When a confirmed registration is cancelled, the first waitlisted user is automatically promoted to confirmed and notified
certificate_on_completion
When status transitions to completed and attendance_confirmed is true, the system triggers certificate issuance via CertificateService
certification_expiry_watch
CertificationExpiryChecker reads completed registrations to determine certificate validity windows and trigger auto-pause if expired
org_scoped_enrollment
Users may only register for courses belonging to their own organization