SharePoint JSOM to update Document ID Settings

The Document ID Service feature is useful to tag unique Id to documents across site collection to make it easier to retrieve. A prefix can be specified to use when the unique Id is generated.

The document id settings is stored in the web property bag “docid_settings_ui” after the feature the activated.

The web property bag can be updated using JSOM to assign a prefix with XML snippet like below.

var docIdValue = ‘<?xml version=”1.0″ encoding=”utf-16″?><DocIdUiSettings xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance&#8221; xmlns:xsd=”http://www.w3.org/2001/XMLSchema”&gt; <Prefix>’ + docIDPrefix + ‘</Prefix> <AssignmentEnabled>true</AssignmentEnabled></DocIdUiSettings>’

webProperties.set_item(“docid_settings_ui”, docIdValue);

The full script can be copied from below and tested in a content editor web part.


<script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.js"></script>
<script type="text/javascript">
//declare namespace
var ConfigureSiteSettings = ConfigureSiteSettings || {};
// use sp utility to Get field values, need to find out how it will work with Nintex forms
//var myRichTextValue = getFieldValue('SiteCollectionURL');
//alert(myRichTextValue);
ConfigureSiteSettings.UpdateDocIdSettings = (function()
{
var siteUrl = document.getElementById("SiteUrl").value
var docIDPrefix = document.getElementById("docIDPrefix").value
if(!!siteUrl && !!docIDPrefix )
{
var clientContext = new SP.ClientContext(siteUrl);
oWebsite = clientContext.get_web();
clientContext.load(oWebsite);
clientContext.executeQueryAsync(
Function.createDelegate(this, onQuerySucceeded),
Function.createDelegate(this, onQueryFailed)
);
function onQuerySucceeded(sender, args) {
alert('Title: ' + oWebsite.get_title() +
' Description: ' + oWebsite.get_description());
var webProperties = oWebsite.get_allProperties();
clientContext.load(webProperties);
var docIdValue = '<?xml version="1.0" encoding="utf-16"?><DocIdUiSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt; <Prefix>' + docIDPrefix + '</Prefix> <AssignmentEnabled>true</AssignmentEnabled></DocIdUiSettings>'
webProperties.set_item("docid_settings_ui", docIdValue);
oWebsite.update();
clientContext.executeQueryAsync(TaggedSuccess, TaggedFail);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() +
'\n' + args.get_stackTrace());
}
function TaggedSuccess(sender, args) {
alert("Tagged your site.");
}
function TaggedFail(sender, args) {
alert("Tagging failed" + args.get_message());
}
}
else
{
alert("Enter Site Url and doc prefix");
}
});
</script>
<div>
<p>
<b>Configure Document Id Settings</b>
<br />
<label>Site Collection URL<label><input type="text" value="" id="SiteUrl" />
<label>Doc ID Prefix<label><input type="text" value="" id="docIDPrefix" />
<button id="configureSiteDocIdSettings" onclick="ConfigureSiteSettings.UpdateDocIdSettings()">Configure Doc Id Settings</button>
</p>
</div>


<script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.js"></script>
<script type="text/javascript">
//declare namespace
var ConfigureSiteSettings = ConfigureSiteSettings || {};
// use sp utility to Get field values, need to find out how it will work with Nintex forms
//var myRichTextValue = getFieldValue('SiteCollectionURL');
//alert(myRichTextValue);
ConfigureSiteSettings.UpdateDocIdSettings = (function()
{
var siteUrl = document.getElementById("SiteUrl").value
var docIDPrefix = document.getElementById("docIDPrefix").value
if(!!siteUrl && !!docIDPrefix )
{
var clientContext = new SP.ClientContext(siteUrl);
oWebsite = clientContext.get_web();
clientContext.load(oWebsite);
clientContext.executeQueryAsync(
Function.createDelegate(this, onQuerySucceeded),
Function.createDelegate(this, onQueryFailed)
);
function onQuerySucceeded(sender, args) {
alert('Title: ' + oWebsite.get_title() +
' Description: ' + oWebsite.get_description());
var webProperties = oWebsite.get_allProperties();
clientContext.load(webProperties);
var docIdValue = '<?xml version="1.0" encoding="utf-16"?><DocIdUiSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt; <Prefix>' + docIDPrefix + '</Prefix> <AssignmentEnabled>true</AssignmentEnabled></DocIdUiSettings>'
webProperties.set_item("docid_settings_ui", docIdValue);
oWebsite.update();
clientContext.executeQueryAsync(TaggedSuccess, TaggedFail);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() +
'\n' + args.get_stackTrace());
}
function TaggedSuccess(sender, args) {
alert("Tagged your site.");
}
function TaggedFail(sender, args) {
alert("Tagging failed" + args.get_message());
}
}
else
{
alert("Enter Site Url and doc prefix");
}
});
</script>
<div>
<p>
<b>Configure Document Id Settings</b>
<br />
<label>Site Collection URL<label><input type="text" value="" id="SiteUrl" />
<label>Doc ID Prefix<label><input type="text" value="" id="docIDPrefix" />
<button id="configureSiteDocIdSettings" onclick="ConfigureSiteSettings.UpdateDocIdSettings()">Configure Doc Id Settings</button>
</p>
</div>

After the script is loaded on a content editor webpart, the [Site Collection URL] and [Doc ID Prefix] needs to be filled before clicking on “Configure Doc ID Settings”.

ConfigureDocIdSettings_UI

If successful, the message will appear.

TagYourSite

Navigate to site settings> Document ID Settings to verify the prefix

DocIdSettingsPrefix

 

Leave a comment