 Good morning everybody. Thank you for being up right and early. Our next speaker is Alexander Nemovall to talk to us about Outlook Calvo synchronization. Alexander, it's yours. Good morning everybody. Thanks for joining this early on a Sunday morning. I would like to present you the Outlook Calvo synchronizer, the missing link in open source exchange server replacement. Let's start with the nightmare of every IT department which tries to deploy an open source group resolution because it's the integration of Outlook. Anybody tried out this little connector here? It's I cannot really recommend it. It's a three-phase to USB connector. So that's the feeling you have when you try to integrate Outlook in many open source solutions, yeah. Okay, more seriously. What are the alternatives to exchange Outlook deployments? Of course, there's the exchange active sync protocol, some open source solutions implemented that, but it's still a proprietary protocol, of course, and it also has some some limitations together with Outlook. But I believe we will hear more about that solution in the next talk from Copano. They implemented such a integration as well. Then there was open change. It's the only open source MAPI implementation on top of SAMBO 4, but unfortunately, this project got stalled as well. Even the website is down at the moment. And there are many other so-called open group resolutions which use proprietary connectors for integrating Outlook or dropped Outlook support completely like Zarafa was doing in the last years. So hopefully we can come to the rescue. We are the only open source Outlook add-in for supporting the open protocols Kaldaf and Kaldaf. We can synchronize events, tasks, and contacts between Outlook and any Kaldaf or Kaldaf server. It's under HEPL version 3 license, and it was initially developed as a master thesis project, the first proof of concept at the University of Applied Sciences, Technic convene in Vienna in the software engineering master degree program. So this was around two years ago, I believe, and nowadays we have more than 350,000 downloads in the rising community. So rather successful these days. It's based on C-Sharp and .NET 4.5 framework supported Outlook versions are starting from 2007 to the latest 2016, of course. That's also an advantage compared to Active Sync because Active Sync is only available in Outlook 2013 and newer. Surprisingly, there are still a lot of older Outlook installations around and we really got the many were asking us if we could support Outlook 2007 as well. We didn't intend to do it first, but we changed some of the code to support it as well. Let's come to the features, the main features. Of course, it's possible to have a two-way synchronization. A nice feature is a time range filtering which can drastically reduce the amount of traffic and synchronization time because it's rather useless, for example, to synchronize 3,000 events which lie five years in the past, for example. This is possible for most cult of servers, but many clients don't support it. For example, with Thunderbird Lightning, you don't have the possibility to select a time range. This is a nice feature which is also not possible with Active Sync and that kind. Of course, we have transport layer security support. You can use self-signed certificates if you allow it explicitly and client certificate authentication possible as well. We support AutoDiscovery, which is also a nice feature. You can configure it on the server side. You don't need the exact calendar resource URL like in Thunderbird, for example, so you can AutoDiscover all calendars if you just enter the server URL. It's also possible to have DNS service record lookups for discovery of the server address from the email address, for example. Regarding Google support, that's also a kind of difficult story because Google has a cult of servers working quite well, but for Cata, for Gmail contacts or tasks, Google tasks, this support is missing. So we decided to implement native Google APIs to support that as well. So you can have your own Google account type with OAuth 2 authentication and set up to sync all stuff with the Google server as well. So it's a special profile type. Another aspect is time zone support. Unfortunately, Windows uses different time zone identifiers than the standard IANA old time zone database, which can lead to interoperability issues, but we solved that with the help of mapping possibilities so you can choose manually the IANA time zone. We mapped that, or you can switch to UTC if you prefer that as well. This makes a difference, of course, for recurring events which span over daylight saving time changes, for example. That could be difficult. We also support to map the formatted appointment bodies from outlook, so the formatting doesn't get lost, but unfortunately it's not stored in HTML, so we needed to convert it from the RTF format which outlook uses internally to HTML description. We stored that on the Kaldov server as an extended alternative description attribute, so that's a nice feature as well. Here you can see advanced settings dialog. We use a rather modern WPF UI from Windows, so it integrates quite well to the outlook settings. A nice feature as well is the possibility to synchronize different server calendars into one outlook folder, and you can distinguish them by outlook categories. You can even map the server calendar colors to the outlook category colors, so you have a nice merged view of your server resources in one outlook calendar folder, for example. You can configure these advanced settings. This is, of course, hidden in the normal user view, and you have to enable the advanced settings because it's rather complicated to set everything up, but there are predefined profiles available. You can use them for existing server support. We support already some of the well-known servers with predefined settings for each of them. More fancy stuff is, for example, support for distribution lists. As far as I know, we are the only outlook add-in which supports the SOGO wheel list format. It's a special format the SOGO group where a server uses to store contact groups, and we can map them to outlook distribution lists. The members of such contact groups are linked to the individual contacts, of course, so if you change an email address there, it gets reflected to the member in the distribution list and updated there as well, of course. This is quite nice, and we plan to support more such group formats because this is a bit difficult, and we can standard the different kinds of concepts, how to store groups, and we have to try to support all different kinds of that and interop with mobile clients like Daftrade, for example, which uses also some of that group stuff for Android. As a small case study, I can show you the deployment we did in the university setup. It's quite heterogeneous environment. We try to support all possible clients, and on the server side we have a SOGO group server. Supported clients are outlook course with our add-in, then sound about lightning. On the mobile side we support Android with Daftrade. It's another open source client, which we can recommend, and, of course, there's native Cardiff and Cardiff support in all Apple devices. We also implemented the LDAP global address book. You can add that as an account type in Outlook, and with the help of that it is possible to set up global outlook free PC URL. We made a web front end, a small PHP script which allows the user to configure the free PC calendars, which should be included in the free PC URL, and with that together with the address book, you can configure a global outlook on the placeholder name is mapped to the individual contact, and you can attend the meetings and check the availability and schedule meetings with that. So it works rather well and quite similar to an exchange setup. So this is a nice feature. The internal architecture is implemented as a generic synchronization framework, so it's not limited to Cardiff or Cardiff Sync. We can sync arbitrary entities which are versioned with server entities. It's implemented internally as a state machine, a rather generic architecture, and the focus is on performance. We did some tests recently. For example, it's possible to sync 3,500 contacts initially in 90 seconds. That sounds much, but the limiting factor here is the Outlook object model, and we tested a commercial outlook at the end which nearly needed one second per entity. So this would have taken one hour for the initial sync, so it's rather faster, our solution hopefully. And subsequent things without any changes take around three seconds, so it's rather fast, hopefully, compared to other solutions. There are some challenges, of course. We are dependent on C-Sharp, iCalender and WeCut bars. Both projects here are rather abandoned, and they are desperately needed developer. Some features are missing. We forked the WeCut library already and did some bug fixes because no one else is maintaining those projects, so maybe someone can resurrect them. There are also some Outlook object model issues, differences between the com objects, Outlook users, and the .NET with the garbage collection, so we need to implement some wrappers. iCalender generally has more generic data models, so some properties can't be mapped properly. The UI should stay responsive, of course, which is difficult because Outlook by design is an SDA application and some stuff needs to be done in the main thread, otherwise you risk the data loss of the internal MAPI object model. Future work, as already mentioned, we try to support more kinds of contact groups. Here's an example of an extended address group, WeCut, with group members. We want to implement collection sync report, which should speed up the initial synchronization. Maybe there is even the possibility to implement a server-side solution natively on the exchange server. We will support attachments soon, maybe it could be linked to cloud storage, for example, next cloud API would support that, and there are a lot of other ideas and future tasks to do. So, thank you very much. You can find sources and releases on GitHub and SourceForge and more information on our web page. Here you see it's supported, server profiles, just a few of them, even more supported, of course. Thank you. Thank you very much, Alexander. Unfortunately, we're out of time, but I suggest you go to Alexander and ask your questions personally, but we need to get set up for the next speaker. So, thank you very much. If you want to leave the room, please use the door on your left-hand side so people from the right can hear you. Thank you.