VCard and ICal support

Revision as of 19:27, 22 August 2013 by Tierlieb (talk | contribs)
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, the second one is
    • either moved into the available fallback field
    • or dropped in case the is no fallback field
  • The marker "pref" in VCards, denoting a preferred number, is ignored
  • If no type is given, the number is stored as 542, work1
  • If type is voice and fax (confusing), we consider it voice
  • OX does not distinguish between work and home cellphones, pagers, idsn oder car phones.

This is how we map VCard fields to OX contact fields:

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

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