Skip to content

Conferences with "Invite all course members" never add students when the course has a start date #2653

Description

@ffdixon

Describe the bug

Hi there,

This is Fred Dixon, the product manager for BigBlueButton. We've had a few reports of Canvas customers hitting this bug.

I've done some digging (with the help of Fable) will submit a PR for review.

Summary

When a conference is created with "Invite all course members" in a course whose start date is in the future (with "Users can only participate in the course between these dates" enabled), no students are ever invited.

The initial invite silently adds no students, and when the course start date passes, students are still not added. Students who enroll before the start date are also never synced, despite the automatic enrollment sync for invite-all conferences.

As a result, the instructor must edit the conference after the course begins and re-select "Invite all course members" before students are added.

Additional notes

Removing the course start date makes everything work, which points to the root cause:

  • WebConference#invite_users_from_context filters invitees through Course#participating_users, which uses the enrollments.active_by_date scope. Before the course start date, students' enrollment_states.state is pending_active, so they are filtered out when the conference is created.
  • The only automatic path that adds users later is Enrollment.after_commit :sync_to_invite_all_conferences, which runs on workflow_state transitions to active. When a course start date passes, only enrollment_states changes (date-based); enrollments.workflow_state does not, so this callback never runs. For students enrolled before the course starts, the callback already ran at enrollment time, but the invite was filtered out by the same date-based scope.

Possible fix (would like a review of this)

Use the active_or_pending_by_date scope when building conference invitees so that date-pending enrollments are invited. The existing :join permission already prevents users from accessing the conference before the course becomes readable.

Screenshots or screen recordings

No response

Steps to reproduce

  1. As a teacher, create a course with a start date in the future and enable "Users can only participate in the course between these dates".
  2. Enroll one or more students and publish the course.
  3. Create a conference and check "Invite all course members".
  4. Observe that the conference has no student invitees.
  5. Enroll an additional student before the course start date.
  6. Observe that the newly enrolled student is not added either.
  7. Wait for (or move) the course start date to pass.
  8. Observe that students are still not invitees and cannot join the conference.

Expected behavior

Students enrolled in the course should be invited to the conference regardless of whether the course start date has passed, or at minimum should be added automatically once the course becomes active.

Access control is unaffected either way, since joining a conference already requires read permission on the course.

What browsers are you seeing the problem on (if applicable)?

No response

Backtrace


Relevant log output


Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions