views:

43

answers:

3

After document approval, i want set it to a final status where newer version of document cannot be uploaded or any modifications made (i don't care if it is downloaded and modified on users PC, but it must stay as is in SharePoint).

I see few options here:

  • break permission inheritance and set all roles to read only.
  • EventReceiver on ItemUpdating/ItemDeleting/ItemCheckingIn and cancel event if my approval status is set to approved.

Breaking permissions would seem more acceptable for me, because the eventreceiver solution will provide error after user tries to make action rather than before it tries to do something. Also it would run on each ItemUpdating event, checking if this document is approved. Which is bad.

But maybe there is just a flag for a file i could use like set it as readonly or final? What would be the best solution here. Solutions which would affect only docx format are also welcome for evaluation.

+1  A: 

Hi Janis

There is not a really nice solution to this:

  • Break permission is the one that looks nice in the UI, but it has the drawback of not staying up to date with new groups of users being added
  • The event receiver doesn't give you a nice UI, but works
  • A third option often used is to check out the document using some fake user and letting it stay checked out. (Maybe adding a event receiver to prevent the checkout from being undone). But this is kind of a hack.
Per Jakobsen
Nice. Third looks good. System account will do just fine for that. And I don't mind if some Administrator can uncheck documents. After all, he is administrator.
Janis Veinbergs
+1  A: 

Look into the Records Center. It's designed for compliance (HIPAA, SOX, etc.) to store items that should never be changed. You can work on items and mess with them, then when they are ready, you send them to the records center for read-only archival.

Any other solution you come up with will allow an administrator to modify the existing documents / list items. Well, I suppose you could make a custom event handler to stop someone from modifying / deleting the items.

http://office.microsoft.com/en-us/sharepoint-server-help/introduction-to-the-records-center-site-HA010173596.aspx

Tim Larson
+1  A: 

Just a clarification to the answers posted by Per and Tim. The records center is a MOSS only feature so if you are running just WSS Per's suggestions are about the best you can do, but if you are running MOSS then Tim's answer about using the record center is the way to go. Microsoft spent a lot of time getting DoD 5015.02 Chapter 2 records management certification for MOSS 2007.

Junx