[MS-OXOCNTC]: Contact Object Protocol Specification

Intellectual Property Rights Notice for Protocol Documentation

  • Copyrights.This protocol documentation is covered by Microsoft copyrights. Regardless of any other terms that are contained in the terms of use for the Microsoft website that hosts this documentation, you may make copies of it in order to develop implementations of the protocols, and may distribute portions of it in your implementations of the protocols or your documentation as necessary to properly document the implementation. You may also distribute in your implementation, with or without modification, any schema, IDL’s, or code samples that are included in the documentation. This permission also applies to any documents that are referenced in the protocol documentation.
  • No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.
  • Patents. Microsoft has patents that may cover your implementations of the protocols. Neither this notice nor Microsoft's delivery of the documentation grants any licenses under those or any other Microsoft patents. However, the protocols may be covered by Microsoft’s Open Specification Promise (available here: If you would prefer a written license, or if the protocols are not covered by the OSP, patent licenses are available by contacting .
  • Trademarks. The names of companies and products contained in this documentation may be covered by trademarks or similar intellectual property rights. This notice does not grant any licenses under those rights.

Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other than specifically described above, whether by implication, estoppel, or otherwise.

Tools. This protocol documentation is intended for use in conjunction with publicly available standard specifications and network programming art, and assumes that the reader either is familiar with the aforementioned material or has immediate access to it. A protocol specification does not require the use of Microsoft programming tools or programming environments in order for you to develop an implementation. If you have access to Microsoft programming tools and environments you are free to take advantage of them.

Revision Summary
Author / Date / Version / Comments
Microsoft Corporation / April 4, 2008 / 0.1 / Initial Availability.
Microsoft Corporation / April 25, 2008 / 0.2 / Revised and updated property names and other technical content.
Microsoft Corporation / June 27, 2008 / 1.0 / Initial Release.
Microsoft Corporation / August 6, 2008 / 1.01 / Revised and edited technical content.
Microsoft Corporation / September 3, 2008 / 1.02 / Revised and edited technical content.
Microsoft Corporation / December 3, 2008 / 1.03 / Revised and edited technical content.
Microsoft Corporation / March 4, 2009 / 1.04 / Revised and edited technical content.

Table of Contents

1Introduction

1.1Glossary

1.2References

1.2.1Normative References

1.2.2Informative References

1.3Protocol Overview

1.4Relationship to Other Protocols

1.5Prerequisites/Preconditions

1.6Applicability Statement

1.7Versioning and Capability Negotiation

1.8Vendor-Extensible Fields

1.9Standards Assignments

2Messages

2.1Transport

2.2Message Syntax

2.2.1Contact Object Properties

2.2.1.1Contact Name Properties

2.2.1.1.1PidTagNickname

2.2.1.1.2PidTagGeneration

2.2.1.1.3PidTagDisplayNamePrefix

2.2.1.1.4PidTagSurname

2.2.1.1.5PidTagMiddleName

2.2.1.1.6PidTagGivenName

2.2.1.1.7PidTagInitials

2.2.1.1.8PidTagDisplayName

2.2.1.1.9PidLidYomiFirstName

2.2.1.1.10PidLidYomiLastName

2.2.1.1.11PidLidFileUnder

2.2.1.1.12PidLidFileUnderId

2.2.1.1.13PidLidFileUnderList

2.2.1.2Electronic Address Properties

2.2.1.2.1PidLidEmail1DisplayName, PidLidEmail2DisplayName, PidLidEmail3DisplayName

2.2.1.2.2PidLidEmail1AddressType, PidLidEmail2AddressType, PidLidEmail3AddressType

2.2.1.2.3PidLidEmail1EmailAddress, PidLidEmail2EmailAddress, PidLidEmail3EmailAddress

2.2.1.2.4PidLidEmail1OriginalDisplayName, PidLidEmail2OriginalDisplayName, PidLidEmail3OriginalDisplayName

2.2.1.2.5PidLidEmail1OriginalEntryId, PidLidEmail2OriginalEntryId, PidLidEmail3OriginalEntryId

2.2.1.2.6PidTagPrimaryFaxNumber, PidTagBusinessFaxNumber, PidTagHomeFaxNumber

2.2.1.2.7PidLidFax1AddressType, PidLidFax2AddressType, PidLidFax3AddressType

2.2.1.2.8PidLidFax1EmailAddress, PidLidFax2EmailAddress, PidLidFax3EmailAddress

2.2.1.2.9PidLidFax1OriginalDisplayName, PidLidFax2OriginalDisplayName, PidLidFax3OriginalDisplayName

2.2.1.2.10PidLidFax1OriginalEntryId, PidLidFax2OriginalEntryId, PidLidFax3OriginalEntryId

2.2.1.2.11PidLidEmailList

2.2.1.2.12PidLidAddressBookProviderEmailList

2.2.1.2.13PidLidAddressBookProviderArrayType

2.2.1.3Physical Address Properties

2.2.1.3.1PidLidWorkAddressStreet, PidTagHomeAddressStreet, PidTagOtherAddressStreet, PidTagStreetAddress

2.2.1.3.2PidLidWorkAddressCity, PidTagHomeAddressCity, PidTagOtherAddressCity, PidTagLocality

2.2.1.3.3PidLidWorkAddressState, PidTagHomeAddressStateOrProvince, PidTagOtherAddressStateOrProvince, PidTagStateOrProvince

2.2.1.3.4PidLidWorkAddressPostalCode, PidTagHomeAddressPostalCode, PidTagOtherAddressPostalCode, PidTagPostalCode

2.2.1.3.5PidLidWorkAddressCountry, PidTagHomeAddressCountry, PidTagOtherAddressCountry, PidTagCountry

2.2.1.3.6PidLidWorkAddressCountryCode, PidLidHomeAddressCountryCode, PidLidOtherAddressCountryCode, PidLidAddressCountryCode

2.2.1.3.7PidLidWorkAddressPostOfficeBox, PidTagHomeAddressPostOfficeBox, PidTagOtherAddressPostOfficeBox, PidTagPostOfficeBox

2.2.1.3.8PidLidWorkAddress, PidLidHomeAddress, PidLidOtherAddress, PidTagPostalAddress

2.2.1.3.9PidLidPostalAddressId

2.2.1.4Telephone Properties

2.2.1.4.1PidTagPagerTelephoneNumber

2.2.1.4.2PidTagCallbackTelephoneNumber

2.2.1.4.3PidTagBusinessTelephoneNumber

2.2.1.4.4PidTagHomeTelephoneNumber

2.2.1.4.5PidTagPrimaryTelephoneNumber

2.2.1.4.6PidTagBusiness2TelephoneNumber

2.2.1.4.7PidTagMobileTelephoneNumber

2.2.1.4.8PidTagRadioTelephoneNumber

2.2.1.4.9PidTagCarTelephoneNumber

2.2.1.4.10PidTagOtherTelephoneNumber

2.2.1.4.11PidTagAssistantTelephoneNumber

2.2.1.4.12PidTagHome2TelephoneNumber

2.2.1.4.13PidTagTtyTddPhoneNumber

2.2.1.4.14PidTagCompanyMainTelephoneNumber

2.2.1.4.15PidTagTelexNumber

2.2.1.4.16PidTagIsdnNumber

2.2.1.5Event Properties

2.2.1.5.1PidTagBirthday

2.2.1.5.2PidLidBirthdayEventEntryId

2.2.1.5.3PidTagWeddingAnniversary

2.2.1.5.4PidLidAnniversaryEventEntryId

2.2.1.6Professional Properties

2.2.1.6.1PidTagTitle

2.2.1.6.2PidTagCompanyName

2.2.1.6.3PidTagDepartmentName

2.2.1.6.4PidLidDepartment

2.2.1.6.5PidTagOfficeLocation

2.2.1.6.6PidTagManagerName

2.2.1.6.7PidTagAssistant

2.2.1.6.8PidLidYomiCompanyName

2.2.1.6.9PidTagProfession

2.2.1.7Business Card Properties

2.2.1.7.1PidLidBusinessCardDisplayDefinition

2.2.1.7.2PidLidBusinessCardCardPicture

2.2.1.7.3PidLidContactUserField1, PidLidContactUserField2, PidLidContactUserField3, PidLidContactUserField4

2.2.1.8Contact Photo Properties

2.2.1.8.1PidLidHasPicture

2.2.1.8.2Contact Photo Attachment

2.2.1.9Other Contact Properties

2.2.1.9.1PidLidReferenceEntryId

2.2.1.9.2PidTagHobbies

2.2.1.9.3PidTagSpouseName

2.2.1.9.4PidTagLanguage

2.2.1.9.5PidTagLocation

2.2.1.9.6PidLidInstantMessagingAddress

2.2.1.9.7PidTagOrganizationalIdNumber

2.2.1.9.8PidTagCustomerId

2.2.1.9.9PidTagGovernmentIdNumber

2.2.1.9.10PidLidFreeBusyLocation

2.2.1.9.11PidTagAccount

2.2.1.9.12PidLidHtml

2.2.1.9.13PidTagPersonalHomePage

2.2.1.9.14PidTagBusinessHomePage

2.2.1.9.15PidTagFtpSite

2.2.1.9.16PidTagComputerNetworkName

2.2.1.9.17PidTagChildrensNames

2.2.1.9.18PidLidContactCharacterSet

2.2.1.9.19PidLidAutoLog

2.2.1.9.20PidTagGender

2.2.1.9.21PidTagReferredByName

2.2.1.9.22PidLidContactItemData

2.2.1.9.23PidTagUserX509Certificate

2.2.1.9.24PidLidBilling

2.2.1.9.25PidLidReferredBy

2.2.1.10Additional Property Constraints

2.2.1.10.1PidTagNormalizedSubject

2.2.1.10.2PidTagMessageClass

2.2.2Personal Distribution List Properties

2.2.2.1Personal Distribution List Name Properties

2.2.2.1.1PidTagDisplayName

2.2.2.1.2PidLidDistributionListName

2.2.2.1.3PidLidFileUnder

2.2.2.1.4PidLidFileUnderId

2.2.2.2Personal Distribution List Member Properties

2.2.2.2.1PidLidDistributionListMembers

2.2.2.2.2PidLidDistributionListOneOffMembers

2.2.2.2.3PidLidDistributionListChecksum

2.2.2.2.4PidLidDistributionListStream

2.2.2.2.5Wrapped EntryId Format

2.2.2.3Other Personal Distribution List Properties

2.2.2.3.1PidLidAddressBookProviderArrayType

2.2.2.4Additional Property Constraints

2.2.2.4.1PidTagNormalizedSubject

2.2.2.4.2PidTagMessageClass

2.2.3Contact Folder Syntax

3Protocol Details

3.1Client and Server Details

3.1.1Abstract Data Model

3.1.1.1Contact Object

3.1.1.1.1Name Subobject

3.1.1.1.2E-Mail Subobjects

3.1.1.1.3Physical Address Subobjects

3.1.1.1.4Event Subobjects

3.1.1.1.5Professional Subobject

3.1.1.1.6Business Card Subobject

3.1.1.1.7Contact Photo Subobject

3.1.1.2Personal Distribution Lists

3.1.1.3Contact Folders

3.1.2Timers

3.1.3Initialization

3.1.4Higher-Layer Triggered Events

3.1.4.1Contact Object Events

3.1.4.1.1Creating a Contact

3.1.4.1.2Deleting a Contact

3.1.4.1.3Modifying a Contact

3.1.4.2Personal Distribution List Events

3.1.4.2.1Creating a Personal Distribution List

3.1.4.2.2Deleting a Personal Distribution List

3.1.4.2.3Modifying a Personal Distribution List

3.1.5Message Processing Events and Sequencing Rules

3.1.6Timer Events

3.1.7Other Local Events

4Protocol Examples

4.1Creating a Contact

4.2Creating a Personal Distribution List

5Security

5.1Security Considerations for Implementers

5.2Index of Security Parameters

6Appendix A: Office/Exchange Behavior

Index

1Introduction

This document specifies the Contact Object Protocol, a Message object thatserves as the basic organizational unit for personal information, such as phone numbers, e-mail addresses, and mailing addresses. It also serves as the basic organizational unit for collections of e-mail addresses, which can be used to create mailing lists.

This document extends the Message and Attachment Object Protocol, as specified in[MS-OXCMSG], and specifies the properties that are set on Contact objects and Personal Distribution List objects in addition to the Message objectproperties specifiedin [MS-OXCMSG] section 2.2.1. This specification assumes that the reader has familiarity with the concepts and requirements of[MS-OXCMSG]. Those concepts and requirements are not repeated in this specification.

1.1Glossary

The following terms are defined in [MS-OXGLOS]:

Address Book object

binary large object (BLOB)

Coordinated Universal Time (UTC)

folder

.jpg

little-endian

locale

mailbox

Message object

one-off EntryId

portable network graphics (PNG)

property

store

Unicode

The following data types are defined in [MS-OXCDATA]:

PtypBinary

PtypBoolean

PtypInteger16

PtypInteger32

PtypMultipleBinary

PtypMultipleInteger32

PtypMultipleString

PtypString

The following terms are specific to this document:

address type: An identifier for the type of e-mail address, such as SMTP and EX.

Contact object: A Message object that contains properties pertaining to a contact.

Personal Distribution List object: A Message object that contains properties that pertain specifically to user-created distribution lists.

point: A unit of length used in typography to specify text character height and width.

MAY, SHOULD, MUST, SHOULD NOT, MUST NOT:These terms (in all caps) are used as described in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.

1.2References

1.2.1Normative References

[ISO/IEC 8802-3] International Organization for Standardization, "Information technology -- Telecommunications and information exchange between systems -- Local and metropolitan area networks -- Specific requirements -- Part 3: Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications", ISO/IEC 8802-3:2000,

[MS-OXCDATA] Microsoft Corporation, "Data Structures Protocol Specification", June 2008.

[MS-OXCFOLD] Microsoft Corporation, "Folder Object Protocol Specification", June 2008.

[MS-OXCICAL] Microsoft Corporation, " iCalendar to Appointment Object Conversion Protocol Specification", June 2008.

[MS-OXCMSG] Microsoft Corporation, "Message and Attachment Object Protocol Specification", June 2008.

[MS-OXCPRPT] Microsoft Corporation, "Property and Stream Object Protocol Specification", June 2008.

[MS-OXGLOS] Microsoft Corporation, "Exchange Server Protocols Master Glossary", June 2008.

[MS-OXOABK] Microsoft Corporation, "Address Book Object Protocol Specification", June 2008.

[MS-OXOCAL] Microsoft Corporation, "Appointment and Meeting Object Protocol Specification", June 2008.

[MS-OXPROPS] Microsoft Corporation, "Exchange Server Protocols Master Property List Specification", June 2008.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997,

[RFC2247] Kille, S., et al., "Using Domains in LDAP/X.500 Distinguished Names", RFC 2247, January 1998,

[RFC959] Postel, J. and Reynolds, J., "File Transfer Protocol (FTP)", RFC 959, October 1985,

1.2.2Informative References

None.

1.3Protocol Overview

A Contact object is aMessage objectthat represents a person or an entity. A Personal Distribution List object is a Message objectthat represents a group of e-mail addresses.

This protocol is an extension of the Message and Attachment Object Protocol, as specified in[MS-OXCMSG], and specifies the representation of a contact or personal distribution list in a messaging store. This document specifies the properties that are unique to Contactand Personal Distribution Listobjects, and the interdependencies that exist between subsets of these properties. A Contact objectcan contain subsets of properties that together define a subobject stored on aContact object, such as an e-mail address or a mailing address.

1.4Relationship to Other Protocols

TheContact Object Protocol Specificationis an extension to the Message and Attachment Object Protocol,as specified in [MS-OXCMSG], which specifies Message objects. [MS-OXCMSG]specifies the ROPs used to create and modify Message objects, and the properties that are common to all Message objects.

This protocol also requires an understanding of properties, as specified in[MS-OXPROPS], and folders, as specified in [MS-OXCFOLD].

1.5Prerequisites/Preconditions

None.

1.6Applicability Statement

A client can use this protocol to represent contact information and personal distribution listselectronically in a user’s mailbox.

1.7Versioning and Capability Negotiation

None.

1.8Vendor-Extensible Fields

None.

1.9Standards Assignments

None.

2Messages

2.1Transport

None.

2.2Message Syntax

Contact objects and Personal Distribution List objectscan be created and modified by clients and servers. Except where noted, this section defines constraints under which both clients and servers operate.

Protocol clients operate on Contact objectsandPersonal Distribution List objects usingthe Message and Attachment Object Protocol, as specified in[MS-OXCMSG]. The details of how a protocol server operates on Contact objects and Personal Distribution List objects is implementation-dependent.The results of any such operations are exposed to clients in a manner that is consistent with this protocol.

Unless otherwise specified, a Contact objector aPersonalDistribution List object adheres to all property constraints specified in [MS-OXPROPS] and [MS-OXCMSG]. A Contact object or Personal Distribution List object MAY also contain other properties [1][2][3]as specified in [MS-OXPROPS], but these properties have no impact on this protocol.

2.2.1Contact Object Properties

The propertiesspecified in section 2.2.1 are specific to Contact objects. They SHOULD only be set on Contact objects. Unless otherwise specified, each of these properties are optional and they only need to be set when there is user data that needs to be stored.

2.2.1.1Contact Name Properties

The properties specified in section 2.2.1.1can be set on a Contact objectand are used to specify the name of the person represented by the contact.

2.2.1.1.1PidTagNickname

This optional PtypStringproperty specifies the nickname of the contact.

2.2.1.1.2PidTagGeneration

This optional PtypStringproperty specifies the generation suffix of the contact, such as “Jr.”, “Sr.”, or “III”.

2.2.1.1.3PidTagDisplayNamePrefix

This optional PtypStringproperty specifies the title of the contact, such as “Mr.”, “Mrs.”.

2.2.1.1.4PidTagSurname

This optional PtypStringproperty specifies the surname (family name) of the contact.

2.2.1.1.5PidTagMiddleName

This optional PtypStringproperty specifies the middle name(s)of the contact.

2.2.1.1.6PidTagGivenName

This optional PtypStringproperty specifies the given name (first name) of the contact.

2.2.1.1.7PidTagInitials

This optional PtypStringproperty specifies the initials of the contact.

2.2.1.1.8PidTagDisplayName

This optional PtypStringproperty specifies the full name of the contact. This property SHOULD be computed by the application according to an implementation-dependent algorithm that uses the values of thePidTagDisplayNamePrefix, PidTagGivenName, PidTagMiddleName, PidTagSurname, and PidTagGeneration properties.

2.2.1.1.9PidLidYomiFirstName

This optional PtypStringproperty specifies the phonetic pronunciation of the contact’s given name.

2.2.1.1.10PidLidYomiLastName

This optional PtypStringproperty specifies the phonetic pronunciation of the contact’s surname.

2.2.1.1.11PidLidFileUnder

This PtypStringproperty SHOULD be set to the name under which to file this contact when displaying a list of contacts.The application SHOULD treat this property as an empty PtypString if it is missing from the Contact object.

2.2.1.1.12PidLidFileUnderId

This PtypInteger32property specifies how to generate and recompute the value of the PidLidFileUnderproperty when other Contact Name properties change. This propertySHOULD be set to one of the values in the following table.If this property is missing or set to a value not in the following table, the application can choose its own logic to recompute the value of PidLidFileUnder as other Contact Nameproperties change.

In the following table, the notation <PropertyName> is used to specify“the value of PropertyName”. For example, if the value of the PidTagSurnameproperty is “Smith”, and the value of the PidTagGivenNameproperty is “Ben”, then “<PidTagGivenNamePidTagSurname>” specifies the string “Ben Smith”. In the table, “\r” specifies a carriage return character, “\n” specifies a line feed character, and <space> represents a space character.

Computing the value of the PidLidFileUnder property based on PidLidFileUnderId property value

Value of the PidLidFileUnderId property / Meaning of the PidLidFileUnder property[4]
0x00000000 / EmptyPtypString.
0x00003001 / “<PidTagDisplayName>”
0x00003A06 / “<PidTagGivenName>”
0x00003A11 / “<PidTagSurname>”
0x00003A16 / “<PidTagCompanyName>”
0x00008017 / “<PidTagSurname>,<space>PidTagGivenName<space>PidTagMiddleName>”
0x00008018 / “<PidTagCompanyName>\r\n<PidTagSurname>,<space>PidTagGivenName<space>PidTagMiddleName>”
0x00008019 / “<PidTagSurname>,<space>PidTagGivenName<space>PidTagMiddleName>\r\n<PidTagCompanyName>”
0x00008030 / “<PidTagSurnamePidTagGivenName<space>PidTagMiddleName>”
0x00008031 / “<PidTagSurname<space>PidTagGivenName<space>PidTagMiddleName>”
0x00008032 / “<PidTagCompanyName>\r\n<PidTagSurnamePidTagGivenName<space>PidTagMiddleName>”
0x00008033 / “<PidTagCompanyName>\r\n<PidTagSurname<space>PidTagGivenName<space>PidTagMiddleName>”
0x00008034 / “<PidTagSurnamePidTagGivenName<space>PidTagMiddleName>\r\n<PidTagCompanyName>”
0x00008035 / “<PidTagSurname<space>PidTagGivenName<space>PidTagMiddleName>\r\n<PidTagCompanyName>”
0x00008036 / “<PidTagSurname<space>PidTagGivenName<space>PidTagMiddleName<space>PidTagGeneration>”
0x00008037 / “<PidTagGivenName<space>PidTagMiddleName<space>PidTagSurname<space>PidTagGeneration>”
0x00008038 / “<PidTagSurnamePidTagGivenName<space>PidTagMiddleName<space>PidTagGeneration>”
0xfffffffd / Specifies that, when displaying the Contact object, the application SHOULD attempt to use the current value of PidLidFileUnder and other contact properties to find a “best match” forPidLidFileUnderId to one of the previous values in this table.
0xfffffffe / Specifies that, when displaying the Contact object, the application SHOULD choose the appropriate default values (according to the language locale) for PidLidFileUnderId and update PidLidFileUnder to match the choice.
0xffffffff / PidLidFileUnder is a user-provided PtypString, and SHOULD NOT be changed when another Contact Name property changes.
2.2.1.1.13PidLidFileUnderList

This optional PtypMultipleInteger32property specifies a list of possible values for PidLidFileUnderId. Each value in the multi-value property MUST be one of the allowed values for PidLidFileUnderId specified in section 2.2.1.1.12.[5]

2.2.1.2Electronic Address Properties

The Contact object has built-in properties for up to three different e-mail addresses (Email1, Email2, and Email3) and three different fax addresses (Primary Fax, Business Fax, and Home Fax). Each of these electronic addresses is optional, and each consists of a group of related properties associated with it.

Unless otherwise specified, when creating or modifying a Contact object, all properties in a group MUST be set, changed, or deleted together at the same time. Specifications of similar properties are grouped together in sections 2.2.1.2.1 through 2.2.1.2.13. The following table specifies the properties in each electronic address group.

Group name / Description / Properties in group
Email1 / Refers to the group of properties that define the first e-mail address for a contact. / PidLidEmail1DisplayName
PidLidEmail1AddressType
PidLidEmail1EmailAddress
PidLidEmail1OriginalDisplayName
PidLidEmail1OriginalEntryId
Email2 / Refers to the group of properties that define the second e-mail address for a contact. / PidLidEmail2DisplayName
PidLidEmail2AddressType
PidLidEmail2EmailAddress
PidLidEmail2OriginalDisplayName
PidLidEmail2OriginalEntryId
Email3 / Refers to the group of properties that define the third e-mail address for a contact. / PidLidEmail3DisplayName
PidLidEmail3AddressType
PidLidEmail3EmailAddress
PidLidEmail3OriginalDisplayName
PidLidEmail3OriginalEntryId
Primary Fax / Refers to the group of properties that define the primary fax address for a contact. / PidTagPrimaryFaxNumber
PidLidFax1AddressType
PidLidFax1EmailAddress
PidLidFax1OriginalDisplayName
PidLidFax1OriginalEntryId
Business Fax / Refers to the group of properties that define the business fax address for a contact. / PidTagBusinessFaxNumber, PidLidFax2AddressType, PidLidFax2EmailAddress, PidLidFax2OriginalDisplayName
PidLidFax2OriginalEntryId
Home Fax / Refers to the group of properties that define the home fax address for a contact. / PidTagHomeFaxNumber
PidLidFax3AddressType
PidLidFax3EmailAddress
PidLidFax3OriginalDisplayName
PidLidFax3OriginalEntryId

If any of the e-mail addresses are defined for the contact, then the properties PidLidAddressBookProviderArrayType and PidLidAddressBookProviderEmailList MUST be defined as well.

For each e-mail address, if one property is defined, then the entire set of properties MUST be defined, and PidLidAddressBookProviderArrayType and PidLidAddressBookProviderEmailList MUST be defined as well.

If PidTagPrimaryFaxNumber, PidTagBusinessFaxNumber, or PidTagHomeFaxNumber is defined, then the PidLidAddressBookProviderArrayType and PidLidAddressBookProviderEmailListproperties SHOULD be defined, as well as the rest of the Primary Fax, Business Fax, or Home Fax properties respectively.[6]

2.2.1.2.1PidLidEmail1DisplayName, PidLidEmail2DisplayName, PidLidEmail3DisplayName

This PtypString property specifies the user-readable display name for the e-mail address.

2.2.1.2.2PidLidEmail1AddressType,PidLidEmail2AddressType,PidLidEmail3AddressType

This PtypString property specifies the address type of the electronic address;if present, the property value MUST be a valid [7] address type.

2.2.1.2.3PidLidEmail1EmailAddress, PidLidEmail2EmailAddress, PidLidEmail3EmailAddress

This PtypString property specifies the e-mail address of the contact. The value of this property MUST be appropriate <[8]for the address type specified for this e-mail address. Address types are specified by thePidLidEmail1AddressType, PidLidEmail2AddressType, PidLidEmail3AddressType properties.

2.2.1.2.4PidLidEmail1OriginalDisplayName, PidLidEmail2OriginalDisplayName, PidLidEmail3OriginalDisplayName

This PtypString property SHOULD specify the SMTP e-mail address corresponding to the e-mail address specified in 2.2.1.2.3 for the Contact object. If the value of the PidLidEmail1AddressType, PidLidEmail2AddressType, or PidLidEmail3AddressType propertyis “SMTP”, the value of the respective PidLidEmail1OriginalDisplayName, PidLidEmail2OriginalDisplayName,or PidLidEmail3OriginalDisplayName property SHOULD equal the value of the respective PidLidEmail1EmailAddress, PidLidEmail2EmailAddress, orPidLidEmail3EmailAddress property. The purpose of this property is to display an alternative user-friendly address that is equivalent to the one in the PidLidEmail1EmailAddress, PidLidEmail2EmailAddress,or PidLidEmail3EmailAddress property.

2.2.1.2.5PidLidEmail1OriginalEntryId, PidLidEmail2OriginalEntryId, PidLidEmail3OriginalEntryId

This PtypBinaryproperty specifies the EntryIdof the object corresponding to this electronic address. It MUST be either a one-off EntryId for this electronic address or a valid Address Book object EntryId.

2.2.1.2.6PidTagPrimaryFaxNumber, PidTagBusinessFaxNumber, PidTagHomeFaxNumber

This PtypString property specifies the fax number for the contact. The PtypString MUST NOT be longer than 255 characters, not including the terminating NULL character. There are no other restrictions on the format of this PtypString.

2.2.1.2.7PidLidFax1AddressType, PidLidFax2AddressType, PidLidFax3AddressType

This PtypStringproperty, if present, MUST be set to “FAX”.

2.2.1.2.8PidLidFax1EmailAddress, PidLidFax2EmailAddress, PidLidFax3EmailAddress

This PtypStringproperty, if present, SHOULD contain a user-readable display name, followed by the “@” character, followed by a fax number.

2.2.1.2.9PidLidFax1OriginalDisplayName, PidLidFax2OriginalDisplayName, PidLidFax3OriginalDisplayName

This PtypStringproperty, if present,MUST be set to the same value as PidTagNormalizedSubject.

2.2.1.2.10PidLidFax1OriginalEntryId, PidLidFax2OriginalEntryId, PidLidFax3OriginalEntryId

This PtypBinaryproperty, if present, MUST specifytheone-offEntryId corresponding to this fax address.

2.2.1.2.11PidLidEmailList

The value of this PtypMultipleInteger32property MUST be ignored.[9]

2.2.1.2.12PidLidAddressBookProviderEmailList

This PtypMultipleInteger32 property specifies which electronic address properties are set on the Contact object. Each PtypInteger32 value in this property MUST be unique in the property and MUST be set to one of the values in the following table. If this property is set, then PidLidAddressBookProviderArrayType MUST also be set. These two properties MUST be kept synchronized with eachother.[10]> For example, if one of the values in PidLidAddressBookProviderEmailList is “0x00000000”, then PidLidAddressBookProviderArrayType MUST have the bit” 0x00000001” set.

Value / Meaning
0x00000000 / Email1 is defined for the contact.
0x00000001 / Email2 is defined for the contact.
0x00000002 / Email3 is defined for the contact.
0x00000003 / Business fax is defined for the contact.
0x00000004 / Home fax is defined for the contact.
0x00000005 / Primary fax is defined for the contact.

2.2.1.2.13PidLidAddressBookProviderArrayType

This PtypInteger32property specifies the state of the contact’s electronic addresses and represents a set of bit-flags. The value of the PidLidAddressBookProviderArrayType property MUST be a combination of flags that specify the state of the Contact object. Individual flags are specified in the following table. If this property is set, then PidLidAddressBookProviderEmailList MUST be set as well. These two properties MUST be kept in sync with each other. For example, if this property has the bit “0x00000001”set, then one of the values of PidLidAddressBookProviderEmailList MUST be “0x00000000”.

Bit / Meaning
0x00000001 / Email1 is defined for the contact.
0x00000002 / Email2 is defined for the contact.
0x00000004 / Email3 is defined for the contact.
0x00000008 / Business fax is defined for the contact.
0x00000010 / Homefax is defined for the contact.
0x00000020 / Primaryfax is defined for the contact.
2.2.1.3Physical Address Properties

The Contact object provides built-in support for three physical addresses: Home Address, Work Address, and Other Address. One of the addresses can be marked as the Mailing Address. Each of these physical addresses is optional, and each consists of a group of related properties associated with it.

When creating or modifying a Contact object, all properties in a group MUST be set, changed, or deleted together at the same time. Specifications of similar properties are grouped together in sections 2.2.1.3.1 through 2.2.1.3.9.