SIS imports via CSV files
One can import a variety of "student information system" (SIS) information (see https://community.canvaslms.com/docs/DOC-5917 Links to an external site. and https://guides.instructure.com/m/4214/l/80122-what-are-sis-imports Links to an external site.) .
The important is done by populating a CSV file with the appropriate data and then importing it as per "How do I format CSV text files for uploading SIS data into a Canvas account?" Links to an external site.
1. Create user accounts: users.csv file
For all course responsible, examiner, and teachers in KOPPS create a line in a spreadsheet with the following (note that the heading row of the spread sheet is simply these bold attributes: user_id,login_id,first_name,last_name,full_name,email,status ):
Links to an external site.user_id: This should probably the KTH user id, such as u1d13i2c
login_id: This should be the KTH user's account without the @kth.se, for example: maguire
first_name: (first) name of the user from LDAP
last_name: (last) name of the user from LDAP
full_name: Fullname of the user from LDAP
email: user full e-mail with @kth.se
status: "active" for all users to be added
I get the user information from LDAP using the following bash functions:
function kthid # lookup a KTHID based on username
{
ldapsearch -x -H ldaps://ldap-master.sys.kth.se -b ou=Addressbook,dc=kth,dc=se ugUsername=$*
}
function kthuser # lookup username given a KTHID
{
ldapsearch -x -H ldaps://ldap-master.sys.kth.se -b ou=Addressbook,dc=kth,dc=se ugKthid=$*
}
2. Create Accounts and subaccounts: accounts.csv file
For each School create a subaccount, then for each department create a subsubaccount. The csv file has the following header: account_id,parent_account_id,name,status
Thus the file probably looks like:
account_id,parent_account_id,name,status
ABE,,School of Architecture and the Built Environment,active
BIO,,School of Biotechnology,active
CHE,,School of Chemical Science and Engineering,active
CSC,,School of Computer Science and Communication,active
EES,,School of Electrical Engineering,active
ICT,,School of Information and Communication Technology,active
COS,ICT,Communication Systems,active
EKT,ICT,Integrated Devices and Circuits,active
MNF,ICT,Materials and Nano Physics,active
SCS,ICT,Software and Computer Systems,active
ITM,,School of Industrial Engineering and Management,active
SCI,,School of Engineering Sciences,active
STH,,School of Technology and Health,active
ECE,,School of Education and Communication in Engineering Science,active
Note that the former ICT/ESY has now moved under EKT.
It might be a good idea to mine the KOPPS field "Kod för administrerande enhet" to compute all of the subaccounts that are needed.
3. Now we can create courses: course.csv
course_id: (in Canvas this is called the "SIS ID") either this should come from the KOPPS: Kurskod or it is some unique identifier for the instance of the course, i.e., a "course round". The problem is that the course_id is the identifier under which files are stored - and presumably against which the per course storage quota is computed, hence as we have long lived courses - either we have to deal with changing quotas or have to deal with multiple course_ids for the same course code - in the later case we can use a course_id of the form Kurskod-Term, for example II2202-HT16P1, II2202-HT16P1P2.
Note that if we use the Kurskod as the course_id, we can separate the instances using "sections".
short_name: (in canvas this is the "Course Code") from KOPPS: Kurskod
long_name: This should probably be the Swedish/English title from KOPPS: Benämning (sv)/Benämning (en)
I do not know if we should put the two names in with a separator or if one should be in parenthesis after the other; nor which should be first.
For example:
Forskningsmetodik och vetenskapligt skrivande/Research Methodology and Scientific Writing
or
Forskningsmetodik och vetenskapligt skrivande (Research Methodology and Scientific Writing)
where the order of the names would be either fixed or based on the KOPPS field "Undervisningsspråk".
account_id: this should come from the KOPPS field for "Kod för administrerande enhet"
status: "active" for all courses
Note that we do not want to set starting and ending dates for courses. We probably do not even want to set the term_id, however, if we do set a term_id - then we need to import a terms.csv file before creating courses to define these terms.
4. Create Enrollments to add the teachers to the courses: enrollments.csv
This information is necessary as it gives the teacher access to the courses.
course_id: matching the course_id assigned above
user_id: matching the user_id assigned above
role: teacher - note that we can also define the custom roles of course_responsible and examiner (see https://guides.instructure.com/m/4214/l/95582?data-resolve-url=true&data-manual-id=4214
Links to an external site.)
All roles have a permission set by the Admin at the main/root account or sub-account level.
status: "active" for all entries
5. Sections (course rounds)
section_id: (in canvas this is called the SIS ID) this is probably of the form: Kurskod-Term or Kurskod-Kurstillfällen/kursomgångar
course_id: course_id as assigned above
name: name of the section based on course round, i.e., Kurstillfällen/kursomgångar
status: "active"
Programmatic importation of files
It is also possible to use the API to import the files, see "Import Test File" of https://guides.instructure.com/m/4214/l/263405?data-resolve-url=true&data-manual-id=4214 Links to an external site.