SharePoint 2013 Fixes for IE11 Incompatibility Issues

IE11 has incompatibility issues with SharePoint 2013, mostly due to the fact that IE specific SharePoint OOTB scripts use JavaScript methods and properties that have been deprecated in IE11.

Some common ones include:

  • Using .attachEvent() methods instead of .addEventListener()
  • Using document.body.all property instead of document.getElementById()

This can be resolved by forcing IE10 compatibility mode using <meta http-equiv=”X-UA-Compatible” content=”IE=10″ />. However, if you wanted to utilize IE-edge, we can fix the errors using the JavaScript below.

Continue reading


Updating SharePoint Online Document Set in Microsoft Flow (including Taxonomy Field)

This is a follow up from my previous post onĀ Creating SharePoint Online Document Set in Microsoft Flow.

We’ve created the document set, and now we want to update some of the properties for the document set, one of which is a single value taxonomy field.

Assuming add-in only authentication has been set up and the access token has been obtained with a HTTP action and parsed into JSON, as per the previous blog post.

We now have actions after creating our document set to update the document set.

MS Flow Update Doc Set - Overview.png

Continue reading

Creating SharePoint Online Document Set in Microsoft Flow

As of the time of writing this, Microsoft Flow does not include any SharePoint connector actions to create a document set in a document library, which is quite inconvenient.

Instead, we are left to deal with this using SharePoint’s REST API, which is not straightforward and proves to have a few gotchas to watch out for.

This is the overview of a Flow that will create a new document set in the Documents library, on trigger from a list item, just for the sake of a demo.

MS Flow Create Doc Set - Overview.png

We will go through each action step by step below.

Continue reading

Getting Document URL using JSOM

To get the URL of current list item / document using JSOM, when in the EditForm.aspx page:

var context = SP.ClientContext.get_current();
var web = context.get_web();
var list = web.get_lists().getById(_spPageContextInfo.pageListId);
var listItem = list.getItemById(parseInt(GetUrlKeyValue('ID')));


    function () {
        $fileRef = listItem.get_item("FileRef");

Nintex Workflow Approval Delegation

This post will demonstrate how we can create an approval delegation process using Nintex Workflow for Office 365.

The idea behind it is to check if someone who will be assigned an approval task will not be available (on holidays, maternity leave, just doesn’t care at the moment…), and to assign the task to their delegate instead. It’ll then keep checking the delegate’s availability or if it needs to be re-delegated until it finds someone who can action the approval task.

NWF Approval Delegation.png

This diagram outlines the workflow process we’ll be going through in detail below.

Continue reading

Building a Custom SharePoint Connector for Sitefinity

We had a requirement from a client who was planning to build a new Sitefinity portal that allows external users to log in and view documents, based on document types and other metadata. All the documents and metadata exists on their SharePoint 2013 intranet, so they were looking to synchronise the documents from SharePoint into Sitefinity and surface the documents in listings and search results based on metadata.

Sitefinity does provide an OOTB SharePoint Connector, which allows you to target a specific SharePoint list and download the documents and selected fields into Sitefinity. However, there were a few limitations and design choices that made it unsuitable for our purposes:

  1. Documents are downloaded into a Sitefinity document library, but field values are added as a new list item in a custom module. This separates out the document and its metadata, making it difficult to create searches that can index document content and filter based on document metadata at the same time.
  2. The connector does not support certain SharePoint field types, such as Managed Metadata fields. This in particular was critical for us as our document types were managed in SharePoint as a Managed Metadata field.
  3. Basic filtering options, which only supports text field comparison of equals or not equals.
  4. Documents deleted in SharePoint still exist in Sitefinity’s document library, and is only removed from the custom module list.

To overcome those limitations, we decided to prototype our own custom SharePoint connector to get documents and its metadata out of SharePoint and into Sitefinity’s document library. What we built was only a one way connector (from SharePoint to Sitefinity) but it was able to overcome the obstacles above.

Continue reading