cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
MBlackwell_GCA
Community Participant

Bulk Edit Assignment Due Dates for District Using API

Greetings!

Due to issues our district is experiencing with grade sync from Canvas to Infinite Campus, we are planning to move from the daily sync to an "end of the semester" sync for all assignment data. 

Why? Because we have rolling enrollment for our school or students have a schedule change, we have constantly changing course start dates.

Currently, the grade passback is not working because we have students with course enrollment dates after assignment due dates. Example: Assignment was due Sept. 3rd, student course enrollment is Sept. 4th. Teacher syncs grades and we receive the error:

"ASSIGNMENT_SCORES_EXPORT - c606db49-8731-492a-b3a6-85d47fc8a865 - Cannot export Canvas submission in section xxxxx assignment xxxxx for student sxxxxx - Cannot export Canvas submission because student enrollment date is after assignment due date"

After Infnite Campus, Canvas, and Kimono support spent weeks troubleshooting, the conclusion is that we cannot use Grade Sync AND keep our due dates the way we need them. 

How do we use due dates? Assignments are not open all semester. Assignments are open for a window of time for general education and for those students receiving special education services including time and a half or double time as an extended time accommodation, the due date for those students must be just that; time + half or 2x that of the original due date. 

Intended solution? If we do not sync grades throughout the semester, we can differentiate due dates as needed. After the semester ends for assignment completion, the plan is to use API to bulk edit all assignment due dates to one date, at the end of the semester, so that grades will sync without the course enrollment date being an issue.

The problem? I am not a code writer at all. I have barely been scratching the surface of the possibilities by using simple calls such as cross-listing or changing section settings. Those are pretty straight forward. I feel like Postman and I have an understanding that we can "get er' done" as long as we KISS (keep it simple sally). 

This script: https://canvas.instructure.com/doc/api/assignments.html#method.assignments_api.bulk_update is WAAAAY out of my tiny wheel-house. I got as far as adding this in Postman and knew I was in WAY over my head. So I am reaching out to the Canvas Community to see if anyone has made this work for their institution and would take me under their wing?

Oh! Did I mention how many courses I want to edit? Only about 6,000 courses with all their assignments per course. Yep, no pressure. 😎

Bulk Edit Assignment Due Date.png

 

Thank you for reading all my words!

Michelle Blackwell

mblackwell@georgiacyber.org 

Georgia Cyber Academy

Home of over 12,000 students

 

Labels (3)
3 Replies
James
Community Champion

Michelle ( @MBlackwell_GCA )

One thing to consider is that changing all of the due dates in Canvas, without changing them back, may create issues for people wanting to copy content from one semester to reuse the next. Not that the automatic migration of dates is great, but it at least gets the dates reasonably close.

I don't use Infinite Campus, but the Canvas documentation about Infinite Campus says that it uses OneRoster to do the grade passback. This suggests that you can access Infinite Campus through an API just like you can access Canvas through their API.

Before I went changing all of the dates, I would see if it is possible to mimic the sync process yourself. That is, pull the grades from Canvas and then push them into Infinite Campus. Then you could bypass the error messages and get the grades into Infinite Campus daily as before.

MBlackwell_GCA
Community Participant

Hi James, 

Thank you for those additional thoughts that help us consider the unintended consequences that often follow solutions! Generally speaking, we don't tend to use the course content from one semester/year to the next directly from the teacher course. We try to use a general planning course for team collaboration that is copied into the teacher course when ready. This is not always the case though, with those pesky one-offs and all, so this is definitely something to consider. 

Looking into creating our own API is definitely something to work on moving forward but we do not have an API developer on our team that can create what we need. Considering that Infinite Campus, Kimono, and Canvas teams say it is not possible makes me #1 worried it really will not work and #2 make it work to prove them wrong. (I may be averse to being told "no") 😂.

 

 

@MBlackwell_GCA 

I wasn't privy to the conversation between those organizations, but I suspect they meant it wasn't possible with the existing integration. In 2017, I spoke at InstructureCon with the title Accomplish the Impossible. There are some things that truly are impossible because the information isn't exposed anywhere, but in this case, it sounds like it is.

On the other hand, writing your own implementation does require a lot of programming skills. Our SIS didn't have an integration with Canvas when we started using Canvas back in 2012, so I had to write my own. I never did get around to grade passback as we're a college and don't record individual grades in the SIS. I do download all grades for all students in all active courses each night for an early alert system we use purchased. The grades get uploaded into that system, which success coaches then have access to, so it's kind of like what you're wanting to do, just not with the same system you're using.

There are OneRoster libraries out there (I found one for Python, but there are likely implementations in different languages) that could be used to simplify the coding time.

I'm not endorsing anything here, just saying that there are likely other alternatives to going through and changing all of the due dates.

Changing the due dates may have unforeseen ramifications that don't apply to your situation, but may impact other people trying to find a solution. What if a course had a late work penalty and you changed the due date (if the grading period is over or the enrollment is concluded it won't change)? Changing the due dates will change the updated_at date for the assignment, so if you're facing an audit situation where a student claims an instructor changed the information, that last updated date won't be available anymore --- or if you're trying to see when work is done on the course, it's gone. It can create issues for people who might be doing analytics  about when students turn things in relative to the due date. Changing the dates back after the sync will still change the updated_at date. Again, those might not affect you, but for anyone trying to write a solution that multiple people could use, they would have to take those things into consideration.

There is a related feature idea you might want to comment on: Late work sync between Canvas and Infinite Campus. It seems to be tied to the issue you're experiencing.