Create Assignment Group Automatically For Final Exam Data in Courses Through SIS Import

0 Kudos

I'm not sure what the Idea Subject should be named, so input is welcomed. 🙂

Here's my dilemma.  When I do a grade export across the board for all of the courses at my school, I pull the "Current Score" column as the students' final grades and import that to our SIS.

However our teachers still are required to enter their students' final exam grades directly onto our SIS.  It would be easier if I could pull those through the Canvas Grade Exports from the Admin Settings as well.  Is there a way that as an admin that I could create assignment groups for final exams in all of our courses and then I would be able to export that data, and finally upload it to my SIS?  


🔎 This idea has been archived. While this idea isn't open for comments, it is an important part of Instructure’s idea conversations and development process. Contributions like this are valuable as Instructure prioritizes work on new or existing features.

Instructure Alumni
Instructure Alumni
Status changed to: Open
Community Champion


This is a mix between a question and a feature idea. I'm not sure what the feature being requested is, though. I'm going to treat it like it's a request for information, because what you're asking for can be done now, just not through a report.

You can create an assignment group for final exams in each of your courses using the Canvas REST API. That will not allow you to use the grade export report since it doesn't include any of the assignment group grades in it. I haven't found anything other than the gradebook export that will export the individual assignment group grades, so maybe that's what your feature idea is?

You don't mention what your SIS is, but some integrations have the ability to sync individual assignment scores.  We are not using a provided SIS integration (I had to write my own), but I go through and pull the overall course grades and the grades for each assignment nightly from Canvas using the API. From there, I extract the information that I need to send to our early alert system. That same information could be repackaged into whatever form your SIS needs for its needs.

It's not the grade report and it's not done through the web interface, but it could be automated. You probably do some manipulation to the grade report before you import it into your SIS anyway. This would be just getting the information from a different source within Canvas and building the report the way you want it (or bypassing the report all together).

As part of that, you can search for assignments matching a particular title (say "Final Exam") and it wouldn't have to be in a separate assignment group. Putting things into separate assignment groups has the potential to mess up gradebooks unless every course is done the same way.

Community Contributor

Hi @James, thank you for taking a stab at this! 😀

OK so I guess I am asking for the following:

To be able to export the "final exam" (or midterm exam) grade data into the Canvas Grade Exports.  I would think that a prerequisite to doing this would first be to create the assignment group "Final Exam". 

Let me explain where this is coming from to give you a better picture.  Our SIS is "homemade" and custom designed.  Rather than purchasing an SIS such as Rediker or PowerSchool, we have a programmer on staff in our IT Dept who built it and maintains it.  I download the grades using the Canvas Grade Export feature, prepare the data to upload it to our school's SIS, and then upload it.  Although the course grade is automatically populated on our school's staff portal, the teacher still has to manually enter the final exam grade data on the portal.  Unfortunately, a teacher forgot to enter the final exam grade into Canvas directly, which caused the course grades to be inaccurate data.  And I also have to chase after a number of teachers who do in fact enter their final exam grades into  Canvas to also enter them onto the portal.  They always seem to forget that even though the course grades are uploaded, the final exam grades are not uploaded.  

I hope this helps. I am going to share the resources that you sent me with my colleague who is in charge of our SIS.  If you have any new insight after reading my response, please feel free to share it with me.  Thanks!




Community Contributor

@James can you also share information with me about the Canvas REST API?  Thanks!

Community Champion

This is a difficult feature for Canvas to implement and has a low return on investment for them. They have no way of knowing which assignment is a "Final Exam" as that varies widely in structure and name by institution. That makes it highly specific to your school and they already have the ability to turn on importing of SIS grades, which is a more general thing -- it's just that your school doesn't support it. You should seek an individual solution rather than hoping Canvas will ever implement this in their main code.

Here is the main page for the Canvas REST API.

Here are some endpoints that would be helpful.

  • List active courses in an account will get a list of all of the courses so that you can iterate through them.
  • List assignments will get a list of assignments for each course. This allows for a search_term parameter so that you could look for assignments named "Final Exam" or something similar.
  • List submissions for multiple assignments allows you to fetch the scores for each assignment (or for multiple assignments). Use the query parameter student_ids[]=all to get all of the current students. There is also a List assignment submissions for a single assignment, but the first one is more powerful.
  • List users in a course and include[]=enrollments will give you the current and final grades for each student. There are other places to get this as well, the Enrollments API is what you want to look at. This will give you the ability to automate the other report that you download and then import.

Much of this could probably be streamlined with GraphQL, which is a more modern way of querying, but there is no filtering in either approach. You will have to download all of the information and then scan through it looking for what you want. The filtering on Canvas side comes in by searching for Final Exam and that's not available in GraphQL, but getting the list of assignments with GraphQL and scanning through each of them on your end may be nearly as fast depending on how many assignments you have.

There is probably a way to enable exporting to SIS and then use that to scan for instead of the word "Final Exam" but I haven't had a chance to look into that and it may be more confusing to turn it on for just one assignment per course.