The Instructure Community will enter a read-only state on November 22, 2025 as we prepare to migrate to our new Community platform in early December. Read our blog post for more info about this change.
Found this content helpful? Log in or sign up to leave a like!
I need to change the Canvas sub-account for a batch of courses. Is there a way to do this through SIS import or the API? Thanks. I'm a bit new to this.
Solved! Go to Solution.
It is possible with both methods (I've done both!)
Preferably, you would use a SIS import to do this if your courses have a SIS ID, with the courses.csv format and changing the 'account_id' to match the correct subaccount SIS ID.
You can follow these instructions -- please try it out in your BETA instance first before you do it in your live instance, just in case there are any issues.
1) Make sure your subaccount has a SIS ID (go to Settings in the subaccount and give it one if it doesn't have one)
2) Go to the account where these courses live -> go to Settings -> Reports tab, then generate a SIS export of Courses (this makes it super easy to get the correctly formatted file and also not accidentally change any other attributes of the course)
3) Delete any courses that you don't want to change and then change the 'account_id' to match the target subaccount SIS ID
4) Save and upload the SIS import.
If your courses DO NOT have a SIS ID, you'll need to use the API (update a course). If you need sample code for this in Python, let me know.
It is possible with both methods (I've done both!)
Preferably, you would use a SIS import to do this if your courses have a SIS ID, with the courses.csv format and changing the 'account_id' to match the correct subaccount SIS ID.
You can follow these instructions -- please try it out in your BETA instance first before you do it in your live instance, just in case there are any issues.
1) Make sure your subaccount has a SIS ID (go to Settings in the subaccount and give it one if it doesn't have one)
2) Go to the account where these courses live -> go to Settings -> Reports tab, then generate a SIS export of Courses (this makes it super easy to get the correctly formatted file and also not accidentally change any other attributes of the course)
3) Delete any courses that you don't want to change and then change the 'account_id' to match the target subaccount SIS ID
4) Save and upload the SIS import.
If your courses DO NOT have a SIS ID, you'll need to use the API (update a course). If you need sample code for this in Python, let me know.
@CynthiaEdwards1 We are using the SIS Import to reorganize all of our sub-accounts, but often need to use the API for some edge cases or research ahead of time.
@melodyc_lam If you have a demo script available to assist in the process, I would like to take a look. Anything that can help move the project along is always incredibly appreciated! (And, it would also dovetail very nicely with our internal clean up of old courses that live in accounts that are non-credit bearing and thus have no SIS, making the course status "deleted" very piecemeal.)
Here is my Python code to archive and move courses that uses the canvasapi module. The code will change the term to a target term ID and change the account ID to a target ID and then conclude the course. It also keeps a log of what got moved and what didnt. The code also runs concurrently (5 courses at a time) but does not have checks if the code fails. Hope this helps!
Awesome. Thank you so much! I'm new to Python (after some help from Technical Consulting) and always looking for ways to streamline our workflow. You are scores ahead of me, and I appreciate the sharing.
Community helpTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign inTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign in