I'm working with a customer that needs to archive contacts (preferably at 0 days) in mailboxes, but does not want them to expire with normal email.
The default retention category for the mailbox is 1 year.
Users create folders as they want, with no real pattern, in any place in their mailbox for contacts for projects or customers they're working for. Most of the time they don't create the additional folders under their \Contacts folder.
As far as I know, there isn't a way to apply a retention category to a message class type (and this to the customer seems to be a serious deficiency). And since there isn't a way to know where the folders that contain contacts are, we really can't use EVPM.
For some reason the customer didn't like my workaround:
Create a default mailbox policy that doesn't archive contacts, apply that to the provisioning groups with the default retention category and then run the provisioning task, synchronize mailboxes and then run the archiving task. Then the next day, modify the provisioning groups with a different mailbox policy that ONLY archives contacts, change the retention category to the contacts retention category, run the provisioning task, synchronize mailboxes, then run the archiving task. Then the next day, modifiy the provisioning groups to use the default mailbox policy and the default retention category, run the provisioning task, then synchronize the mailboxes and run the archiving task. Then the next day change the provisioning groups to use the mailbox policy and retention category for contacts, provision, synchronize and archive. Then repeat ad infinitum.