3.1.5.6.2.1 Conflict Resolve Message

A conflict resolve message provides a way to encapsulate conflicting versions of a Message object into a single Message object, by storing all the versions of the Message object as individual attachments to the new Message object and choosing a temporary winning message and copying it as the message contents. The contents of the conflict resolve message include all properties and subobjects of the winning version; therefore the conflict resolve message can be used in place of the winning version whenever required. The winner MUST be determined by the last writer wins algorithm, as specified in section 3.1.5.6.2.2. Because the conflict resolve message is a successor of all the conflicting versions it represents, its PCL MUST be the merge of the PCLs of the conflicting versions.

Conflict resolve messages MUST NOT be synchronized as Message objects. Instead, each attachment that represents a version in conflict MUST be synchronized as a separate Message object. The protocol role that is receiving the conflicting Message objects MUST detect the conflict during synchronization, generate a conflict resolve message locally, and resolve the conflict while considering all (possibly, more than two) conflicting versions.

A conflict resolve message MUST contain the msInConflict flag in the PidTagMessageStatus property ([MS-OXCMSG] section 2.2.1.8). Each attachment that represents an alternate replica MUST have the value of the PidTagInConflict property set to TRUE. This allows them to be distinguished from other "regular" attachments on the message.

The client and server MUST generate a conflict resolve message when detecting a conflict against the current version of a message in the replica during synchronization. It is important to understand that it is possible that the current version of the message in the local replica was transmitted during the current synchronization operation. This happens when the conflict already exists on the server before any of the conflicting messages were downloaded to the local replica.

A client or server MUST NOT generate conflict resolve messages for FAI messages. These messages MUST be resolved by using RESOLVE_METHOD_LAST_WRITER_WINS semantics, as specified in section 3.1.5.6.2.2.