At most colleges and universities, the class schedule lives in the student information system (SIS): Omnivox, Clara or COBA in a Quebec cégep, Ellucian Banner, PeopleSoft Campus Solutions, Workday Student or Jenzabar elsewhere. Students can look it up in the portal. But they plan their week somewhere else: in Outlook, in the Microsoft Teams calendar or in Google Calendar, next to work shifts, appointments and group projects.
The gap shows up every term. In the first week, students type their timetable into their phone or take a screenshot. By week three a lab has moved, a section has been split and a Monday holiday has shifted classes, and those copies are wrong. Faculty have the same problem in reverse: their teaching load sits in the SIS, where the colleagues who book their meetings never look.
Why isn't the class schedule in everyone's calendar already?
An SIS is built to manage programs, sections, rooms and enrollment, not to write into thousands of personal mailboxes. Most offer a portal view, a printable timetable and sometimes an ICS export. Getting the schedule into a real calendar means solving four problems at once.
- Identity. The SIS knows a student by a student number; Outlook and Google Calendar know them by an institutional account. Every student and instructor has to be matched, including part-time faculty whose accounts are sometimes created days before classes start.
- Recurrence. A section that meets Tuesdays from 1 to 3 p.m. is not a simple weekly series. It skips holidays and pedagogical days, may follow another weekday's schedule on a swap day, and can have one-off make-up sessions.
- Platforms. Outlook and Teams share the Exchange Online calendar, reached through Microsoft Graph. Google Calendar has its own API and its own event identifiers. Moodle and Blackboard calendars are separate again.
- Change. The schedule is never final. Every room change, cancellation and add/drop has to reach the right event for the right people, without creating duplicates.
What does it cost when the calendar and the SIS disagree?
The first cost lands on students. A first-year student who doesn't know the campus yet and has the wrong room in their phone loses the first part of a class, sometimes the whole class. Room changes and cancellations hurt most because they happen after students have made their copy; we cover them in getting schedule changes to students in minutes.
The second cost lands on staff. "Where is my class?" questions pile up in the first two weeks, exactly when the registrar's office, academic advisors and the IT help desk are busiest with add/drop. Each question is quick to answer. The volume is not.
The third cost is quieter. When calendars are wrong often enough, students stop trusting them and go back to checking the portal every morning. At that point the calendar app has lost the job it does best: telling people where to be, with a reminder fifteen minutes before.
What doesn't work
Asking students to enter classes by hand. Some will, carefully. Many won't, and every hand-made copy freezes the schedule on the day it was typed.
A PDF or the portal view. Accurate, but it isn't where people look, it doesn't send reminders and it doesn't block time in anyone's calendar.
An ICS feed. Publishing a subscription link is the usual next step, and it is a real improvement over a PDF. Its limits are structural: the subscription is read-only, the calendar app decides when to refresh it, and it appears as a separate overlay rather than as native events. We compare the two approaches in detail in ICS feed vs calendar sync.
A home-grown script. Some IT teams write a script that creates events through Microsoft Graph. It handles the first push well. The hard part comes later: changing one occurrence of a recurring series, removing events after a drop, staying within API throttling limits during the first-week rush, and doing it all again for Google accounts. The script turns into a product nobody budgeted for.
Recurring Teams meetings created by each instructor. This works for engaged instructors, but coverage depends on each person, the invitation list doesn't follow add/drop, and if a sync is added later students end up with two entries and two reminders for the same class.
How to fix it: a seven-step method
Whatever tool you use, reliable schedule sync follows the same steps.
1. Define the class meeting record
Ask the SIS for one record per class meeting rather than a weekly pattern: section, course title, date, start and end time, room, teaching mode (in person, online, hybrid), instructors and term. Teaching mode matters more than it looks; see in-person, online or hybrid: the right room or Teams link in every event.
2. Match every person to an account
Map SIS identifiers to Microsoft Entra ID or Google Workspace accounts using a field both systems share, such as the institutional email address or the employee number. Report unmatched people instead of skipping them silently: they are the ones who will call the help desk.
3. Choose the target for each audience
| Platform | How events get there | What people see |
|---|---|---|
| Outlook (Exchange Online) | Native events through Microsoft Graph | Classes in their own calendar, with reminders and busy time |
| Microsoft Teams | Nothing extra: Teams displays the Exchange Online calendar | The same events, with a Join button for Teams meetings |
| Google Calendar | Native events through the Google Calendar API | Classes in their primary calendar |
| Moodle, Blackboard | The LMS's own interfaces | Class sessions next to due dates |
| Apple Calendar, other apps | ICS subscription | A read-only calendar refreshed by the app |
4. Write native events with a stable ID
Give each class meeting an identifier that doesn't change when its time or room does, such as a meeting ID from the SIS or the section plus the meeting's sequence number, and store it on the event. On every run, the sync looks the event up by that ID: update it if it exists, create it if it doesn't, cancel it if the SIS no longer has it. In Outlook, address single occurrences by date so that editing one session doesn't rewrite the whole series. In Google Calendar, keep a mapping table, because its event IDs are not Microsoft's.
5. Apply the academic calendar
Holidays, pedagogical days, reading week, a Wednesday that follows the Monday schedule, a make-up class on a Friday: all of these belong in the events themselves. Make-up sessions should be one-off events, not new occurrences added to the recurring series.
6. Update only what the SIS owns
Time, room, mode, meeting link and instructors belong to the SIS. Reminders, notes and colors that people add are theirs. A sync that rewrites the whole event on every run erases them, and people quickly learn not to personalize anything.
7. Pilot, then go live before week one
Start with one program or department, compare the calendars against the SIS for a week, then extend. Go live before the first day of classes: the first week is when students need the calendar most and forgive errors least.
How Calendo handles it
Calendo is the sync layer in this picture. It reads class schedules from the SIS (Omnivox, Clara, COBA, Banner, PeopleSoft Campus Solutions, Workday Student or Jenzabar), including in-person, hybrid and online sessions, and writes each class as a native event in the calendars people already use: Outlook and the Teams calendar for Microsoft 365 accounts, Google Calendar for Google Workspace accounts, and the Moodle and Blackboard calendars.
Each event carries what a student needs to show up in the right place: the room code, the teaching mode and, for online and hybrid sessions, the Teams meeting link. When the schedule changes in the SIS, the change reaches every calendar within minutes and updates the existing event in place, so nobody has to re-subscribe or delete a duplicate. For Apple Calendar and other apps, Calendo also publishes an ICS feed.
Calendo runs on Quebec-resident infrastructure, complies with Law 25 and the GDPR, and logs every action. A typical rollout takes four to six weeks. Platform details are on the Microsoft Teams, Outlook and Google Calendar pages, and supported systems are listed on the SIS integration page.
Key takeaways
- The SIS is the system of record for the timetable, but students and faculty plan their week in Outlook, Teams or Google Calendar.
- Reliable sync works per class meeting and per person, with native events written through each platform's API.
- A stable ID on every event lets room and time changes update the event in place instead of creating duplicates.
- Microsoft Teams shows the Exchange Online calendar, so one Outlook event serves both; Google Workspace accounts need their own push.
- ICS feeds stay useful for Apple Calendar and other apps, but they refresh on the app's schedule, not the institution's.
See your timetable in Outlook, Teams and Google Calendar
A 30-minute demo of class events flowing from an SIS into Outlook, Teams and Google Calendar, including a live room change.
Book a demoFrequently asked questions
Can students see their class schedule in the Microsoft Teams calendar?
Yes. The Teams calendar displays the user's Exchange Online calendar, the same one Outlook shows. When each class is written as a native event in the student's Microsoft 365 calendar, it appears in Outlook and in Teams at once, with the room, the Teams meeting link where there is one, and any later change applied to the same event.
Do we need a separate sync for Google Calendar?
If some students or faculty use Google Workspace accounts, yes. Google Calendar and Microsoft 365 are separate calendar systems with different APIs and event identifiers. A sync should write the same class meeting into each platform natively and keep a mapping between the two event IDs, so that a room change in the SIS updates both copies.
Is an ICS feed enough to publish class schedules?
For a small, stable schedule it can be. An ICS subscription is read-only and is refreshed by the calendar app on its own timetable, often hours later, so room changes and cancellations arrive late. It also appears as a separate overlay calendar rather than native events. Many institutions keep ICS for Apple Calendar and similar apps and use native sync for Outlook, Teams and Google.
Which student information systems can feed calendar sync?
Any SIS that exposes class meetings through an API, a database view or a scheduled export. Calendo reads schedules from Omnivox, Clara, COBA, Ellucian Banner, PeopleSoft Campus Solutions, Workday Student and Jenzabar. What matters most is the data itself: one record per class meeting with its date, time, room, teaching mode and instructors.
How long does it take to set up calendar sync?
For Calendo, a typical rollout takes four to six weeks, including identity matching, a pilot group and validation against the SIS. Starting about two months before the term lets the first week of classes run on synced calendars. Exact timing depends on how clean the SIS schedule data is and how many calendar platforms are involved.





