Easy Answers about Document Libraries (Part I): Overriding Check Out
Last week, I had the opportunity to speak to 200 SharePoint admins as part of our Mastering SharePoint event. To those of you who attended, thank you! One of the sessions I presented is a popular one that covers the configuration and management of document libraries. Each time I speak with folks about document libraries, several questions consistently arise. The first, which I'll cover this week, is what happens when a user checks out a document then doesn't check it back in. A related question is how to allow a subset of users (managers, for example) to check in documents on behalf of other users, who may have forgotten to check them in.
Changes are not visible to others until the document is checked in
The first, most straightforward fact about check out is that when a user has a document checked out, changes the user makes are not visible to anyone until the document is checked in. If you look behind the scenes, you'll see that when you check out a document, SharePoint creates "the next" version and it is visible only to the user who has the document checked out. So if I check out version 1.0 of a document, changes I make are actually being saved to version 1.1. I'm the only one able to see version 1.1. When I check in the document, if versioning is enabled, everyone sees version 1.1. (My example assumes minor versioning—with major versioning, we're dealing with 2.0). If versioning is not enabled, my version 1.1 replaces version 1.0 and thereafter my changes are visible.
It's super important to train users to know that their changes won't be visible to anyone else until they check in the document. Microsoft Office 2007 client applications remind the user when the document is closed, but other applications don't, so be sure to include it in your training and communication.
When a user checks in a document, he or she can keep it checked out. Doing so makes changes visible, but maintains the editorial lock (check out) on the file, so that the user can continue editing the document. The confusing message presented to users while checking in a document, "Would you like to keep the document checked out after checking it in?" needs to be translated to "user speak" as part of your training and communication as well!
Discard check out
Simple enough: When you discard check out, all changes made are thrown away, and the document reverts to the version that had been originally checked out. Following our example, the changes I make to 1.1 are "discarded" and version 1.0 remains, and the editorial lock on the file is released.
The Override Check Out permission
The Override Check Out permission allows one user to check in a document checked out by another user. The same permission allows a user to discard the check out of a document checked out by another user. This permission is part of the Design permission level. Anyone who has Design (or Full Control) roles can check in or discard check out for documents. But Design is a pretty high-level permission that allows the creation and deletion of lists and libraries. A common requirement I encounter is for a subset of administrators or users to be able to manage check out. You can delegate this permission by creating a permission level. To do so, follow these steps:
1. Open the Site Settings page:
2. Click the Advanced Permissions link.
3. On the menu bar, click Settings and choose Permission Levels.
4. Click the Add a Permission Level button.
5. Enter a descriptive Name, such as Manage Check Out.
6. In the Permissions section, select Override Check Out. Other permissions required will automatically be selected, as Figure 1 shows.
7. Click OK.
After creating the permission level, create a role that will be associated with the permission:
1. Open People and Groups.
2. In the menu bar, click the New button drop-down arrow, then choose New Group.
3. Enter a group Name, such as "Document Check Out Managers."
4. If you want the group to have this permission for all lists and libraries in the site, select the permission in the Give Group Permission to this Site box. If you want to assign the group permissions to one or more specific lists or libraries, then deselect all permissions.
5. Click OK.
Finally, you can assign the role the permission to the site or to one or more specific documents libraries (or lists). To assign the group Override Check Out permission to the entire site, select the permission in step 4, above. To assign the group permission to one document library, open the permissions for the library, add the group (click the New button and choose Add Users), and select the permission level, as Figure 2 shows.
When you assign the role to a site or library, that site or library may be inheriting permissions from its parent—the default security model in SharePoint. You'll have to break inheritance before you can assign a new permission at that level, by clicking the Actions button and choosing Edit Permissions.
A caveat about the SharePoint Drafts folder and other caching tools
When a user checks in a document that he or she checked out, all changes are saved and made available. This is not always the case when an admin checks in a document that another user checked out!
There are several ways to work with SharePoint documents offline, including Groove, third-party tools like Colligo, and the SharePoint Drafts folder which is a fantastic, native feature of Office 2007. In these cases, a user checks out a document and as changes are made, the changes are generally saved locally and not to the SharePoint server itself. Therefore, when the document is checked in by another user or admin, there is no record on the server of the user's changes. In such cases, checking in a document (checked out by another user) is equivalent to discarding the check in. Except that the version number will be increased if you have versioning enabled). So if I checked out a document and you checked it in on my behalf, using your Override
Check Out permission, my changes are "lost." But not entirely. My changes still exist on my system, in my SharePoint Drafts folder for example. I won't be able to check them in because you've done so already, but I can upload the changed document as yet another new version. Of course, there may need to be some manual reconciliation of changes as well. So now you can delegate the ability to check in documents checked out by other users, and you know the potential problem of recent changes, stored locally on the user's system, which get set aside when Override Check Out is used.