3. People and Enrollment
Where: sidebar → Course Management → People
(/courseware/course/{courseId}/management/people)
The page opens with four counters: Total Students, Approved, Pending Approval, Current TAs, and three tabs: Approved Students, Pending Approvals, Current TAs, each carrying its own count.
Total Students is approved plus pending. TAs are counted separately and are not part of that total.

3.1 The four ways to add people
Method |
Best for |
Where |
|---|---|---|
Bulk CSV upload |
A whole class at once, including people without accounts |
Enroll Students/TAs → Bulk File based |
Add individually |
One or two people |
Enroll Students/TAs → Add Individual |
Search and add |
People who already have BodhiTree accounts |
Enroll Students/TAs → Search and Add |
Approve self-enrollment |
Students who found the course themselves |
Pending Approvals tab |
Bulk CSV and Add individually both create accounts for people who do not yet have one: give either an unknown email address and BodhiTree registers that person and emails them. Search and add finds only people who already have an account, and Approve self-enrollment applies to people who registered themselves.
3.2 Bulk enrollment from a CSV
Click Enroll Students/TAs → Bulk File based Students Upload.
The file
.csv only. Anything else is rejected with “Only CSV files are allowed”.
Download Sample CSV from the dialog for a working template.
The sample file declares two mandatory columns, Name and Email, and strongly
recommends a third:
Name,Email,RollNumber,Password,Group,House
Kameswari Chebrolu,kc@gmail.com,123456,secretpass,Aryabhatta,Slytherin
Include a roll number column. The sample file’s own note recommends it: it makes marks management far easier when you download spreadsheets later.
In practice only Email is enforced. A file without a Name column is accepted
and those students are enrolled without a name. A file without an Email column is
rejected with:
Invalid CSV format: missing required ‘Email’ column. Please download the sample CSV for the correct format.
That message does not appear when you press Enroll. The job is accepted, starts, and then fails, so you see it on the results screen under Enrollment Failed.
Rows that have no email address are skipped, not failed — the rest of the file still enrols.
Recognised column names
These headers are understood as student fields:
email, first_name, last_name, name, password,
roll_no, roll no, roll no., rollnumber, roll,
first name, last name
Any other column becomes a batch tag: a custom grouping column on this course.
That is how Group, House, Batch, or Tutorial in the example above work. They
become filterable columns in the student table.
⚠️ One exception silently loses data. Any header containing the word “roll” is
never turned into a batch tag, but only the five spellings listed above are read as a
roll number. A column headed Roll Number or roll_number is therefore ignored
entirely — neither stored as a roll number nor created as a column, with no warning.
Use one of the listed spellings — RollNumber (as in the sample file), Roll No., or
roll_no.
Options
☐ Is it an ASC file?
☑ Send welcome or password reset email?: on by default
Role: STA, JTA, or Student. The whole file is enrolled in the role you pick here
The confirmation step
Before anything is written, BodhiTree shows you what it is about to do. Read this screen; it is the only chance to catch a mistake.
New columns. Unrecognised headers are listed for confirmation:
Your file contains column(s) that aren’t standard student fields. Each one checked below will be created as a new column for this course. Leave a column unchecked if it’s a typo; its data will be ignored.
Likely typos are flagged “⚠ looks like a typo”. Unchecking a column is how you discard a mis-typed header rather than creating a junk column.
Profile updates. If your CSV has a different name or roll number for an existing user, you get a table of old → new values, with this warning:
Name & roll number are stored on the student’s global profile. Confirming will update them across the entire platform, in all of their courses, not just this one.
⚠️ Take this seriously. A stale name column in your CSV will rewrite that person’s name in every other course on BodhiTree. If you are unsure, remove the name and roll number columns and enrol on email alone.
Progress and aborting
Enrollment runs in the background with live counters for newly registered, enrolled, already enrolled, and failed.
Abort stops pending enrollments only:
Students who have already been enrolled will remain enrolled. Only pending enrollments will be cancelled.
The job survives a page reload; you will be reattached to it.
If nothing happens for about a minute you will see “Enrollment hasn’t started — the background worker may be unavailable.” That is an infrastructure problem; contact your administrator.
The results screen
When the job finishes you get Enrollment Completed Successfully, Enrollment Completed with Warnings, or Enrollment Failed, followed by a summary:
Line |
Meaning |
|---|---|
Total Records Processed |
Rows read from the file |
New Users Registered & Enrolled |
People who had no account |
Existing Users Enrolled |
People who already had an account |
Already Enrolled (Skipped) |
Already in this course; nothing changed |
Roll Numbers Updated / Names Updated |
Only shown if you confirmed profile updates |
Duplicates in File (Skipped) |
The same email appeared more than once |
Failed |
With a per-student reason |
Roll Numbers Updated, Names Updated, and Failed are also listed student-by-student, showing the first ten of each. Enroll More Students takes you back to the upload form.
Enrollment can be capped
If you exceed the course owner’s plan you get “Max number of allowed students exceeded”. Students hitting the same cap while self-enrolling see the same message.
The check counts the rows in your file before duplicates are removed, so a file with repeated emails can trip the cap even though fewer people would actually be enrolled.
If the course owner has no plan at all, enrollment is refused with “You do not own any plan. Please Contact BodhiTree Team for more details.” A student self-enrolling in the same course sees “Your instructor does not own any plan…” instead.
3.4 Approving pending students
Pending Approvals tab. Tick the students you want, then open the Actions menu and choose Approve Selected or Reject Selected. Both entries stay greyed out until at least one row is ticked.
The table lists Full Name, Email, Roll No. (“Not Available” if they have none) and one column per batch tag. Long lists load in pages — Load More fetches the next one, and the row above the table reads “Showing N of M”. Searching by name or email queries the server once you type three characters or more; one or two characters just filter the rows already loaded.
Until you approve them, pending students see “Your approval is Pending.” on the course page and can access nothing. They can withdraw the request themselves with Cancel Enrollment.
Approving from this tab always enrols the person as a Student. There is no role choice here; to bring someone in as an STA or JTA, use Enroll Students/TAs → Search and Add instead (§3.7).
⚠️ Reject deletes the request outright — the enrollment record, the person’s batch-tag values for this course, and their forum setting all go. There is no confirmation prompt. The student is not told; they simply return to the un-enrolled state and can request enrollment again.
3.5 Managing enrolled students
The Approved Students tab has a server-side search (type at least 3 characters; one or two characters only filter the rows already on screen) and filter pills All / Active / Inactive. The table shows Full Name, Email, Roll No., Role, and one column per batch tag. Long rosters arrive a page at a time — Load More fetches the next page, and the row above the table reads “Showing N of M”.
Selecting everyone on the page offers to Select all N students across every page, so bulk actions can span the whole roster, not just the current page. Clear selection drops back to nothing selected.
3.6 Adding one person at a time
Enroll Students/TAs → Add Individual Students/TAs: Name, Email, Roll No., a Role choice of STA / JTA / Student, a box for each existing batch tag, and ☑ Send onboarding email to user.
3.7 Adding someone who already has an account
Enroll Students/TAs → Search and Add Students/TAs: choose Student or TA — and if TA, STA or JTA — search the platform by name or email, tick the people you want, then Add.
People already enrolled are shown separately so you do not add them twice, along with the role they already hold: “…is already enrolled as Student. Unregister as Student first to add as STA.” If nobody matches, you get “No users found. Please ask the user to sign up first.”
This is the only way to bring someone in as an STA or JTA without a CSV.
3.8 Managing TAs
The Current TAs tab lists everyone holding STA or JTA in this course — course owners and instructors do not appear here — with Full Name, Email, Roll No., Role, and the batch-tag columns. From Actions you can Export TAs as CSV and Remove Selected TAs, which strips the TA role after a confirmation prompt.
Choosing between STA and JTA
STA (Senior TA) |
JTA (Junior TA) |
|
|---|---|---|
Create/edit activities, quizzes, and testcases |
✅ |
❌ |
Add/edit/delete multimedia book chapters, sections, contents |
✅ |
❌ |
Publish or unpublish course content |
✅ |
❌ |
See hidden testcases |
✅ |
✅ |
See hidden activities and solutions |
✅ |
❌ |
See execution settings |
✅ |
❌ |
See resource limits (time, memory) |
✅ |
✅ |
Change resource limits |
✅ |
❌ |
Grade (edit manual marks) |
✅ |
✅ |
Comment on submissions |
✅ |
✅ |
Submit on a student’s behalf |
✅ |
❌ |
Access the gradebook |
✅ |
❌ |
Moderate the discussion forum |
✅ |
❌ |
Export a lab or activity |
✅ |
✅ |
An STA can do everything you can do, apart from the creator-only powers below. Appoint STAs deliberately.
JTA is the right role for a marker: someone who should grade submissions and course content without being able to change the assessment or the content itself. A JTA comments on submissions on the same terms as an STA; deleting a comment is restricted to whoever wrote it, and that applies to instructors and STAs too.
A JTA still sees the full instructor interface. Buttons the role cannot use — Create Activity, Add Test Case, the Grades tab — are drawn on screen and fail when clicked, rather than being hidden.
What only the creator can do
Three things do not transfer with the STA role:
Deleting course content, when content protection is on (§2.7)
Changing the content protection setting itself
Importing email recipients from a file is course-owner-only
3.9 Losing access
If your role is removed while you are working, the next click returns you to the course list with “You no longer have instructor access to this course.”
Previous: 2. Creating and Setting Up a Course · Next: 4. Course Content: the Multimedia Book