cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
itadmin
Community Contributor

What happens if multiple courses share sections with the same SIS ID?

Jump to solution

Hi everyone, I'm a relatively new Canvas admin for a primary school in New Zealand. I have to have Canvas up and running by February 2016 and I've got a rather interesting problem.

As our student database doesn't have an API I'm left with using the CSV function to create users and place them in courses. I've got this pretty well set up so it's as easy as saving a CSV export from the student database to a directory on my computer and Excel files looking for the CSV files in that directory automatically generate all the users and courses etc. I then upload the CSVs of those Excel files and Canvas is set to go.

A few weeks ago I was adding sections to the specialist courses I had set up. The way we've opted to set things up here is for specialist courses (those courses such as cooking, art, science, drama, music) to have all the school students enrolled in one course but have the students split into sections for grading purposes etc.

Before I created the specialist courses, all students were added to a home class course (Year 1, Year 2, etc etc) and in that course I added them to a section because there are sometimes multiple Year 1, Year 2 etc courses. The end result might be a Year 5 course containing all Year 5 students, with sections 5A, 5B etc to allow teachers to grade their own students while keeping all course material in one place.

All students in the school are added to all the specialist courses, and added to their own section within those courses. So the end result is a Music course with all students enrolled with many sections such as 1A, 2A, 2B, etc etc, 5A, 5B etc etc.

What I didn't realize is that those specialist course sections shared the same name and SIS ID as the sections in the home Year 1 - Year 8 courses. The result from that was all the students were then automatically enrolled into their sections in the specialist courses, meaning I didn't have to do anything.

However after discussing this with our Canvas team helping us with the rollout, they weren't sure whether this was a good or bad idea as they'd never heard of this being possible let alone being done before. It was a complete accident that I came across this and none of the documentation suggests this could be done or is a good idea.

So I'm asking you whether it is a good idea to have many courses sharing the same sections and corresponding SISIDs. Is it going to come back to bite me or anyone else in the future by doing this? It's not too late to change, but if it doesn't affect anything then it would save me a lot of work when adding a single new student to the system and having to manually place them in the correct specialist course sections, when I can just enroll them in their home course and section, and enroll them in the specialist course only, with the section within those courses then taking care of themselves.

Thanks in advance for any insight!

1 Solution

Accepted Solutions
James
Community Champion

 @itadmin ​,

I saw your post back in December and thought that an engineer from Canvas really needed to address it to get at the technical aspects. That didn't happen, so I'm going to give my advice, which is based off 3 years of using Canvas as a teacher and 3.5 years of programming the back end of it and working a lot with the API and digging into source code to tell how something works.

Despite what you think about the API, chances are really good that you will use the API at some point. Even though you may not write any API calls yourself, everything that is done with the Canvas app is done through API calls. The API is also how a lot of extensions to Canvas are written. If you want to obtain a list of users automatically (not through the web interface) -- you use the API. I anticipated needing the API from the beginning because our previous system was based on us hosting the database ourselves and so I could just do an SQL query to get information I needed, but we went with a hosted solution with Canvas (glad we did) and so the API is how we get that information. Depending on how many LMS solutions you've used (I've managed the backend of WebCT, Angel, and Canvas), you may not think of things like that ahead of time. Then there are things you never think of as an admin, but teachers think of because it makes their lives easier. For instance, I've written tools that use the API to allow you to manage all the dates for a course on a single page or count how many times a student has participated in a discussion.

Now, several of the API calls have matching endpoints, one for the course and one for the section. The documentation says that is designed to allow you to get specificity about a single section within a course. The idea being that teacher Smith has a different section than teacher Wilson and they need that separation. Also in SpeedGrader or the gradebook, you can limit the student list to just those in section rather than all of them. Even you mention that you wanted to use sections to make it easier to manage grades.

None of that API stuff directly answers the situation at hand, though. You're wanting to reuse a section with multiple courses. The closest experience we have to that at our school is where we have some courses that combine three subject matters into one course and they're team-taught by three instructors. We handle that by adding three teachers to the course that has one section (or two depending on how many sections of the course we run) to that course.

A concept that is probably closer to what you're describing is that of a cohort, where a group of students take the same courses. However, there is the possibility that students drop out of a cohort and so we still have one section identifier for each course, rather than one for the entire cohort and then reuse it in multiple courses.

Another clue on how to do things is provided in the Canvas documentation. The design is that a student belongs to a section and a section belongs to a course. See How are courses and sections related? . You may have multiple students in a section and you may have multiple sections in a course, but the design doesn't seem to allow for sections belonging to multiple courses.

Courses_and_Sections.png

The lack of documentation doesn't mean it won't work, though. It may mean that or it may mean that no one thought of it to document it. So we need to explore further.

When you look at the SIS import format information from the API documentation, you get what I would consider to be a pretty stern warning that the section_id must be globally unique and unchanging from the sections.csv import.

Field NameData TypeDescription
section_idtextRequired field. A unique identifier used to reference sections in the enrollments data. This identifier must not change for the account, and must be globally unique. In the user interface, this is called the SIS ID.
course_idtextRequired field. The course identifier from courses.csv
nametextRequired field. The name of the section
statusenumRequired field. active, deleted
start_datedateThe section start date. The format should be in ISO 8601: YYYY-MM-DDTHH:MM:SSZ
end_datedateThe section end date The format should be in ISO 8601: YYYY-MM-DDTHH:MM:SSZ


That causes an issue for those of us with relational database background that may be causing us to read stuff into that that isn't there. To us, we identify "globally unique" with "primary key". Sections have to belong to a course since the course_id is required. The note that it's unique tells us that you cannot use a section_id more than once in the CSV file, so that we can't list have the SP16 section as part of both MATH16 and ENGL16 courses.

Again, I don't know where that's specifically stated, perhaps because the people who wrote the documentation never assumed that anyone would try to reuse a section with multiple courses. They have cross-listed courses, but they don't have cross-listed sections.

In the enrollments.csv file, you can enroll a student in either the course or the section. But ... if you enroll a student in a course, it doesn't put it into the section you've tagged with a SIS ID, it creates a separate section with the same name as the course and then enrolls the students into that section. Again, that's not saying what you want to do can't be done, just saying it's not how it's designed to be done.

Further evidence of the course to sections to students direction of flow is that from within the Canvas web interface, the People page where you can decide who is in a section is located within the course pages. There isn't a edit section membership outside of the course construct.

When I run through the pros vs cons in my head, it's a very lopsided list. Other than having a shorter CSV file (which should be programmatically generated anyway), I can't think of any good that can come from this. If you rely on undocumented features, especially those that go against everything else that's written but happen to appear to work right now, then you're doing so at your own risk.

Our SIS doesn't have a single identifier for the course or the section, so we had to roll our own. To make the SIS IDs globally unique, we took a combination of the term, year, course, and section and rolled them into one code. We needed the section ID as part of the course ID because we have multiple BIOL 101 courses and so just saying "sp16-biol_101" isn't specific enough for a course. You may not need that level of specificity, but I would definitely incorporate year and course into the course SIS ID and then tack on a section number for the section SIS ID. So, you might use "sp16-music" and "sp16-music-5a". Do not, whatever you do, just call any SIS ID "5a" to represent group A from grade 5. Next year, you'll have a different "5a", but Canvas keeps data around for a long time.

You said you were using incorporating sections for grading purposes, but if you just call the sections "5a", then it requires (and this may be the way it is at your school) that all students in 5a have exactly the same schedule of classes. I'm not sure how things work in New Zealand, so I can't speak with authority for you, but in the United States, we might have someone who was in 5a for English but 4c for Math because they were re-mediating that one subject. A long, too long to remember clearly, time ago when I was in 5th grade, they ran a pilot program and took a group of us and moved us into accelerated work in a few subjects where the librarian managed us instead of our assigned teachers -- that's another example of where your system would fall apart.

When we started, getting best practices out of Canvas was difficult to do, so we rolled our own and hoped we got it right. Please listen to the people who have been through this before -- both those from Canvas and those who have implemented it and been using it. While thinking outside the box can be a cool thing and how innovation happens, going against the flow of how something is designed and intended to work can lead to a lot of unnecessary hardships that you can't even attempt to imagine at the beginning.

View solution in original post

13 Replies
Stef_retired
Community Team
Community Team

 @itadmin ​, this is a very intriguing discovery that I've shared with the Canvas Admins​ group to enhance its visibility.

kona
Community Coach
Community Coach

I'm also going to share this with the Canvas Developers​ group because they are the ones doing the programming on the back-end of Canvas and might have some insight into why this may or may not be a good idea to implement.

itadmin
Community Contributor

Thanks, I actually posted this to that group back in December here​. I didn't get a response so I reposted here hoping for something!

itadmin
Community Contributor

Thanks, would love if they came back with something helpful.

clong
Community Champion

Hi Jimmy,

I read your post, but I just wanted to clarify something. Are you saying you have two or more different courses in your Canvas instance with the same SIS ID or sections with the same SIS ID? Either way, in my experience this is not possible.

itadmin
Community Contributor

Hi Chris, no, the course SIS IDs are different - it's the section SIS IDs that are the same across many courses.

clong
Community Champion

Ok, thanks for the clarification. I know the you can't change the name SIS ID of a section or course in the UI to one that is already in use.

If we had sections with the same SIS IDs I'm pretty sure we would run into a problem when we go to pull our marking period grades with the API, because we do that by section #. If you're not doing that, I can't think of any other problems this would cause, but I'd give them unique IDs moving forward just to be safe and follow best practices.

itadmin
Community Contributor

Thanks again Chris, I figured an API would be the more likely thing to cause an issue. We aren't connecting to any APIs at present but if we were to in the future then, like you say, best practice is a good idea.

James
Community Champion

 @itadmin ​,

I saw your post back in December and thought that an engineer from Canvas really needed to address it to get at the technical aspects. That didn't happen, so I'm going to give my advice, which is based off 3 years of using Canvas as a teacher and 3.5 years of programming the back end of it and working a lot with the API and digging into source code to tell how something works.

Despite what you think about the API, chances are really good that you will use the API at some point. Even though you may not write any API calls yourself, everything that is done with the Canvas app is done through API calls. The API is also how a lot of extensions to Canvas are written. If you want to obtain a list of users automatically (not through the web interface) -- you use the API. I anticipated needing the API from the beginning because our previous system was based on us hosting the database ourselves and so I could just do an SQL query to get information I needed, but we went with a hosted solution with Canvas (glad we did) and so the API is how we get that information. Depending on how many LMS solutions you've used (I've managed the backend of WebCT, Angel, and Canvas), you may not think of things like that ahead of time. Then there are things you never think of as an admin, but teachers think of because it makes their lives easier. For instance, I've written tools that use the API to allow you to manage all the dates for a course on a single page or count how many times a student has participated in a discussion.

Now, several of the API calls have matching endpoints, one for the course and one for the section. The documentation says that is designed to allow you to get specificity about a single section within a course. The idea being that teacher Smith has a different section than teacher Wilson and they need that separation. Also in SpeedGrader or the gradebook, you can limit the student list to just those in section rather than all of them. Even you mention that you wanted to use sections to make it easier to manage grades.

None of that API stuff directly answers the situation at hand, though. You're wanting to reuse a section with multiple courses. The closest experience we have to that at our school is where we have some courses that combine three subject matters into one course and they're team-taught by three instructors. We handle that by adding three teachers to the course that has one section (or two depending on how many sections of the course we run) to that course.

A concept that is probably closer to what you're describing is that of a cohort, where a group of students take the same courses. However, there is the possibility that students drop out of a cohort and so we still have one section identifier for each course, rather than one for the entire cohort and then reuse it in multiple courses.

Another clue on how to do things is provided in the Canvas documentation. The design is that a student belongs to a section and a section belongs to a course. See How are courses and sections related? . You may have multiple students in a section and you may have multiple sections in a course, but the design doesn't seem to allow for sections belonging to multiple courses.

Courses_and_Sections.png

The lack of documentation doesn't mean it won't work, though. It may mean that or it may mean that no one thought of it to document it. So we need to explore further.

When you look at the SIS import format information from the API documentation, you get what I would consider to be a pretty stern warning that the section_id must be globally unique and unchanging from the sections.csv import.

Field NameData TypeDescription
section_idtextRequired field. A unique identifier used to reference sections in the enrollments data. This identifier must not change for the account, and must be globally unique. In the user interface, this is called the SIS ID.
course_idtextRequired field. The course identifier from courses.csv
nametextRequired field. The name of the section
statusenumRequired field. active, deleted
start_datedateThe section start date. The format should be in ISO 8601: YYYY-MM-DDTHH:MM:SSZ
end_datedateThe section end date The format should be in ISO 8601: YYYY-MM-DDTHH:MM:SSZ


That causes an issue for those of us with relational database background that may be causing us to read stuff into that that isn't there. To us, we identify "globally unique" with "primary key". Sections have to belong to a course since the course_id is required. The note that it's unique tells us that you cannot use a section_id more than once in the CSV file, so that we can't list have the SP16 section as part of both MATH16 and ENGL16 courses.

Again, I don't know where that's specifically stated, perhaps because the people who wrote the documentation never assumed that anyone would try to reuse a section with multiple courses. They have cross-listed courses, but they don't have cross-listed sections.

In the enrollments.csv file, you can enroll a student in either the course or the section. But ... if you enroll a student in a course, it doesn't put it into the section you've tagged with a SIS ID, it creates a separate section with the same name as the course and then enrolls the students into that section. Again, that's not saying what you want to do can't be done, just saying it's not how it's designed to be done.

Further evidence of the course to sections to students direction of flow is that from within the Canvas web interface, the People page where you can decide who is in a section is located within the course pages. There isn't a edit section membership outside of the course construct.

When I run through the pros vs cons in my head, it's a very lopsided list. Other than having a shorter CSV file (which should be programmatically generated anyway), I can't think of any good that can come from this. If you rely on undocumented features, especially those that go against everything else that's written but happen to appear to work right now, then you're doing so at your own risk.

Our SIS doesn't have a single identifier for the course or the section, so we had to roll our own. To make the SIS IDs globally unique, we took a combination of the term, year, course, and section and rolled them into one code. We needed the section ID as part of the course ID because we have multiple BIOL 101 courses and so just saying "sp16-biol_101" isn't specific enough for a course. You may not need that level of specificity, but I would definitely incorporate year and course into the course SIS ID and then tack on a section number for the section SIS ID. So, you might use "sp16-music" and "sp16-music-5a". Do not, whatever you do, just call any SIS ID "5a" to represent group A from grade 5. Next year, you'll have a different "5a", but Canvas keeps data around for a long time.

You said you were using incorporating sections for grading purposes, but if you just call the sections "5a", then it requires (and this may be the way it is at your school) that all students in 5a have exactly the same schedule of classes. I'm not sure how things work in New Zealand, so I can't speak with authority for you, but in the United States, we might have someone who was in 5a for English but 4c for Math because they were re-mediating that one subject. A long, too long to remember clearly, time ago when I was in 5th grade, they ran a pilot program and took a group of us and moved us into accelerated work in a few subjects where the librarian managed us instead of our assigned teachers -- that's another example of where your system would fall apart.

When we started, getting best practices out of Canvas was difficult to do, so we rolled our own and hoped we got it right. Please listen to the people who have been through this before -- both those from Canvas and those who have implemented it and been using it. While thinking outside the box can be a cool thing and how innovation happens, going against the flow of how something is designed and intended to work can lead to a lot of unnecessary hardships that you can't even attempt to imagine at the beginning.

View solution in original post