One document matched: draft-greevenbosch-scim-vcard-mapping-03.xml


<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'[
<!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5646 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5646.xml">
<!ENTITY RFC6350 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6350.xml">
<!ENTITY RFC6473 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6473.xml">
<!ENTITY RFC6474 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6474.xml">
<!ENTITY RFC6715 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6715.xml">
<!ENTITY I-D.ietf-scim-core-schema SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-scim-core-schema.xml">
]>

<?rfc toc="yes"?>
<?rfc symrefs="yes"?>

<rfc category="std" ipr="trust200902" docName="draft-greevenbosch-scim-vcard-mapping-03">
  <front>
    <title abbrev="SCIM/vCard mapping">SCIM and vCard mapping</title>
    <author initials="B." surname="Greevenbosch" fullname="Bert Greevenbosch">
      <organization abbrev="Huawei Technologies">Huawei Technologies Co., Ltd.</organization>
      <address>
        <postal>
          <street>Huawei Industrial Base F1-8</street>
          <street>Bantian, Longgang District</street>
          <city>Shenzhen</city>
          <code>518129</code>
          <country>P.R. China</country>
        </postal>
        <phone>+86-755-28979133</phone>
        <email>bert.greevenbosch@huawei.com</email>
      </address>
    </author>
    <date day="12" month="February" year="2014"/>
    <area>Applications</area>
    <workgroup>scim</workgroup>
    <abstract>
      <t>
         This document defines a mapping between SCIM and vCard.
      </t>
    </abstract>
    <note title="Note">
      <t>
        Discussion and suggestions for improvement are requested, 
        and should be sent to scim@ietf.org.
      </t>
    </note>
  </front>
  <middle>
    <section title="Introduction">
       <t>
          The SCIM core schema <xref target="I-D.ietf-scim-core-schema"/>
          defines a platform neutral data and extension model for representing users of cloud services.
          SCIM core also defines XML and JSON serialisations of the abstract schema.
       </t>
       <t>
          This document defines a mapping between SCIM and vCard <xref target="RFC6350"/>.
          The mapping may serve several purposes:
          <list style="symbols">
             <t>
                To provide a unified conversion mechanism between SCIM and vCard.
             </t>
             <t>
                To identify properties that are defined in vCard, but are missing in SCIM.
             </t>
             <t>
                To identify SCIM attributes that may be useful in vCard too.  
             </t>
          </list>
       </t>
    </section>
    <section title="Requirements notation">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
        "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
        and "OPTIONAL" in this document are to be interpreted as
        described in <xref target="RFC2119"/>.
      </t>
    </section>
	    <section title="Mapping from SCIM to vCard" anchor="SCIM2vCard">
        <t>
          When mapping SCIM attributes to vCard,
          they may either become mapped to vCard properties or to vCard attribues associated with vCard properties.
          <xref target="mapSVprop"/> defines the mappings to the vCard properties,
          whereas <xref target="mapSVattr"/> defines mappings to vCard attributes.
        </t>
        <t>
          In addition,
          in accordance to <xref target="RFC6350"/>,
          the vCard representation MUST include the mandatory fields:
          <list style="symbols">
            <t>VERSION</t>
            <t>FN</t>
          </list>
        </t>
        <section title="Mapping of SCIM attributes to vCard properties" anchor="mapSVprop">
          <t>
            <xref target="table_scim_vcard"/> describes a mapping from SCIM attributes to the vCard properties.
          </t>
              
          <t>
            In the table,
            the cardinality of the SCIM attribute is prefixed by an "S",
            whereas the cardinality of the vCard property is prefixed by a "v".
            The further notation has been adopted from <xref target="RFC6350"/> as follows:
          </t>
        
         <figure align="center">
	         <artwork>
+-------------+----------------------------------------+
|      1      | Exactly one instance MUST be present.  |
|      *1     | Exactly one instance MAY be present.   |
|      1*     | One or more instances MUST be present. |
|      *      | One or more instances MAY be present.  |
+-------------+----------------------------------------+
	         </artwork>
      </figure>
	      
          <t>
            SCIM fields that have no vCard equivalent MUST be omitted in the vCard result.
          </t>

          <t>
            The reverse mapping from vCard to SCIM is defined in <xref target="sect_vcard_scim"/>.
            The reason for having two tables is that some mappings are not invertible.
          </t>

          <texttable anchor="table_scim_vcard" title="SCIM to vCard mapping">
            <ttcol align='left'>SCIM attribute</ttcol>	        
            <ttcol align='left'>vCard property</ttcol>
            <ttcol align='left'>Cardinality</ttcol>
            <ttcol align='left'>Notes</ttcol>

            <c>id</c>	        
            <c>UID</c>
            <c>S1 v*1</c>
            <c>
              See <xref target="map_ids"/> for conversion from SCIM id space to vCard UID space.
            </c>

            <c>externalId</c>	        
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>meta/created</c>	        
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>meta/lastModified</c>
            <c>REV</c>
            <c>S*1 v*1</c>
            <c></c>

            <c>meta/location</c>
            <c></c>	        
            <c>S*1</c>
            <c>No direct vCard equivalent. Candidates could be SOURCE and ORG-DIRECTORY.</c>

            <c>meta/version</c>	        
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>meta/attributes</c>	        
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>userName</c>	        
            <c></c>
            <c>S1</c>
            <c></c>

            <c>name/formatted</c>	        
            <c>FN</c>
            <c>S*1 v1*</c>
            <c></c>

            <c>name/familyName</c>	        
            <c>N (family names)</c>
            <c>S*1 v*1</c>
            <c>Combined with other name attributes in a single N element.</c>

            <c>name/givenName</c>	        
            <c>N (given names)</c>
            <c>S*1 v*1</c>
            <c>Combined with other name attributes in a single N element.</c>

            <c>name/middleName</c>	        
            <c>N (additional names)</c>
            <c>S*1 v*1</c>
            <c></c>

            <c>name/honorificPrefix</c>	        
            <c>N (honorific prefixes)</c>
            <c>S*1 v*1</c>
            <c>Combined with other name attributes in a single N element.</c>

            <c>name/honorificSuffix</c>
            <c>N (honorific suffixes)</c>
            <c>S*1 v*1</c>
            <c>Combined with other name attributes in a single N element.</c>

            <c>displayName</c>
            <c></c>
            <c>S*1</c>
            <c></c>
            
            <c>nickName</c>
            <c>NICKNAME</c>
            <c>S*1 v*</c>
            <c></c>

            <c>profileUrl</c>
            <c>URL</c>
            <c>S*1 v*</c>
            <c>Multiple fields in SCIM better?</c>

            <c>emails</c>
            <c>EMAIL</c>
            <c>S* v*</c>
            <c>See <xref target="mapSCIMattr"/> for the conversion of a possible "type" attribute.</c>
           
            <c>phoneNumbers (type="work")</c>
            <c>TEL (TYPE="voice,work")</c>
            <c>S* v*</c>
            <c></c>

            <c>phoneNumbers (type="home")</c>
            <c>TEL (TYPE="voice,home")</c>
            <c>S* v*</c>
            <c></c>

            <c>phoneNumbers (type="mobile")</c>
            <c>TEL (TYPE="voice,cell")</c>
            <c>S* v*</c>
            <c></c>

            <c>phoneNumbers (type="fax")</c>
            <c>TEL (TYPE="fax")</c>
            <c>S* v*</c>
            <c></c>

            <c>phoneNumbers (type="pager")</c>
            <c>TEL (TYPE="pager")</c>
            <c>S* v*</c>
            <c></c>

            <c>phoneNumbers (type="other")</c>
            <c>TEL (no TYPE)</c>
            <c>S* v*</c>
            <c></c>

            <c>phoneNumbers (no type)</c>
            <c>TEL (no TYPE)</c>
            <c>S* v*</c>
            <c></c>

            <c>ims</c>
            <c>IMPP</c>
            <c>S* v*</c>
            <c></c>
            
            <c>photos</c>
            <c>PHOTO</c>
            <c>S* v*</c>
            <c>
              URL of a web location where the photo can be retrieved.
            </c>          
            
            <c>addresses</c>
            <c>ADR</c>
            <c>S* v*</c>
            <c>
              See <xref target="RFC6350"/> for the internal coding of the ADR property.
            </c>

            <c>addresses/formatted</c>
            <c>ADR (LABEL)</c>
            <c>S* v*</c>
            <c></c>

            <c>addresses/streetAddress</c>
            <c>ADR (street address)</c>
            <c>S* v*</c>
            <c>
              Combined with other address attributes into a single ADR element.
            </c>

            <c>addresses/locality</c>
            <c>ADR (locality)</c>
            <c>S* v*</c>
            <c>
              Combined with other address attributes into a single ADR element.
            </c>

            <c>addresses/region</c>
            <c>ADR (region)</c>
            <c>S* v*</c>
            <c>
              Combined with other address attributes into a single ADR element.
            </c>

            <c>addresses/postalCode</c>
            <c>ADR (postal code)</c>
            <c>S* v*</c>
            <c>
              Combined with other address attributes into a single ADR element.
            </c>

            <c>addresses/country</c>
            <c>ADR (country)</c>
            <c>S* v*</c>
            <c>
              Combined with other address attributes into a single ADR element.
            </c>

            <c>groups/value</c>
            <c></c>
            <c>S*</c>
            <c>ID of the group</c>
            
            <c>groups/$ref</c>
            <c></c>
            <c>S*</c>
            <c>URI of the group</c>

            <c>entitlements</c>
            <c></c>
            <c>S*</c>
            <c>Hard to map as it is proprietary by nature.</c>

            <c>roles</c>
            <c>ROLE</c>
            <c>S* v*</c>
            <c>Consider distinction with the "userType" attribute.</c>

            <c>x509Certificates</c>
            <c>KEY</c>
            <c>S* v*</c>
            <c>Care is required: keys may not have the same usage.</c>
            
            <c>employeeNumber</c>
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>title</c>
            <c>TITLE</c>
            <c>S*1 v*</c>
            <c></c>

            <c>userType</c>
            <c>ROLE</c>
            <c>S*1 v*</c>
            <c>Consider distinction with the "roles" attribute.</c>

            <c>preferredLanguage</c>
            <c>LANG</c>
            <c>S*1 v*</c>
            <c>Language tag according to <xref target="RFC5646"/>.</c>

            <c>locale</c>
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>timezone</c>
            <c>TZ</c>
            <c>S*1 v*</c>
            <c></c>

            <c>active</c>
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>password</c>
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>costCenter</c>
            <c></c>
            <c>S*1</c>
            <c></c>

            <c>organization</c>
            <c>ORG</c>
            <c>S*1 v*</c>
            <c>Use the hierarchical order defined in vCard.</c>

            <c>division</c>
            <c>ORG</c>
            <c>S*1 v*</c>
            <c>
              Use the hierarchical order defined in vCard.
            </c>

            <c>department</c>
            <c>ORG</c>
            <c>S*1 v*</c>
            <c>Use the hierarchical order defined in vCard.</c>

            <c>manager/managerId</c>
            <c></c>
            <c>S*1</c>
            <c>
              SCIM specific ID, related to "id" attribute.
              The vCard RELATED property could be used,
              but a TYPE "manager" may need definition.
               In SCIM,
               "managerID" is mandatory if "manager" is included.
            </c>
            
            <c>manager/$ref</c>
            <c></c>          
            <c>S*1</c>
            <c>
              The URI of the SCIM resource representing the User's manager.
            </c>

            <c>manager/displayName</c>
            <c></c>
            <c>S*1</c>
            <c>
              This field is optional in SCIM,
              also when "manager" is included.
            </c>
            
            <c>members/$ref</c>
            <c>MEMBER</c>
            <c>S* v*</c>
            <c>Contains the URIs of the SCIM resources associated with the members of the group.</c>

            <c>members/id</c>
            <c>MEMBER</c>
            <c>S* v*</c>
            <c>
              Contains the IDs of the SCIM resources associated with the members of the group.
            </c>
            
          </texttable>
        </section>
        
        <section title="Mapping of SCIM attributes to vCard parameters" anchor="mapSVattr">

          <t>        
            In addition to SCIM properties,
            SCIM attributes may also need to be converted to vCard parameters.
            <xref target="mapSCIMattr"/> contains the related mappings.
          </t>
          
          <texttable anchor="mapSCIMattr" title="Mapping of SCIM attributes to vCard parameters">
            <ttcol align='left'>SCIM attribute</ttcol>
            <ttcol align='left'>SCIM value</ttcol>
            <ttcol align='left'>vCard parameter</ttcol>
            <ttcol align='left'>vCard value</ttcol>
            <ttcol align='left'>Notes</ttcol>

            <c>type</c>
            <c>home</c>
            <c>TYPE</c>
            <c>home</c>            
            <c>May be combined with other types in vCard</c>

            <c>type</c>
            <c>work</c>
            <c>TYPE</c>
            <c>work</c>
            <c>May be combined with other types in vCard</c>

            <c>type</c>
            <c>mobile</c>
            <c>TYPE</c>
            <c>cell</c>
            <c>May be combined with other types in vCard</c>

            <c>type</c>
            <c>fax</c>
            <c>TYPE</c>
            <c>fax</c>
            <c>May be combined with other types in vCard</c>

            <c>type</c>
            <c>pager</c>
            <c>TYPE</c>
            <c>pager</c>
            <c>May be combined with other types in vCard</c>

            <c>type</c>
            <c>other</c>
            <c></c>
            <c></c>
            <c>Omitted in vCard</c>
            
            <c>type</c>
            <c>aim</c>
            <c>TYPE</c>
            <c>x-aim</c>
            <c>Only for "ims"</c>

            <c>type</c>
            <c>gtalk</c>
            <c>TYPE</c>
            <c>x-gtalk</c>
            <c>Only for "ims"</c>

            <c>type</c>
            <c>icq</c>
            <c>TYPE</c>
            <c>x-icq</c>
            <c>Only for "ims"</c>

            <c>type</c>
            <c>xmpp</c>
            <c>TYPE</c>
            <c>x-xmpp</c>
            <c>Only for "ims"</c>

            <c>type</c>
            <c>msn</c>
            <c>TYPE</c>
            <c>x-msn</c>
            <c>Only for "ims"</c>
            
            <c>type</c>
            <c>skype</c>
            <c>TYPE</c>
            <c>x-skype</c>
            <c>Only for "ims"</c>

            <c>type</c>
            <c>qq</c>
            <c>TYPE</c>
            <c>x-qq</c>
            <c>Only for "ims"</c>

            <c>type</c>
            <c>yahoo</c>
            <c>TYPE</c>
            <c>x-yahoo</c>
            <c>Only for "ims"</c>
            
            <c>type</c>
            <c>photo</c>
            <c></c>
            <c></c>
            <c>Only for "photo", vCard parameter can be omitted.</c>

            <c>type</c>
            <c>yahoo</c>
            <c>TYPE</c>
            <c>x-thumbnail</c>
            <c>Only for "thumbnail"</c>
            
            <c>primary</c>
            <c>true</c>
            <c>PREF</c>
            <c>1</c>
            <c></c>

            <c>primary</c>
            <c>false</c>
            <c></c>
            <c></c>
            <c>Omitted in vCard.</c>
            
          </texttable>
      </section>

    </section>

    <section title="Mapping from vCard properties to SCIM attributes" anchor="sect_vcard_scim">      
     
      <section title="Mapping of vCard properties">
    
        <t>
          <xref target="table_vcard_scim"/> describes a mapping from vCard properties to SCIM attributes.
          For the cardinalities, the same notation from <xref target="SCIM2vCard"/> is used.
        </t>
        
        <t>
          Notice that the attributes "uid" and "userName" are mandatory in a SCIM representation,
          whereas they may not be available in the vCard.
          It is left to the application to generate sensible values for these fields.
        </t>

        <texttable anchor="table_vcard_scim" title="vCard to SCIM mapping">
          <ttcol align='left'>vCard property</ttcol>
          <ttcol align='left'>SCIM attribute</ttcol>
          <ttcol align='left'>Cardinality in vCard/SCIM</ttcol>        
          <ttcol align='left'>Notes</ttcol>

          <c>SOURCE</c>
          <c></c>
          <c>v*</c>
          <c>Similar to SCIM meta/location.</c>

          <c>KIND</c>
          <c></c>
          <c>v*1</c>        
          <c>
            In vCard can have the values "individual", "group", "org" and "location".
            The value "application" was added by <xref target="RFC6473"/>.
          </c>

          <c>XML</c>
          <c></c>
          <c>v*</c>        
          <c>Purpose: to include extended XML-encoded vCard data in a plain vCard.</c>

          <c>FN</c>
          <c>names/formatted</c>
          <c>v1* S*1</c>        
          <c></c>

          <c>N (family names)</c>
          <c>names/familyName</c>
          <c>v*1 S*1</c>        
          <c></c>

          <c>N (given names)</c>
          <c>names/givenName</c>
          <c>v*1 S*1</c>        
          <c></c>

          <c>N (additional names)</c>
          <c>names/middleName</c>
          <c>v*1 S*1</c>        
          <c></c>

          <c>N (honorific prefixes)</c>
          <c>names/honorificPrefix</c>
          <c>v*1 S*1</c>        
          <c></c>

          <c>N (honorific suffixes)</c>
          <c>names/honorificSuffix</c>
          <c>v*1 S*1</c>        
          <c></c>

          <c>NICKNAME</c>
          <c>nickName</c>
          <c>v* S*1</c>        
          <c></c>

          <c>PHOTO</c>
          <c>photos</c>
          <c>v* S*</c>        
          <c>URL of a web location where the photo can be retrieved.</c>

          <c>BDAY</c>
          <c></c>
          <c>v*1</c>        
          <c></c>

          <c>ANNIVERSARY</c>
          <c></c>
          <c>v*1</c>        
          <c></c>

          <c>GENDER</c>
          <c></c>
          <c>v*1</c>        
          <c>Can have the values "M"ale, "F"emale, "O"ther, "N"one or not applicable or "U"nknown.</c>

          <c>ADR (LABEL)</c>
          <c>addresses/formatted</c>
          <c>v* S*</c>        
          <c></c>

          <c>ADR (post office box)</c>
          <c>addresses/streetAddress</c>
          <c>v* S*</c>        
          <c></c>

          <c>ADR (extended address)</c>
          <c></c>
          <c>v*</c>
          <c></c>

          <c>ADR (street address)</c>
          <c>addresses/streetAddress</c>
          <c>v* S*</c>        
          <c></c>

          <c>ADR (locality)</c>
          <c>addresses/locality</c>
          <c>v* S*</c>        
          <c></c>

          <c>ADR (region)</c>
          <c>addresses/region</c>
          <c>v* S*</c>        
          <c></c>

          <c>ADR (postal code)</c>
          <c>addresses/postalCode</c>
          <c>v* S*</c>        
          <c></c>

          <c>ADR (country)</c>
          <c>addresses/country</c>
          <c>v* S*</c>        
          <c></c>        

          <c>TEL (TYPE="textphone")</c>
          <c>phoneNumbers, type="other"</c>
          <c>v* S*</c>
          <c>
            See <xref target="map_vcard_parm"/> for related type mapping.
          </c>

          <c>EMAIL</c>
          <c>emails</c>
          <c>
            v* S*
          </c>
          <c>
            Can have TYPE="work", TYPE="home".
          </c>

          <c>IMPP</c>
          <c>ims</c>
          <c>v* S*</c>
          <c></c>

          <c>LANG</c>
          <c>preferredLanguage</c>
          <c>v* S*1</c>        
          <c></c>

          <c>TZ</c>
          <c>timezone</c>
          <c>v* S*1</c>        
          <c></c>

          <c>GEO</c>
          <c></c>
          <c>v*</c>        
          <c>GPS coordinates</c>

          <c>TITLE</c>
          <c>title</c>
          <c>v* S*1</c>        
          <c></c>

          <c>ROLE</c>
          <c>roles</c>
          <c>v* S*1</c>        
          <c></c>

          <c>LOGO</c>
          <c></c>
          <c>v*</c>        
          <c></c>

          <c>ORG</c>
          <c>organization</c>
          <c>v* S*1</c>        
          <c></c>

          <c>MEMBER</c>
          <c>members/id</c>
          <c>v* S*</c>        
          <c>
            Contains a vCard ID of a member of this group.
            The vCard MUST have KIND="group".
            ID must be converted.
          </c>
          
          <c>RELATED</c>
          <c></c>
          <c>v*</c>        
          <c>Contains a vCard ID of another related vCard. Can have many TYPE values, such as "friend", "neighbor" and "spouse".</c>

          <c>CATEGORIES</c>
          <c></c>
          <c>v*</c>        
          <c>Contains not necessarily unified tags.</c>

          <c>NOTE</c>
          <c></c>
          <c>v*</c>
          <c>Any text.</c>

          <c>PRODID</c>
          <c></c>
          <c>v*1</c>        
          <c>ID for producer of vCard.</c>

          <c>REV</c>
          <c></c>
          <c>v*1</c>
          <c>Purpose: to specify revision information about the current vCard.</c>

          <c>SOUND</c>
          <c></c>
          <c>v*</c>
          <c></c>

          <c>UID</c>
          <c>externalId</c>
          <c>v*1 S*1</c>
          <c>See <xref target="map_ids"/> for conversion from vCard UID space to SCIM id space.</c>

          <c>CLIENTPIDMAP</c>
          <c></c>
          <c>v*</c>
          <c>Link between local PID and global URI.</c>

          <c>URL</c>
          <c>profileUrl</c>
          <c>v* S*1</c>
          <c></c>

          <c>VERSION</c>
          <c></c>
          <c>v1</c>
          <c>Version of vCard specification.</c>

          <c>KEY</c>
          <c>x509Certificates?</c>
          <c>v* S*</c>
          <c>Care is required: keys may not have the same usage.</c>

          <c>FBURL</c>
          <c></c>
          <c>v*</c>
          <c>Purpose: to specify the URI for the busy time associated with the object that the vCard represents.</c>

          <c>CALADRURI</c>
          <c></c>
          <c>v*</c>
          <c>Purpose: to specify the calendar user address to which a scheduling request should be sent for the object represented by the vCard.</c>

          <c>CALURI</c>
          <c></c>
          <c>v*</c>
          <c>Purpose: to specify the URI for a calendar associated with the object represented by the vCard.</c>

          <c>BIRTHPLACE</c>
          <c></c>
          <c>v*1</c>
          <c>Defined in <xref target="RFC6474"/>.</c>

          <c>DEATHDATE</c>
          <c></c>
          <c>v*1</c>
          <c>Defined in <xref target="RFC6474"/>.</c>

          <c>DEATHPLACE</c>
          <c></c>
          <c>v*1</c>
          <c>Defined in <xref target="RFC6474"/>.</c>

          <c>EXPERTISE</c>
          <c></c>
          <c>v*</c>
          <c>Defined in <xref target="RFC6715"/>.</c>

          <c>HOBBY</c>
          <c></c>
          <c>v*</c>
          <c>Defined in <xref target="RFC6715"/>.</c>

          <c>INTEREST</c>
          <c></c>
          <c>v*</c>
          <c>Defined in <xref target="RFC6715"/>.</c>

          <c>ORG-DIRECTORY</c>
          <c></c>
          <c>v*</c>
          <c>Defined in <xref target="RFC6715"/>.</c>

        </texttable>
      
      </section>
      
      <section title="Mapping of vCard parameters">
        <t>
          <xref target="map_vcard_parm"/> describes how vCard parameters are mapped to SCIM.
        </t>
        <texttable title="Mapping of vCard parameters" anchor="map_vcard_parm">
          
          <ttcol align='left'>vCard parameter</ttcol>
          <ttcol align='left'>vCard parameter value</ttcol>
          <ttcol align='left'>SCIM representation</ttcol>
          <ttcol align='left'>Notes</ttcol>
          
          <c>TYPE</c>
          <c>cell</c>
          <c>"type": "mobile"</c>
          <c></c>      

          <c>TYPE</c>
          <c>fax</c>
          <c>"type": "fax"</c>
          <c></c>
          
          <c>TYPE</c>
          <c>pager</c>
          <c>"type": "pager"</c>
          <c></c>                
          
          <c>TYPE</c>
          <c>text</c>
          <c>"type": "other"</c>
          <c></c>      

          <c>TYPE</c>
          <c>textphone</c>
          <c>"type": "other"</c>
          <c></c>      
          
          <c>TYPE</c>
          <c>video</c>
          <c>"type": "video"</c>
          <c></c>      

          <c>TYPE</c>
          <c>voice</c>
          <c></c>
          <c>Omitted in SCIM</c>      
          
        </texttable>
      </section>
            
    </section>

    <section title="Mapping between SCIM and vCard IDs" anchor="map_ids">
      <t>
         A SCIM specific prefix could be used to indicate the conversion from SCIM IDs to vCard UIDs.
         A "Service Provider" specific part would need to be included in the vCard UID,
         as the SCIM ID is unique within the Service Provider's space only.
         The following format is proposed:
      </t>
      <figure align="center">
         <artwork>
UID:scim:[serviceProviderID]:123456789
         </artwork>
      </figure>
      <t>
         Conversion from vCard to SCIM may be done similarly, 
         i.e. by adding a prefix to the vCard UID.
         The SCIM schema document mentions for the SCIM ID:
         "This identifier MUST be unique across the Service Provider's entire set of Resources",
         so as long as the vCard UID indeed is globally unique,
         and the service provider uses the prefix for vCard acquired resources only,
         the rule should hold.
      </t>
      <t>
         Notice that the above mechanism allows looping.
         For example, converting SCIM -> vCard -> SCIM would lead to another SCIM ID in the second representation as in the first.
         This indeed reflects the possible loss of information in the conversion process.
         It is RECOMMENDED to avoid this kind of chained conversion.
      </t>
      <t>
         Because of the format of the vCard UID after conversion from SCIM,
         the SCIM service provider can detect above mentioned chained conversion,
         as well as the original vCard ID.
         The actions the service provider may take upon such detection may for example include 
         using the original SCIM data instead,
         or using smarter mapping by analysing the original and the new import.
         This kind of mechanisms is left out of scope of this document.
      </t>
    </section>
    
    <section title="Differences between vCard and SCIM">
      <t>
        This section contains a non-exhaustive list of differences between vCard and SCIM.
        <list style="symbols">
          <t>
            In vCard,
            a group property can be established.
            This property contains the IDs of its members.
            In SCIM however,
            the group/membership relation can be signalled in two directions:
            just like vCard the group object can signal its members through the "members" attribute,
            but the member objects can also point to the groups they are part of, through the "groups" attribute.
          </t>
          <t>
            In SCIM,
            relations between objects can be established either through their IDs or through their URIs.
            vCard only uses IDs to signal relationships between entities.
          </t>
        </list>
      </t>
    </section>
    
    <section title="Examples">
      <section title="Mapping from SCIM to vCard">
        <t>
          <xref target="exS2vv"/> contains the result after converting the SCIM data from <xref target="exS2vS"/> to vCard.
        </t>
        <t>
          Notice that the following fields have been omitted during conversion:
          <list style="symbols">
            <t>userName</t>
            <t>locale</t>
            <t>active</t>
            <t>password</t>
            <t>groups</t>
            <t>meta fields except for "lastModified"</t>
          </list>
        </t>
      <figure align="center" title="Original SCIM data" anchor="exS2vS">
         <artwork>
{
 "schemas": ["urn:scim:schemas:core:2.0:User"],
 "id": "2819c223-7f76-453a-919d-413861904646",
 "externalId": "701984",
 "userName": "bjensen@example.com",
 "name": {
   "formatted": "Ms. Barbara J Jensen III",
   "familyName": "Jensen",
   "givenName": "Barbara",
   "middleName": "Jane",
   "honorificPrefix": "Ms.",
   "honorificSuffix": "III"
 },
 "displayName": "Babs Jensen",
 "nickName": "Babs",
 "profileUrl": "https://login.example.com/bjensen",
 "emails": [
   {
     "value": "bjensen@example.com",
     "type": "work",
     "primary": true
   },
   {
     "value": "babs@jensen.org",
     "type": "home"
   }
 ],
 "addresses": [
   {
     "type": "work",
     "streetAddress": "100 Universal City Plaza",
     "locality": "Hollywood",
     "region": "CA",
     "postalCode": "91608",
     "country": "USA",
     "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
     "primary": true
   },
   {
     "type": "home",
     "streetAddress": "456 Hollywood Blvd",
     "locality": "Hollywood",
     "region": "CA",
     "postalCode": "91608",
     "country": "USA",
     "formatted": "456 Hollywood Blvd\nHollywood, CA 91608 USA"
   }
 ],
 "phoneNumbers": [
   {
     "value": "555-555-5555",
     "type": "work"
   },
   {
     "value": "555-555-4444",
     "type": "mobile"
   }
 ],
 "ims": [
   {
     "value": "someaimhandle",
     "type": "aim"
   }
 ],
 "photos": [
   {
     "value": "https://photos.example.com/profilephoto/72930000000Ccne/F",
     "type": "photo"
   },
   {
     "value": "https://photos.example.com/profilephoto/72930000000Ccne/T",
     "type": "thumbnail"
   }
 ],
 "userType": "Employee",
 "title": "Tour Guide",
 "preferredLanguage":"en_US",
 "locale": "en_US",
 "timezone": "America/Los_Angeles",
 "active":true,
 "password":"t1meMa$heen",
 "groups": [
   {
     "value": "e9e30dba-f08f-4109-8486-d5c6a331660a",
     "$ref": "https://example.com/v1/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a",
     "display": "Tour Guides"
   },
   {
     "value": "fc348aa8-3835-40eb-a20b-c726e15c55b5",
     "$ref": "https://example.com/v1/Groups/fc348aa8-3835-40eb-a20b-c726e15c55b5",
     "display": "Employees"
   },
   {
     "value": "71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7",
     "$ref": "https://example.com/v1/Groups/71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7",
     "display": "US Employees"
   }
 ],
 "x509Certificates": [
   {
     "value": "MIIDQzCCAqygAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCVVMx
               EzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAoMC2V4YW1wbGUuY29tMRQwEgYD
               VQQDDAtleGFtcGxlLmNvbTAeFw0xMTEwMjIwNjI0MzFaFw0xMjEwMDQwNjI0MzFa
               MH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQKDAtl
               eGFtcGxlLmNvbTEhMB8GA1UEAwwYTXMuIEJhcmJhcmEgSiBKZW5zZW4gSUlJMSIw
               IAYJKoZIhvcNAQkBFhNiamVuc2VuQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0B
               AQEFAAOCAQ8AMIIBCgKCAQEA7Kr+Dcds/JQ5GwejJFcBIP682X3xpjis56AK02bc
               1FLgzdLI8auoR+cC9/Vrh5t66HkQIOdA4unHh0AaZ4xL5PhVbXIPMB5vAPKpzz5i
               PSi8xO8SL7I7SDhcBVJhqVqr3HgllEG6UClDdHO7nkLuwXq8HcISKkbT5WFTVfFZ
               zidPl8HZ7DhXkZIRtJwBweq4bvm3hM1Os7UQH05ZS6cVDgweKNwdLLrT51ikSQG3
               DYrl+ft781UQRIqxgwqCfXEuDiinPh0kkvIi5jivVu1Z9QiwlYEdRbLJ4zJQBmDr
               SGTMYn4lRc2HgHO4DqB/bnMVorHB0CC6AV1QoFK4GPe1LwIDAQABo3sweTAJBgNV
               HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp
               Y2F0ZTAdBgNVHQ4EFgQU8pD0U0vsZIsaA16lL8En8bx0F/gwHwYDVR0jBBgwFoAU
               dGeKitcaF7gnzsNwDx708kqaVt0wDQYJKoZIhvcNAQEFBQADgYEAA81SsFnOdYJt
               Ng5Tcq+/ByEDrBgnusx0jloUhByPMEVkoMZ3J7j1ZgI8rAbOkNngX8+pKfTiDz1R
               C4+dx8oU6Za+4NJXUjlL5CvV6BEYb1+QAEJwitTVvxB/A67g42/vzgAtoRUeDov1
               +GFiBZ+GNF/cAYKcMtGcrs2i97ZkJMo="
   }
 ],
 "meta": {
   "resourceType": "User",
   "created": "2010-01-23T04:56:22Z",
   "lastModified": "2011-05-13T04:42:34Z",
   "version": "W\/\"a330bc54f0671c9\"",
   "location": "https://example.com/v1/Users/2819c223-7f76-453a-919d-413861904646"
 }
}
         </artwork>
      </figure>
      <figure align="center" title="After conversion to vCard" anchor="exS2vv">
         <artwork>
BEGIN:VCARD
VERSION:4.0
UID:"scim:provider.example:org:2819c223-7f76-453a-919d-413861904646"
FN:Ms. Barbara J Jensen III
N:Jensen;Barbera;Jane;Ms.;III
NICKNAME:Babs
URL:"https://login.example.com/bjensen"
EMAIL;TYPE=work;PREF=1:bjensen@example.com
EMAIL;TYPE=home:babs@jensen.org
ADR;LABEL="100 Universal City Plaza\nHollywood, CA 91608 USA";TYPE=work
 :;;100 Universal City Plaza;Hollywood;CA;91608;USA
ADR;LABEL="456 Hollywood Blvd\nHollywood, CA 91608 USA";type=home:;;456
 Hollywood Blvd;Hollywood;CA;91608;USA
TEL;TYPE=voice,work:555-555-5555
TEL;TYPE=cell:555-555-4444
IMPP;TYPE=x-aim:someaimhandle
PHOTO:"https://photos.example.com/profilephoto/72930000000Ccne/F"
PHOTO;TYPE=x-thumbnail:"https://photos.example.com/profilephoto/7293000
 0000Ccne/T"
ROLE:Employee
TITLE:Tour Guide
LANG:en-US
TZ:America/Los_Angeles
KEY:MIIDQzCCAqygAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCVVMx
 EzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAoMC2V4YW1wbGUuY29tMRQwEgYD
 VQQDDAtleGFtcGxlLmNvbTAeFw0xMTEwMjIwNjI0MzFaFw0xMjEwMDQwNjI0MzFa
 MH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQKDAtl
 eGFtcGxlLmNvbTEhMB8GA1UEAwwYTXMuIEJhcmJhcmEgSiBKZW5zZW4gSUlJMSIw
 IAYJKoZIhvcNAQkBFhNiamVuc2VuQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0B
 AQEFAAOCAQ8AMIIBCgKCAQEA7Kr+Dcds/JQ5GwejJFcBIP682X3xpjis56AK02bc
 1FLgzdLI8auoR+cC9/Vrh5t66HkQIOdA4unHh0AaZ4xL5PhVbXIPMB5vAPKpzz5i
 PSi8xO8SL7I7SDhcBVJhqVqr3HgllEG6UClDdHO7nkLuwXq8HcISKkbT5WFTVfFZ
 zidPl8HZ7DhXkZIRtJwBweq4bvm3hM1Os7UQH05ZS6cVDgweKNwdLLrT51ikSQG3
 DYrl+ft781UQRIqxgwqCfXEuDiinPh0kkvIi5jivVu1Z9QiwlYEdRbLJ4zJQBmDr
 SGTMYn4lRc2HgHO4DqB/bnMVorHB0CC6AV1QoFK4GPe1LwIDAQABo3sweTAJBgNV
 MIIDQzCCAqygAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCVVMx
 EzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAoMC2V4YW1wbGUuY29tMRQwEgYD
 VQQDDAtleGFtcGxlLmNvbTAeFw0xMTEwMjIwNjI0MzFaFw0xMjEwMDQwNjI0MzFa
 MH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQKDAtl
 eGFtcGxlLmNvbTEhMB8GA1UEAwwYTXMuIEJhcmJhcmEgSiBKZW5zZW4gSUlJMSIw
 IAYJKoZIhvcNAQkBFhNiamVuc2VuQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0B
 AQEFAAOCAQ8AMIIBCgKCAQEA7Kr+Dcds/JQ5GwejJFcBIP682X3xpjis56AK02bc
 1FLgzdLI8auoR+cC9/Vrh5t66HkQIOdA4unHh0AaZ4xL5PhVbXIPMB5vAPKpzz5i
 PSi8xO8SL7I7SDhcBVJhqVqr3HgllEG6UClDdHO7nkLuwXq8HcISKkbT5WFTVfFZ
 zidPl8HZ7DhXkZIRtJwBweq4bvm3hM1Os7UQH05ZS6cVDgweKNwdLLrT51ikSQG3
 DYrl+ft781UQRIqxgwqCfXEuDiinPh0kkvIi5jivVu1Z9QiwlYEdRbLJ4zJQBmDr
 SGTMYn4lRc2HgHO4DqB/bnMVorHB0CC6AV1QoFK4GPe1LwIDAQABo3sweTAJBgNV
 HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp
 Y2F0ZTAdBgNVHQ4EFgQU8pD0U0vsZIsaA16lL8En8bx0F/gwHwYDVR0jBBgwFoAU
 dGeKitcaF7gnzsNwDx708kqaVt0wDQYJKoZIhvcNAQEFBQADgYEAA81SsFnOdYJt
 Ng5Tcq+/ByEDrBgnusx0jloUhByPMEVkoMZ3J7j1ZgI8rAbOkNngX8+pKfTiDz1R
 C4+dx8oU6Za+4NJXUjlL5CvV6BEYb1+QAEJwitTVvxB/A67g42/vzgAtoRUeDov1
 +GFiBZ+GNF/cAYKcMtGcrs2i97ZkJMo=
REF:"2011-05-13T04:42:34Z"
END:VCARD
         </artwork>
      </figure>
        
      </section>
      
      <section title="Mapping from vCard to SCIM">
        <t>
          <xref target="exv2SS"/> contains the result after converting the vCard data from <xref target="exv2Sv"/> to SCIM.
        </t>
        <t>
          The following vCard attributes have been omitted in the SCIM representation:
          <list style="symbols">
            <t>GENDER</t>
            <t>BDAY</t>
          </list>
          The mandatory "uid" and "userName" attributes have been added to the SCIM representation,
          although they have not been defined in the vCard.
        </t>
<figure align="center" title="Original SCIM data" anchor="exv2Sv">
  <artwork>
BEGIN:VCARD
VERSION:4.0
FN:Vincent van Gogh
N:van Gogh;Vincent;;;
GENDER:M
BDAY:18530330
ROLE;LANGUAGE="en":painter
LANG;PREF=1:nl
LANG;PREF=2:fr
ADR;LABEL="Vincent van Gogh\n54 Rue Lepic\n75018 Paris\nFrance";LANGUAG
E="fr";TYPE=home:;3th floor;54 Rue Lepic;Paris;;75018;France
TEL;TYPE="work,voice";PREF=1:+33-1-123456
TEL;TYPE="home,voice";PREF=2:+33-1-654321
EMAIL;TYPE=home:vangogh@example.com
URL;TYPE=work:"http://www.vangogh.example.com"
TZ:+0100
END:VCARD
  </artwork>
</figure>

<figure align="center" title="Original SCIM data" anchor="exv2SS">
  <artwork>
{
  "schemas": ["urn:scim:schemas:core:2.0:User"],
  "id": "xyz",
  "userName": "vangogh@example.com",
  "name": {
    "formatted": "Vincent van Gogh",
    "familyName": "van Gogh",
    "givenName": "Vincent",
  },
  "roles": [
    {
      "value": "painter"
    }
  ],
  "preferredLanguage": "nl",
  "adresses": [
    {
      "type": "home",
      "streetAddress": "54 Rue Lepic",
      "locality": "Paris",
      "postalCode": "75018",
      "country": "France",
      "formatted": "Vincent van Gogh\n54 Rue Lepic\n75018 Paris\nFrance"
    }
  ],
  "phoneNumbers": [
    {
      "value": "+33-1-123456",
      "type": "work"
    },
    {
      "value": "+33-1-654321",
      "type": "home"
    }
  ],
  "emails": [
    {
      "value": "vangogh@example.com",
      "type": "home"
    }
  ], 
  "timezone": "+0100"
}
  </artwork>
</figure>
      </section>
      
    </section>
    
    <section title="Open issues">
      <t>
        The following issues require further consideration:
        <list style="symbols">
          <t>
            It may be feasible to leave out the conversion between SCIM ids and vCarD UIDs,
            as they may be dependent on the particular application that is importing the information.
          </t>
          <t>
            It is unclear on whether the SCIM ID can include alphanumeric characters or is restricted to numeric characters only.
            The examples in <xref target="I-D.ietf-scim-core-schema"/> seem to indicate that they consist of hexadecimal numbers,
            with dashes at appropriate places.
            If this is the case,
            then during the conversion from vCard UIDs to SCIM IDs would include conversion of alphanumeric characters to hexadecimal values.
          </t>
          <t>
            For SCIM fields that have no equivalent vCard attributes,
            vCard attributes of the form "x-..." could be defined.
            Alternatively,
            vCard attributes could be defined,
            and registered with IANA.
          </t>
          <t>
            The "id" and "userName" fields are mandatory in SCIM.
            However, a vCard does not have to contain similar information.
            Creating a sensible value of these fields may be left to the SCIM application that is importing the vCard,
            or guidelines could be defined.
          </t>
        </list>
      </t>
    </section>

    <section title="IANA Considerations">
      <t>
        A "manager" TYPE for the RELATED vCard property may need registration.
      </t>
    </section>

    <section title="Security Considerations">
      <t>
         The mapping between vCard and SCIM may be useful for easily transferring data for one system towards another.
         However, it also has privacy implications.
         Therefore,
         it is important that user consensus is acquired where applicable. 
      </t>
      <t>
         For this document,
         some decisions were made concerning mapping between attributes and properties with similar,
         but not equal, semantics.
         This was done in a best effort manner.
         However one should realise that during the mapping process some accuracy from the original data may be lost. 
      </t>
      <t>
         Conversion from SCIM to vCard and subsequently back to SCIM,
         as well as conversion from vCard to SCIM and subsequently back to vCard
         SHOULD be avoided.
      </t>
    </section>

    <section title="Acknowledgements">
      <t>
         Thanks to Kepeng Li for providing feedback and suggestions.
         Thanks to Paul Madsen and Phil Hunt for providing similar mapping drafts
         <xref target="draft-scim-saml2-binding"/> and <xref target="I-D.hunt-scim-directory"/>,
         which have served as inspiration for this document.
         Michael Angstadt and Dany Cauchie provided valuable review comments.
      </t>
    </section>

  </middle>
  <back>
    <references title="Normative References">
       &RFC2119;
       &RFC5646;
       &RFC6350;
       &RFC6473;
       &RFC6474;
       &RFC6715;
       &I-D.ietf-scim-core-schema;
     </references>
     <references title="Informative References">
       <reference anchor="I-D.hunt-scim-directory">
         <front>
           <title>SCIM Directory Services</title>
           <author initials="P." surname="Hunt"/>
           <date year="2012" month="September" day="6"/>
         </front>
         <seriesInfo name="draft-hunt-scim-directory-00" value="(work in progress)" />
       </reference>      

       <reference anchor="draft-scim-saml2-binding">
         <front>
           <title>SAML 2.0 Binding for SCIM</title>
           <author initials="P." surname="Madsen"/>
           <date year="2011" month="April"/>
         </front>
         <seriesInfo name="draft-scim-saml2-binding-02" value="(work in progress)" />
       </reference>

    </references>

  </back>

</rfc>

PAFTECH AB 2003-20262026-04-24 02:58:22