LEARNING OPERATIONS / WORKFLOW AUTOMATION / PYTHON / CANVAS LMS
Automating Canvas Course Preparation
Python-driven workflow automation for course rollover, master placement, and operational validation
A set of Python automation tools run through Bash and the terminal to reduce repetitive Canvas course rollover work, automate approved master-course placement, validate results through logs and dashboards, and reduce dependence on manual contractor-supported preparation.
100% accuracy in assignment due-date rollover
Up to 20 hours of manual date-update work replaced per instructional designer
145 production course migrations initiated in a documented Summer 2026 run
The Problem
Preparing Canvas courses for each new term required instructional designers to repeat administrative work across course shells. Assignment due-date updates alone could take up to 20 hours per instructional designer.
Manual imports required locating the approved master, matching it to the destination shell, importing content, and reviewing the destination. Staff and 1099 contractor capacity were committed to this recurring rollover work.
Design challenge
How can recurring course-preparation tasks be automated without sacrificing quality control, traceability, or confidence in the result?
Two Automations, One Course-Preparation Workflow
William developed two complementary Python tools and designed the operating process around them.
Assignment Due-Date Rollover
Moves assignment deadlines from one academic term to the next in a coordinated run, replacing repeated manual editing.
Canvas Master Placement
Discovers approved templates and places the correct master into eligible live Canvas courses using course and term data.
How the Automation Works
01 / Terminal Configuration
Bash environment variables define the Canvas base URL and API credentials.
02 / Term Selection
One or more SIS term IDs are passed to the Python script at runtime.
03 / Master Discovery
Approved master templates are discovered in the default master term.
04 / Course Classification
Course prefixes and section codes determine the appropriate synchronous or asynchronous master.
05 / Safety Checks
Existing course-copy migrations, modules, assignments, or other content are checked before changes.
06 / Dry Run
A preview table shows proposed decisions before any migration occurs.
07 / Human Confirmation
The operator explicitly confirms before real migrations begin.
08 / Migration
Approved masters are copied into eligible destination courses.
09 / Logging and Exception Reporting
CSV logs record decisions for every course; unmatched masters receive a separate exception report.
Automation With Guardrails
The script does not blindly modify courses. Automation is paired with operational control: dry-run review and explicit confirmation precede execution.
Skip master templates
Master-template courses are intentionally excluded.
Require recognizable course data
Courses without a recognizable prefix or synchronous/asynchronous classification are skipped.
Require a matching master
Missing master prefixes or master types trigger a skip and follow-up.
Protect existing course content
Courses with content or a prior course-copy migration are skipped.
Preview before execution
A dry-run table exposes the proposed decisions.
Confirm before migration
The operator must explicitly approve the run.
My Role
William M. Drayton III designed both the automation logic and the operating process around it, connecting internal tool development with term-preparation quality control.
Learning Operations Analysis
Workflow Design
Python Development
Bash / Terminal Execution Design
Canvas API Integration
Course-Master Matching Logic
Date-Rollover Logic
Safety and Exception Logic
Validation and Reporting Design
Quality-Control Process Design
Term-Preparation Workflow Improvement
Automating Assignment Due Dates
A Python-driven rollover process replaced repeated manual date editing. The documented result was 100% accuracy in assignment due-date movement.
Instructional designers could redirect capacity toward course development, faculty support, learning design, quality improvement, and other operational priorities.
Previous process
Up to 20 hours of manual date-update work per instructional designer.
Automated result
100% accuracy in assignment due-date rollover.
Automating Course Master Placement
The master-placement script runs from the terminal and can target one or multiple SIS terms in a single execution. It identifies selected terms, discovers approved templates, extracts course prefixes, classifies synchronous and asynchronous section patterns, and matches eligible live courses to the correct master.
It avoids courses with existing content and starts Canvas course-copy migrations only for eligible destinations. Operators configure CANVAS_BASE_URL and CANVAS_TOKEN as environment variables before execution.
Example operating pattern — placeholders only
export CANVAS_BASE_URL=…
export CANVAS_TOKEN=…
python3 sync_masters_by_term.py “<SIS_TERM_ID>“
Validation Was Part of the Automation
“The script ran” is not proof that the work was successful. Structured CSV logs support review of each course decision and migration initiation. Courses without matching masters are written to a separate exception report for follow-up.
Term and course identity
SIS term, Canvas term, course ID, SIS course ID, course code, course prefix, and section code.
Decision and assigned source
Decision, assigned master type, assigned master SIS ID, and assigned master Canvas ID.
Execution and exceptions
Reason for skips or exceptions, and migration ID.
Production Run Evidence
The documented Summer 2026 production log evaluated 173 course records. These supplied counts are presented as documented results—not as a fabricated log excerpt.
The point is not just volume: explicit decisions and recorded exceptions make the run traceable. “Migrations started” indicates initiation, not a claim that every migration completed.
173
Total course records evaluated
145
Migrations started
24
Skipped: no matching master prefix
2
Skipped: course already modified
1
Master course intentionally skipped
1
Skipped: no matching master type
Turning Logs Into Operational Insight
Dashboards and log summaries were used to validate accuracy, identify exceptions, and determine where manual follow-up remained necessary. The spaces below are reserved for actual log-based evidence; no dashboard has been fabricated.
Migration Summary Dashboard
Evidence to add: evaluated courses, migrations started, skips, and exception categories.
Master Coverage View
Evidence to add: courses without a matching approved master.
Environment Comparison
Evidence to add: Beta and Production results where useful and supported by actual runs.
Term-Level Summary
Evidence to add: courses processed by term and result category.
Evidence of Execution
Reserved for authentic, redacted project artifacts. Never display API tokens, passwords, or sensitive credentials. Any script excerpt should be small and focused on the logic being demonstrated.
Terminal dry run
Screenshot placeholder: proposed decisions before execution.
Terminal confirmation
Screenshot placeholder: explicit operator approval.
Python script excerpt
Placeholder: a short excerpt from the actual script, not generated sample logic.
CSV import log
Placeholder: the original operational execution log.
Unmatched-master exception report
Placeholder: documented courses requiring follow-up.
Validation dashboard
Placeholder: a visualization built from actual logs.
Automating the Repetition, Not the Judgment
Course masters remain subject to quality review before deployment. Automation handles repeatable movement and matching; human review remains focused on approved source content and exceptions.
This reduces duplicate review while retaining human control over quality.
Results
100% Date-Rollover Accuracy
Assignment due dates were moved accurately by the date automation.
Up to 20 Hours Recovered per Instructional Designer
Manual date-editing work was replaced by automation.
145 Course Migrations Initiated
The documented Summer 2026 production run demonstrates master placement at term scale.
Structured Exception Handling
Courses without valid masters or with existing content were explicitly skipped and logged, rather than silently changed.
Manual Imports Reduced
Eligible courses received approved masters through automation instead of repeated manual import.
Reduced Contractor Dependency
The combined tools decreased reliance on 1099 support for recurring course-preparation work.
From Rollover Administration to Higher-Value Work
The value was more than faster execution. Recurring term preparation became an internally managed, repeatable process combining automation, safety checks, dry-run review, human confirmation, structured logging, exception reporting, and dashboard validation.
Instructional design capacity could move from rollover administration toward higher-value learning and operational work.
Tools & Technology
Python
Course-preparation automation and Canvas integration logic.
Bash / Terminal
Environment configuration, runtime term parameters, and script execution.
Canvas REST API
Term and course data, master discovery, destination inspection, and course-copy migration initiation.
Pandas
Structured dry-run previews and operational CSV logs.
CSV Reporting
Execution logs and unmatched-master exception reports.
Dashboards / Log Analysis
Run validation and visible exception patterns.
What This Demonstrates
Learning Operations
Workflow Automation
Python
Bash / Terminal
Canvas REST API
Learning Technology
Process Improvement
Operational Validation
Exception Handling
Quality-Control Design
Data-Informed Operations
Internal Tool Development
Automate the Repetition. Validate the Result. Preserve the Judgment.
Better learning operations combine automation with controls, evidence, and intentional human review.
NOTYARD
© 2026 NOTYARD. Built for what’s next.