/
CSV Courses Integration

CSV Courses Integration

Ready Education integrates with CSV files to bring personalized Courses Integrations into the mobile app.

Table of Contents


 

Integration Flow


Client Requirements:

  1. Downloads course information and student enrollment information into two CSV files:

    • course-info.csv

    • student-info.csv

  2. Transfers the two files to Ready Education's servers using SSH File Transfer Protocol Server (SFTP).

The CSV data is downloaded from your SIS - Student Information System e.g. Banner, PeopleSoft, Campus Management, etc. 

Ready Education Configuration Requirements:

  1. Provides access to the SFTP Server

  2. Checks CSV files for accuracy and required fields

  3. Configures the CSV files for Courses Integrations

  4. Tests Integrations

  5. Configures for Production

Ready Education Production Integrations:

  1. After configuration for Production, the Ready Education system automatically checks and ingests new files every 4 hrs.

  2. Course Integrations and updates appear immediately to users of the mobile app after ingestion.

Downloading the CSV files


Ready Education requires two CSV files to be downloaded from your system's SIS per our requirements.

Naming Convention

The CSV files must follow a specific naming convention. The name for the CSV file used in Integrations will be:

<school_code>_<file_type>.csv

An example of a student-info file and course-info file name are:

  • mcgill_student-info.csv

  • mcgill_course-info.csv

The fields are as follows:

  • <school_code> is a string used to denote your institution - typically an abbreviation of the institution name e.g. mcgill

  • <file_type> is "course-info" for the course data and "student-info" for the student data.

The fields in the file name are separated by underscores ("_").

File Content, Text Delimiters, and Qualifiers

The CSV files must follow the below specifications to run successfully. Please ensure your files meet the below requirements before sending them through the SFTP server:

Requirements:

  • Each file should contain all the data (not a delta from the previous file)

  • Include headers and use the data field's label as the header name

    • (eg. "student_unique_id"|"course_unique_id"|"name"|"gender")

  • Text fields are separated by a pipe character  |  or comma  , 

  • The contents of any text field is enclosed within double quotes (""). We do not accept single quotes. Text using double quotes can be escaped with a backspace (e.g. "The \"New\" Normal: Post-pandemic")

Other considerations:

  • Booleans Supported: 1/0

  • If omitting data, include the column but use an empty string as the value ("").

  • We handle return carriages ie. line breaks; do not escape them using '\n'

student-info.csv and course-info.csv

For courses integrations, we require two CSV files:

  • Course Info

  • Student Info

The course-info.csv provides the list of courses offered at your institution. We recommend sending courses that span across the current semester, previous semester and next semester for the best experience. The student-info.csv associates students to the courses they are enrolled in. 

course-info.csv

We require the CSV files to include the below required information for courses. Please see the description for the expected format of the required fields. 

Title

Required

Description

Example

Title

Required

Description

Example

course_unique_id

Yes

Unique identifier that identifies the course, section, and term. Used for mapping the course object in your institution's database to course information in your Learning Management System and to the Ready Education's database. The course_unique_id is referenced in the student-info.csv to link students to their enrollments, and in the mapping to LMS (if applicable). This value is never shown to the users on the app.

"Mech101-01-Fall2019"

course_name

Yes

The full name of the course (not the course code).

"Biology 101"

course_code

Yes

Short code used to uniquely identify the course within the institution.

"BIO 101"

 

section_code

Yes

A string or number used to differentiate students taking the same course taught different by professors or taught at different times. The course code and course section code typically uniquely identify the course a student is taking.

"01-A"

semester_name

Yes

A string representing the name of the semester. Courses with the same semester name will be grouped together in student's schedules.

"Fall 2025"

external_term_id

Yes

Unique identifier for the term object. Not displayed to users.

"Fa2025" or "202570"

external_campus_id

Yes

Unique identifier for the campus. Not displayed to users.

"MC1"

external_merge_id

Yes

Unique identifier used to map a single LMS course's data to various courses.

"X-Mech101-Fall2025"

active_from

Yes

A Datetime string in the form YYYY-MM-DD of when the course starts. Also accepted: A UNIX timestamp.

"2025-08-15"

active_until

Yes

A Datetime string in the form YYYY-MM-DD of when the course ends. Also accepted: A UNIX timestamp.

"2025-12-20"

days_of_the_week

Yes

A string representing the days of the week on which the course takes place.

  • M [Monday]

  • T [Tuesday]

  • W [Wednesday]

  • H [Thursday]

  • F [Friday]

  • S [Saturday]

  • U [Sunday]

"M,W,F" or "MFW", or "" for courses without a schedule.

start_time

Yes

The time at which the course starts, in hours and minutes expressed as HHMM (0730, 1530). Also accepted: in seconds after midnight. Leave blank for online course with no start and end time.

"0900"

end_time

Yes

The time at which the course ends, in hours and minutes expressed as HHMM (0730, 1530). Also accepted: in seconds after midnight. Leave blank for online course with no start and end time.

"1100"

instructor_name

Yes

A string representing the instructor's full name. If more than one instructor exists, include both names, separated by a comma.

"Paul Markowicz"

location

Yes

The location (building name and room number). If an Online course, use "Online" or "Web".

"Thomas Great Hall 325"

course_description

Optional

A longer-form course description.

"Introduction to Biology is a study of the mechanisms ..."

latitude

Optional

The longitude value of the location where the course is taught. Displays the map location in conjunction with longitude.

"40.026498"

longitude

Optional

The latitude value of the location where the course is taught. Displays the map location in conjunction with latitude.

"-75.315285"

User friendly, readable text in the fields are recommended. Every text field sent will display to students with the exception of external_term_id and external_campus_id. For example, Course Code = Bio 101 is a better understood by students as the short name for a course. A Course Code such as BIO3521 where 3521 is a Course Reference Number (CRN) is accurate, but not intuitive to students, and therefore is not recommended.  

For Courses having Multiple Sections:

Add multiple lines to the CSV tile, one line per section per course.

For example, we have "Intro to Accounting" with three sections: A, B, and C. Sections A and B are offered at the same time Mondays and Wednesdays at 10:00am and on Fridays at 2:00pm but with different instructors. Section C offered once per week on Thursday at 6:00pm.

The most efficient format for the course-info.csv file would be a total of five (5) records:

  • one record for section A for the Monday / Wednesday class with "MW" as day of the week (combine into one record since the start time and end time are the same).

  • one record for section B for the Monday / Wednesday class with "MW" as day of the week (combine into one record since the start time and end time are the same).

  • one record for section A for Friday class with "F" as day of the week.

  • one record for section B for Friday class with "F" as day of the week.

  • one record for section C for Thursday class with "H" as day of the week

Intro to Accounting Example

 

student-info.csv

We require the CSV files to include the below required information for student info. Please see the description for the expected format of the required fields. 

Title

Required

Description

Example

Title

Required

Description

Example

student_unique_id

yes

A unique string (or number) that identifies the student.

“A1234456"

course_unique_id

yes

Unique string (or number) that identifies a course associated with this student. This Identifier is used for mapping the course objects in the course-info.csv to the user object in the student-info.csv.

"Mech101-01-Fall2025"

email

yes

Primary email on file for the student, in form of string. Used for mapping the student to the LDAP or SingleSignOn system (e.g. CAS or SAML).

“paula@email.com”

 

 

 

 

grade

no

Applicable for each course in which the student is enrolled e.g. mid-term grade or final grade. Open text field, we support numeric or letter grades.

"B+"

Associating One Student with Multiple Courses

To associate a student with multiple courses (e.g., a student taking four courses), add a line for each course enrollment in the student-info.csv. For example, a student Stephan Law is taking four courses:

  • Intro to Accounting

  • Intro to Spanish

  • Intro to Chemistry

  • Intro to Business Fundamentals

The student-info.csv file will contain 4 records:

Key Point in Mapping Integrations


CSV integrations involve multiple key mappings for a successful end-to-end integration. The integration spans systems from your authentication to the CSV files to the LMS - Learning Management System. Review these key details and reach out to your Technical Project Manager if you have questions.

Mapping from Authentication to CSV:

  • The email released in the student-info.csv must match the email released in your school's SSO (SAML, CAS, D2L, et.c) or LDAP log-in flow. Please confirm with your Technical Project Manager and with your LDAP or SSO admin to confirm the correct email to release.

Mapping between CSV files:

  • The course_unique_id field is released in both the student-info.csv and the course-info.csv files. This field must match character for character in both files.

Mapping from CSV to LMS:

If you have opted for the package that connects your CSV integrations to your Learning Management System (LMS) e.g. Canvas, Blackboard, D2L, etc., ensure this additional step is met:

  • The course_unique_id field must be mappable to your LMS. Please check with your LMS admin before configuring this field to be released.

 

Example of mapping between Banner and Blackboard:

For one of our clients, the blackboard integration releases a  path  (e.g. course unique identifying information) through their API as  11822.202010 . The identifying information is a combination of:

  • CRN (course reference number) = 11822

  • Term Code = 202010 (e.g. Spring 2020)

Sample Data from Blackboard response:

{ "HasAssignments": "true", "CourseDescription": "202010", "CourseName": "202010 - ORAL COMMUNICATION", "Path": "11822.202010", "SectionId": "11822.202010", "Instructors": [ { "Id": "12345", "UserName": "jane@readyeducation.edu", "Name": "Jane Smith" } ], "SectionMeetings": [ ], "SectionTerm": "Spring 2020", "SectionTermDescription": "Spring 2020" }

In order for Ready Education to connect the CSV course information to the LMS, the CSV file will need to release a  course_unique_id  that is mappable to the path. Here's an example:

  • course_unique_id = 11822-010-2020 Spring

This example is acceptable because:

  • CRN : 11822 is in both Blackboard and the CSV course_unique_id

  • Term Code : 202010 maps to 2020 Spring via a chart provided by the client:

    • 10 = Spring

    • 20 = Summer

    • 30 = Fall

Questions? Consult the FAQ or reach out to your Technical Project Manager.

Accessing and Sending Files to the SFTP Server


The CSV files are transferred to Ready Education using SSH File Transfer Protocol Server (SFTP).

To access the SFTP server and transfer data, your technical project manager will provide you with:

  • the hostname of the SFTP server

  • a designated folder to deliver the file

  • a username and password to gain access (option for SSH private/public key access)

Timing of imports from the SFTP server

We recommend setting up an automated nightly file transfer. Our system regularly checks for new CSV files and typically completes processing within 6 hrs of new files being transferred.

  • Minimum - At least once every 24 hrs.

  • Recommended - Up to four times a day for the best student experience. An example of when up to four times a day is beneficial is during add/drop periods where student enrollment changes frequently.

Initial Set-up and Testing


Done reviewing the Documentation? Here are the next steps on set-up and testing!

  1. Client Verification: Complete the checklist* to ensure your files are ready for integration!

  2. Send the files: Download and Transfer the student-info.csv and course-info.csv files to the Ready SFTP server.

  3. Ready Verification: Notify your Technical Project Manager. Your project manager will verify the CSV files and notify you if any edits are required.

  4. Configuration: Once the files pass verification, they will be configured in our system.

  5. Testing: Test and approve the Course Integrations.

 

*CSV Quick Checklist

The files:

  • Match the naming convention (e.g. readyed_student-info.csv and readyed_course-info.csv)

  • Include headers (eg. "student_unique_id"|"course_unique_id"|"name"|"gender")

  • Text fields are separated by a pipe character  |  or comma  , 

  • The contents of every field is enclosed within double quotes ("")

  • Consider the mapping between Authentication and CSV

  • If applicable, consider the mapping between CSV and LMS

All checked off? You're ready to send the files to Ready's SFTP servers.

 

Column Ordering:

  • Subsequent file transfers do not need to be re-configured in our system if the column ordering remains the same.

  • If you change the order of the columns, or add columns, notify your Technical Project Manager.

 


FAQs

No, we do not accept deltas from a previous file. We require each file sent to include the full data for the student-info.csv.

Yes, it is required to include a header. Here's an example for the student-info.csv:

(eg. "student_unique_id"|"unique_id"|"email")

If omitting a field, include the column but use an empty string as the value (""). See the sample CSV files for an example.

If omitting a required field, the record will be skipped. It will not break the whole integration, however all information tied to that record will not be processed.

If omitting an optional field, such as course description, the record will be processed and the integration will be successful. The mobile app will adapt and not display information that is blank.

We handle return carriages ie. line breaks in our logic. There is no need to escape them using '\n'.

 

 

 

Related content

Audiences Plus - Integration Guide
Audiences Plus - Integration Guide
More like this
Course Integration through Flat File Transfer
Course Integration through Flat File Transfer
More like this
Accessing SFTP folder using FileZilla
Accessing SFTP folder using FileZilla
More like this