Conversation Index and Conversation ID across different Exchange servers RRS feed

  • Question

  • Case 1:
    2 users are connected to the same Exchange server are sending emails to each other.
    Every mail item that they share will carry the same Conversation Index and Conversation ID for both of them.

    Case 2:
    2 users are connected to different Exchange servers  from 2 different companies are sending emails to each other.
    User A is sending a mail item with Conversation Index 1  to User B
    User B Exchange assigns Conversation Index 5 to the mail item that was sent by A to B.
    Now, when user B replies to the email sent by A, he will advance the numbering and make sure it keeps the integrity of the conversation, but it will be according to the indexing of the Exchange of user B.

    How on earth then, does user A client (outlook for that matter) know to allocate the mail item that replies to the one sent originally by user A to the right conversation ?

    In other words, if every exchange is keeping his own indexing mechanism, how does a reply with a forign index manages to fit well in the local indexing system. The proof that it works is that outlook manages to build a correct conversation view that include emails coming from a "foreign" exchange.
    Is there a mechanism or a protocol that does this translation/allocation ?

    Monday, May 19, 2014 3:07 PM


All replies

  • Hello,

    The Conversation related properties are based on the subject plus date/time stamps.  See What happened to ConversationID/ConversationIndex in Outlook 2010 - they are no longer consistent for more information.

    You can find the Tracking Conversations section in MSDN helpful. It states the following:

    PR_CONVERSATION_TOPIC is the normalized subject of the message, the subject without the prefix strings.

    PR_CONVERSATION_INDEX indicates the position of the message within a particular conversation.

    Monday, May 19, 2014 3:18 PM
  • Thanks for the interesting Topic Eugene!
    The following paragraph caught my attention and stressed the point I'm trying to make :

    "But I still don't understand why this is behaving so inconsistently when sending between different account types within OL2010.  And I don't understand why they couldn't retain the conversationindex handling when it was available e.g. in the Thread-Index internet header."

    I still fail to understand why is it that when I'm sending an email between two Outlook 2010 clients, one is on and the other one is on, there is still inconsistency between conversation id/conversation index on both ends ....

    • Edited by Workmail Monday, May 19, 2014 10:01 PM
    Monday, May 19, 2014 9:58 PM
  • Could you please be more specific? Do mail items from both ends relate to the same conversation group? Make sure that the subject is not changed on both ends. Items will not be grouped if you (a third party add-in) change the subject. BTW do you have the latest updates and service packs installed for Outlook 2010? Any COM add-ins?
    Tuesday, May 20, 2014 5:47 AM
  • I don't change the subject of the email and I don't change the participants. I just "reply" to an email.
    Doing all that from to (both are connected to Exchange I guess) using Outlook 2010 clients on both ends, makes me wonder why both sides do not share the same Conversation ID/Conversation index for the same mail item...
    Tuesday, May 20, 2014 7:41 AM
  • and Exchange server are different things.
    Tuesday, May 20, 2014 12:45 PM
  • " and Exchange server are different things."

    Please explain. Are they not using Exchange ?

    Tuesday, May 20, 2014 12:55 PM
  • How do you connect in Outlook to the MSN account? Do you choose the Exchange server or POP3/SMTP account type?
    Tuesday, May 20, 2014 4:08 PM
  • On both ends ( to I'm able to retrieve conversation Index and conversation id and all necessary exchange specific data. 
    My plugin would not come up if it was not the case.
    Considering that I do not understand why the two eschange servers are not in sync as far as 
    conversation Index and conversation ID are concerned.   
    Wednesday, May 21, 2014 6:39 AM
  • It looks like you missed my last questions to you.

    > and all necessary exchange specific data. 

    What exchange specific data are you talking about? Could you please be more specific?

    Wednesday, May 21, 2014 12:53 PM
  • We are checking IsConversationEnabled == true.
    If yes we are retrieving conversation Index. But both values are different for the same mail item on different mailboxes.
    So we can't identify uniquely the same mail item in both mail boxes.
    Wednesday, May 21, 2014 11:41 PM
  • Why do you think that these properties should identify mail items uniquely?

    Nobody says that these properties should be the same on different PCs. They are used for keeping conversations only. If you need to identify mail items you may try to a add some info to a transport header.

    Thursday, May 22, 2014 6:41 AM
  • It concludes from the definition of ConversationID = MD5 hash of Conversation Topic (which is normalized Mail subject).
    ConversationIndex = ConversationId + timestamp.
    Adding custom info to header solved the problem partially. It will work just for emails that treated by my custom code.
    Do you have a code snippet of adding an info to mail header? 
    Thursday, May 22, 2014 3:00 PM
  • You may find a sample code in the How To Obtaining the SMTP Header for a MAPI Message article. Also you may find the Read X-Headers and flag email message in Outlook  forum thread helpful.

    • Marked as answer by Marvin_Guo Tuesday, May 27, 2014 8:44 AM
    Friday, May 23, 2014 8:06 AM