Hi, Thanks for the continual development of this product and keeping it open sourced. Recently I have been testing push delivery onto iOS devices, and run into the well-known "Birthday off by one" problem in a different sense.
My understanding is that a contact entry is literally a vCard file in a column of a database row, and the birthday property will not have a time associated in storage (make sense is broad usage). When an iOS device (specifically an iPad running 7.1.x) uses Exchange ActiveSync to "synchronize" the contacts, the birthday will always be 1 day late on the device compared to the web-based interface. I noticed that Exchange ActiveSync uses a full dateTime spec in transit for the birthday field, which I suspect where the issues lie - when I uses CardDAV instead, the birthday is correct so as a work around, I could add an extra CardDAV account just for the contact sync while everything else uses Exchange ActiveSync. The vCard spec does allows for a time specification on the birthday field, but if I manually hack it into the database, nothing works correctly (Web UI will show current day for the birthday, but double clicking it will show the correct day in the Other tab) The question I have regarding this problem is - what timestamp is being sent back for the birthday field in an ActiveSync XML response, or would SOGo sent back just the date string without a time which would not have met the spec for the birthday property? I haven't been able to find any examples of a working birthday field on iOS device when using ActiveSync and I suspect it would need some reverse engineering on how iOS uses the time portion of the field in a response. The ActiveSync spec I'm referring to is this one: http://msdn.microsoft.com/en-us/library/dd299451%28v=EXCHG.80%29.aspx Another side note to this - because not all contacts have the year specified in the birthday field, and I can't use a year of 0000, I put in 1900 which seems to be floor. While this works, I have discovered that iOS device uses the year 1604 to signify the lack of year instead, and if I hacked that year directly into a contact entry using SQL commands, the iOS device will show the birthday without year Chris -- users@sogo.nu https://inverse.ca/sogo/lists