Video Screencast Help
Give us your opinion and win with Symantec! Please help us by taking this survey to tell us about your experience with Symantec Connect, so that we can continue to grow and improve.  Take the survey.

Fetch mail and/or mail EntryID via EV SDK

Created: 15 Mar 2011 • Updated: 16 Mar 2011 | 7 comments
This issue has been solved. See solution.

A .NET-addin processes eMail items in Outlook 2007/2010 (save to disk etc). By using the EntryID in the mail item we can have a common reference between different eMail-accounts.

Problem: When item is in Enterprise Vault we need to be able to do 2 things:

1. Fetch the whole mail item and save it to disk as a complete MSG with all information in it (not only references).
2. Fetch the EntryID of a mail item that is in EV.

Now, as I understand it - in order to get the EV SDK one needs to buy the product which is fine BUT I don't wanna buy the product and then find out that it wasn't possible. I've tried searching on the forums and found this: and it didn't direacly answer my question.

If someone could be so kind and verify 1. and 2. it would be really helpful or just point me to some sort of documentation around the SDK.

Kind regards
Andreas Mäkitalo
Addovation AS

Comments 7 CommentsJump to latest comment

Rob.Wilcox's picture

Let me see if our API-guy knows the answer off the top of his head.

Wayne Humphrey's picture

Hi Addovation,

I dont quite understand what you want here? but let me see if this helps....

1) Yes you can fetch the whole item using the API and store it as the original. You dont necceserly need to use the API, you can also use download.asp which does not require an extra licence.

Here is a bit of VBScript to accomplish this.

On Error Resume Next
Dim ContentManagementAPI
Set ContentManagementAPI = CreateObject("EnterpriseVault.ContentManagementAPI")
'load routine
Sub window_onload
   window.resizeTo 555,250
End Sub
Sub Submit
  Dim item 
  set item = ContentManagementAPI.Item
  On Error Resume Next
  dim CurAction
  CurAction = "Recombining saveset into MSG"
  item.ArchiveId = ArchiveId.value
  item.Id = Id.value
  item.Content.Data = Content.value
  Message.innerHTML = "<font color=""green"">&nbsp;&nbsp;Complete</font>"
  if (err.number <> 0) then
   Message.innerHTML = "<font color=""red""><b>Faild!&nbsp;</b>-&nbsp;</font>" & hex(Err.number)
    msgbox "Description: " & Err.Description & Err.Description, vbOkOnly + vbcritical, CurAction
   'msgbox "Reason: " & hex(Err.number) & vbcrlf & "Description: " & Err.Description, vbOkOnly + vbcritical, CurAction
  end if
End Sub

Or if you wish not to use the API you could use this - 

To retrve an item from Enterprise Vault you will need to look for all IPM.Note.EnterpriseVault.Shortcut PR_MESSAGE_CLASS_W  and extract two MAPI Properties (Archive ID and Saveset ID) from the message.

Archive ID

Value: 104DECBD137C7FF44931F0E349C55B32D1110000archive
Saveset ID
Value: 201011301136579~201011161559170000~Z~B079858F3C369DA074F4419186262D51
AddovationAs's picture

If I am able from a c#/.NET application/Office Outlook addin via the EV SDK to fetch the "whole item" and all it's properties i'm happy with that. The main reason for investigating this issue is that I was unable to fetch the EntryID of all the mailitem's that is stored in Enterprise Vault which is a key in the design of the application.

May I ask if there is any chance of getting hold of the SDK documentation before purchasing the product in order to see what possibilities we have of using the SDK API's?

Kind regards

Wayne Humphrey's picture

No, there is no chance that you will get the SDK API without becoming a step partner. 

There is no such thing as the EntryID, maybe I am miss understaning your question because when I read your second post it sounds like you trying to do something else.

Using the ECM API you cannot fetch a list of all itemes sotred in an archive. Explane more what you are trying to acomplish.

AddovationAs's picture

ok, Outlook mail items have a global unique identifier (EntryID) that is being used to, for instance, to identify chains of messages (in order to oragnize conversations). If I send a mail to both person A and person B the mail can then be identified by this ID in both person A and B's inboxes. This ID is not a part of mail items that has been stored in EV (it is removed or set to null at least) thus my dilemma.

If person A checks in the mail (in a document management system) we store the EntryID as a part of the mail in order to identify it from person B's Outlook client. Person B can then optionally check all of his/hers mail items and we can mark it as already checked in to the document management system.

So the algorithm i'm looking for would then be:

1. Process all messages in Outlook that is stored in EV.
2. Somehow retrieve the "original mail item" (in order to fetch the EntryID).
3. If the mail exists in the document management system, mark it as already checked in (by putting a category flag on it).

Will the SDK let me do this?

Wayne Humphrey's picture

cool, roger that....

*G* recall every message from EV? ouch.... that is going to hurt...

but simple answer would be yes/no :) the esiest way to do this is to query SQL to get a list of all archives and the saveset accosiated with it, from there you can then use the api to fetch each item.

I would think you might want to consider your algorithm thou as it might kill the Enterprise Vault servers :)

AddovationAs's picture

True, but at least it is possible. Just need to adjust the design "little" bit. Now I'm off to finding out how to be a STEP-partner.

Thanks for extremely fast respons and alot of competency directly from the start of the thread.

Case solved, dismisssed and closed.