[Canvas] Copy all past courses to new term automatically

Jump to solution
LinHua
Community Member

Our institution would like to copy all past courses (including all materials uploaded within the course) to our new term. Is there any way to use csv file to copy all courses simultaneously instead of doing manually for every single course?

Labels (4)
0 Likes
2 Solutions
chriscas
Community Coach
Community Coach

Hi @LinHua,

I don't know of a way to do all of this via CSV file(s).  You could use the CSV files to create the new course shells for the new term, but you'd probably need to use the API to loop through the courses and initiate the imports for each course using via content migrations.  If you have a programmer on your team, this might be something they could script fairly easily, but that may also depend how predictable your course ids and other info are.

Hope this info helps a bit!

-Chris

View solution in original post

0 Likes
melodyc_lam
Community Coach
Community Coach

@LinHua 

You could try the following "trick" to see if it works out for you --

1) Remove all student enrollments from the previous course -- you'll need to do this or you won't be able to progress to step 2

2) Mark the course as a blueprint. You can do this through the API or by going through each course and checking the box that marks it as a blueprint course.

Also ensure that at this point each course has a SIS ID -- you'll need it for the CSVs. I usually use bp_ followed by the course ID

3) Download a CSV of the courses for your current term

4) In the column for blueprint_course_id, put in the SIS ID of the course you want to copy.

5) Run the file, it should sync the course as a blueprint, with all the associated materials.

6) Re-run the CSV of the courses for the current term but instead add "disassociate" in the blueprint_course_id to dissociate the blueprint.

 

It's a "trick" and not the best way to go (you should really be using the API to do it properly) but depending on how many courses you have, this may be a stopgap measure as you navigate the API. Hope this helps!

View solution in original post

0 Likes