This Python script addresses common issues with importing Blackboard Ultra course export packages into Canvas by
modifying the export package (ExportFile_*.zip)
.
- Fixes Blackboard Assignments so they are correctly recognized as assignments in Canvas, preventing them from being mistakenly imported as quizzes.
- Resolves formatting issues in Blackboard Discussion Board descriptions, ensuring accurate import into Canvas.
- Preserves Discussion Boards' position within the main content of the course for proper placement and accessibility.
- Supports bulk processing of multiple archive files for efficiency.
- Provides an option to add placeholders for omitted LTI content, ensuring visual representation.
- Includes an option to prettify XML for easier manual inspection and debugging.
- Python 3.x
lxml
library: Install withpip install lxml
- Clone the repository:
git clone https://github.com/Sneakers82/bb-ultra-to-canvas-import-fixer
- Navigate to the project directory:
cd bb-ultra-to-canvas-import-fixer
- Install required libraries:
pip install -r requirements.txt
- Place Blackboard course export files (
ExportFile_*.zip
) in theIN
folder. - Run the script:
python main.py
- Processed files will be saved in the
OUT
folder with aPATCHED_
prefix.
- Input files remain unmodified: The script generates new output files, which will occupy additional storage space equal to the size of the input files. Ensure you have sufficient disk space available before processing.
- Synchronous processing: Files are processed one at a time. For large batches (e.g., thousands of files), the script may take a significant amount of time to complete.
- Error handling not yet implemented: The script may fail if it encounters a badly formatted export package. However, all files written to the output directory should be valid and properly processed.
-p
or--pretty
: Makes XML output more readable by formatting it with proper indentation and spacing.
-l
or--lti
: Re-labels LTI content in the export package with placeholders so that the items are included during the Canvas import process. Without this option, LTI content is omitted entirely during import.- The placeholders allow the LTI content to be visually represented after migration, helping you identify where the links were originally placed.
- Note: The migrated LTI links are not functional and will need to be deleted and recreated manually in Canvas.
Run the script with both options:
python main.py -p -l
- Implement asynchronous processing to reduce runtime for large batches.
- Enhance modularity for easier extension.
- Add error handling for malformed export packages.