- Capture LMS data snapshot(s) using
msar snapshot - Archive linked files from snapshot using
msar archive - Create historic faculty using SIS Users Import
- Use a spreadsheet to generate appropriate
sis_user_idvalues (e.g.usr-123-12345678) - Create a non-conflicting login email (e.g.
usr-123-12345678@example.myschoolapp.com) and assign it to both thelogin_id(for Canvas) andemail(for Canvas Studio)
- Use a spreadsheet to generate appropriate
- Designate an admin account as the import user (ideally not a person, but a generic IT or Academics account) and assign that account the
sis_user_idof@msar/canvas-import(this can be changed after the import is complete) - Import the archived snapshots using
canvas-import- When prompted to authorize a user to access the Canvas and Canvas Studio APIs, use the generic user designated in the previous step.
- Everything listed for @msar/canvas-import
- Everything listed for
msar snapshotandmsar archive - I stored all of my snapshots and archives on a Google Shared Drive, which was generally fine (other than the bandwidth needed to sync back and forth with the cloud as things changed). The big wrinkle was that periodically teachers uploaded
.gdocor.gsheetfiles to assignments. These wouldn't have been working links or attachments for the students, of course (they're just web shortcuts), but by storing them on Google Drive, they were automatically removed by that sync, since they didn't match with actual Google Doc or Google Sheets files in those locations. This led to a few missing files (an eventuality handled by@msar/canvas-importbut it would have been nice to have them and convert them to actual web links. - Enabling Canvas Studio accounts and course lists as-needed is a little janky -- it relies on interactively opening a series of web links, and requires monitoring the scripts. I suspect that this has to be done interactively, but it's not actually so complicated or variable, so it could definitely be scripted using Puppeteer (as the scraping of Blackbaud was done), reducing the monitoring load on running the imports. Alternatively, the interactive steps could also have been front-loaded by scanning the snapshots before beginning.