VCard and ICal support

Abstract: VCard and ICal are definitions of text-based PIM information in files. In OX terms, VCard defines contact data, while ICal defines both Tasks and Appointments. ICal internally identifies itself as VCalendar 2.0, which illustrates who closely related both protocols are. That is why questions on both formats are answered in one article.

This article deals with features that are in VCard and ICal but are problematic within the OX. This also applies to CardDAV and CalDAV, because those services are also based on these two formats.

RRULE: "The second last sunday in a month"

ICal allows you to define an appointment which occurs "the second last sunday every month". OX simply does not. We only support counting from the beginning of a month, but not from the end. Since a month might have either four or five occurrences of a certain day, it is not possible for us to simply convert this.

Behavior: An ICal appointment containing this property is not imported.

See RFC 2445, 4.8.5.4 Recurrence Rule

ALARM: "Remind me four times"

ICal allows you to set an alarm which should be repeated four times before ending. This might be interesting for an alarm clock, but for a web-based tool with will be used asynchronous in most cases, we handle this differently. Therefore, OX does not support an ALARM with a REPEAT property.

Behavior: This property is ignored.

Reference: RFC 2445, 4.8.6.2 Repeat count

Limited amount of fields

The basic problem: Open-Xchange only supports a fixed set of fields. VCards and ICals, on the other hand, allow for a theoretically unlimited amount of fields, sometimes by adding different types (thereby changing the semantic information, e.g. home and business addresses), sometimes by simply something (e.g. exceptions to an appointment series). This works in most cases (e.g. for appointment series) but not in others (see below).

URL

Open-Xchange only supports one URL per user. VCards allow several. URL is not supported.

TEL

As said, Open-Xchange only supports a fixed set of phone number fields, all of which have a semantic meaning (so they are not used to store other phone numbers even if space is needed). VCards, on the other hand, allow for a theoretically unlimited amount of phone numbers via different type combinations (or repeating the same one, too).

In practice this is usually not much of a problem, for people do not have that many, but for all who are interested in the details:

  • The basic idea is that the first candidate for a field is stored there, and further ones are
    • either moved into the next available fallback field
    • or dropped in case there is no fallback field
  • The marker "pref" in VCards, denoting a preferred number, is taken into account during that process
  • If type is voice and fax (confusing), we consider it voice
  • OX does not distinguish between work and home cellphones, pagers, idsn, car or text phones.
  • The types home, work and dom are used to differentiate between the home, business and other fax- and phone numbers
  • If no specific type is defined, the "business" fields are preferred against "home" and "other" fields.

This is how we map VCard fields to HTTP_API (OX contact fields):

VCard type OX column number OX field name Fallback OX fields Fallback OX field names
pager 560 telephone_pager 553 telephone_other
textphone 564 telephone_ttytdd 553 telephone_other
car 546 telephone_car 553 telephone_other
isdn 559 telephone_isdn 553 telephone_other
cell 551 cellular_telephone1 552, 553 cellular_telephone2, telephone_other
voice,work 542 telephone_business1 543, 547, 553 telephone_business2, telephone_company, telephone_other
voice,home 548 telephone_home1 589, 553 telephone_home2, telephone_other
voice,dom 553 telephone_other
voice 542 telephone_business1 543, 547, 548, 589, 553 telephone_business2, telephone_company, telephone_home1, telephone_home2, telephone_other
fax,work 544 fax_business 554 fax_other
fax,home 550 fax_home 554 fax_other
fax,dom 554 fax_other
fax 544 fax_business 550, 554 fax_home, fax_other

Distribution lists

Distribution lists are specific to OX. VCards do not really have a functional equivalent. So the export of distribution lists is not supported.

Other unsupported fields

These are just the field names as given the the RFCs, since we are unable to guess what they will be called in the client app.

Appointments

ATTACH, COMMENT, CONTACT, CREATED, DTSTAMP, EXRULE, GEO, ORGANIZER, PRIORITY, RDATE, REQUEST-STATUS, STATUS

Contacts

GEO, KEY, LABEL, LOGO, MAILER, NAME, PRODID, PROFILE, REV, SORT-STRING, SOUND, SOURCE, TZ

Tasks

ATTACH, COMMENT, CONTACT, EXDATE, EXRULE, GEO, LOCATION, ORGANIZER, REQUEST-STATUS, RESOURCES, RDATE, URL