[SIS] Add SIS IDs to default sections as part of course creation

It appears that default course sections don't receive SIS IDs when a course is created.

If this is true, then this means that during standard operation, a Canvas instance will start to accumulate multiple courses with blank SIS IDs for their default sections.

Because you can't specify a course_id when using change_sis_id,csv, this then means that you can't identify which blank SIS ID should be changed if you would then like to change these SIS IDs in bulk. 

And because the SIS ID is blank, attempting to change the SIS ID via change_sis_id,csv generates the error message "No old_id or old_integration_id given for change_sis_id".

My request is thus that Canvas be changed so that, as standard process, new courses are given a non_blank SIS ID for their default sections. This could be a copy of the course code field for instance, so that it is globally unique across the instance. This will then allow using change_sis_id.csv to change these SIS IDs in bulk to something else.

The other improvement that could be made would be to add course_id field to change_sis_id.csv, so that SIS ID changes are given a course context to be able to map to.

I currently have 500 courses with blank default section SIS IDs. I will need to change these SIS IDs manually in the Canvas UI before I can then generate a provisioning report to change the name field in these default sections to something else.

I am a site admin.

Thanks!

8 Comments
Stef_retired
Instructure Alumni
Instructure Alumni
Status changed to: Open
 
James
Community Champion

@Andrew42 

I haven't tested the change_sis_id.csv file import, but what you write doesn't match with my understanding of the way things work. We do use SIS Imports to migrate information from our SIS to Canvas.

When I look at a course Settings > Sections page, I see a section that has the same name as the course (without a SIS ID) and then sections (that have SIS IDs). When you click on the first one, there is no ability to change the SIS ID. I think this is what you are talking about.

2021-07-28_11-51-50.png

To say that the section belonging to the course doesn't have a SIS ID is misleading, though.  In our case, it has a SIS ID --- the SIS ID for the course. You cannot change it from that page because you change it from the course Settings page directly.

If you want to change it through the change_sis_id.csv file, then use the course SIS ID and specify a type of course.

What we do is enroll the students in sections and the instructor in the course. Some institutions enroll everyone in the course without using sections as sections do not have to match SIS sections and they only have one section per course (so they just use the course). Our institution allows multiple sections to be combined into a single course and we do that at the SIS import level without using the crosslisting that Canvas has built in. That's why there is only 1 user (me) in the first section that matches with the course. That's actually a course enrollment, not a section enrollment, but it shows up under the course sections page.

If you are sitting with 500 courses with blank IDs, it's because you're not providing a SIS ID when you create the course. That is difficult to do if you are using SIS Imports to create courses as the course_id in the courses.csv file is the SIS ID and it is a required field. If you are creating the courses some other way than SIS imports, then you should not expect the change_sis_id.csv to work. You can still access the information with the Canvas course ID, but if you want to control it through an outside source, then you should establish a SIS ID for it.

If you happened to truly create 500 courses without SIS IDs (you did not use the SIS import), then there are ways to attach a SIS ID to the course, but you will need to do that individually to each course. Then you can use the change_sis_id.csv to change them, but they are not under control of the SIS unless Canvas has a SIS ID for them.

Your second improvement of adding a course_id isn't warranted. SIS IDs must be unique per type, so by specifying that it is an account, term, course, section, group, group_category, or user, you are providing enough information for Canvas to find it. You can reuse IDs -- in my example, my course actually has a SIS ID of fa21-math_113-01, the same as the first section, but because one is a course and one is a section, there is no conflict on the SIS IDs.

Andrew42
Community Member

Hi James,


Good to be in touch, and thanks for the prompt reply!

Am new to Canvas and so am still learning how it works.
I put together a table to help me understand how things are set up in this area of Canvas, so I hope it’s reasonably correct. Link is https://bit.ly/3xsKPmC

I’ve provided some responses and questions in your text below.
And to help avoid confusion, I’ll call course SIS IDs ‘CSI’s, and section SIS IDs ‘SSI’s from here on.

Thanks again,
Andrew

----------------------

I haven't tested the change_sis_id.csv file import, but what you write doesn't match with my understanding of the way things work. We do use SIS Imports to migrate information from our SIS to Canvas.
When I look at a course Settings > Sections page, I see a section that has the same name as the course (without a SIS ID) and then sections (that have SIS IDs). When you click on the first one, there is no ability to change the SIS ID. I think this is what you are talking about.
Yes. In my experience, sections that are created via sections.csv require a "globally unique" SIS ID and are not editable in the UI once created. (I can understand why Canvas might want to stop users from changing SSIs via the UI that were created via csv or a student management system (SMS) in order to prevent SMS transactions from failing due to this change.)

To say that the section belonging to the course doesn't have a SIS ID is misleading, though. In our case, it has a SIS ID --- the SIS ID for the course. You cannot change it from that page because you change it from the course Settings page directly.
For me, unless I use sections.csv, the sections in our courses have section names but not section SIS IDs, and if these sections are default sections they inherit the course name in their section name fields rather than their SIS ID fields.

If you want to change it through the change_sis_id.csv file, then use the course SIS ID and specify a type of course.
Won’t this change the CSI rather than the SSI? Or am I misunderstanding you here?

What we do is enroll the students in sections and the instructor in the course. Some institutions enroll everyone in the course without using sections as sections do not have to match SIS sections and they only have one section per course (so they just use the course). Our institution allows multiple sections to be combined into a single course and we do that at the SIS import level without using the crosslisting that Canvas has built in. That's why there is only 1 user (me) in the first section that matches with the course. That's actually a course enrollment, not a section enrollment, but it shows up under the course sections page.

If you are sitting with 500 courses with blank IDs, it's because you're not providing a SIS ID when you create the course. That is difficult to do if you are using SIS Imports to create courses as the course_id in the courses.csv file is the SIS ID and it is a required field. If you are creating the courses some other way than SIS imports, then you should not expect the change_sis_id.csv to work. You can still access the information with the Canvas course ID, but if you want to control it through an outside source, then you should establish a SIS ID for it.
Are you talking about CSIs rather than SSIs?
We recently migrated from Moodle and I suspect our blank SSIs are the result of importing Moodle backup files to create the equivalent courses in our Canvas instance.
We’ve yet to roll over our courses for the upcoming year, but when we do, we’re likely to use the ‘Copy this course’ option in the Canvas UI so at this stage am not sure we’ll be able to avoid more blank SSIs.
However we may be able to avoid the need to handle blank default SSIs if we have the correct text in the section name fields before we roll over.

If you happened to truly create 500 courses without SIS IDs (you did not use the SIS import), then there are ways to attach a SIS ID to the course, but you will need to do that individually to each course. Then you can use the change_sis_id.csv to change them, but they are not under control of the SIS unless Canvas has a SIS ID for them.
Thanks for the link. However unfortunately we don’t have an integration between our Canvas instance and our student information system, nor the capacity to build APIs at the moment.
When you say ‘SIS import’, do you mean Course > Settings screen > Import course content?
Also I'm not sure if you are referring to CSIs here rather than SSIs.

Your second improvement of adding a course_id isn't warranted. SIS IDs must be unique per type, so by specifying that it is an account, term, course, section, group, group_category, or user, you are providing enough information for Canvas to find it. You can reuse IDs -- in my example, my course actually has a SIS ID of fa21-math_113-01, the same as the first section, but because one is a course and one is a section, there is no conflict on the SIS IDs.
Unfortunately in my case, with blank default SSIs across multiple courses, these SSIs are not unique as they are all blank.

Could you please let me know how, in a change_sis_id.csv file, I can identify which course a section belongs to if I wanted to change that section’s SIS ID when the section’s SIS ID is blank? When I try this I get the message: “No old_id or old_integration_id given for change_sis_id".

Thanks,
Andrew

James
Community Champion

@Andrew42 

In my experience, sections that are created via sections.csv require a "globally unique" SIS ID and are not editable in the UI once created.

SIS IDs can be changed through the web interface provided your role has the permissions to do so. It may be locked down for instructors, but Canvas Admins have permissions.

Go to course Settings > Sections. Click on the name of the section (not the pencil icon that just allows you to change the name). Then click Edit Section from the right hand side menu.

This is one way to go through and assign IDs for the 500 sections that don't have SIS IDs in them and it doesn't require API knowledge to accomplish. It requires a lot of patience and potentially carpal tunnel syndrome from repetitive clicking.

If you need to control the sections through the SIS, which may or may not be true, then you will need to put the SIS section IDs in to Canvas. Canvas cannot use what it does not know. You will get an error like "No old_id or old_integration_id given for change_sis_id" or a more general not found.

For me, unless I use sections.csv, the sections in our courses have section names but not section SIS IDs, and if these sections are default sections they inherit the course name in their section name fields rather than their SIS ID fields.

If you are creating the sections through the web interface, then yes. If you have 500+ sections and are creating the sections through the web interface then stop making so much work for yourself. Use the SIS imports.

If you are creating the sections through the web interface, then you will need to go through and assign SIS IDs before you can manage them through the SIS IDs. Canvas cannot use what it does not know.

Won’t this change the CSI rather than the SSI? Or am I misunderstanding you here?

If you do not have section SIS IDs, then you cannot refer to them. Canvas cannot use what it does not know. If you used courses.csv, then you will have course SIS IDs, so referring to them would change them if you specify the type as course. If you specify the type as section and try to pass a course SIS ID without having any section SIS IDs, then it will give you a message that it cannot find that ID.

Are you talking about CSIs rather than SSIs?

I'm trying to understand what you're talking about since it doesn't align with my understanding. If you're using courses.csv and not sections.csv then any ID would be a course SIS ID and not a section SIS ID. You do not have to create sections to enroll students in. You can enroll them directly in a course, in which case Canvas will put them in the section it automatically creates for the course. That section is referred to by the course SIS ID, not by a section sis ID. You don't have any section SIS IDs so you cannot refer to anything by them. Canvas cannot use what it does not know.

We recently migrated from Moodle and I suspect our blank SSIs are the result of importing Moodle backup files to create the equivalent courses in our Canvas instance.

I doubt this is the reason you have blank section SIS IDs. Imports don't carry over course or section IDs. Content, which is what you would be bringing over from Moodle, exists at the course level. The sections are used for enrollments. Your blank section SIS IDs are because you're not telling Canvas what the section SIS IDs are (the easiest way to do this is to use the sections.csv import). This is preventing you from controlling the sections through the SIS because Canvas cannot use what it does not know.

We’ve yet to roll over our courses for the upcoming year, but when we do, we’re likely to use the ‘Copy this course’ option in the Canvas UI so at this stage am not sure we’ll be able to avoid more blank SSIs.

Canvas does not copy sections when you use the copy this course option. Copy this course only copies content and content exists at the course level. If you want to have any sections, then you need to create the sections, preferably through the sections.csv import. You do not have to have sections, you can enroll users directly into the course. But if you want to have sections, you must create them outside of a content migration. If you want the sections to be under the control of the student information system, then you must provide a SIS ID as Canvas cannot use what it does not know.

However we may be able to avoid the need to handle blank default SSIs if we have the correct text in the section name fields before we roll over.

Having the correct text i the section name fields before you roll over will not prevent the blank section SIS IDs as sections are not transferred with a content import. Content import is done at the course level not the section level. Sections are a logical layer for enrollments. You don't have to have sections and you certainly don't have to have sections that match up with your institution's traditional sections. We combine multiple sections of a course together and it helps with filtering and identification for the instructors so we use them. We do everything through SIS imports, so we use sections.csv to specify the section SIS IDs, otherwise our SIS would not be able to control them. After all, Canvas cannot use what it does not know.

Thanks for the link. However unfortunately we don’t have an integration between our Canvas instance and our student information system, nor the capacity to build APIs at the moment.

You're not building an API, you're using the one that Canvas already has. Unless you are extremely small, you will want an integration and you will want to use the SIS Import API to automate the process. If you only process enrollments once a term, you might be able to do it through the web interface (after generating the CSV files from your SIS).

When you say ‘SIS import’, do you mean Course > Settings screen > Import course content?

No. Importing content has nothing to do with SIS IDs.

SIS IDs do not transfer with content, you need to create them. I recommend the SIS Import process using the courses.csv and sections.csv file. The documentation and formatting of the files is explained in the SIS CSV Format documentation, the SIS Imports section of the Canvas Admin Guide. Your SIS may already have an integration with Canvas (ours did not so I had to write my own).

SIS Import is under Admin > SIS Import. I'm talking about the SIS Import API that allows you to automatically send the file to Canvas so you don't have to manually upload the file. Of course, you could generate the CSV files, ZIP them together, and manually upload them without using the API.

If you do not create the SIS IDs and get them into Canvas by either manually entering them through the web interface (does not scale) or SIS Imports (recommended), then you cannot use them for anything within Canvas. Canvas cannot use what it does not know.

Also I'm not sure if you are referring to CSIs here rather than SSIs.

Both. If you are going to let Canvas automatically create things for you, then you will definitely want to use the courses.csv file. Content is stored at the course level. Without courses, you have nothing.

The use of sections is optional but highly recommended depending on your circumstances (if you have large classes, sections allow you to filter so Canvas is more responsive). You can use sections for traditional sections, but also for things like accommodations, club membership, honor students, etc. It's a logical grouping to help with enrollments. Students can be enrolled in multiple sections. If you want to use them and control them through the SIS, then the sections.csv is necessary (unless you want to do everything thing through the APIs).

The enrollments.csv file allows you to either enroll in the course or in a section. We put the teacher in the course and students into sections, but that is certainly not the only way to do things. The main thing, though, is that if you want the SIS to control things, you have to assign a SIS ID to each thing you want to control. You can modify those later through the web interface, but they have to be there in order to use them. Canvas cannot use what it does not know.

Unfortunately in my case, with blank default SSIs across multiple courses, these SSIs are not unique as they are all blank.

SIS IDs of all kinds are optional. They are only required if you want to manage the item through your SIS. However, if they are included, then they must be unique within the type (course, section, user, group, etc). If you want to manage them through the SIS, then you must tell Canvas what they are somehow. Either through a SIS import or by manually typing it in through the web interface or by using the API. Canvas cannot use what it does not know.

Could you please let me know how, in a change_sis_id.csv file, I can identify which course a section belongs to if I wanted to change that section’s SIS ID when the section’s SIS ID is blank? When I try this I get the message: “No old_id or old_integration_id given for change_sis_id".

No. You cannot tell what sections a course belongs to with the change_sis_id.csv file unless you have already put in a SIS ID for that section. Canvas cannot use what it does not know.

There are other reports available through Admin > Settings > Reports like the provisioning report that will give you the section to course relationship. But you cannot change the SIS ID through the change_sis_id.csv file unless there is already a SIS ID present. It's change_sis_id.csv, not add_sis_id.csv.

Adding SIS IDs for the section is done through the sections.csv file. However, if you have existing sections that don't belong to the course, you would have had to manually create them. Trying to add SIS section IDs now would create new sections, not associate them with the sections that have blank SIS IDs.

After reading what you've written, I'm not sure that you have sections with blank IDs. In which case and because sections are completely optional, you may not need to change them because they don't exist. Can you provide a screen capture of where you think you have a section that doesn't have a SIS ID?

Unless you went through a lot of work manually creating sections through the web interface, a more probably case is that you have sections that were automatically created for the course and that are controlled by the course SIS ID. As I explained in the first reply, they don't have a SIS ID that shows up on the course Settings > Sections tab because their SIS ID shows up on the course Settings main tab.

Canvas cannot use what it does not know, but if you created the courses through a courses.csv SIS Import, then it would have a SIS ID. If you did not create the courses through a courses.csv SIS Import but through the web interface or by copying content or creating a course shell, they're not going to have SIS IDs for the courses, which means that the section for the course won't have them either.

In that case, you could go through and edit each course from the Settings page, but you would modify the SIS ID on the Course Details tab, not on the Sections tab. But that's not a section with a blank SIS ID, it's a course with a blank SIS ID that happens to have an automatically created section that goes with it but is controlled by the course SIS ID.

You don't have to go back and change those for pre-existing courses for past terms. But if you want to control them via the SIS in the future you will need them.

If you are creating courses to act as content holders for migration purposes (aka sandbox courses) that don't actually hold students or are serving as blueprint courses, then you do not want a SIS ID on them. Your SIS wouldn't control things that don't have students, so it is perfectly okay to not have a SIS ID. We have a bunch of those and organize them by account or use the search capabilities under Account > Courses to find them.

Still, having a picture of what you're talking about would help me visualize what you have going on. I feel like I'm missing something simple, but that means that I have to write a lot in order to cover what may not be relevant.

Andrew42
Community Member

Hi James.

Thanks again for your time on this.

And thanks for the tip re changing sections via the Edit Section screen.
I believe I saw this screen initially in my first explorations of Canvas but its use didn’t quite sink in.


Essentially my issue is this:

Blank SSIs seem to be created for the default section upon enrolling users in the related course. (Previously I thought this was due to importing Moodle courses, but now it seems it’s due to Canvas creating a default section upon user enrolment in a course.)

I want to change what’s shown in the name field for a set of such existing default sections with blank SSIs.

If I want to avoid having to manually change many of these blank SSIs via Edit Sections in the UI, then I’m assuming I’ll need a way to change SSIs in bulk via csv.

I can create sections and related SSIs using sections.csv, but to change SSIs (i.e. blank ones) I need change_sis_id.csv.

If I try to upload a blank SSI in change_sis_id.csv, specifying type as ‘section’, I get the "No old_id or old_integration_id given for change_sis_id".

So it seems I can’t assign a value to or change a value in the SSI field using change_sis_id.csv if the SSI is blank.

 

-------------------------------------

As an example of trying to change the section name via csv I followed these steps and got the results below.
Am happy to retest this to make sure I didn’t miss something:

1. Create a new course and set a non-blank course_id (aka CSI)
2. Check the Sections tab in Settings and confirm that no section has been created
3. Enrol a user
  a. Confirm that no sections are available to add the user to
  b. Confirm that no section is listed against the user in the People screen
4. Check the Sections tab again and confirm that a (default) section has been created which inherits the course name but which has no SIS ID (aka SSI)
5. Attempt to change the default section name via csv
  a. Run a Provisioning report and select Sections
  b. Open the Sections report and find the new course
  c. Confirm that the default SSI (ie section_id) is blank, and that the section name is the course name (as was listed in the Sections tab)
  d. Check for CSI change’s effect on default section
     i. Change the course name and CSI and save the changes
     ii. Run a Provisioning report and select Sections
     iii. Run a Provisioning report and select Courses
     iv. Download both reports and confirm that
        1. the long_name and course_id in the Courses report have changed
        2. the section name listed in the Sections report still lists the original long_name
        3. the SSI is still blank
  e. Attempt to set a name for the default section via csv
      i. Create a sections.csv file which holds the blank SSI and the CSI from the Sections report, and adds the desired section name and status of ‘active’
      ii. Upload the sections.csv file using the SIS Import option
      iii. Confirm that you receive the “No section_id given for a section in course [CSI]” error message
   f. Attempt to set a SSI via csv so you can then set the default section name via sections.csv
      i. Create a change_sis_id.csv file which holds the blank SSI from the Sections report in the old_id field, “NewSSI” in the new_id field, and adds a type of ‘section’
      ii. Upload the change_sis_id.csv file using the SIS Import option
      iii. Confirm that you receive the “No old_id or old_integration_id given for change_sis_id” error message
6. Realise that it appears that you can’t change a default section name via csv for a section with a blank SSI
7. Return to the UI and begin changing the name for each of these default sections manually

Thanks,
Andrew

KristinL
Community Team
Community Team
Status changed to: New
 
KristinL
Community Team
Community Team
Status changed to: Added to Theme
 
Andrew42
Community Member
But you cannot change the SIS ID through the change_sis_id.csv file unless there is already a SIS ID present. It's change_sis_id.csv, not add_sis_id.csv.

As a first step, could consideration please be given again to adding a default course SIS ID if none is specified when creating courses via the UI?
Equally, could the same be done for user SIS IDs?

The SIS ID is mandatory when creating courses via courses.csv.
The SIS ID is mandatory when creating user via users.csv.
However neither the course SIS ID or user SID is mandatory when creating courses and users via the UI.

Our courses are created almost exclusively via the UI and our staff regularly forget to add these IDs when doing so.
Similarly, our staff regularly omit adding SIS IDs when manually creating user accounts.

I'm thus obliged to add both course and users SIS IDs one by one in the UI rather than in bulk via csv.
In my current round of adding these in I will be changing over 100 courses and over 200 users.

Thanks