MyEdBC DistrictSync Guide
MyEdBC GDE to SpacesEDU Advanced CSV — How-to Guide
Introduction
- DistrictSync converts your MyEducation BC General Data Extracts (GDEs) into the Advanced CSV format for integration with SpacesEDU and myBlueprint+.
- It runs as a single executable file and includes a browser-based setup wizard, built-in SFTP upload, and support for automated daily scheduling.
- This article provides an overview of how to download and use the tool. For full technical documentation, run the DistrictSync app and open the Help page.
Step 1 — Download DistrictSync
Download the latest release for your platform:
Platform | File |
|---|---|
Windows | |
Linux |
The tool is a single executable — no zip to unpack, no folder structure to maintain. Place it anywhere convenient (e.g. C:\DistrictSync\DistrictSync-windows.exe).
All settings and logs are stored in ~/.districtsync/ (C:\Users\<you>\.districtsync on Windows), not next to the executable. This means you can update the .exe without losing your configuration.
Step 2 — Open the Setup Wizard (Windows)
Linux/headless? Skip to Headless configuration.
- Double-click
DistrictSync-windows.exe - Your browser will open automatically at
http://localhost:8501 - Complete the 5-step Setup Wizard:
Step 1 — File Paths: Set the folder where MyEdBC places your GDE files, and the folder where DistrictSync should write the output CSVs.
Step 2 — District Configuration: Select your district from the dropdown. This determines which mapping file and output tier is used. If your district isn't listed, contact SpacesEDU support.
Step 3 — Schedule: Optionally enable a daily automated run. We recommend 3:00 AM — after the overnight GDE export from MyEdBC has completed. DistrictSync will automatically create a Windows Task Scheduler entry (DistrictSync_Daily) for you.
Step 4 — SFTP Upload: Enter the SFTP credentials provided by SpacesEDU. Click Test Connection to verify before saving.
Step 5 — Save & Activate: Review your settings and save. After saving, the wizard becomes a management dashboard where you can edit the schedule or SFTP settings at any time without re-running the wizard.
You can return to the configuration page at any time by launching DistrictSync-windows.exe and navigating to Setup Wizard in the sidebar.Headless configuration (Linux)
On Linux or a server without a browser, configure SFTP from the command line:
# Interactive — prompts for each value (password input is hidden):
/opt/districtsync/DistrictSync --sftp-configure
# Or fully scripted:
export DISTRICTSYNC_SFTP_PASSWORD='your-password-here'
/opt/districtsync/DistrictSync --sftp-configure \
--sftp-host sftp.ca.spacesedu.com \
--sftp-user your_username \
--sftp-remote /files
unset DISTRICTSYNC_SFTP_PASSWORD
# Verify credentials:
/opt/districtsync/DistrictSync --sftp-test
Then add a crontab entry to run daily:
(crontab -l 2>/dev/null; echo "0 3 * * * /opt/districtsync/DistrictSync --sis myedbc --input /data/gde/input --output /data/gde/output --sftp # DistrictSync managed entry") | crontab -
See the Headless & Docker SFTP Setup guide within the app for Docker and secrets-manager integration.
Step 3 — Place your GDE files
The GDE files required depend on which configuration (output tier) your district uses. See Configurations below for the full breakdown.
The tool expects exact filenames (e.g. Student Schedule.txt). If your district uses different filenames, this is handled by your district's mapping configuration — see Customizing the mapping.
Configurations
DistrictSync supports three generic output tiers, selected via the --sis flag or the Setup Wizard district dropdown.
--sis myedbc — Standard rostering
Required GDE input files:
StudentDemographicInformation.txtStaffInformationEnhanced.txtEmergencyContactInformation.txtStudentSchedule.txtCourseInformation.txt
Output CSVs:
Output file | Source GDE(s) |
|---|---|
| Student Demographic Information |
| Staff Information - Enhanced |
| Emergency Contact Information |
| Student Schedule + Course Information + Staff Information - Enhanced + Student Demographic Information |
| Student Schedule + Student Demographic Information |
--sis mbp_all — Full rostering & myBlueprint+ data
Produces all 5 standard rostering files plus 2 additional myBlueprint+ files.
Required GDE input files (everything in myedbc, plus):
StudentCourseHistory.txtStudentCourseSelection.txt
Output CSVs:
Output file | Source GDE(s) |
|---|---|
| Student Demographic Information |
| Staff Information - Enhanced |
| Emergency Contact Information |
| Student Schedule + Course Information + Staff Information - Enhanced + Student Demographic Information |
| Student Schedule + Student Demographic Information |
| Course Information |
| Course Information + Student Course History + Student Course Selection |
--sis mbp_core — Core myBlueprint+ Data
For districts that only need to sync student and course data for myBlueprint+ — no family contacts or class enrollments.
Required GDE input files:
StudentDemographicInformation.txtCourseInformation.txtStudentCourseHistory.txtStudentCourseSelection.txt
Output CSVs:
Output file | Source GDE(s) |
|---|---|
| Student Demographic Information |
| Course Information |
| Course Information + Student Course History + Student Course Selection |
Field mapping reference
Students.csv — from Student Demographic Information
Advanced CSV field | MyEdBC GDE field |
|---|---|
User ID | Student Number (Pupil #) |
Student Number | Student Number (Pupil # or PEN) |
First Name | Legal First Name |
Last Name | Legal Surname |
Date of Birth | Date of Birth |
Grade | Grade (mapped to CEDS standard, e.g. |
Enroll Status | Auto-detected from Enrollment Status / Withdrawal Date |
School Code | School Number |
Homeroom | Homeroom |
PreRegSchoolCode | Next school code |
Preferred First Name | Usual First Name |
Preferred Last Name | Usual Surname |
Community Hours | (blank) |
Literacy Test Completed | (blank) |
Email Address | Student email address (or generated from a format string, e.g. |
Only active students are exported. Students with an enrollment status of Inactive or a past withdrawal date are excluded automatically.
Staff.csv — from Staff Information - Enhanced
Advanced CSV field | MyEdBC GDE field |
|---|---|
User ID | Teacher Id |
First Name | First Name |
Last Name | Last Name |
Email Address | |
Role | Teaching Staff ( |
School ID | School Number |
Family.csv — from Emergency Contact Information
Advanced CSV field | MyEdBC GDE field |
|---|---|
First Name | First Name |
Last Name | Last Name |
Email Address | |
Student User ID | Student Number |
Classes.csv — from Student Schedule + Course Information + Staff Information - Enhanced + Student Demographic Information
Classes are generated in two ways depending on grade level:
Homeroom classes (default for Grades K–7): One class is created per unique homeroom at a school. The Class ID is derived from the School Number and Homeroom Name; the class name is built from the Homeroom, Teacher Name, and Academic Year.
Subject classes (default for Grades 8–12): One class is created per course section in the student schedule. The Class ID is derived from the Master Timetable ID; the class name is built from the Teacher's Last Name, Course Title, Section, and Academic Year.
Advanced CSV field | MyEdBC GDE field |
|---|---|
Class ID | School Number + Homeroom or Master Timetable ID + Academic Year |
Name | Homeroom + Teacher Name + Academic Year or Teacher Last Name + Course Title + Section |
Grade | Grade Level |
School ID | School Number |
Start Date | Derived from academic year |
End Date | Derived from academic year |
Enrollments.csv — from Student Schedule + Student Demographic Information
Homeroom enrollments: Students and teachers in StudentDemographicInformation.txt are enrolled in their corresponding homeroom class.
Subject enrollments: Students and teachers are enrolled in subject-based classes based on StudentSchedule.txt.
Advanced CSV field | MyEdBC GDE field |
|---|---|
Class ID | Master Schedule SourceID + Academic Year |
User ID | Student Number or Teacher Id |
Role | |
School ID | School Number |
CourseInfo.csv — from Course Information (myBlueprint+ only)
Advanced CSV field | MyEdBC GDE field |
|---|---|
Course Code | Course Code |
School ID | School Number |
Course Name | Title |
Grade | Grade Level |
Credit Value | Credit Value |
Alternate Course Code, Course Description, Discipline, Department, Type, MaxGrade, IntegrationId, Year Offered | (blank) |
StudentCourses.csv — from Course Information + Student Course History + Student Course Selection (myBlueprint+ only)
Advanced CSV field | Notes |
|---|---|
Student ID | Student identifier |
Course Code | Course code |
Course Name | Course title |
Completion Date | From course history |
Final Mark | From course history |
Credits Earned | From course history |
Potential Credits Earned | From course selection |
Term Grade | From course history |
IntegrationId, Alternate Course Code | (blank) |
Step 4 — Run the tool
If you set up a schedule and SFTP account in the Setup Wizard, the tool will run automatically. You'll just need to ensure that new files are added to the input folder on the same schedule. You can also run the tool manually.
Ad-hoc run via the web UI
Launch DistrictSync-windows.exe, then navigate to the Convert page in the sidebar. Click Run Conversion. Results and any warnings are displayed on-screen.
Manual run via command line
# Windows
C:\DistrictSync\DistrictSync-windows.exe --sis myedbc --input C:\DistrictSync\input --output C:\DistrictSync\output
# Linux
/opt/districtsync/DistrictSync --sis myedbc --input /data/gde/input --output /data/gde/output
Replace myedbc with mbp_all or mbp_core , along with folder names, as needed. Add --dry-run to preview record counts without writing files. Add --sftp to upload immediately after a successful run.
Output and SFTP upload
When SFTP upload is enabled, DistrictSync automatically zips all output CSVs into a single dated archive (districtsync_YYYY-MM-DD.zip) and uploads it to the SpacesEDU SFTP server after each run. You do not need to upload files manually.
If you need to upload manually, use an SFTP client such as FileZilla or Cyberduck to connect to sftp.ca.spacesedu.com and upload the zip to your assigned folder.
Customizing the mapping
If your district uses non-standard GDE filenames or column names, use the Mapping Editor page in the web UI to adjust the configuration visually — no YAML editing required. Custom mappings are saved to ~/.districtsync/mappings/ and persist across app updates.
Viewing run history
Open the Run History page in the web UI to see a tabular log of past runs, including record counts, timing, and SFTP upload status. The underlying log file is at ~/.districtsync/etl_tool.log.
Automating GDE downloads from MyEdBC SFTP
MyEdBC can place your GDE exports on an SFTP server nightly. You can automate the download of those files into DistrictSync's input folder using WinSCP on Windows or lftp on Linux, then have DistrictSync run immediately after.
Prerequisites - Windows
- WinSCP installed on the same server as DistrictSync
- MyEdBC SFTP credentials (contact MyEdBC support)
Step 1 — Save your MyEdBC session in WinSCP
Storing credentials in a saved WinSCP session keeps them out of the script file entirely. WinSCP encrypts passwords using Windows Credential Manager.
- Open WinSCP and click New Tab > New Site
- Enter your MyEdBC SFTP connection details:
- File protocol: SFTP
- Host name:
sftp.myeducation.gov.bc.ca - User name / Password: your MyEdBC SFTP credentials
- If you don't have these credentials, contact MyEdBC support.
- Click **Save, **check **Save Password, **and name the session
MyEdBC - Click Login to connect and accept/verify the host key — WinSCP stores it with the session
- Close the connection
The session name MyEdBC is what you'll reference in the script. No credentials appear in the script file itself.
Step 2 — Create the download script
Create a plain text file, e.g. C:\DistrictSync\download_gdes.txt, with the following content. Adjust the file list to match your configuration tier (see Configurations) and set INPUTDIR to your DistrictSync input folder.
# Download GDEs from MyEdBC SFTP
# Credentials are stored in the saved WinSCP session — not in this file.
open MyEdBC
cd /download/
lcd C:\DistrictSync\input
# --- myedbc (standard rostering) ---
get StudentDemographicInformation.txt
get StaffInformationEnhanced.txt
get EmergencyContactInformation.txt
get StudentSchedule.txt
get CourseInformation.txt
# --- optional: uncomment the lines below for mbp_all or mbp_core ---
# get StudentCourseHistory.txt
# get StudentCourseSelection.txt
close
exit
- Remove the
#from the two optional lines if you are using thembp_allormbp_coreconfiguration. - Comment out the lines (add a
#) for StaffInformationEnhanced.txt, EmergencyContactInformation.txt, and StudentSchedule.txt, if you are using thembp_coreconfiguration.
Step 3 — Test the script
Open Command Prompt and run:
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/log="C:\DistrictSync\winscp.log" ^
/script="C:\DistrictSync\download_gdes.txt"
A successful run will show each file being downloaded. Check C:\DistrictSync\input (or your destination folder) to confirm the files arrived.
Step 4 — Schedule the download before DistrictSync
The download task should run before DistrictSync's daily run. If DistrictSync is scheduled at 3:00 AM, schedule the download at 2:00 AM.
- Open Task Scheduler and click Create Basic Task
- Name it
DistrictSync_GDE_Downloadand set a daily trigger (e.g. 2:00 AM) - Action: Start a program
- Program/script:
C:\Program Files (x86)\WinSCP\WinSCP.com - Add arguments:
/log="C:\DistrictSync\winscp.log" /script="C:\DistrictSync\download_gdes.txt"
- Save the task
With this in place, you'll want to schedule the DistrictSync to run after the download task, so the nightly flow is (for example):
2:00 AM WinSCP downloads GDE files from MyEdBC SFTP → C:\DistrictSync\input\
3:00 AM DistrictSync reads input\, converts to CSV, uploads zip to SpacesEDU SFTP
Scheduling Downloads - Linux
On Linux, use lftp with credentials stored in ~/.netrc — a standard file that keeps passwords out of your scripts, readable only by your user account.
1. Store credentials in ~/.netrc:
echo "machine sftp.myeducation.gov.bc.ca login your_username password your_password" >> ~/.netrc
chmod 600 ~/.netrc
2. Create the download script at e.g. /opt/districtsync/download_gdes.sh:
#!/bin/bash
INPUT_DIR="/data/gde/input"
lftp -u your_username, sftp://sftp.myeducation.gov.bc.ca <<EOF
set sftp:auto-confirm yes
set net:max-retries 3
lcd $INPUT_DIR
cd /download
get StudentDemographicInformation.txt
get StaffInformationEnhanced.txt
get EmergencyContactInformation.txt
get StudentSchedule.txt
get CourseInformation.txt
# get StudentCourseHistory.txt
# get StudentCourseSelection.txt
bye
EOF
The password is read automatically from ~/.netrc — it does not appear in the script. Uncomment the last two get lines for mbp_all or mbp_core. Make the script executable:
chmod +x /opt/districtsync/download_gdes.sh
3. Add to crontab, scheduled before the DistrictSync run:
crontab -e
0 2 * * * /opt/districtsync/download_gdes.sh >> /opt/districtsync/download.log 2>&1
0 3 * * * /opt/districtsync/DistrictSync --sis myedbc --input /data/gde/input --output /data/gde/output --sftp
Getting support
If you encounter issues:
- Check the Troubleshooting Guide in the full documentation
- Review
~/.districtsync/etl_tool.logfor error details - Contact SpacesEDU support at hello@spacesedu.com with the log file attached
Updated on: 04/06/2026
Thank you!
