It's interesting that you posted this since I'm going through a courses clean-up process right now. We've had Canvas since 2013 and there are so many old courses that we needed to hide. More importantly, we didn't want anyone accessing old, outdated courses (some were still appearing on their Dashboards).
Here were some goals I set for the process. -
1. Ensure that all courses, terms and sub-accounts have an SIS ID (some of them didn't which could have caused headaches for us later). I simply pulled a courses provisioning report at the root level and filtered by blank course IDs.
- Fun fact: Canvas can't add in course SIS IDs into blank fields via CSV but there's a script on GitHub you can used to help you out.
2. Move all old courses to a "Legacy" sub-account that disables all access to students. Here is a screenshot of what we've set that we know hides the courses from the list -
![Subaccount settings Subaccount settings](/t5/image/serverpage/image-id/31388iCC06CE72CBF73407/image-size/large?v=v2&px=999)
3. Make sure all courses were in the right sub-account and had the right term associated with it. This may seem obvious but it was something I uncovered during the process.
Some lessons learned -
1. I actually found it very helpful to masquerade as a few users to confirm for sure that the courses were hidden. I was convinced some of the settings I selected as an Admin would hide the courses but in some cases it didn't.
2. Run multiple provisioning reports throughout the process. Not only does this help in identifying the courses that need to be hidden/archived but it can act as a historical resource later on.
3. Prioritize active/published courses to start since those are the only ones that users have access to.
It's worth noting that we don't have an SIS integrated into our instance so the only course data coming in was from the UI or a courses.csv. Also, we use Canvas as a professional development platform for our employees so we don't have traditional semesters.
Hope this helps!