Community Explorer

Module prerequisites not working after assignment regrade

The setup: Students have to complete weekly modules in order to access the final exam. The weekly modules are set as pre-requisites for the exam module.

The issue: If a student once completes a required module but then the instructor changes their grade, the pre-requisites are ignored completely.

Example: A TA grades a student's assignment 4 as "complete." This completes module 4 and unlocks the exam module. The student sees a green checkmark. The instructor then re-checks the assignment and realizes that it should have been marked as "incomplete". The instructor changes the grade. Under "Module progress", the module now correctly shows up as "In progress," as expected. The student sees a red incomplete mark, as expected - but they're still able to access the exam module, even though they don't fulfill the requirements anymore.

How is that possible?


Expected behavior: If a grade change leads to a module becoming incomplete, then other modules for which it is a pre-requisite should be automatically locked again. 


It's hard to understand why this is not already the case. Here's a screenshot from a test student account: you can see that modules "Week 4" and "5" are incomplete, and serve as a requirement for the "Take Home Exam" module. And yet I can open the exam module without any issues. The pre-requisites have zero effect.



Labels (1)
6 Replies
Community Coach
Community Coach

Hi @WayneXYZ,

While this isn't necessarily an answer/solution to the behavior you'd like to see, I wanted to perhaps offer a counter opinion here for the behavior.  I think it would actually be more confusing for a student to at one point see a module unlocked, then all of a sudden find it locked again.  Additionally, if the next module contained a quiz/assignment, and the student was in the middle of doing that work, but got an error on submission or something, that would be really bad as well.  Sure, Canvas could create more workflows specific for those situations, but I know how much complexity that would add into the code.  I know there is an option to relock a module if requirements are changed, but I'm not sure about extending that functionality to this scenario.

In the end, I feel like this is something where it's easier to just let a student advance in a rare mistake situation like this than try to write code to undo everything without any negative consequences for the student who really did nothing wrong themselves.


Thank you for your input, Chris. But, respectfully, I disagree completely. I don't see how it would be confusing to students to see a module locked if they don't fulfill the requirements to access it. If I stop paying for my Netflix account, I will be locked out of it. Netflix won't continue giving me free access just because I once paid them three months ago. It's the same principle.

The way this currently operates, it is confusing to everyone. The bigger issue is that this behavior is extremely counterintuitive and completely opaque to instructors. We found out about it by accident because we had students complaining to our TA that the modules were broken and unfair. Not only that, there is apparently also no way to monitor which students actually do or don't have access to particular modules, since the information shown in "module progress" is apparently completely irrelevant to actual module access. It makes me wonder what other access functions Canvas is ignoring that I don't yet know about.

The way I see it, the so-called module pre-requisites in Canvas are thus completely useless, since they do not function as pre-requisites to a module and CANNOT be reliably used to regulate module access. They're a broken one-time check that can be bypassed easily under certain common conditions, such as a grade change.

I hope other instructors are aware that they absolutely shouldn't rely on this for any modules with strict access conditions.

Hi @WayneXYZ,

just to be clear, I completely understand where you're coming from and what you'd like to happen (and why too).  It's more of the way that everything works that conflicts with what you'd like to happen.

Let me lay out a scenario in more detail though to perhaps illustrate my point more...  Let's say the teacher mistakenly grades an assignment.  A student gets the notification they they were graded, and they log in to Canvas and start the next module.  Lets then say that module has a 30 minute timed quiz.  The student starts taking that quiz.  A minute later, the teacher realizes the grading mistake and goes back and removed.changes the grade.  If that relocked the proceeding module the student was already in, what would happen to the quiz they were currently taking?  Do they get kicked out immediately?  Can they finish the quiz, but then see "access denied" because they no longer have module access?  Does the attempt even count at all? It is still logged?  Are they then given an extra attempt later?  This is only one of a possible many similar scenarios to consider, and I would guess everyone may not agree on what they would want to happen for this or other similar scenarios.

Netflix is a streaming service, so it is easier to cut off access since info is always flowing back and forth from the viewer to the server...  Canvas content is often more static, so once it's loaded to a web browser, it's just "there" and really hard to take back.  With the Netflix example, not paying the bull is clearly something the user did wrong and they can resolve since Netflix would show a "Your payment is past due" or similar error.  For the Canvas scenario laid out here (and most I can imagine), the student didn't do anything wrong on their end, so it's going to be more confusing to them to start seeing access denied or other similar errors when they won't understand the cause as it wasn't anything on their end.

This is one where I think many people are going to have different expectations, and that's okay, as long as everyone at least understands what the system actually does.  For the most part, I think it works exactly as people expect, but there are these rare cases where mistakes can let students advance further than intended.


Okay, so what happens when you change an assignment's "Available until" date while a student is working on the assignment? That's a nearly identical situation to what you are describing, and it is possible to enact that change, and it works.

As far as I know, the result of me changing the assignment date is that students who have the assignment open will be able to proceed, but will afterwards no longer be able to re-open it. This is how assignments work, and it is consistent with how I expect them to work based on the interface.

So, the hypothetical scenario you're describing has already been solved. You're presenting this issue as if it were impossible to deal with, when the solution is already present within Canvas and these edge cases are being handled on assignment level, but not on module prerequisites level.

The instructor can change any assignment's access conditions and those assignments will then stop being accesible if the conditions - such as the availability period - aren't met (as one would expect and hope, duh). It doesn't matter whether students are working on that assignment or have worked on it in the past. It will not stay available to them, because that would be completely at odds with what the words "Available until" mean.

Based on this, I would expect that the word "prerequisite" functions in the same manner. But it doesn't. From which I conclude that Canvas module pre-requisites are a broken feature that possibly has other unsolved bugs.
0 Kudos


I would say feel free to contact Canvas support and see if they'd be willing to file this as a bug.  I'm pretty sure this edge case has just been expected behavior ever since we've used Canvas, but perhaps it should be documented better in one of the guides about module requirements.

It would definitely be nice if there was more consistency in how things like this were handled across different areas of Canvas.  Your example about changing available from dates is, I believe, another area where there is not consistency between tools.  I'm 99% sure if you change the available until date for an assignment, that the student won't be able to submit the assignment after that date regardless if they already had the assignment open or not.  On the other hand, I do believe classic quizzes will let a current attempt finish, as the settings are more-or-less loaded when a quiz attempt is started (this is also why students sometimes will end up having "old" questions in their quiz attempt if a teacher modifies a question after the quiz was made available to students).

I am not saying a change is impossible to do.  Almost assuredly though, if a change is made there will be debates about what the correct behavior should be and there is likely going to be disagreement.  I'd be interested to hear what Canvas support says about this if you do file a case.  It could be that this is already on their internal radar somewhere.


@WayneXYZ and @chriscas -

I am late to this discussion, and I thought I read through everything and did not see mention of re-locking the module.  I can see where it would be nice if it were automatically done because the grade was changed on an assignment, but that would require extra work in the background for Canvas to know A grade changed on this assignment which is a requirement for this module which then needs to be rechecked.

With the current setup, the instructor would need to manually relock the module after making a grade change.  I just tried it out and it is a lot of extra steps.  If a grade is changed such that the requirement is not met, then the following procedure will re-lock the dependent module

1) After regrading the assignment, edit the module that has the pre-requisite of the previous module.  
2) on the prerequisite tab, remove the pre-requisite and update the module - re-lock the content if prompted to.
3) go back into the edit of that module and re-add the prerequisite module, click on update and re-lock the module.
4) Now the module will be locked, the unfinished option will show on the module that had the assignment grade changed, and any work done on the now locked module still shows as being successfully completed and will be as such once the module is re-unlocked.

I agree it would be nice for canvas to do it all automatically, but I am not sure how much has to go on for that to happen.