Timetabler Automatic Import
Revision History
Revision | Author | Date | Comment |
---|---|---|---|
v1.0 | David Armstrong | 25/07/16 | First Version |
v1.1 | David Armstrong | 15/05/18 | Move to Confluence |
v1.2 | David Armstrong | 22/05/18 | Meeting / Unavailable Support. New Action Message Types |
v1.3 | David Armstrong | 02/01/19 | Yard Duty Extras Support |
v1.4 | Andrew Rose | 13/09/22 | Timetabler V10 |
Overview
The timetable automatic import extracts information directly from the ‘Timetabler’ software. Currently it supports importing the timetable, yard duties and teacher / room replacements.
Instead of exporting files out of Timetabler and into Synergetic this method allows you to select Timetabler database files to import directly. There are 2 files that are used in this process.
Timetabler database file:
This contains the timetable itself along with the students in the class and the teachers against the class. This also contains yard duties.
Timetabler Version | File Extension | File Type |
---|---|---|
8 | tdfx | Access File |
9 | tdf9 | XML File |
10 | tfx | JSON file |
Daily organiser database file:
This contains the staff extras / room replacements.
Timetabler Version | File Extension | File Type |
---|---|---|
8 | dofx | Access File |
9 | dof9 | XML File |
10 | NOT YET IMPLEMENTED - use version 9 file |
Setup Requirements:
- The automatic import first needs to be installed on the SQL server. For Timetabler Version 8 this utilises the Microsoft office Access database engine to connect to the Timetabler databases. There are specific SQL jobs that also need to be created in order for the integration to function.
- The SQL Server service account needs to have access to the folder where the database files are stored. You can view which account this is by opening SQL Configuration Manager.
- Synergetic needs to be configured to point to the Timetabler database location(s) with settings for when& how to import.
Synergetic Timetabler Configuration
Synergetic needs to be configured to import the files. This is done through Students -> Timetable Maintenance.
Timetable Config Tab
Field | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
TimetableCode | This is the code that is used when importing the timetable. This is used when creating the linked server to the database and is also populated into the staging tables to differentiate the different imports. | ||||||||||
Description | A description of the timetable being imported. This is an internal description which isn’t populated through the imports. | ||||||||||
TimetablePath | The location of the file either on the network or locally on the SQL server itself. This is the location that the SQL server service account needs access to. | ||||||||||
FileYear | The Year that we are importing into. | ||||||||||
FileSemester | The Semester / Term that we are importing into. | ||||||||||
FileType | The FileType we are importing into. | ||||||||||
ClassCampus | The ClassCampus that is being imported | ||||||||||
TimetableGroup | The TimetableGroup that is being import | ||||||||||
TimetableType | What type of import are we doing: Valid Values:
| ||||||||||
YearLevelFrom | The starting year level that we are importing. The import will only import students who are in the year levels in this range. The year level needs to be set up in Timetabler against the class details. This is imported from the following Timetabler locations:
| ||||||||||
YearLevelTo | The end year level that we are importing. The import will only import students who are in the year levels in this range. The year level needs to be set up in Timetabler against the class details. This is imported from the following Timetabler locations:
| ||||||||||
StudentLinkField | Timetabler stores a student code in the database. This is what that code represents in Synergetic and what we will be matching it to. Valid Values:
| ||||||||||
StaffLinkField | Timetabler stores a staff code in the timetable. This is what that code represents in Synergetic. Valid Values:
| ||||||||||
ImportOrderSeq | The order that we importing the files in. | ||||||||||
TimetableOperationMode | This links to luTimetableOperationMode which has various settings for the import. See below for all of the options. Examples might be as follows:
| ||||||||||
ImportStartDateTime | The date that the import will start from. If the date the import is running doesn’t fall inside this range then nothing will be imported. | ||||||||||
ImportEndDateTime | The date that the import will end. If the date the import is running doesn’t fall inside this range then nothing will be imported. | ||||||||||
EnabledFlag | Whether the import is enabled. If this is set to 0 then nothing will be imported for the schedule selected. | ||||||||||
PeriodOffset | This field allows you to set an offset on the periods that are being imported. This adjusts the timetable period that is being imported by the periodoffset. | ||||||||||
ImportMeetingsFlag | This Flag controls whether to import meetings from Timetabler. This defaults to 0 (False).
| ||||||||||
ImportUnavailableFlag | This Flag controls whether to import Teacher Unavailable records from Timetabler. This defaults to 0 (False).
|
luTimetableOperationMode
This looking table controls various options around the Automatic Import of the Timetable
Field | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
SetExistingNonAssessableFlag | If class not imported for students with matching campus and year level this class is set to non-assessable. | ||||||||
SetNewNonAssessableFlag | If there are new classes in Timetabler that are not in Synergetic this controls the Assessable flag for these classes. If there are new classes being imported from the import they are set to non-assessable. | ||||||||
SetStoppedFlag | When Ticked: If the student is in the class currently in Synergetic but no longer in the class in Timetabler then the stop date will be set with the date the timetable import was processed minus 1 day. ie if the import was processed on the 06/02/2021 then the stop date would be 05/02/2021. When Unticked: Students will remain in classes regardless of if they are no longer in the Timetabler import file. New classes will be added in and no stop dates will be updated. | ||||||||
AllowCoreClassClearFlag | If Set this will also clear Synergetic Classes that are marked as Core Classes. If not set Synergetic Classes that are marked as Core classes are not cleared. | ||||||||
ClearStaffFlag | Clear the staff against the classes in Synergetic based on the campus that is being imported. Note: this will only clear classes where the Never Clear on Timetable import and Keep Assessable Flags are unticked. | ||||||||
CreateLuRoomFlag | Creates entries in luRoom in Synergetic based on data from Timetabler if the Room Code exists in Timeabler but not in Synergetic. | ||||||||
RemoveAsterixFlag | Removes asterixes from the end of the Staff Code from Timetabler before importing. | ||||||||
UpdateFormFlag | Updates the Synergetic Student Form from Timetabler. This is imported from the following Timetabler locations:
| ||||||||
ExplodeObjectsFlag | Imports the timetable into Object bookings | ||||||||
UpdateClassDescriptionFlag | Updates the class description based on the timetable. | ||||||||
UpdateTutorFlag | Updates the Synergetic Student Tutor from Timetabler. This is imported from the following Timetabler locations:
|
Transfer Term Configuration
When you create the new term you will need to copy across the timetable configuration for the previous term.
This is done through Students → Timetable Maintenance in the Timetable Config tab. You will need to select the term you want to copy from first.
- Select Students > Timetable Maintenance tab > Timetable Config sub-tab.
- Select an existing timetable in the grid area.
- Click
The Apply Schedule window is displayed. . - Enter the Timetable code for the new timetable.
- Click
The existing timetable schedule settings are copied to the new timetable in the grid area. .
Once the term has been copied you will need to ensure update the ImportStartDateTime & ImportEndDateTime for the new term are set correctly so that they are ready to import for the new term.
You'll also need to check that the configuration options are still valid.
Import Tables
The automatic import processed the Timetabler files into work tables prior to loading them into the live tables. When the SQL jobs are run first the data is populated into the below worktables. It is then transferred to the Following Synergetic Areas:
- Timetable
- Student Classes
- Class teachers
- Timetable Substitutes
These are loaded based on these tables and the configuration options set in the timetable config. When importing the Timetable is cleared based on the following fields:
- FileType
- FileYear
- FileSemester
- ClassCampus
- TimetableGroup.
Only Classes where the Never Clear on Timetable Import & Timetable Keep Assessable are NOT set.
wkxiStudentClasses
Staging table for Student Class data before importing them into the main Synergetic tables
Field | Description | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
StudentCode | Student code from from Timetabler. This is matched to Synergetic based on the StudentLinkField This is imported from the following Timetabler locations:
| ||||||||||||||||||||||
ClassCampus | ClassCampus from the Synergetic Timetable Configuration | ||||||||||||||||||||||
ClassCode | ClassCode from the timetable. This is imported from the following Timetabler locations:
| ||||||||||||||||||||||
ClassDescription | Class Description from Timetabler This is imported from the following Timetabler locations:
The Following Configuration key affects which Name to use. If this is True then the SubjectName is used. If this is false then the ClassName is used.
| ||||||||||||||||||||||
StudentID | Mapped Synergetic ID Based on the StudentLinkField in the Timetable config and the StudentCode from Timetabler. This is mapped as part of the process. Any that are not mapped will remain as 0. | ||||||||||||||||||||||
ImportFlag | Whether the record can be imported. If the StudentCode from Timetabler doesn’t match with the relevant Student Code in Synergetic or the class code from Timetabler is too long then the record is not imported. Valid Values:
| ||||||||||||||||||||||
TimetableCode | Timetable Code from the Synergetic Timetable Configuration |
wkxiTimetable
Staging table for Timetable data before importing them into the main Synergetic tables
Field | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
TimetableGroup | Timetable Group from the Synergetic Timetable Configuration | ||||||||
DayNumber | Day Number from Timetabler This is imported from the following Timetabler locations:
| ||||||||
PeriodNumber | Period Number from Timetabler
| ||||||||
ClassCampus | ClassCampus from the Synergetic Timetable Configuration | ||||||||
ClassCode | Class Code from Timetabler. This is imported from the following Timetabler locations:
| ||||||||
StaffCode | Staff Code from Timetabler. This is matched to synergetic based on the StaffLinkField This is imported from the following Timetabler locations:
| ||||||||
RoomCode | Room Code from Timetabler This is imported from the following Timetabler locations:
| ||||||||
StaffID | SynergeticID based on the StaffLinkField and the Staff Code. | ||||||||
ImportFlag | Whether the record can be imported. If the class code Is too long then the record is not imported. | ||||||||
ClassDescription | Class Description from Timetabler. This is imported from the following Timetabler locations:
| ||||||||
TimetableCode | Timetable code from the Synergetic Timetable Configuration. | ||||||||
PeriodOffset | Period offset from the Synergetic Timetable Configuration. | ||||||||
MeetingFlag | This records has come from the meetings area in Timetabler. This is handled separately to the Academic Timetable and any staff entered against the meeting will be added. | ||||||||
UnavailableFlag | This records has come from the meetings area in Timetabler. This is handled separately to the Academic Timetable and any staff entered against as unavailable will be added. These are imported using the following Class Codes:
|
wkxiTimetableSubstitutes
Staging table for student Substitute Classes before importing them into the main Synergetic tables
Field | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
TimetableGroup | Timetable Group from the Synergetic Timetable Configuration | ||||||||
TimetableDate | Day of the substitute from Timetabler. This is imported from the following Timetabler locations:
| ||||||||
DayNumber | Day Number from Timetabler. This is imported from the following Timetabler locations:
| ||||||||
PeriodNumber | Period Number from Timetabler. This is imported from the following Timetabler locations:
| ||||||||
ClassCampus | ClassCampus from the Synergetic Timetable Configuration | ||||||||
ClassCode | Class Code from Timetabler. This is imported from the following Timetabler locations:
| ||||||||
StaffCode | Staff Code from Timetabler. This is matched to Synergetic based on the StaffLinkField from the Synergetic Timetable Configuration. This is imported from the following Timetabler locations:
| ||||||||
OriginalStaffCode | Staff Code from Timetabler. This is matched to Synergetic based on the StaffLinkField. This is imported from the following Timetabler locations:
| ||||||||
RoomCode | Room Code from Timetabler. This is imported from the following Timetabler locations:
| ||||||||
OriginalRoomCode | Original Room Code. Not supplied in Timetabler. Taken from the Synergetic Timetable. | ||||||||
StaffID | SynergeticID mapped based on the StaffLinkField and the Staff Code. | ||||||||
OriginalStaffID | SynergeticID mapped based on the StaffLinkField and the Original Staff Code. | ||||||||
ImportFlag | Whether the record can be imported. If the StaffCodes doe not match or the class code Is too long then the record is not imported. | ||||||||
TimetableCode | Timetable code from the Synergetic Timetable Configuration | ||||||||
PeriodOffset | Period offset from the Synergetic Timetable Configuration |
Configuration Keys
The following are any Configuration Keys that affect the Automatic Timetabler Import
Key1 | Key2 | Key3 | Key4 | Key5 | Value | |
---|---|---|---|---|---|---|
Timetabler | AutoImport | ClassDescription | UseSubjectName | True/False | If True this will Use the Subject Name from Timetabler for the Class Description in Synergetic. If False this will Use the Class Name from Timetabler for the Class Description in Synergetic. | |
Timetabler | AutoImport | CreateMissingTimetable | True/False | If True this will create the timetable for any classes without students. If False only classes with students will be created. | ||
Timetabler | AutoImport | YardDuties | Automap | Periods | True/False | If True this will automap distinct Yard duty periods If False this will take the timetable period for the yard duties directly from Timetabler. There can be duplicate period numbers in timetabler as they can be marked before / after a period. True is recommended for Yard duty imports. |
Timetabler | AutoImport | Timetable | AllowDuplicates | True/False | If False only one staff member is assigned to the timetable record. This is to avoid duplicates in the Staff Timetable. If True any staff members that are listed against the timetable record as assigned. | |
Timetabler | AutoImport | Extras | DaysAhead | INT | When Importing Extras this controls the number of days ahead you want to process the extras. |
Action Centre Messages
There are several Action Message Types that have been created to assist with the import process:
MessageType | Description |
---|---|
TIM_ImportExceptions_I | Timetable Import Report |
TIM_ImportFailure_A | Timetable Import Failed |
TIM_ImportExceptions_I
A report of Imported / Excluded records from the import. This will display the following:
- Number of records imported
- Any staff who could not be mapped using the settings provided
- Any Students who could not be mapped using the settings provided
- Any Timetable records that could not be imported
- Any Student Class records that could not be imported
- Any Substitute records that could not be imported
- The Import Settings used for the import
Imported Records: | |||
Type | Count | ||
---|---|---|---|
Timetable | 36 | ||
StudentClasses | 18 | ||
Substitutes | 0 |
2 Staff who couldn't be mapped by SchoolStaffCode : |
StaffCode |
Test |
TEST2 |
3 Student's who couldn't be mapped by ID: |
StudentCode |
12345 |
12345 |
12346 |
12346 |
223456 |
223456 |
38 Timetable Records that couldn't be imported: | |||
DayNumber | PeriodNumber | StaffCode | ClassCode |
---|---|---|---|
TEST | |||
TEST2 | |||
1 | 1 | Test | |
1 | 2 | Test | |
1 | 3 | Test | |
1 | 4 | Test | |
2 | 1 | Test | |
2 | 2 | Test | |
2 | 3 | Test | |
2 | 4 | Test | |
3 | 1 | Test | |
3 | 2 | Test | |
3 | 3 | Test | |
3 | 4 | Test | |
4 | 1 | Test | |
4 | 2 | Test | |
4 | 3 | Test | |
4 | 4 | Test | |
5 | 1 | Test | |
5 | 2 | Test | |
5 | 3 | Test | |
5 | 4 | Test | |
6 | 1 | Test | |
6 | 2 | Test | |
6 | 3 | Test | |
6 | 4 | Test | |
7 | 1 | Test | |
7 | 2 | Test | |
7 | 3 | Test | |
7 | 4 | Test | |
8 | 1 | Test | |
8 | 2 | Test | |
8 | 3 | Test | |
8 | 4 | Test | |
9 | 1 | Test | |
9 | 2 | Test | |
9 | 3 | Test | |
9 | 4 | Test |
2 Student Class Records that couldn't be imported: | |
StudentCode | ClassCode |
---|---|
12345 | |
223456 |
Import Settings | |
Parameter Name | Value |
---|---|
TimetableCode | 2018T1 |
TimetablePath | |
FileYear | A |
FileYear | 2018 |
FileSemester | 1 |
StudentLinkField | ID |
StaffLinkField | SchoolStaffCode |
SetStoppedFlag | True |
AllowCoreClassClearFlag | False |
ClearStaffFlag | True |
ProcessDate | 13/04/2018 |
YearLevelFrom | 0 |
YearLevelTo | 12 |
SetExistingNonAssessableFlag | False |
SetNewNonAssessableFlag | False |
RemoveAsterixFlag | False |
UpdateClassDescriptionFlag | False |
TIM_ImportFailure_A
If there is an error message when importing the Timetable this action message will be created. This will display the error message along with the Settings used to import the Timetable. See below for example":
Error Message | |
Test Error Message this is an error message. |
Import Settings | |
Parameter Name | Value |
---|---|
TimetableCode | 2018T1 |
TimetablePath | |
FileYear | A |
FileYear | 2018 |
FileSemester | 1 |
StudentLinkField | ID |
StaffLinkField | SchoolStaffCode |
SetStoppedFlag | True |
AllowCoreClassClearFlag | False |
ClearStaffFlag | True |
ProcessDate | 13/04/2018 |
YearLevelFrom | 0 |
YearLevelTo | 12 |
SetExistingNonAssessableFlag | False |
SetNewNonAssessableFlag | False |
RemoveAsterixFlag | False |
UpdateClassDescriptionFlag | False |
SQL Server Service Account
The Timetabler Automatic Import can import database files from directories either on the SQL server directly or from a network share. If you are wanting to configure the import for use with a network share the SQL Server service account must be setup with a domain account user.
In either case and in order to function the SQL server service account need read/write permission to the folder where the Timetabler database files are located.
In the example above the service account is CDA_MAIN\SQL_WS. This account would need to be configured with the following permissions to the folders where the Timetabler files are located.
Timetabler Version | Permission | Explanation |
---|---|---|
8 | R+W | Version 8 uses an Access Database file. The process needs to be able to create a lock file when accessing the file. |
9 | R | Version 9 uses an XML file so read access is sufficient and it doesn't need to create a log file when reading the XML file. |
10 | R | Version 10 uses a JSON file so read access is sufficient and it doesn't need to create a log file when reading the JSON file. |
SQL Jobs
There are 4 jobs that can be scheduled in your SQL server management studio. (This can be configured by our professional support team- please raise a case for a quote should this be required)
These are scheduled as per your requested times in the initial setup. They can be changed to a different schedule if required.
Job | Description |
---|---|
Synergetic - Timetabler Import | This imports the Timetable, Students in Classes, teachers taking classes. Depending on your setting it will update the Stop Date / Assessable flags for students not being imported in the import. It can also update the form / tutor group depending on your settings. |
Synergetic - Timetabler Yard Duties Import | This imports the Timetable data for Yard Duties. |
Synergetic - Timetabler Extras Import | This imports the Teacher & Room Replacement data. There are 2 steps in the job. The first step imports any academic Teacher & Room Replacement Data. The 2nd step imports any Yard duty Teacher & room replacement data. |
Synergetic - Timetabler Yard Duty Extras Import | This imports the Teacher & Room Replacement data for Yard Duties |
These can also be run manually through SQL Server management studio. You can right click on any of these jobs and select Start Job at Step.
Troubleshooting
No teachers against the classes
Check the StaffLinkField against Timetable Configuration for the import.
Check Work table for any staff that have a StaffID of 0SELECT * FROM wkxiTimetable WHERE StaffCode <> '' AND StaffID = 0 AND TimetableCode = '2022T1'
No Students listed against classes
Check the StudentLinkField against Timetable Configuration for the import
Check Work table for students with an ID of 0SELECT * FROM wkxiStudentClasses WHERE StudentCode <> '' AND StudentID = 0 AND TimetableCode = '2022T1'
- Particular staff members do not have classes
- Error rendering macro 'code': Invalid value specified for parameter 'firstline'
SELECT * FROM wkxiTimetable WHERE StaffCode = 'ABC' AND TimetableCode = '2022T1'
Check Synergetic to make sure the StaffCode exists
Check Synergetic to make sure the staff code exists--SchoolStaffCode SELECT * FROM Staff WHERE SchoolStaffCode = 'ABC' AND TimetableCode = '2022T1' --ID SELECT * FROM Staff WHERE CONVERT(VARCHAR(30),ID) = 'ABC' AND TimetableCode = '2022T1'
Check Synergetic to ensure the Staff Code matches the staff Code coming from Timetabler
Check that the Staff Code is not duplicated with another staff memberSELECT COUNT(*) FROM Staff WHERE SchoolStaffCode = 'ABC' AND TimetableCode = '2022T1'
- Error rendering macro 'code': Invalid value specified for parameter 'firstline'
- Particular Students do not have classes
Check Synergetic to make Sure that the Code exists for the student:
Check Synergetic to make sure the staff code exists Student Code Exists--AlternateCode SELECT * FROM Students WHERE AlternateCode = '12345' --ID SELECT * FROM Students WHERE Convert(VARCHAR(30),ID) = '12345' --TimetableCode SELECT * FROM Students WHERE TimetableCode = '12345' --PreviousSystemCode SELECT * FROM Students WHERE N16StuCode = '12345'
- Check Work Tables for the StudentCode
SELECT * FROM wkxiStudentClasses WHERE StudentCode = '12345'
- Nothing is imported
Check that the date is within the start date and stop date.
Check the enabled flag is set against each of the imports.
Check that the SQL job is enabled and scheduled
- Check which Schedules will run
SELECT tc.TimetableCode, MAX(tcsc.TimetableType), tc.FileYear, tc.FileSemester, tc.FileType, lut.SetExistingNonAssessableFlag, lut.SetNewNonAssessableFlag, lut.SetStoppedFlag, lut.AllowCoreClassClearFlag, lut.ClearStaffFlag, MAX(tcsc.StudentLinkField), MAX(tcsc.StaffLinkField), MAX(CASE WHEN tcsc.TimetableType IN ('TIMETABLER','FIRSTCLASS','TIMETABLERYD','CUSTOM','FIRSTCLASSEXT') THEN 1 ELSE 0 END) AS ImportTimetableFlag,--SELECT * MAX(CASE WHEN tcsc.TimetableType IN ('TIMETABLEREXT','CUSTOM','FIRSTCLASSEXT') THEN 1 ELSE 0 END) AS ImportExtrasFlag, MIN(tcsc.YearLevelFrom), MAX(tcsc.YearLevelTo), MAX(tcsc.ImportStartDateTime), MAX(tcsc.ImportEndDateTime), MAX(tcsc.TimetableGroup), MAX(CONVERT(INT,lut.CreateLuRoomFlag)), MAX(CONVERT(INT,lut.ExplodeObjectsFlag)), MAX(CONVERT(INT,tcsc.ImportOrderSeq)), MAX(CONVERT(INT,lut.UpdateClassDescriptionFlag)), MAX(CONVERT(INT,lut.UpdateFormFlag)), MAX(CONVERT(INT,lut.RemoveAsterixFlag)), MAX(CONVERT(INT,lut.UpdateTutorFlag)) --SELECT * FROM dbo.TimetableSchedule tcsc INNER JOIN dbo.TimetableConfig tc ON (tc.TimetableConfigSeq = tcsc.TimetableConfigSeq) LEFT JOIN dbo.luTimetableOperationMode lut ON (lut.Code = tcsc.TimetableOperationModeCode) WHERE tcsc.TimetableType IN ('TIMETABLER','FIRSTCLASS','TIMETABLEREXT','TIMETABLERYD','CUSTOM','FIRSTCLASSEXT') AND dbo.fnDateOnly(GETDATE()) >= tcsc.ImportStartDateTime AND dbo.fnDateOnly(GETDATE()) <= tcsc.ImportEndDateTime AND tcsc.EnabledFlag = 1 GROUP BY tc.TimetableCode, tc.FileYear, tc.FileSemester, tc.FileType, lut.SetExistingNonAssessableFlag, lut.SetNewNonAssessableFlag, lut.SetStoppedFlag, lut.AllowCoreClassClearFlag, lut.ClearStaffFlag ORDER BY MAX(CASE WHEN tcsc.TimetableType IN ('TIMETABLER','FIRSTCLASS','CUSTOM','FIRSTCLASSEXT') THEN 1 ELSE 0 END) DESC, MAX(CONVERT(INT,tcsc.ImportOrderSeq))
- Particular Classes are not imported
- Check the Never Clear on Timetable Import Flag against the class.
- Check the Timetable Keep Assessable Flag against the class.
- Period Numbers are out of Sync when importing Extras
- In the Daily Organiser Period numbers are stored by a code instead of a Number. This can cause issues if the period numbers are different to the codes stored in Timetabler. Please contact Support for a fix.
Apply the script - I:\SCRIPTS\DBA\Timetable\uspuwkTimetable - Update Period Numbers.sql (I: = \\zeus\Delphi\)
- In the Daily Organiser Period numbers are stored by a code instead of a Number. This can cause issues if the period numbers are different to the codes stored in Timetabler. Please contact Support for a fix.
- You can also refer to the Version 9 XML File using the following script to check the contents of the Timetabler XML:
- I:\SCRIPTS\DBA\Timetable\99_testing.sql