I was doing some experiments related to out-of-box content approval functionality on a SharePoint 2019 document library.
While trying out some common user case something that I never realized came to my: apparently it is possible to enter a deadlock situation that requires some manual counter-intuitive intervention to solve.
Suppose you have a library with the following settings:
- content approval: required
- version history: keep minor and major version
- draft item security: only users that can approve (and the author)
- required check out before edit
All of those are very reasonable setting for any company: you only want regular users to see published documents and you don't want multiple users editing the same document at the same time.
Now, let's consider a simple document approval rejection use case:
- UserA creates a new draft version 1.1 and publishes it. The draft is set to pending state and is checked-in
- The approver rejects the change. At this point the document version 1.1 is set to rejected and remains checked-in.
In this situation:
- it is impossible for any other user to modify the document since a minor version exists for UserA, even if technically that version is already rejected.
- UserA can't undo their changes since the minor version is in check-in status and therefore the "undo check out" command is no longer available.
- UserA won't also be able to delete the specific version.
As long as the last version is the one UserA created still exist no other user will be able to modify the document and the only apparent way out is to manually restore the previous published version.
Entering this check-mate state doesn't probably even require an explicit rejection. As soon as one user saves a checked-in version of a document no one else is able to post changes, nor can they any longer delete the version they just made.
I know that usually an approval flow is meant to continue until a version is approved (I assume that posting a change, having it rejected and then stop there isn't so common, usually the rejection will prompt a new edit and so on) yet this idea still seem quite weird.
Am I missing some easier way out that don't involve manual restore of last published version to "overwrite" the minor one?