I now have a full school year of data, and would like to do a rollover. Is there any guideline to do the whole process? Should I create all timetables in new school year, then rollover can go through?

If I need to create new timetables in new school year, it seems that I can only create timetable, column, then import course/class again. Is there any SQL commands can copy a full set of timetable from one school year to another?


Torrance Chinese School


I have added a Rollover guide to our documentation (which we are slowly developing!), and you can access it at:

The rollover does not include timetable, and we generally use a semi-automated approach to push our students into new classes. I will try and enable file uploads on this forum, and then add another reply here with the files that I use in this process.

Hold tight! I shall return.



My “TT Cheater” process works like this. It requires access to your backend database. It works by taking, say, students in Year 12 Biology (BI12) and moving them into Year 13 Biology (BI13).

Step 1 - get student data from the current year and export to CSV file. In this case, using the SQL query below, all Year 12, classes, whose students I am going to move into Year 13:

SELECT gibbonCourseClassPerson.gibbonPersonID, gibbonCourse.nameShort AS course, gibbonCourseClass.nameShort AS class, role FROM gibbonCourseClassPerson JOIN gibbonCourseClass ON (gibbonCourseClassPerson.gibbonCourseClassID=gibbonCourseClass.gibbonCourseClassID) JOIN gibbonCourse ON (gibbonCourseClass.gibbonCourseID=gibbonCourse.gibbonCourseID) JOIN gibbonPerson ON (gibbonCourseClassPerson.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonSchoolYearID=20 AND gibbonCourse.nameShort LIKE '%12%' AND gibbonCourse.nameShort NOT LIKE '%TUT%' AND role='Student' AND status='Full' ;

Step 2 - open the CSV file in spreadsheet software and find and replace values to increment the year group in the course (e.g. VAHL12 becomes VAHL13)

Step 3 - prep your data for import, by using a formula like the one below to create a set of insert statements (one for each row in your CSV) to create the new entries:

=CONCATENATE("INSERT INTO gibbonCourseClassPerson SET gibbonPersonID='",A1,"', gibbonCourseClassID=(SELECT gibbonCourseClassID FROM gibbonCourseClass JOIN gibbonCourse ON (gibbonCourseClass.gibbonCourseID=gibbonCourse.gibbonCourseID) WHERE gibbonCourse.nameShort='",B1,"' AND gibbonCourseClass.nameShort='",C1,"' AND gibbonSchoolYearID=21), role='Student';")

Hi Ross,

Thanks for your help. I’ll do it this weekend.