Showing results for 
Search instead for 
Did you mean: 
Community Member

Archiving/roll-over procedures


I am looking into archiving procedures for our VLE platform. As we are a university originally born in Scotland but now with 5 global campuses, I thought that the best way of creating a hierarchical structure which is not Anglo-centric would be having:

`-The root account

-1 sub account per school (School of Social Sciences, School of Maths, etc...)

-and then within each sub-account I am not sure if it would be useful to have sub-accounts by programmes or departments.

In a Moodle site, I would create a hidden category called "Archive" and at the end of each academic year, I would run a php script to move the courses to that category and to change the role of students to "archieve students" so that they could still have access to their courses for a limited period of time but without being able to write o modify anything. That is what I did in the sites that I administered.

I read in the documentation that in Canvas, course can be manually "concluded" and that you can set up a date to limit students access. However, I understand that you can also automatise this process. 

In your Canvas sites, how do you do the archiving and roll-over of courses,

  • do you move them to a specific sub-account called "Archive courses" or do you conclude manually your courses and keep them within the sub-accounts that they were created in (assuming that you have sub-accounts and still use the concept of academic year)?
  • What kind of procedures have you implemented to automatise the archiving of old courses?

Many thanks for the information and advice that you can give me.

Mari Cruz

Labels (4)
5 Replies

Hi Marni,

I've recently archived a number of courses in our instance that were old/outdated. My main goal was to clear up learner's dashboard while also maintaining a historical record. That's why I opted to move courses to an "archive" sub-account (as opposed to marking them all as concluded). I also changed the settings in the sub-account to 'Restrict students from accessing courses after end date".

I haven't automated any of this yet and it was a pretty manual process (mainly because we had never done in before so it took time to go through everything). I'm planning to go through a course audit once a year.

It's worth noting that we use Canvas for professional development so we don't have as many courses as a typical higher ed institution might have.

Hope this helps,



Thanks for your reply, Kacie. In our case, once the course is roll-over (or achieved) when the academic year ends, we still need to give access to student for a certain period of time, which I think it is 2 years usually. 

 If I created that sub-account and I move the courses their without restricting the access, the archieve course will not be displayed in the dashboard but students still will be able to access the course through the navigation path to the sub-account, am I right?

Sorry if I am asking something basic, but I am just learning my way to canvas.


Mari Cruz

0 Kudos
Surveyor II

Hi there,

I developed a course archiving plan last summer and began the rollout in October. So far it's been working great, and has been well-received by our faculty. Worth noting right up front is that this is not an automated process (yet). Our programmer has enough on his plate, so this is something that I handle with some manually-edited SIS files.

In a nutshell, all I'm doing is moving courses to a new sub-account and shutting off access through enrollment flag. My process is:

      (1) pull Provisioning reports for courses and enrollments in the targeted term

      (2) edit courses file, designating the new sub-account, new term, and flipping statuses to "completed"

      (3) edit enrollment file, assigning "inactive" status to all active users (ignoring deletes)

The idea is that all users will continue to have access to courses up to three years back from the current term. These remain in the root account, in their respective calendar terms (we're on a 4-term calendar), and no changes are made to access.

The course archive sub-account is broken down into additional sub-accounts for calendar year and its terms:


The Provisioning reports provide the best snapshot of the state of things in those targeted terms. Since the courses I'm moving go back quite a few years, the reports reflect the last-run SIS data.

When courses are moved to a new sub-account, they're also associated to the ARCHIVE term. This doesn't have any availability dates associated with it since it's really just acting as a catch-all for old courses. However, by using the "completed" status flag, this ensures that the course is appropriately displayed to users who are given access back into them (more on that in just a second).

Since access is not being restricted via term, sub-account, course setting, or role modification, using the enrollment status flag of "inactive" is our magic key. The user's data is retained, essentially frozen in time from the last point in which they interacted with the course. If someone should need to get back into a course that's been archived, it's just as simple as manually setting them back to "active" in the course.

In April, we'll have caught up to the aforementioned three-year window, so this will assume a regular cadence of just a single archive process after the start of each new term. I can see some refinements to the process developing over time, but since there wasn't any plan for handling old courses prior to my joining the college, this is more than what was available and has been working great so far.

I hope this is helpful. Feel free to reach out with any questions!



It depends on what you really intend by "archiving," here.

If the goal is simply to give students read-only access to prior courses for a period of time, that functionality is baked into Canvas; there's no need to move anything around. You just need to set the "students can access until" dates for terms. For classes that have irregular dates, set a course end date and tick the "students can only participate between" box in the course settings.

Canvas's default behavior is to grant read-only access for students after the term/class end date, and those courses move to the students' "previous enrollments" in their courses tab. See How do term dates, course dates, and section dates work in Canvas? for details.

For courses that students shouldn't be able to view read-only for their entire matriculation (the default) we run a periodic script to toggle the "Restrict Students from viewing this course after end date" setting after a certain period of time via the Update Course Settings API (Courses - Canvas LMS REST API Documentation )

So for an academic course in a program with a 90-day read-only policy, the setup is something like this:

1) Term settings: Students can access from term start to term end

2) Nightly cron job: see if any courses in that program (we look as SIS id) and term closed more than 90 days ago and are still allowing student access, and set "Restrict Students from viewing this course after end date" to close them if they are.

The courses can just reside in whatever subaccounts they're in: sub accounts in Canvas are mainly for administrative purposes, so the consideration isn't the content or age so much as who should be subaccount administrators. We've generally adopted an institution/campus/school/department model (e.g., London->Graduate->Art History). 

For archiving, per se, places I've been have generally told faculty to make local copies (How do I export a Canvas course? ) of anything they want to keep after a certain period of time (usually 1-3 years) and periodically sent out reminders and then deleted anything older than the cutoff. 

It's also possible to script automatic course exports via the ContentExport endpoint (Content Exports - Canvas LMS REST API Documentation ) if you want to grab a bunch of courses in bulk.

Community Member

Many thanks to @Justi and @Jay for their comments, very useful.

0 Kudos