Mandatory Orientation Programming

Community Coach
Community Coach


At Richland Community College all students must complete an online student orientation before they are able to access their courses in Canvas. For more information on our Orientation itself see the following article - and resource in the Community - Canvas Instructor Training and Student Orientation

This process starts when a student registers for a class. Students who have already completed the orientation are enrolled in the proper section of their courses, but students who have not completed the orientation are added to the orientation and to a special section of their course. This special section is called "Need to complete Orientation" and the start and end dates for that section are set to the end of the course. This allows the student to see that the course exists, but not be able to access it. To access their course the student has to complete the orientation. The orientation is self-paced and includes 10 modules. Students must work through the Modules in order and complete the final cumulative exam with an 85% or higher to complete the orientation. Once students have completed the orientation they are removed from the orientation course, added to the Canvas Student Resources course (FAQ), and switched from the “Need to complete Orientation” section of their course into the section in which they are enrolled.


Why have a mandatory orientation?

  • We saw a 7.7% increase in retention for our online courses after implementing the mandatory orientation.
  • Helps improve students’ confidence in their ability to successfully use Canvas for their courses.
  • Gives faculty back their first week of class since they don’t have to troubleshoot and play tech support
  • Faculty teaching traditional courses are more likely to use Canvas and use more advanced Canvas features because they know their students have completed the orientation and should know how to use it.

Why do we add students who have not completed the orientation into a separate “Need to complete Orientation” rather than not adding them to the course until after they have completed the orientation?

  • Faculty can easily see who has completed the orientation and who hasn’t. If the students weren’t add to the course until after they completed the orientation the instructor would have no easy way of seeing who still needed to complete the orientation.
  • Faculty can still take attendance and enter grades for students who haven’t completed the orientation. All of this information stays with the student when they move from the “Need to complete Orientation” section to their regular course section.
  • Students who haven’t completed the orientation can see their course(s), but when they click on them are not given access.

Concluded, deleted, vs. active?

  • Concluded - students have access, but can’t do anything in the course. If there is any student data it is retained and is accessible to the instructor. [In Beta right now: It appears that the concluded state will prevent students from accessing their course.]
  • Deleted - students do not have any access to the course. All student data is wiped, including that they were ever signed up for the course.
  • Active - students have access to the course and student data is available/accessible to the instructor.


Our Canvas database systems are maintained separately from our Student Information System (SIS). There is no requirement for this, but the employee working on the Canvas stuff is in a separate department and doesn't like to alter the SIS database unless necessary. There is a lot of duplication that could be removed if they were integrated, but for now, it means that our SIS contains no information about which course sections use Canvas and how they are configured.

Our Canvas database systems are running on a MySQL server, but again, there is no requirement for that. MySQL is widely supported by programming languages, including

PERL and PHP, which are the ones used by the integration. The SIS database is running Informix and compiling PERL and PHP with support requires compiling from source since precompiled packages are generally not available.

When we were developing the system, we found that it was easier to access information through the API using the Canvas IDs for values, so we have a system that contains all of the information that is in Canvas for terms, accounts, courses, sections, users, and enrollments. Many of these have a last_updated field, so that we can tell when they were last changed and reduce the information being sent to Canvas.

Helpful Hint: Store the Canvas IDs in your database. Some of the API calls return Canvas IDs and not SIS IDs and this will save extra API calls when you need that that information.

Canvas API

The system makes some calls to the Canvas API to obtain user information and assignment submissions. We use PERL and PHP but there were no sufficiently developed libraries at the time so we wrote our own libraries to handle the API calls.

PERL is used for almost all of the backend processing. The API calls are performed using the  LWP::UserAgent module. Although lib-www-perl (LWP) is part of CPAN, it was available through the system's package manager and had been used for other programs so it was familiar. PERL itself was chosen because an existing PERL codebase that handled the creation of student accounts. One major issue I had with PERL is that I tried to implement a schema to validate the input before making the call. The CPAN module Data::Schema was one of only a few available without a lot of overhead, but was deprecated in 2011 (and since removed from CPAN) in favor of a new module, Data::SAH, by the same author. Unfortunately, that newer module isn't fully compatible with the old one and no tool is provided for automated migration. A replacement validation module should able to work in both PERL and PHP but the search returned nothing useful, so Data::Schema is still in use.

PHP is used for all pages with a web-interface as well as a few of the backend processes. In PHP, I am using the cURL library that comes with PHP. Unlike PERL, there is not a library built-in to PHP that accomplishes that. There are some packages written, but there doesn't appear to be a clear winner like there is in the case of PERL. There was an HttpRequest module available in PECL, but my experience has been that packages that come precompiled work better than those available through either PEAR or PECL.

At the 2014 InstructureCon, I learned that most programming languages come with a REST package. CPAN includes REST::Client for PERL and there are several available for PHP. However, none of these have as much support as LWP::UserAgent or cURL.

Registering Students

Not every course at our institution uses Canvas. Faculty must request that their courses be created inside Canvas and whether multiple sections of the a course should be combined in Canvas or created separately. There is no requirement that faculty decide that their course will use Canvas prior to the start of registration for a semester or even before the semester begins. Some divisions shuffle teaching assignments the weekend before classes begin and courses that didn't require Canvas under the one instructor now need those added into Canvas.

In short, there is no way to definitively know which students are going to need Canvas before the semester starts. But there is Board of Trustees policy (adopted May 2012) that states, "All students enrolling in a course utilizing a learning management system are required to successfully complete the mandatory technology orientation." The procedure we use to implement that policy is that students are required to complete an orientation course inside Canvas prior to taking courses that use Canvas.

Since students aren't allowed into their courses until they complete the orientation and we sometimes don't know which students will need the orientation until right before classes start, we have a potential problem. The solution was to put all students into the Canvas orientation, not just those who are enrolled in courses that will be using Canvas.

The process to create network accounts and assign emails is ran every 10 minutes. The process to add students to Canvas is ran every 20 minutes, but only processes those students who have already had their accounts created. The longest delay a student may have between signing up for classes and being added to Canvas is 25 minutes.

Completing the Orientation

There is a mandatory orientation to Canvas for students. Students must successfully complete the orientation before they are allowed into their courses. The orientation undergoes regular revisions as part of a quality improvement process and to reflect changes in Canvas, but students do not need to retake the orientation.

Inside the Canvas orientation, there is a "final review" assignment. Completion of this assignment means that they have successfully completed the orientation. That is the official end of the orientation.

However, we added an external tool titled "Click here to complete orientation" after the final review. When a student clicks on this, it calls a small PHP script that records that the student has completed the orientation. This LTI does not make API calls to remove the student from the orientation as that might be too strange for the student to be kicked out of the orientation while they are in it.

We also correctly anticipated that not all students would not click on the external tool, so we use the Submissions API to get a list of the course submissions. There is a course id and assignment id that is unique to the final review, and we ask Canvas for that information and then record the completion for any student it returns.

GET /api/v1/courses/:course_id/assignments/:assignment_id/submissions

However, the Submissions API does not return the SIS code for the student, it returns the Canvas User ID. We would need to call the Users API to get the students SIS code so that we could record which students have completed the orientation. We maintain a cache of the Canvas information in our local system, so we just lookup the student's SIS id locally in the cache. If we find that a student's Canvas ID isn't in our system, then we'll go ahead and look it up using the Users API Get Profile command.GET /api/v1/users/:user_id/profile

Looking up the users that are missing their Canvas ID in the local cache is also a regular part of the process, so finding someone who has completed the orientation before obtaining their Canvas user ID is rare.

On our end, either through the LTI or Submissions API, we record the date, time, and version number of the orientation completed. We only use the version number for reporting purposes. We also use the date and time to process recent changes rather than processing all of the information.

Background Processing after Completion

If a student clicks on the "Click here to complete the orientation" external tool assignment, the only processing that is done is to write a successful completion to our database. No other processing occurs at that time.

We have a process that runs every 20 minutes between 6:05 am and 2:55 am. It takes a break between 3:00 - 6:00 am for additional processing, including a full batch upload in case something fell through the cracks during the day.

Here are some of the items that occur during that process.

  • The list of submissions for the final review is obtained and any students who didn't click on the "Click here to complete orientation" link are noted as having completed the orientation.
  • Any students who have completed the online orientation are deleted from the orientation and placed into a Student Resources course. This course is essentially the orientation with the quizzes removed and allows students to access the information in the orientation after they are removed from the actual orientation.
  • Any students who completed the orientation and are enrolled in a course that is using Canvas are deleted from the "Needs to complete Orientation" sections and placed into the correct sections.
  • Any courses that have had all students complete the orientation have the "Needs to complete Orientation" section deleted.
  • Any new courses that have been added into Canvas in the last 20 minutes are processed. This includes enrollments and might involve the creation of a "Needs to complete Orientation" section.
  • Changes in faculty are automatically processed as well. This might include changes in faculty due to teaching assignment changes, but it might also include existing faculty who have recently completed the Canvas Faculty Training course. That course has three levels of training: enhanced, hybrid, and online courses, and a faculty who has only gone through enhanced training won't be added as the instructor in an online course.
  • The SIS imports are sent to Canvas. This is done incrementally through the day, with changes within the last hour being sent. The overnight processing sends a full upload to catch anything that slipped through the cracks.

Contact Information

 @kona , Director of Online Learning

 @James , Internet System Specialist & Professor of Mathematics