2.2.5.2.3 Retention and Archive Settings

If the client or server supports configuration data, as specified in section 2.2.2, and the retention policy or archive policy features are enabled, then it SHOULD store the settings that are specified in this section in a tags list stream. A tags list is a type of configuration data, as specified in section 2.2.5, that contains a list of settings for a retention policy or an archive policy. The application SHOULD<13> store the tags list stream in an FAI message that is contained in the Inbox folder. The message MUST have the PidTagMessageClass property ([MS-OXCMSG] section 2.2.1.3) set. The value of the property MUST be "IPM.Configuration.MRM". The XML document that is stored in the PidTagRoamingXmlStream property (section 2.2.2.3) MUST conform to the following XSD.

  
 <?xml version="1.0"?>
 <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="UserConfiguration">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="Info">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="Data">
                 <xs:complexType>
                   <xs:sequence>
                     <xs:element name="RetentionHold">
                       <xs:complexType>
                         <xs:attribute name="Enabled" type="xs:string" use="required" />
                         <xs:attribute name="RetentionComment" type="xs:string" />
                         <xs:attribute name="RetentionUrl" type="xs:string" />
                       </xs:complexType>
                     </xs:element>
                     <xs:element maxOccurs="unbounded" name="PolicyTag">
                       <xs:complexType>
                         <xs:sequence minOccurs="0">
                           <xs:element minOccurs="0" name="LocalizedName">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element maxOccurs="unbounded" name="Name" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                           </xs:element>
                           <xs:element minOccurs="0" name="LocalizedComment">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element maxOccurs="unbounded" name="Comment" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                           </xs:element>
                           <xs:element minOccurs="0" name="ContentSettings">
                             <xs:complexType>
                               <xs:attribute name="Guid" type="xs:string" use="required" />
                               <xs:attribute name="ExpiryAgeLimit" type="xs:unsignedShort" use="required" />
                               <xs:attribute name="MessageClass" type="xs:string" use="required" />
                             </xs:complexType>
                           </xs:element>
                         </xs:sequence>
                         <xs:attribute name="Guid" type="xs:string" use="required" />
                         <xs:attribute name="Name" type="xs:string" use="required" />
                         <xs:attribute name="Comment" type="xs:string" />
                         <xs:attribute name="Type" type="xs:string" use="required" />
                         <xs:attribute name="MustDisplayComment" type="xs:string" use="required" />
                         <xs:attribute name="IsVisible" type="xs:string" use="required" />
                         <xs:attribute name="OptedInto" type="xs:string" use="required" />
                       </xs:complexType>
                     </xs:element>
                     <xs:element maxOccurs="unbounded" name="ArchiveTag">
                       <xs:complexType>
                         <xs:sequence minOccurs="0">
                           <xs:element minOccurs="0" name="LocalizedName">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element maxOccurs="unbounded" name="Name" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                           </xs:element>
                           <xs:element minOccurs="0" name="LocalizedComment">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element maxOccurs="unbounded" name="Comment" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                           </xs:element>
                           <xs:element minOccurs="0" name="ContentSettings">
                             <xs:complexType>
                               <xs:attribute name="Guid" type="xs:string" use="required" />
                               <xs:attribute name="ExpiryAgeLimit" type="xs:unsignedShort" use="required" />
                               <xs:attribute name="MessageClass" type="xs:string" use="required" />
                             </xs:complexType>
                           </xs:element>
                         </xs:sequence>
                         <xs:attribute name="Guid" type="xs:string" use="required" />
                         <xs:attribute name="Name" type="xs:string" use="required" />
                         <xs:attribute name="Comment" type="xs:string" />
                         <xs:attribute name="Type" type="xs:string" use="required" />
                         <xs:attribute name="MustDisplayComment" type="xs:string" use="required" />
                         <xs:attribute name="IsVisible" type="xs:string" use="required" />
                         <xs:attribute name="OptedInto" type="xs:string" use="required" />
                       </xs:complexType>
                     </xs:element>
                     <xs:element maxOccurs="1" name="DefaultArchiveTag">
                       <xs:complexType>
                         <xs:sequence minOccurs="0">
                           <xs:element minOccurs="0" name="LocalizedName">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element maxOccurs="unbounded" name="Name" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                           </xs:element>
                           <xs:element minOccurs="0" name="LocalizedComment">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element maxOccurs="unbounded" name="Comment" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                           </xs:element>
                           <xs:element minOccurs="0" name="ContentSettings">
                             <xs:complexType>
                               <xs:attribute name="Guid" type="xs:string" use="required" />
                               <xs:attribute name="ExpiryAgeLimit" type="xs:unsignedShort" use="required" />
                               <xs:attribute name="MessageClass" type="xs:string" use="required" />
                             </xs:complexType>
                           </xs:element>
                         </xs:sequence>
                         <xs:attribute name="Guid" type="xs:string" use="required" />
                         <xs:attribute name="Name" type="xs:string" use="required" />
                         <xs:attribute name="Comment" type="xs:string" />
                         <xs:attribute name="Type" type="xs:string" use="required" />
                         <xs:attribute name="MustDisplayComment" type="xs:string" use="required" />
                         <xs:attribute name="IsVisible" type="xs:string" use="required" />
                         <xs:attribute name="OptedInto" type="xs:string" use="required" />
                       </xs:complexType>
                     </xs:element>
                   </xs:sequence>
                 </xs:complexType>
               </xs:element>
             </xs:sequence>
             <xs:attribute name="version" type="xs:string" use="required" />
           </xs:complexType>
         </xs:element>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
 </xs:schema>

Info: The parent element of the Data element. The Info element has the following attribute.

Attribute name

Description

version

A string that specifies the version of the policy.

Data: A child of the Info element. A container element for the other retention policy settings.

RetentionHold: A child of the Data element. Includes a series of sub-elements that describe the retention policy in effect for this user. Has the following attributes:

Attribute name

Description

Enabled

Indicates whether retention is enabled for a user. If it is enabled, then the client can display specific information to indicate that messages will not expire. This value is configured by a server administrator. The value MUST be "True" or "False".

RetentionComment

Contains a string used to communicate information regarding the retention policy feature to the user. This value is configured by a server administrator. The client application SHOULD display this to the user. The string length MUST be between 0 and 1,024 characters.

RetentionUrl

Contains a link to a Web page that contains more information about the retention policy. This value is configured by a server administrator. The client application SHOULD display this to the user. The string length MUST be between 0 and 2,048 characters.

PolicyTag: A child of the Data element. Stores information about the retention policy. The information is stored in the attributes defined in the following table.

Attribute name

Description

Guid

A GUID value that provides a unique identity for the policy.

Name

The name of the policy tag. This value is configured by a server administrator. The value MUST be unique; no two policy tags or archive tags can have the same name. The string length MUST be between 1 and 264 characters.

Comment

A brief description of the policy tag. This value is configured by a server administrator. The string length MUST be between 1 and 264 characters.

Type

The type of policy tag. This value is configured by a server administrator. The possible values are as follows:

  • All

  • Calendar

  • Contacts

  • ConversationHistory

  • DeletedItems

  • Drafts

  • Inbox

  • JunkEmail

  • Journal

  • Notes

  • Outbox

  • Personal

  • RssSubscriptions

  • SentItems

  • SyncIssues

  • Tasks

Policy tags with a type of "All" apply to all items that do not have an applicable policy tag. Policy tags of type "Personal" are applied explicitly by the user. All other tags are applied to the corresponding special folder.

MustDisplayComment

The client application MAY use this setting to determine whether the user can hide the retention comment. The value SHOULD be "True" or "False". If the value is "True", the client MAY NOT allow the user to hide the retention comment.

IsVisible

The client application MUST use this setting to determine whether the policy tag is displayed in the list of tags available to the user. The value SHOULD be "True" or "False". If the value is "True", the client MUST display the policy tag in the list of tags available to the user.

OptedInto

Indicates whether the user voluntarily chose this tag for the mailbox or whether it was applied to the mailbox by the server administrator. The value SHOULD be "True" or "False". A value of "True" SHOULD<14> indicate that the user voluntarily chose this tag.

LocalizedName: A child of the PolicyTag element. It is also a child of the ArchiveTag and DefaultArchiveTag elements. Can contain multiple Name elements as children. Each contains the ISO language code followed by a colon (":") and the localized name of the tag. The string length MUST be between 0 and 264 characters.

LocalizedComment: A child of the PolicyTag element. It is also a child of the ArchiveTag and DefaultArchiveTag elements. Can contain multiple Comment elements as children. Each contains the ISO language code followed by a colon (":") and the localized comment. The string length MUST be between 0 and 264 characters.

ContentSettings: A child of the PolicyTag element. It is also a child of the ArchiveTag and DefaultArchiveTag elements. Stores the settings that control when items expire and the types of items that expire. The settings are stored in the following attributes.

Attribute name

Description

Guid

A GUID value that provides a unique identity for the content setting.

ExpiryAgeLimit

The number of days after which an item SHOULD expire under this policy. This value is configured by a server administrator. The value MUST be between 0 and 24,855.

MessageClass

The message classes that this content setting applies to. This value is configured by a server administrator. This value can be any string that represents a message class. The value "*" represents any message class. The string length MUST be between 1 and 1,023 characters.

ArchiveTag: A child of the Data element. Stores information about an archive policy. The information is stored in attributes and child elements identical to those on the PolicyTag element. The value of the ArchiveTag element SHOULD NOT be displayed by the client application in the archive mailbox. It SHOULD be displayed only in the primary mailbox.

DefaultArchiveTag: A child of the Data element. Stores information about the default archive policy. The information is stored in attributes and child elements identical to those on the PolicyTag element. The value of the DefaultArchiveTag element SHOULD NOT be displayed by the client application in the archive mailbox. It SHOULD be displayed only in the primary mailbox.