Hackathon3: iCal Integration

We conducted our 3rd SI Hackathon on Feb 19th to Feb 20th. This is one of the hackathon results.


My previous Hackathon project was way too ambitious, so I decided to pick something easier this time, which would also help reduce our support load a bit. A frequent pain point is that client admins set up a review timeline, start the process, but then forget about the timeline and get taken by surprise when an important date passes, like the “editing lockdown”-date or the “360 feedback gets released”-date

There are several ways to improve visibility of scheduled dates and events, and we’re approaching this from multiple angles already, working on a visual roadmap for the dashboard and reminder notes within the application too.

But if a SI admin forgets to look into SI altogether, then those won’t help.

The solution

Enter iCal integration: My Hackathon project allows admins to subscribe to SI dates using their regular work calendar, highlighing important milestones all the time. Here’s how it works: The cycle management screens feature a new icon which exposes a URL. You can feed the URL into your calendar software, so it can always poll SI to get the latest dates and display them. The following screenshots demonstrate how this works:

Each Objective cycle has a calendar icon:

image2015-2-22 15-1-58

The popup that opens up and tells you about the URL to subscribe to for this cycle (it also allows you to subscribe to ALL SI events at once)

image2015-2-22 15-4-8

You feel this into your calendar – here’s how it works in Calendar on Mac for instance:


Resulting events in my Calendar:

image2015-2-22 15-2-48

Technical aspects

The basic integration was surprisingly simple, a library called iCal4J does all the heavy lifting. The best intro to iCal4J is this old blogpost IMO. But of course there were a few things to consider, most importantly the security aspect. Calendars need to automatically poll the latest dates from SI to keep them up to date when things change. But external calendar software shouldn’t need to know an SI admin’s password to get this data. So, a token needs to get generated each time a user wants to subscribe to SI timelines, and since the token might get into the wrong hands some day (imagine a happy admin posting it on Twitter) there also needs to be a way to delete the token again.

Required before production roll-out

While the feature works surprisingly well already, there are a few items that need to get improved significantly before we can put this into the product for real.

  • Nicer UI: The popup should look as nice as the Confluence popup,
  • All terms like “performance review” are currently hardcoded and need to follow the client’s desired wording (“performance checkin” for instance).
  • The calendar events need to get an alarm, so they pop up a day before the deadline approaches.
  • Each event also needs to get an explanation so even if you don’t have the time to look at the documentation, you know why the deadline is important.
  • Code review etc

So it’s not like we can roll this out right away, but it’s something for the time when the high season is over, maybe in May or June.


We could use this mechanism to convey other important data to the end user. For instance, we’re currently sending emails to admins and highlighting a reminder in the footer to remind them about their license expiry. This could easily get added to the calendar.