SharePoint Experts, Information Architects, Expert Witness

We provide consulting in a broad array of business and technology from architecture to design to deployment of global systems with a focus on surfacing data in the enterprise. Specialists in Microsoft, we are a premier provider of SharePoint Expertise (including 2016 and Office 365). We also provide Expert Witness/Legal Expert in eDiscovery, source discovery, patent infringement, piracy and more! We also have established SICG DLDS s.a. - our counterpart in Costa Rica that specializes in water systems ( - Contact me direct: or call 704-873-8846 x704.

Search This Blog

Saturday, April 15, 2017

Getting the Web ID for a site (SharePoint & Online)

There's often a need to find the Web ID of a SharePoint site - specifically when exporting web parts (as shown in this article

NOTE: I don't take credit for these, these are a summary of what's out there!

So getting the ID can be done a number of ways - first, using the "API" (if using SharePoint Online, authenticate to the site first):


For Online:




Next using on premise PowerShell:

$site = Get-SPSite  http://<site & port>
$web = $site.AllWebs["<name of site>"]

In SharePoint Online using the SharePoint Online Management Shell:

Connect-SPOService -URL https://<org>

Enter your credentials, then enter:

Get-SPOSite -Identity https://<site>
Next connect to the site:

Connect-SPOSite -Url "https://<site>" -Credential "<>"

If you omit -Credential, you will be prompted (the credential is your EMAIL address <>, not the AD account domain\account) but better to use this:

$username = "<>"
$password = "<password>"
$cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $userName, $(ConvertTo-SecureString $password -AsPlainText -Force)
Connect-SPOSite -Url "https://<site>" -Credential $cred

Then finally for the top level web:

Get-SPOWeb -Identity "/"

For a subsite, use the name:

Get-SPOWeb -Identity "News"

Get-SPOWeb will list out details of the web - just look for the "Id" column.

Note - if using a Subsite under /Sites/, you have to connect to that site collection (instead of https://<site>, you use https://<site>".

Another way is through the URL. Open the site/web you want and open Site Settings. Click either the Site Content and Structure or Content and Structure Logs link. Click on the web in question and select the drop down then select General Settings - cut and paste the URL into notepad - you will find the ID in the query string after SPWeb (%3A = : - see here Here's snip of the URL where the SPWeb can be found:


Yet another is using jQuery - found on the MSDN site: 

<script language="javascript" src="" type="text/javascript"></script><script type="text/javascript">
function GetSPWebID()
        url = document.getElementById("field1").value;
        var webId;
 var soapEnv =
    "<?xml version='1.0' encoding='utf-8'?>\
  <soap:Envelope xmlns:xsi='' xmlns:xsd='' xmlns:soap=''>\
    <GetWeb xmlns=''>\
      url: url + "/_vti_bin/SiteData.asmx",
      beforeSend: function(xhr) {xhr.setRequestHeader("SOAPAction", "");},
      type: "POST",
      data: soapEnv,
      dataType: "xml",
      async: false,
      complete: function(xData, status) {webId = $(xData.responseXML).find('WebID').text();},
      contentType: "text/xml; charset='utf-8'"
}</script>Root Web URL: <input id="field1"/><br/>WebID: <input id="field2"/> <br/><br/><button onclick="GetSPWebID()">Get Web ID</button> 
//nonsense comment to keep IE7 from truncating MSDN code


SharePoint Online Workflows not working

Having had this problem and forgetting what I did to fix it, I did another search to find the answer so posting it here.

The issue is that though workflows publish correctly (i.e. no errors), they still do not fire (not sending email, not logging, etc.). In SharePoint Online, it turns out that a feature that SHOULD be enabled is not.

When this happens to you, navigate to the site where you are adding the workflow, click the Gear then select Site Settings. Find the Site Features (under Site Settings). Scroll to the bottom of the page and find the feature "Workflows can use app permissions" and activate it:


Wednesday, April 5, 2017

The sandboxed code execution request was refused because the Sandboxed Code Host Service was too busy to handle the request

While I know Sandbox Solutions are going bye-bye, there are many on premise solutions where they are handy. However as some of you may have encountered, there are times when the error:

The sandboxed code execution request was refused because the Sandboxed Code Host Service was too busy to handle the request

appears. There is a common post on this by Ricky Kirkham:

Having encountered this issue recently, I tried following his instructions to no avail. None of the solutions there worked. However I did come across another one that did:

This solution is shown as follows:

$uc = [Microsoft.SharePoint.Administration.SPUserCodeService]::Local
$uc.WorkerProcessExecutionTimeout = 5000
$tier = $uc.Tiers[""]   # default Tier has no Name
$tier.MaximumWorkerProcesses = 2    # number of CPU Cores + 1

By default, the Timeout is set to 30 and the Worker Processes set to 1. The above obviously changes 30 to 5000 (5000 seems a little excessive if you ask me) and the number of processes to be Cores + 1 (i.e. 4 Core Machine = 5).

This does indeed fix the problem! However, on my 8 Core machine, I thought that 9 was a bit much (might impact performance) so I set it at 2500/4 and it still worked.

To check your current settings, do the following in the Command Shell:

$uc = [Microsoft.SharePoint.Administration.SPUserCodeService]::Local
$tier = $uc.Tiers[""]   # default Tier has no Name
$timeOut = $uc.WorkerProcessExecutionTimeout 
$mWProc = $tier.MaximumWorkerProcesses

FYI: If you apply changes you MUST Stop and Restart the Sandbox service through Central Admin - a reboot will also fix if you are not in production.

Friday, March 17, 2017

Content Types and Hidden Columns not available in List/Library

Came across a reminder the other day about using Content Types with Hidden Columns. As you may know, Hidden Columns do not show up in forms allowing you to use them for values that might be generated by a Workflow or similar.

In my case, I created a workflow that needs to set a 'Document Number', something other than just using ID, this one uses a list to keep track of the latest number. As a good practice, the definitions were setup as Content Types (in my case, 3 - 1 core and 2 that inherit from the core).

The need here is that a) the Document Number needs to be assigned by the workflow, b) visible in the List/Library Views and c) it isn't supposed to show up when adding/editing an item (i.e. so user cannot change).

So, one might think to simply set the field/column to Hidden up front and here's where the problem comes in.

If you set a column as Hidden, it does indeed appear in the content type but when the content type is added to a list/library, surprise! The column is not added, thus not available in the views - defeating the entire purpose.

The solution is a sloppy workaround but does work (you just need to document this!).

BEFORE adding the content type to the list/library, leave the field as Optional - this includes any content types that inherit from it.

NEXT add the content type(s) to the list/library - the column will appear. Set any views that you want, particularly those that need to display the column.

AFTERWARDS, go back to the Content Type(s) and set the column as hidden.

Once this is done, you will be able to use the column as you would have expected in the first place.

This problem has be a long standing one (past 4 years or more).

An extensive post on this (from back in 2013!):

Monday, February 20, 2017

SharePoint Backup failure "A system assertion check has failed" - Health Message "Expired sessions are not being deleted from the ASP.NET Session State database"

SharePoint 2013/2016 On Premise:

A problem may occur when you run a backup - it fails and for each database, you see a message that looks like this:

Object SharePoint_Config failed in event OnBackup. For more information, see the spbackup.log or sprestore.log file located in the backup directory. 
SqlException: A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a QFE from Technical Support. 
BACKUP DATABASE is terminating abnormally. 

Wow - pretty scary eh? Most likely if you check your Health monitor, you see another error:

Expired sessions are not being deleted from the ASP.NET Session State database.

DON'T PANIC - It turns out to be a simple problem! The SQL Server Agent Service is NOT running. Thus the backup cannot get proper control of the database and the timer job to clear session state won't be running.

Start the Agent on SQL Server first then for the Backup issue:

Delete whatever backup files were created (they are junk), start the backup again.

For the Health error:

Open the Health Monitor from Central Admin, click on the error (Expired sessions...) and click the Re-analyze button.


Turns out the above can also be caused by:

1) Lack of space for the backup (must be able to hold the entire 'estimated size')
2) Lack of permissions for the backup folder (must have the SharePoint Farm and Service Accounts added to read/write).

Friday, February 17, 2017

SharePoint Online workflow emails in Office 365

Another issue in SharePoint Online regarding workflows.

When you create a workflow, it obviously creates a task and sends an email to the participant(s) that they have a task.

However, minor issue - in Outlook 365, the email message states "Click the Open this task button" to open the task. In regular Outlook, this 'button' appears in the toolbar when you open the mail message. However, in Outlook 365, this button is nowhere to be found!

This means a training issue - when you are using workflows that send emails, the link to the task is missing so you must tell your users to navigate to the site itself, open the appropriate Task List and respond to the task.

SharePoint Library templates in SharePoint Online drop content

Having used Office 365 for quite a while, there's been some oddities as of late. One I have encountered was creating a List/Library template and including the content. This is a common feature I use when doing On Premise so I would assume that it would be the same, but Au Contraire!

In Office 365/SharePoint Online I created a simple document library with a few additional fields - in this case, year and month - so I could quickly duplicate a library format. A quick view of this looks like this:

In the SAME SITE, I created a new library using the template where I included the content - surprise, the some of the data was lost:

Looks like they need to tighten up a few things eh?

Solution? Use a template if you need to but remember you'll have to check all of the data!

Thursday, February 2, 2017

Wiki Page Library - Updated Pages - An error has occurred on the server - SharePoint Online/2013/2016

When working with Wiki Page Libraries, you may encounter an error when opening the library (in fact, I've had this be the norm in Office 365/SharePoint Online).

When you open the Home Page (or view the Pages library), you'll see an error on the left under "Updated Pages" showing "An error has occurred on the server":

Turns out this is not just a little problem - looks like QA missed a few things. The error is caused because there is NO INDEX on the list, therefore it fails as above.

To fix this, you need to open the Library Settings (click the PAGE tab, then Library Settings in the ribbon):

On the Settings page, scroll down to the Columns section and click on Indexed Columns:

On the Indexed Columns page, click Create a new index:

Use the drop down to select the Modified column (and WAIT for the page to refresh) then click the Create button:

There will be a 'working on it' page for a few seconds (depending!) but when it comes back you will see the new index:

Click the Settings breadcrumb then the Library name - this returns you to the pages view of the library. You'll notice that it is fixed!

Simply click on the name of the Home page to open the library in Wiki view.

Wednesday, February 1, 2017

SharePoint 2013 Prerequisites - unable to install Application Server Role, Web Server (IIS) Role

While I've posted before on this, the other solutions I've used didn't work. I resorted to my own version of the installation process when you get this error.

Open up PowerShell (using 'Run as administrator') and enter the following as 'groups' (run one command at a time):

Set-ExecutionPolicy Unrestricted

Enter Y when prompted, next:

Import-Module ServerManager


Add-WindowsFeature NET-Framework-45-Core,NET-Framework-45-ASPNET,Web-Net-Ext45,Web-Asp-Net45,Web-Includes,NET-WCF-HTTP-Activation45,NET-WCF-TCP-Activation45,NET-WCF-Pipe-Activation45

This should indicate success - next:

Add-WindowsFeature Net-Framework-Features,Web-Server,Web-WebServer,Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Health,Web-Http-Logging,Web-Log-Libraries,Web-Request-Monitor,Web-Http-Tracing,Web-Security,Web-Basic-Auth,Web-Windows-Auth,Web-Filtering,Web-Digest-Auth,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Mgmt-Tools,Web-Mgmt-Console,Web-Mgmt-Compat,Web-Metabase,Application-Server,AS-Web-Support,AS-TCP-Port-Sharing,AS-WAS-Support, AS-HTTP-Activation,AS-TCP-Activation,AS-Named-Pipes,AS-Net-Framework,WAS,WAS-Process-Model,WAS-NET-Environment,WAS-Config-APIs,Web-Lgcy-Scripting,Windows-Identity-Foundation,Server-Media-Foundation,Xps-Viewer

This should also indicate success (it may also indicate No Changes Needed).

For best results, run the Prerequisites UI again just to make sure.

FOLLOW UP: I had one server that just would not get corrected; it still indicated that the Web Server role had a configuration error.

In this case, I decided to try loading up a W2012 server and not apply the Windows Update but install SharePoint first - SAME PROBLEM.

Fix: I tried loading the installation that has SP1 already - running the Prerequisites alone (from the install disk using 'Run as administrator') it worked!

Friday, January 6, 2017

Restoring SharePoint site default groups

Occasionally, a default group for a SharePoint site collection can get deleted. When it does, it means that non-owners cannot invite others to the site and you might receive an error in places:

 “The groups required to manage users for your site are missing

You'll most likely see this under Access request settings (Site Settings > Site Permissions > Access request settings in the ribbon).

Getting the default groups back is not very obvious but as it turns out, it is quite simple. Simply open the site in question and change the URL to:

<site url>/_layouts/permsetup.aspx

This will open up the People and Groups page with the default groups:

Click the OK Button and the groups will be restored!