Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Info | ||
---|---|---|
| ||
IT and programming staff who wish to use the LMS Toolkit |
Overview
The following components are available in the 1.0 release:
- Canvas Extractor
- Google Classroom Extractor
- Schoology Extractor
- LMS Data Store Loader
Please see LMS Toolkit for more information about the purpose of these tools.
Note |
---|
The LMS Data Store Loader pushes CSV files, created by the extractors, into a SQL Server database. That database can be the same as an Ed-Fi ODS. However, all of the data are loaded into tables in the |
Pre-Requisites
- Python 3.9 or higherIn theory these tools should work from any operating system that supports Python 3.9.
Warning |
---|
Python 3.9.5 has a bug that causes the extractors to crash, and thus should not be used. The Alliance's testing has used 3.9.4. |
Note | ||
---|---|---|
| ||
In practice, these tools have only been tested on Windows 10; however, these tools should work from any operating system that supports Python 3.9. |
Running the Tools
from Source CodeThe source code repository has detailed information on each tool. To get started, clone the repository from https://github.com/Ed-Fi-Alliance-OSS/ LMS - Toolkit and review the main readme file for instructions on how to configure and execute the extractors from the command line.
Running the Tools from Published Packages
All of the components are published on PyPi.org so that they can be incorporated components can be installed into other Python scripts .
Installas dependencies, or they can run as stand-alone command line scripts from the source code.
Deck | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
|
Extractors
Whether you run the extractors by incorporating into an existing Python package, or by using the stand-alone command line utility from the source repository, there are a number of required and optional arguments. When running with the command line tool, simply provide the --help
option for the full set of options for each extractor.
Applies To | Argument | Required? | Purpose |
---|---|---|---|
All | Feature | No | Define which optional features are to be retrieved from the upstream system. Default: none. Available features:
Note: Sections, Section Associations, and Users are always pulled from the Source System. |
Log Level | No | Valid options are: DEBUG, INFO (default), WARNING, ERROR, CRITICAL | |
Output Directory | No | The output directory for the generated CSV files. Defaults to: ./data . | |
Sync database directory | No | Directory for storing a SQLite database that is used in support of synchronizing the data between successive executions of the tool. Defaults to: ./data . | |
Google Classroom | Classroom account | Yes | The email address of the Google Classroom admin account. |
Usage start date | No | Start date for usage data pull in YYYY-MM-DD format. | |
Usage end date | No | End date for usage data pull in YYYY-MM-DD format. | |
Schoology | Client key | Yes | Schoology client key. |
Client secret | Yes | Schoology client secret. | |
Page size | No | Page size for the paginated requests. Defaults to: 200. Max value: 200. | |
Input directory | No | Input directory for usage CSV files. | |
Canvas | Base URL | Yes | The Canvas API base url. |
Access token | Yes | The Canvas API access token | |
Start Date | Yes | Start date for the range of classes and events to include, in YYYY-MM-DD format. | |
End Date | Yes | End date for the range of classes and events to include, in YYYY-MM-DD format. |
Tip | ||
---|---|---|
To retrieve multiple features with one call to the command line interface, list them out with spaces separating the values or commas. Examples:
|
LMS Data Store Loader
Operational Concerns
Logging
TBD
Security
TBD
Scheduling
TBDPlease note that the Data Store Loader controls deployment of its own database schema. For performance optimization it also creates, drops, and renames tables during the upload process. Therefore the user account running this tool must have permission to modify the schema.
The following table lists the arguments for calling the loader utility.
Argument | Required | Purpose |
---|---|---|
DB server | yes | The destination database server/host name |
DB port | no | Optional alternate port number (default: 1433) |
DB name | yes | Name of the database to connect to on the host |
Exceptions report directory | no | Optional directory for writing out CSV files with LMS records that could not be matched to SIS records |
DB username | no | Optional database username (must either use username and password, or use integrated security) |
DB password | no | Optional database password |
Use integrated security | no | Optional flag to use integrated authentication when connecting to the database |
Use encrypted connection | no | Enables an encrypted connection to the database |
Trust server certificates | no | When encrypting the database connection, trust the server certificate. primarily used for development, not intended for production use |
Log Level | No | Valid options are: DEBUG, INFO (default), WARNING, ERROR, CRITICAL |
LMS Harmonizer
Database Tables
In addition to the tables created by the LMS Data Store Loader, in the lms
schema, the LMS Harmonizer requires access to the Ed-Fi ODS database tables and to the lmsx
extension tables. Currently the toolkit officially supports ODS/API Suite 3, version 5.2. It should work in other versions but has not been tested.
- Install the
lmsx
schema tables through one of two options:- Initdev option for a fresh ODS database:
- Copy the
EdFi.Ods.Extensions.LMSX
folder from the LMS Toolkit source code into yourEd-Fi-ODS-Implementation/Application
folder. - In the WebAPI project, add a reference to the LMSX project
- Run initdev
- Copy the
- Manual option for existing ODS databases:
- From source code, open folder
extension\EdFi.Ods.Extensions.LMSX\Artifacts\MsSql\Structure\Ods
- Run each of the scripts there, in numeric order. If using change queries, run the scripts in the Changes folder as well
- From source code, open folder
- Initdev option for a fresh ODS database:
- The Harmonizer has several stored procedures and views, which currently are only installed manually.
- From source code, open folder
extension\EdFi.Ods.Extensions.LMSX\LMS-Harmonizer.
- Run each of the scripts there, in numeric order.
- From source code, open folder
Arguments
The following table lists the arguments for calling the harmonizer utility.
Argument | Required | Purpose |
---|---|---|
DB server | yes | The destination database server/host name |
DB port | no | Optional alternate port number (default: 1433) |
DB name | yes | Name of the database to connect to on the host |
Exceptions report directory | no | Optional directory for writing out CSV files with LMS records that could not be matched to SIS records |
DB username | no | Optional database username (must either use username and password, or use integrated security) |
DB password | no | Optional database password |
Use integrated security | no | Optional flag to use integrated authentication when connecting to the database |
Use encrypted connection | no | Enables an encrypted connection to the database |
Trust server certificates | no | When encrypting the database connection, trust the server certificate. primarily used for development, not intended for production use |
Log Level | No | Valid options are: DEBUG, INFO (default), WARNING, ERROR, CRITICAL |
Analyzing Student Data Using Extractor Output
The LMS Data Store Loader pushes the extractor-created CSV files into a SQL Server database, where the data are available for use via standard SQL Server interfaces and tools. However, the CSV files can also be consumed directly to perform many interesting analyses. We have a developed a set of Jupyter notebooks that demonstrate analytics tasks that can be performed in Python using the Pandas framework, reading raw CSV files. Sample output from these notebooks is visible directly in GitHub, without needing to run the code locally:
- Filesystem Tutorial / In Danger of Failing / Missing Assignment Submissions: how to use the LMS Toolkit scripts to understand and access output files created by the extractors. Also includes two analysis scenarios - looking for students who are in danger of failing, and looking for missing assignment submissions.
- Record Counts: simply accesses all of the extracted files and provides summary count of records downloaded.
- Student Logins: simple visualization showing frequency of student logins to the LMS.
- Student Submissions: shows the count of assignments submitted per student, by status.
Operational Concerns
Logging
Deck | |||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||
|
Security
Upstream APIs
Each API has its own process for securing access. Please see the respective readme files for more information:
Data Storage
Given the LMS Toolkit deals with student data, both the filesystem and database (if uploading to SQL Server) are subject to all of the same access restrictions as the Ed-Fi ODS database.
Database Permissions
As noted in the LMS Data Store Loader section above, in addition to read and write permissions (db_datareader
and db_datawriter
roles), the database user running that tool must have permission to alter SQL schema, which is typically granted through membership in the db_ddladmin
role.
The LMS Harmonizer can be run under an account that only has read and write permissions.
Scheduling
The API's provided by these three learning management systems are well defined at a granular level. From a performance perspective, this means that the process of getting a complete set of data is very chatty and may take a long time to process. It is difficult to predict the exact impact, although generally the time will scale proportional to the number of course sections. Some of the API's also do not have any mechanism for restricting the date range or looking for changed data, resulting in each execution of the extractor re-pulling the entire data set.
If running on a daily basis, then we recommend running after normal school hours to minimize contention with network traffic to the source system. If running weekly, then it may be best to run over the weekend.
It should be trivial to call these programs from Windows Task Scheduler, Linux chron, or a workflow engine such as Apache Airflow.
Contents
Table of Contents |
---|