Hi,
I am trying to add retention policies to user folders programatically, using EWS.
I am taking one of the available retention tags and applying it to a custom Folder. Doing so, through code I can see that proper tag is getting applied (I am checking the value of extended property0x3019). However, when I open outlook, select the custom folder and click onPolicy in ribbon under Folders tab, I don't see the retention tag applied. I even waited for few hours, but still tags didn't get applied.
Can someone please suggest, what might be going wrong here?
For reference, I have added the code snippet below. Thanks much for help.
try
{
// parameters to handle pagination in folders
Guid rGUID =Guid.NewGuid();
int pageSize = 1000;
int offset = 0;
bool moreItems =true;
bUserHasRecords =false;
logMessage ="Accessing user mailbox"+ userEmail +"......";
Console.WriteLine("Accessing user mailbox "+ userEmail + "......");
// Set impersonated mailbox
ImpersonatedUserId idIEMX =newImpersonatedUserId(ConnectingIdType.SmtpAddress, userEmail);
this.serviceEWS.ImpersonatedUserId = idIEMX;
GetUserRetentionPolicyTagsResponse rententionTags =this.serviceEWS.GetUserRetentionPolicyTags();
foreach (RetentionPolicyTag retentionTag in rententionTags.RetentionPolicyTags)
{
if (retentionTag.DisplayName.Equals("5 Year Delete",StringComparison.InvariantCultureIgnoreCase))
rGUID = retentionTag.RetentionId;
}
ExtendedPropertyDefinition extendedPropertyRetentionTag =newExtendedPropertyDefinition(0x3019,Microsoft.Exchange.WebServices.Data.MapiPropertyType.Binary);
// Get root folder handle
Microsoft.Exchange.WebServices.Data.Folder rootfolder = null;
rootfolder = Microsoft.Exchange.WebServices.Data.Folder.Bind(this.serviceEWS,WellKnownFolderName.MsgFolderRoot);
rootfolder.Load();
FolderView fv =newFolderView(pageSize, offset);
// Search for deep folder traversals
fv.Traversal =FolderTraversal.Deep;
fv.PropertySet =newPropertySet(BasePropertySet.IdOnly,FolderSchema.DisplayName, extendedPropertyRetentionTag);
while (moreItems)
{
FindFoldersResults fr1 = rootfolder.FindFolders(fv);
// check if more items are available
moreItems = fr1.MoreAvailable;
if (moreItems)
fv.Offset += pageSize;
//Loop through each folder
foreach (Microsoft.Exchange.WebServices.Data.Folder folder in fr1)
{
logMessage +="Accessing folder: "+ folder.DisplayName +"......";
if (folder.DisplayName.Equals("Unfiled",StringComparison.InvariantCultureIgnoreCase))
{
folder.SetExtendedProperty(extendedPropertyRetentionTag, rGUID.ToByteArray());
folder.Update();
}
}
}
}
catch (System.Exception ex)
{
logMessage += ex.ToString();
Console.WriteLine(ex.ToString());
logger.WriteMessage(logMessage);
}
ashishshukla.1183