SIS Imports in batch mode not dropping enrollments as expected

Community Participant

We're onboarding with Canvas.  We’ve developed and are started running a scheduled job which generates and zips up the SIS Imports CSV data files and creates a SIS Imports job via Canvas REST API. Single term at a time. Our in-house system is the system of record for courses, sections and enrollments.  We'd like Canvas to track what we send from our SIS.  In other words I would like each term's enrollment.csv to update enrollments in Canvas such that only students (and faculty) in the enrollments.csv are enrolled in the Canvas course offering after the job completes.  Diff mode sounds more complex and a batch mode is preferred since in-house SIS is authoritative.

We're using SIS Imports API, and setting batch mode to true and submitting the batch_mode_term_id of Canvas term we're targeting.  Where "#termID#" is our SIS ID for term the job is targeting and interpolated at runtime.


After the job successfully completes the job details appear to be correct.  


I expected students dropped in our in-house SIS (and are not in new enrollments.csv file as expected) to subsequently be dropped in Canvas after SIS batch import.  But when I check our Canvas web site, the students are still enrolled.   My question is do I not understand batch mode, or am I doing something wrong when creating the SIS Imports job?