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.