One of our project wants to implement the concept of a legal hold as part of our Records Management practice. A legal hold is required for one or many documents when a litigation occurs. All items relevant to a given litigation must be freeze meaning that their current information policy must be suspended, only specific users are now allowed to access the document, and all these actions must be audited.
Given that this function was need prior to the DOD certification of MOSS 2007 that validate the MOSS Records Management features, which occurs in May, we have think about an interim solution. Using a legal flag property (a checkbox) within the document properties, we have written an event handler that look at every field change in the document library and if we detect that the legal flag has been modified for a given document, we dynamically change the permission sets for this item, thus restricting access to a specific group, and we start audit various actions such as view, edit, etc.
The only thing that we haven't done is to suspend their current information policy and it is because we haven't really looked at it seriously. Since Records Management feature is now DOD certified, we will look to use it instead of our custom solution.
This situation is a solid example of the richness and flexibility of the MOSS/WSS platform and object model. We've been able to achieve 2 of the 3 core functions related to Legal Hold just by writing a couple of event handlers.