Main Nav

I need to determine the best method for my university to automate the course schedule information for each student into their Google Calendar in real time.

I have watched the youtube video "Google Apps Extra Credit:  Google Apps + SunGard" -> http://www.youtube.com/watch?v=XwPSI2P8ps8 and understand that the Luminis Platform 5 environment has this automation built in.  However we are only at Luminis Platform 4 and have no timeline for upgrading until at least the middle of next year, so I need to find a way to do this in the interim.  It appears from the youtube video that Truman State had version 4, and what they did was use the csexport utility on Luminis and run this twice a day.  Then the .ics files are mailed to students and the students import these into Google Calendar by themselves.  If this is correct, it is not the way we would choose, as we need real-time integration - not snapshots of the data at specific times.  

We have Banner 8.4 as our ERP , Luminis 4 is the portal, and our mail will be hosted by Google.  

Does anybody know what our options are:
1.  Are there third party products that we can employ?
2.  Would we program this ourselves and, if so, where is the best place to do this?  We're thinking perhaps our best bet is to use the Provisioning API - is that correct?

I would be especially interested in hearing from anybody who has done this, regarding what they did and how successful it was


********** Participation and subscription information for this EDUCAUSE Constituent Group discussion list can be found at http://www.educause.edu/groups/.

Comments

We're in a similar environment. This is something people have asked for but we haven't had a strong push.

This small Python-based calendar importer may be of interest:

This person used the Calendar and OAuth APIs. I have not used the script myself.

You could also use the Google Apps Manager (GAM), a third party management tool, to create and assign calendars. Unfortunately it cannot import ics files.

--Adam

Message from william.eubank@uah.edu

For better or worse, we implemented this ourselves using a java based web application. Attached user interface screenshot, source code excerpts below. Biggest wrinkle was getting the recurring events correct. It's not 100% perfect, but perhaps this will get you far along. User logs into a web interface with their ldap credentials, then chooses the term to import from a dynamically populated term list from banner, enters their google account password and clicks "import". Client side is written with GWT(https://developers.google.com/web-toolkit/). Server side java: // Get banner resource object/connector BannerRes bRes = SessionAuth.getBannerRes(getServletContext()); BannerDAO dao = new BannerDAO(); // use sql to get student schedule from banner result = dao.getClassSchedule(bRes, bannerId, termCode); // some students are also faculty, merge events if (null == result) result = dao.getFacultyClassSchedule(bRes, bannerId, termCode); else result.addAll(dao.getFacultyClassSchedule(bRes, bannerId, termCode)); log.debug("Class schedules for banner id(" + bannerId + ") and term " + termCode + " found:" + result.size()); if (result.size() > 0) { ICalTools icalUtil = new ICalTools(); DateFormat dFormat = new SimpleDateFormat( "yyyyMMdd'T'HHmmss'Z'"); ArrayList holidays = null; CalendarService myService = new CalendarService( "Class-Schedule-To-Calendar"); try { myService.setUserCredentials(login,password); URL myUrl = new URL( "https://www.google.com/calendar/feeds/default/private/full"); Iterator it = result.iterator(); while (it.hasNext()) { ClassScheduleDTO cs = it.next(); if (null == holidays) holidays = dao.getHolidayDates(bRes, cs.getBeginDate(), cs.getEndDate()); if (null != cs.getBeginDate() && null != cs.getEndDate() && null != cs.getBeginTime() && null != cs.getEndTime()) { CalendarEventEntry event = new CalendarEventEntry(); event.setTitle(new PlainTextConstruct(cs .getSubjCode() + " " + cs.getCourseNumber() + " " + cs.getTitle())); event.setPrivateCopy(true); Where w = new Where(); w.setLabel(cs.getBuildingName() + " " + cs.getRoom()); w.setValueString(cs.getBuildingName() + " " + " (" + cs.getRoom() + ") " + ", 301 Sparkman Dr., Huntsville, AL 35899"); event.addLocation(w); DateTime dtBegin = icalUtil .datetimeBeginFromClassSchedule(cs); // iCal UNTIL date is non-inclusive, so add one day. DateTime dtEnd = icalUtil .datetimeEndFromClassSchedule(cs, 1); Recurrence v = new Recurrence(); String rString = "DTSTART;TZID=America/Chicago:" + dFormat.format(dtBegin.getValue()) + ";\r\n" + "RRULE:FREQ=WEEKLY;UNTIL=" + dFormat.format(dtEnd.getValue()) + ";" + "BYDAY=" + icalUtil.buildWeekdaysString(cs) + ";\r\n" + "DURATION:" + icalUtil.getEventDuration(cs) + ";\r\n" + icalUtil.buildExdateString(dtBegin, dtEnd, holidays); log.debug("Recur string:" + rString); v.setValue(rString); event.setRecurrence(v); String content = cs.getSubjCode() + " " + cs.getCourseNumber() + "\n" + "Course title: " + cs.getTitle() + "\n" + "Instructor: " + cs.getPrimaryInstructor() + "\n" + "Building: " + cs.getBuildingName() + "\n" + "Room: " + cs.getBuildingCode() + " " + cs.getRoom(); event.setContent(new PlainTextConstruct(content)); myService.insert(myUrl, event); schedulesAdded.add(cs); } --William
(Semi-joking...) You could switch to Sakai, which exports live calendar info via URL. Melissa Metz Director of Systems Engineering, Email, and Databases Columbia University Information Technology P.S. Our local directions are here: http://cuit.columbia.edu/lionmail/help/import-ncw (where NewCourseWorks is our branding for Sakai).
We have implemented a system to do that using a php script which runs every night. It uses google's api and logs in using an administrator account to update everyone's calendar. We include student and faculty class schedules as well as faculty office hours. We've been using the same script since at least 2010.

We are a datatel school, but this script gets the data from a mysql database (which gets updated nightly from datatel.) It should be pretty easy to adapt to any SQL based database that php can access.

We also created a system to take backups of everyone's calendars each night. (It saves them as ics files) We had a few too many people accidently wipe out their calendar using some misconfigured client.


If you are interested in getting a copy of our code, send me an e-mail at sommere@gac.edu

Ethan


On 07/11/2012 02:07 PM, Lenni Sauve wrote:
I need to determine the best method for my university to automate the course schedule information for each student into their Google Calendar in real time.

I have watched the youtube video "Google Apps Extra Credit:  Google Apps + SunGard" -> http://www.youtube.com/watch?v=XwPSI2P8ps8 and understand that the Luminis Platform 5 environment has this automation built in.  However we are only at Luminis Platform 4 and have no timeline for upgrading until at least the middle of next year, so I need to find a way to do this in the interim.  It appears from the youtube video that Truman State had version 4, and what they did was use the csexport utility on Luminis and run this twice a day.  Then the .ics files are mailed to students and the students import these into Google Calendar by themselves.  If this is correct, it is not the way we would choose, as we need real-time integration - not snapshots of the data at specific times.  

We have Banner 8.4 as our ERP , Luminis 4 is the portal, and our mail will be hosted by Google.  

Does anybody know what our options are:
1.  Are there third party products that we can employ?
2.  Would we program this ourselves and, if so, where is the best place to do this?  We're thinking perhaps our best bet is to use the Provisioning API - is that correct?

I would be especially interested in hearing from anybody who has done this, regarding what they did and how successful it was


********** Participation and subscription information for this EDUCAUSE Constituent Group discussion list can be found at http://www.educause.edu/groups/.



-- Ethan Sommer Associate Director of Core Services Gustavus Technology Services 507-933-7042 ********** Participation and subscription information for this EDUCAUSE Constituent Group discussion list can be found at http://www.educause.edu/groups/.

We have php scripts that use Zend Libraries to update Google calendar that we use for other things. It gives you easy to use constructs to do a lot of things including specifying alternate calendars in a user's account to post the events, OAuth support etc. You could easily create a view in Banner that has the required info and write a PHP script to pull it periodically and update on the  Google calendar side.

When you do this kind of stuff, deleting all events on Google calendar side and reloading all new events is not a good idea. In my scripts, I keep an intermediate table that is used to decide which events actually needs deletion or updates. Deleting events from Google Calendar "really" doesn't delete them and that is a whole another story.

-- Ravi
CIO, Wellesley College
Google Voice - 860-631-RAVI



At Abilene Christian University, we have used the Google Calendar API for .NET to create a series of tools for managing and using course calendars:
  1. A job is run manually before the beginning of each term to create calendars for every course.  This job automatically grants faculty manage access for the calendars and subscribes all students to the calendar.  Additionally, the job creates default events for every meeting day/time that the class meets during the course of the term.
  2. We provide a web admin so that managers of our Helpdesk can update permissions and insure that calendars are created for individual courses (we have some instances where courses are added or changed after the initial run).
  3. We also have a job that will run regularly to handle student enrollment updates (adds and drops) during the course of the semester.
  4. We provide a web tool for faculty to bulk update and create events on their course calendars from a single screen.  This came about as a result of feedback from faculty members who didn't want to have all of the extra clicks to manage events from the standard Google Calendar interface.
  5. We automatically display non-default course calendar events the logged-in version of our mobile site so that students can quickly see what course events they have for day and the next week.
Hab Adkins

Recommend

Close
Close


EDUCAUSE Connect
View dates and locations

Events for all Levels and Interests

Whether you're looking for a conference to attend face-to-face to connect with peers, or for an online event for team professional development, see what's upcoming.

Close

EDUCAUSE Institute
Leadership/Management Programs
Explore More

Career Center


Leadership and Management Programs

EDUCAUSE Institute
Project Management

 

 

Jump Start Your Career Growth

Explore EDUCAUSE professional development opportunities that match your career aspirations and desired level of time investment through our interactive online guide.

 

Close
EDUCAUSE organizes its efforts around three IT Focus Areas

 

 

Join These Programs If Your Focus Is

Close

Get on the Higher Ed IT Map

Employees of EDUCAUSE member institutions and organizations are invited to create individual profiles.
 

 

Close

2014 Strategic Priorities

  • Building the Profession
  • IT as a Game Changer
  • Foundations


Learn More >

Uncommon Thinking for the Common Good™

EDUCAUSE is the foremost community of higher education IT leaders and professionals.