Articles on: Admin & IT

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

DistrictSync-windows.exe

Linux

DistrictSync-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.


  1. Double-click DistrictSync-windows.exe
  2. Your browser will open automatically at http://localhost:8501
  3. 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.txt
  • StaffInformationEnhanced.txt
  • EmergencyContactInformation.txt
  • StudentSchedule.txt
  • CourseInformation.txt


Output CSVs:


Output file

Source GDE(s)

Students.csv

Student Demographic Information

Staff.csv

Staff Information - Enhanced

Family.csv

Emergency Contact Information

Classes.csv

Student Schedule + Course Information + Staff Information - Enhanced + Student Demographic Information

Enrollments.csv

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.txt
  • StudentCourseSelection.txt


Output CSVs:


Output file

Source GDE(s)

Students.csv

Student Demographic Information

Staff.csv

Staff Information - Enhanced

Family.csv

Emergency Contact Information

Classes.csv

Student Schedule + Course Information + Staff Information - Enhanced + Student Demographic Information

Enrollments.csv

Student Schedule + Student Demographic Information

CourseInfo.csv

Course Information

StudentCourses.csv

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.txt
  • CourseInformation.txt
  • StudentCourseHistory.txt
  • StudentCourseSelection.txt


Output CSVs:


Output file

Source GDE(s)

Students.csv

Student Demographic Information

CourseInfo.csv

Course Information

StudentCourses.csv

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. KG, 01)

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. {student number}@sdxx.bc.ca)


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

Email Address

Role

Teaching Staff (Yteacher, other → administrator)

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

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

student or teacher

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.


  1. Open WinSCP and click New Tab > New Site
  2. 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.
  1. Click **Save, **check **Save Password, **and name the session MyEdBC
  2. Click Login to connect and accept/verify the host key — WinSCP stores it with the session
  3. 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 the mbp_all or mbp_core configuration.
  • Comment out the lines (add a #) for StaffInformationEnhanced.txt, EmergencyContactInformation.txt, and StudentSchedule.txt, if you are using the mbp_core configuration.


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.


  1. Open Task Scheduler and click Create Basic Task
  2. Name it DistrictSync_GDE_Download and set a daily trigger (e.g. 2:00 AM)
  3. 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"
  1. 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 SFTPC:\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:


  1. Check the Troubleshooting Guide in the full documentation
  2. Review ~/.districtsync/etl_tool.log for error details
  3. Contact SpacesEDU support at hello@spacesedu.com with the log file attached


Updated on: 04/06/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!