Canvas - Formatting Compliance Course Enrollment Files for CSI Processing [UW-Madison]

This internal team document explains how files for noncredit courses in Canvas (mainly, compliance and institutional training courses) can be processed in Canvas and how they should be formatted. This information will be helpful to share with constituents who are interested in providing enrollment files to us for automated processing via CSI.

    Overview

    There are a couple of options for enrolling "noncredit" learners into Canvas using CSI (https://csi.canvas.wisc.edu/uwcsi):

    • Simply placing them into the course, into one section/grouping
    • Putting them into different sections that would group them into major, advising group, etc.

    Prerequisites

    It is assumed that, at the time the enrollment file gets processed in CSI, that the students will all have activated NetIDs and will have PVI identifiers. This will pull them into the Canvas database, so they can then be enrolled into a particular Canvas course. The Canvas course should also exist before the file processing begins. 

    How the process works

    We have a tool that will automatically retrieve a file from a location such as Box, then pull it over onto our CSI server, and then process it into Canvas. The process can run however frequently it needs to—so let’s say a customer wants to update their course enrollees every four hours. If they update your files on a four-hour basis, we (with TRAD's help) can set our tool up to grab them and process them.

    We do delta processing for adds and drops. So the files provides should include students who need to be enrolled, and every new file should continue to include all existing past enrollees as well as any new ones. If a student is omitted from your file they will be dropped from the Canvas course. 

    File formatting

    Option 1: The following format would be used for enrolling learners into one single “section” (grouping) in the course. In this file, the data fields and formatting are pretty straightforward:

    • root_account: leave blank
    • user_id: student PVI
    • role: always ‘student’
    • role_id: leave blank
    • course_id: this will be the identifier assigned to the Canvas course shell. We can make it anything, but we usually apply a standard format of termcode:course topic/subject. For now, we can just say it’ll be “1206:SOAR”
    • status: always ‘active’
    • associate_user_id: leave blank

    Option 2: This format would place learners into individual sections that would group them by department, major, or any other grouping selected. This will allow the learners to see custom content based on that section grouping, to be sorted by section, and so on. Formatting is as follows:

    • root_account: leave blank
    • user_id: student PVI
    • role: always ‘student’
    • role_id: leave blank
    • section_id: this will be the identifier assigned to the Canvas course section the student should be placed into. We can make it anything, and we (or, even better, the customer) will need to set up the sections in Canvas beforehand, which isn’t really too much work. Any naming convention is fine, but it needs to be unique (ie not used in another Canvas course).
    • status: always ‘active’
    • associate_user_id: leave blank

    The enrollment files need to be in CSV format, with quotations around the individual values (even blank ones) as well as the headers. Sample:

    "root_account","user_id","role","role_id","section_id","status","associate_user_id"

    " ","UW006H007","student"," ","1212:51580","active"," "

    " ","UW081F973","student"," ","1212:51580","active"," "

    " ","UW081F973","student"," ","1212:70126","active"," "



      Keywords:
      KB, Knowledgebase, template, CSI, enroll, enrollment, noncredit, process, noncredit, noncredit, compliance, training, students, learners, 
      Doc ID:
      100647
      Owned by:
      Learn@UW Madison in Learn@UW
      Created:
      2020-04-15
      Updated:
      2025-08-15
      Sites:
      Learn@UW-internal