One of the "problems" with the Document ID feature is the scope it works in. It is scoped to a Site Collection. You could use the API to implement something different, but who wants to do that?
Enter the new Durable Links for SharePoint 2016. First announced at the Ignite 2015 in Chicago (to my knowledge), now available in the IT Preview for SharePoint 2016.
In this Post I will show you what this new feature is and how to set it up.
A Durable Link is a URL of Hyperlink to a Document stored in a Document Library in SharePoint Server 2016. If Durable Links work in you Farm, you will see that links to Documents look like this:
The magic happens with the URL parameter "?d=[...]". This d is the durable link part. And if you move or rename this document, the link you see here will continue to work and redirect you to the same document.
If this document is moved to a different Site or Document Library and you do NOT have access to this Site or Document Library, you will not gain access by using the original url you see here. You will be redirected to the proper document, where a Access Denied will be shown in this case.
To be clear: Durable Link is not the same as Document ID!
How to setup Durable Links in the current IT Preview?
- First you setup your SharePoint 2016 Farm ( you know how to do this right? )
- Next, you need to setup a Office Online 2016 Server/Farm (see technet ) ( separate box )
- Add a WOPI binding to SharePoint that points to your OOS 2016 Farm ( see technet )
- Now your Document Urls will be Durable Links
For me, the requirement of OOS 2016 (Office Online Server) seems a bit odd, but it is probably related to the fact that a Durable Link redirects you to the Document itself, not the Metadata ( viewform.aspx ).
When you access the fly out for a document, the Durable Link will be in the easy to copy field. And SharePoint will use this exact link when you Share a Document too. It is fully integrated into the Experience (unlike the Document ID feature).
If you want to access the Durable Link from code/script:
$web = Get-SPWeb http://portal.sp2016.dev.portiva/
$list = $web.Lists["Documents"]
$item = $list.Items
So, maybe not very complex, but this way it is very easy for end users!