SharePoint 2013 User Profile Sync disabled user

Hi All,

Just want to share a nice post that provides a trick with applying exclusion filter for disabled user accounts.

If you add the filter after the first full profile sync, your filter won't work with Incremental sync unless you do Full sync.

There is a trick to make Incremental sync picks up the changes, which is toggling (Enabling and Disabling) the user in AD and then run the Incremental sync.

This should save you time if the number of disabled users is not that many and this won't clear any user-entered changes on existing user profile data.


SharePoint Infopath 2013 Publish as Content Type duplicate site column mistake!

Hi all,

I have been enjoying my SP journey without InfoPath until two weeks ago when I was asked to help my colleague with Infopath form enhancement.

Looking into how it was deployed to SP online, I noticed quickly it was published as a Content Type. So we did some enhancements, and once it's all done it's time to publish!

What I wasn't aware of is that if the Form Template wasn't obtained from the deployed site, the promoted fields information will be set to 'Create new site column' instead of updating existing content type.

After the form is published, it creates duplicate promoted site columns which are a nightmare to clean up! Not to mention that some site columns are read-only and cannot be deleted through UI.

Luckily, I found that we can use SP JS to do the clean up of all duplicate fields. We just have to be careful to only delete the duplicate ones (marked by '_1' appended to existing field name, or '_12' and '_123' depending on whether '_1' and '_12' exist)

Good lesson learnt: 
In the future, if you want to republish any form template as Content Type, make sure you check each promoted field in the last publish step :

Site column group: {This content type}
Column name: pick the relevant column from the dropdown.


SharePoint 2013 ​ zero width spacing characters.


Just want to let you know that to clean SharePoint html from the Rich Text Editor that has all annoying &#8203 characters, it is better to use this lovely script.

Using standard jquery such as:

can lead to unintended behaviour in certain scenarios, especially when some of the content is generated asynchronously as that script will replace the html before it's generated. This happened to me when I used the Search Result Webpart.


SharePoint 2013 contentclass STS_ListItem_850 not working anymore - no search results returned

Hi all,

We just noticed in our lower environments after patching to SP1 + May 2015 CU, that our search returns no result.

We have a Result Source with this filter:

and that is the culprit. Removing that filter returns all results.
So I'm curious what the actual value is returned. Lucky we can check quickly with Search REST api.

Running:'page'&RowLimit='10'&SelectProperties='Title, ListID, contentclass'

I see that the value is now
So I changed STS_ListItem_850 to STS_ListItem_PublishingPages and now it works correctly again.


SharePoint 2013 How to exclude specific pages from search results

Hi all,

Just want to share you a tip on how to exclude certain pages from your search results. e.g. test or obsolete pages that have been published but you want it to be hidden.

The answer is to use a query rule.

1. Go to Site Settings -> Search Query Rules
2. Select the Result Source that you use, and add New Query Rule
3. Give it a name, and Remove Condition so the rule applies to all queries
4. click Change ranked results by changing the query. Again choose the appropriate source and here you can add filter on the properties. in my case I use the page Title:

{searchTerms} -Title:"my page test" -Title:"Obsolete page to be hidden"

5. You can then test your queries for immediate change. Your changes will appear after a few seconds as SharePoint has suggested.


SharePoint 2013 - Cannot edit document properties after Visual Studio uninstall

Hi all,

Yesterday after I uninstalled my VS2012 (since I have VS2013 installed) , I found that I could not edit document properties with this message:

The server was unable to save the form at this time. Please try again.

I then looked at the SP log file:

Error when processing types in server stub DLL Microsoft.SharePoint.Client.ServerRuntime, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Data.Edm, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Data.OData, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35

seems like the WCF Odata Services got uninstalled as well.
The solution is to reinstall it:

and then restart your server.


SharePoint 2013 ignore code from search crawl or load balancer probes

Hi all,

Sometimes when your homepage has a control or a webpart that access external site (e.g. wordpress blog), it will create unnecessary traffic when the page is touched by a search crawl or load balancer probes.

If your probes are checking every few minutes it can create massive unwanted traffic that can increase your internet cost.

The solution is to check the UserAgent of your request header to see where the request is coming from, and skip your code if it's coming from either of them.


SharePoint button only fires once - not firing the second time after reportviewer export


Just a quick one - I have a button click that generates a report pdf in the code behind. The problem is that it only fires once. This issue only happens in SharePoint.

Turns out that you need to set the variable _spFormOnSubmitCalled = false so that you can trigger the postback again (call this on OnClientClick attribute of the button)


Underscore js easy javascript object hierarchical filtering


Just want to share something that in my opinion is really a useful helper library, and that is underscore.js

When combined with knockout, you can achieve easy filtering through its helper functions.

Let's say we have an object structure like this:

Company A
  - Boss A
      - Supervisor A
          - Employee A
          - Employee B
          - Employee C
      - Supervisor B
          - Employee C
          - Employee D
  - Boss B
      - Supervisor C
          - Employee A
          - Employee C

Company B

and after you are getting the all records, you want to provide some filtering based on the Boss, Supervisor or Employee. (to make it simple I just use dropdowns)

Using underscore, I can grab the list of unique values of Boss, Supervisor and Employee like this:

After that, if you are using knockout then you can bind the list to a dropdown, and using the selected value of the observable you can then create filter functions your original data:
Then you will just need to have a computed observable to return your filtered data:

Hope this helps,


SharePoint 2013 Open with Explorer error We're having a problem opening this location in File Explorer.

Hi all,

Just want to let you know about this annoying issue.

UPDATE: apparently putting Http Deny Verbs OPTIONS and PROPFIND (to avoid anonymous office document prompt) was the cause! 

I have SP2013 on premise. The 'Open with Explorer' was working on my dev environment before (when I populated some content before promoting to other environments). It is working in SYT but fails in UAT with this error. This only happen on one web application , the other web applications in UAT are fine.

When it fails, you cannot also map the drive or open the location in Windows Explorer using UNC path as it will complain that the Network path was not found.

The funny thing is when I tried it on my Dev site again it stopped working with the same error (no idea since when). I have looked at all the troubleshooting steps (WebDav etc.) and couldn't find out the cause. Also did server reboot with no luck.

I restored my site collection backup to the same site and the issue persists.
I then restored my site collection backup to other web application and it works.

Afterwards, I deleted my troubled web application and recreated it, restored my site collection backup and it works again!

So something must have gone weird with the web app itself. Such a waste of time trying to find out what went wrong :(

Hope this helps,