This is my blog site about SharePoint in general. The blog site also provides some opportunities to show case some of my previous employment projects across different industries in delivering website from small to large scale intranet and enterprise e-commerce internet public sites that uses cutting edge technologies.

SharePoint Tabs

Business Requirements
In SharePoint Online, end-users would like to:

  • Create a new web page where they can interactively add 1 or more web parts onto the different web part zones on the page;
  • Display multiple web parts under specified tabs. For example in the first tab, display 3 web parts. Then in the second tab, display 1 web part; and
  • Have a UI that offers no code experience for end user to configure the tabs.

There are two recommendations to meet the business requirements.


1. Recommendation – SPELL Tabs v1.1
Use SPELL Tabs 1.1 developed by Christophe Humbert in 2014 for SharePoint Online. SPELL Tab is a replacement and successor of Easy Tab (Go to SharePoint User Toolkit page and then navigate to Easy-Tabs-v5) on premise solution for SharePoint 2010 & 2007. Follow the instructions below to implement the solution.

SPELL Tabs v1.1 has two versions available to clients. There is the i) basic entry level version which is free at no charge and ii) commercial version purchase for a retail price of $99 USD. Both versions are distributed by distributed by User Managed Solutions LLC and comes with a free user manual.  Clients can download and read the SPELL Tab v1.1 user guide PDF file from this site. Please note that the SPELL Tab v1.1. user guide is for the installation of the full commercial license version.

Free version
The basic version of SPELL Tabs comes with:

The free sample of SPELL Tabs comes with To use the SPELLv0.9.2TabsAppModeDemo.aspx file follow the steps:

  1. Download the SPELLv0.9.2TabsAppModeDemo.aspx page with the associated JavaScript file SPELLv0.9.2CoreTemplateWPNav.js

2. Upload the SPELLv0.9.2TabsAppModeDemo.aspx and SPELLv0.9.2CoreTemplateWPNav.js to the same folder location at the site asset document library in SharePoint Online.

3. Create a blank new web page and add your own specific 1 or more web part contents into any of the web part zone.

4. Add a page viewer web part and point/link the relative URL to: /siteassets/SPELLv0.9.2TabsAppModeDemo.aspx

5. In the page viewer web part properties, update chrome field to: None. Then apply the Page Viewer web part changes, save and publish the page.

By default due to the limitation of the free version, the SPELLv0.9.2TabsAppModeDemo.aspx will display each web part as it’s own separate tab. There are also other tabs being displayed, i.e. the links tab, “+” expand tab, “-” minimise tab and the “[] ” print tab. Unfortunately user do not have any control over the other tabs.

Commercial version
The commercial version of SPELL Tab v1.1 can be purchase for a retail price. The paid version will come with a User Interface by adding the out of the box Page Viewer web part that references the Spell tab UI page, so t hat user does not need any code experience.

However please contact to confirm the following:

  • Is the price  $99 USD for the commercial version v1.1?
  • After downloading the free SPELL Tab v1.1 user guide PDF file from this site will Christophe provide client with access to download the five SPELL components as mention in the instruction section of the user manual?
  • What are the support level agreement for commercial license in terms of i)support coverage 24×7 ii)support response time ?
  •  Are there any annual additional cost that client need to renew the license every year?


2. Recommendation – Hillbilly Tabs
This is a free version of Hill Billy Tabs that will work in SharePoint online platform. To get started follow the instructions at of version 2 at

There is also version 3 published in at

However the recent version 4 is the latest release at

The steps to implement the Hill Billy tabs are:

1. Create a new JavaScript file (e.g. tab.js) and copy and paste the code from one of the above Hill Billy blog site

2. Upload the JavaScript file to the site asset document library in SharePoint online.

3. Create a new page ( and add the necessary web part contents you wanted onto any zone on the page.
NOTE: By default of out the box without any programming, each web part content will represent each individual tab. E.g. If you add 1 document web part inserted onto any zone and add another 1 image web part into any zone, then there will be 2 tabs shown, that is Document and image tab.

4. Add OOTB content editor web part onto the very top page.

* Edit the content web part property and enter the URL link to the JavaScript file that was uploaded to the asset library (e.g. /sites/digiworkuat/siteassets/tab.js)

* Edit the Chrome type to select none


5. Click “Apply” button and save the page.

6. Check the page and publish the page when tab looks good

SharePoint 2013 Search Returns no Results

SharePoint log files generate the following error messages:

  1. SearchServiceApplication::Execute–Exception: Microsoft.SharePoint.SPException: Tried IMS endpoints for operation Execute: Cannot plan query for index system SPfe749b4bb671. Index fragment ‘0’ has no available cells. Cell statuses: [Cell I.0.0 on node IndexComponent1: Cell status is set to ‘not available’ (cell out of sync or seeding)]

Windows Application log generate the following error messages:

  1. Event ID: 6482 – Application Server Administration job failed for service instance Microsoft.Office.Server.Search.Administration.SearchServiceInstance (9023f74a-9fcd-47b2-b73b-6e190b10689b).Reason: An update conflict has occurred, and you must re-try this action. The object SearchDataAccessServiceInstance was updated by SYC\svc_SharePointFarm, in the OWSTIMER (2720) process, on machine SP03. View the tracing log for more information about the conflict.Technical Support Details:
    Microsoft.SharePoint.Administration.SPUpdatedConcurrencyException: An update conflict has occurred, and you must re-try this action. The object SearchDataAccessServiceInstance was updated by SYC\svc_SharePointFarm, in the OWSTIMER (2720) process, on machine SP03. View the tracing log for more information about the conflict.
    at Microsoft.Office.Server.Search.Administration.SearchServiceInstance.Synchronize()
    at Microsoft.Office.Server.Administration.ApplicationServerJob.ProvisionLocalSharedServiceInstances(Boolean isAdministrationServiceJob)


This issue occurs if the contents of the file system cache on the front-end servers are newer than the contents of the configuration database. This occurs when i)The server had perform windows update and did a server reboot and ii) The SQL Server DB server is potentially running low on HD space to store the crawl Index SQL DB files.


1. Short term:
Clear the file system cache on all servers in the server farm on which the Windows SharePoint Services Timer service is running –

2. Long term:
If there is not enough SQL server HD space to store index crawl DB files, then doing resolution #1 is a temporary fix as issue will occur again in the future if HD space is running low to. Increase that HD space on that disk drive to 80-100GB of free space –

The steps for resolution #1 are:
1.0 Infrastructure team to do a snapshot VM backup of the SharePoint 2013 servers below:
*  WFE server
* App server
1.1 Infrastructure team to notify SharePoint Administrator when snapshot is done.
1.2 Infrastructure team to be on standby call during outage period for support

2.0 SharePoint Administrator to repeat the following steps below on each SharePoint 2013 servers (WFE and App server)
2.1 Stop the Window SharePoint timer services
2.2 Go to C:\ProgramData\Microsoft\SharePoint\Config folder
2.3 Identify which GUID folder has the cache.ini file and go to that GUID folder
2.4 Back up the cahe.ini file
2.5 Back up all the XML files
2.6 Delete ONLY all the XML files. DO NOT delete the GUID folder!
2.7 Edit cache.ini file and type 1 as the new updated content. Save the ini file
*2.8. Start the SharePoint timer services
2.9 Wait for few minutes for see the system regenerate the xml files again.
2.10 Check the content of cache.ini file. The value should be the previous state or incremented (NOT 1) when it was back up
2.11 Test the search functionality. Check the Windows log application on the server to verify that there are no error message relating to event id 6482
2.12 If there is no search results return from the search query, then do step 2.13 onward. Otherwise skip step 2.13 and go to 3
2.13 Go to Search Application service in Central Administration ->Content Source. Stop any full or incremental search job
2.14 Do an index reset in Central Administration (Manage Service Applications > Search Service Application > Crawling > Index Reset
2.15 Do a full crawl (Manage Service Applications > Search Service Application > Crawling > Content Sources)
2.16 Afterwards test the search and expect search results should work after a full crawl

3. Notify Infrastructure team that testing was successful

*NOTE: Infrastructure may need to reboot the server if SharePoint timer services cannot be started manually in step 2.8

Server or Content Rollback plan
* Infrastructure team to restore the backup snapshot of the SP02 and SP03 server
or content rollback is to manually:
1. Restore the backup cache.ini file
2. Restore the backup XML files



Renewing SharePoint Certificates on premise

If you have a internet public facing SharePoint site that uses HTTPS that is hosted on premise and its certificate is due to be expired, then follow the complete steps below on the process involved with renewing a certificate on the SharePoint farm.

  1. Create a CSR file – For more details, see “Step 1: Create a CSR File”
  2. Send the client the CSR file to the end-user and get them to make a purchase order to renew their certificate through their vendor with the CSR file. For more details, see “Step 2: Ordering SSL Certificate”
  3.  Install and Configure SSL Certificate in step 3
  4.  Bind SSL Certificate in IIS in step 4


Step 1: Create CSR (Certificate Signing Request”) File on Window Server 2008

Want to watch how it’s done

IIS 7 CSR video walkthrough

  1. From the Windows Start menu, find Internet Information Services (IIS) Manager and open it (click Administrative Tools > Internet Information Services (IIS) Manager).
  2. In the Connections pane, locate and click the server.
  3. In the server Home page (center pane) under the IIS section, double-click Server Certificates

IIS 7 Security Certificates

4. In the Actions menu (right pane), click Create Certificate Request.

IIS 7 Create Certificate Request

5. In the Request Certificate wizard, on the Distinguished Name Properties page, provide the information specified below and then click Next.

Common name: The fully-qualified domain name (FQDN) (e.g.,
Organization: Your company’s legally registered name (e.g., YourCompany, Inc.).
Organizational unit: The name of your department within the organization. This entry will usually be listed as “IT”, “Web Security”, or is simply left blank.
City/locality: The city where your company is legally located.
State/province: The state/province where your company is legally located.
Country/region: The country/region where your company is legally located. Use the drop-down list to select your country.

IIS 7 Distinguished Name Properties

6. On the Cryptographic Service Provider Properties page, provide the information specified below and then click Next.

Cryptographic service provider: In the drop-down list, select Microsoft RSA SChannel Cryptographic Provider (unless you have a specific cryptographic provider).
Bit length: In the drop-down list, select 2048 (unless you have a specific reason for using a larger bit length).

IIS 7 Cryptographic Service Provider Properties

7. On the File Name page, under Specify a file name for the certificate request, click the  …  button to specify a save location for your CSR.

Note: Remember the filename and save location of your CSR file. If you enter a filename without specifying a location, your CSR will be saved to C:\Windows\System32.

IIS 7 CSR Pending Request Filename

8. When you are done, click Finish.


Step 2: Ordering SSL Certificate

  1. Open the CSR file using a text editor (such as Notepad), then copy the text (including the —–BEGIN NEW CERTIFICATE REQUEST—– and —–END NEW CERTIFICATE REQUEST—– tags) and paste it into the vendor (e.g. DigiCert) order online form for submission.

2. After end-user has received their SSL Certificate from the vendor, send the downloaded file or the email link through to SharePoint Administrator to do step 3 and 4


Step 3: Install SSL Certificate

  1. On the server where you created the CSR, save the SSL certificate .cer file (e.g., your_domain_com.cer) that you received from DigiCert.
  2. Open Internet Information Services (IIS) Manager (click Start > Administrative Tools > Internet Information Services (IIS) Manager).
  3. In the Connections pane, locate and click the server.
  4. In the server Home page (center pane) under the IIS section, double-click Server Certificates.

IIS 7 Security Certificates

5. In the Actions menu (right pane), click Complete Certificate Request.

IIS 7 Create Certificate Request

6. In the Complete Certificate Request wizard, on the Specify Certificate Authority Response page, provide the following information:

File name containing the certificate authority’s response: Click the  …  button to locate the .cer file you received from DigiCert
(e.g., your_domain_com.cer).
Friendly name: Type a friendly name for the certificate. This is not part of the certificate; instead, it is used to identify the certificate.

Note: We recommend that you add the issuing CA (e.g., DigiCert) and the expiration date to the end of your friendly name; for example, yoursite-digicert-(expiration date). Doing this helps identify the issuer and expiration date for each certificate and also helps distinguish multiple certificates with the same domain name.

IIS 7 Complete Certificate Request

7. Click OK to install the certificate.

    1. Note: There is a known issue in IIS 7 where the following message is displayed: “Cannot find the certificate request associated with this certificate file. A certificate request must be completed on the computer where it was created.” You may also receive a message stating: “ASN1 bad tag value met.”
    2. If this is the server where you generated the CSR, it’s possible the certificate is actually installed and the message can be ignored. Simply click OK, then close and reopen Internet Information Services (IIS) Manager to refresh the list of server certificates. The new certificate should appear in the Server Certificates list, and you can continue with the next step.
    3. If the new certificate does not appear in the Server Certificate list, you need to do one of the following:
    4. Reissue your certificate (see Reissuing a DigiCert SSL Certificate).



8. Now that you’ve successfully installed your SSL certificate, you need to configure your site to use it in “Step 4: Binding SSL Certificate”


Step 4: Bind the SSL certificate to the web site in IIS Manager

  1. Click Start > Administrative Tools > Internet Information Services (IIS) Manager
  2. Browse to your server name > Sites > Your SSL-based site
  3. In the Actions pane, click Bindings










4.  In the Site Bindings window, If there is no existing https binding, choose Add and change Type from HTTP to HTTPS.

 NOTE: If there is already a https binding, select it and click Edit.





5. From the SSL Certificate drop down, Select the Friendly Name for the SSL certificate that will be used for this site






  • IP: all unassigned
  • SSL certificate: (Click on view button to verify that the selected certificate has the next expiry date in the future)
  • Port: 443
  • Type: https:

6. Click OK



How to Install Office Web App 2013

Installation guide

The process step of installing Office Web App 2013 are as follows:

  1. Identity the server that will install Office Web App has meet the hardware, OS and software requirements (For more details read section 1, 2, 3 & 4 below)
  2. Check that the server has met the firewall requirements (For more details read section 5)
  3. Download the Office Web App installation file, any SP and other software for the appropriate OS of the server (See section 6 below)

1. Software, hardware, and configuration requirements for Office Web Apps Server

You can install Office Web Apps Server as a:
  • single-server Office Web Apps Server farm, or as
  • a multi-server, load-balanced Office Web Apps Server farm.
  •  physical servers or virtual machine instances, but can’t install other server applications (such as SharePoint 2013 or SQL Server) on the same server as Office Web Apps Server.

In environments that contain actual user data, we always recommend that you use HTTPS, for which you’ll have to obtain a certificate. If you’re using multiple servers in your farm, you’ll have to configure a hardware or software load-balancing solution. You can learn more about these scenarios in the following sections.

2. Hardware requirements

Office Web Apps Server uses the same minimum hardware requirements as SharePoint Server 2013. You can find the full set of SharePoint 2013 requirements in Hardware requirements—web servers, application servers, and single server installations.

3. Operating System requirements

Can run Office Web Apps Server on the following operating systems:

  • The 64-bit edition of Windows Server 2008 R2 Service Pack 1 (SP1) Standard, Enterprise, or Datacenter with the Update for Windows Server 2008 R2 x64 Edition installed
  • The 64-bit edition of Windows Server 2012 Standard or Datacenter
  • The 64-bit edition of Windows Server 2012 R2. To use this operating system, you must use Office Web Apps Server Service Pack 1 (SP1).

4. Other software requirements

  • Don’t install any other server applications on the server that’s running Office Web Apps Server. This includes Exchange Server, SharePoint Server, Lync Server, and SQL Server. If you have a shortage of servers, consider running Office Web Apps Server in a virtual machine instance on one of the servers you have.
  • Don’t install any services or roles that depend on the Web Server (IIS) role on port 80, 443, or 809 because Office Web Apps Server periodically removes web applications on these ports.
  • Don’t install any version of Office. If it’s already installed, you’ll need to uninstall it before you install Office Web Apps Server.
  • Don’t install Office Web Apps Server on a domain controller. It won’t run on a server with Active Directory Domain Services (AD DS)

Install bellow additional software which are prerequisites for Installation of Office Web App Server.

5. Firewall requirements

Make sure the following ports aren’t blocked by firewalls on either the server that runs Office Web Apps Server or the load balancer:

      • Port 443 for HTTPS traffic
      • Port 80 for HTTP traffic
      • Port 809 for private traffic between the servers that run Office Web Apps Server (if you’re setting up a multi-server farm)

6. Downloads, server roles, and features that are required for Office Web Apps Server

From this blog, Office Web App server installer file is no longer availiable as a FREE download from Microsoft site. Instead it is availiable for download from Volume Licensing Service Center (VLSC) below:

Download, server role, or feature If you’re installing on Windows Server 2008 R2 If you’re installing on Windows Server 2012 If you’re installing on Windows Server 2012 R2
Download: Office Web Apps Server Office Web Apps Server Office Web Apps Server Office Web Apps Server
Download: Office Web Apps Server SP1 Recommended Recommended Office Web Apps Server SP1
Download: Correct version of .NET Framework .NET Framework 4.5 .NET framework 4.5 is already installed .NET Framework 4.5.2
Download: Update for Windows Server 2008 R2 x64 Edition Update for Windows Server 2008 R2 x64 Edition Not applicable Not applicable
Download: Windows PowerShell 3.0 Windows PowerShell 3.0 Already installed Already installed
Server role: Web Server (IIS) Here are the minimum role services required for the Web Server (IIS) server role.

Common HTTP Features

  • Static Content
  • Default Document

Application Development

  • .NET Extensibility
  • ISAPI Extensions
  • ISAPI Filters
  • Server Side Includes


  • Windows Authentication
  • Request Filtering

Management Tools

  • IIS Management Console

The following options are recommended but not required:


  • Static Content Compression
  • Dynamic Content Compression
Here are the minimum role services required for the Web Server (IIS) server role.

Management Tools

  • IIS Management Console

Web Server

  • Common HTTP Features
  • Default Document
  • Static Content


  • Request Filtering
  • Windows Authentication

Application Development

  • .NET Extensibility 4.5
  • ASP.NET 4.5
  • ISAPI Extensions
  • ISAPI Filters
  • Server Side Includes

The following services are recommended but not required:


  • Static Content Compression
  • Dynamic Content Compression
Here are the minimum role services required for the Web Server (IIS) server role.

Management Tools

  • IIS Management Console

Web Server

  • Common HTTP Features
  • Default Document
  • Static Content


  • Request Filtering
  • Windows Authentication

Application Development

  • .NET Extensibility 4.5
  • ASP.NET 4.5
  • ISAPI Extensions
  • ISAPI Filters
  • Server Side Includes

The following services are recommended but not required:


  • Static Content Compression
  • Dynamic Content Compression
Feature: Ink and Handwriting Services Ink and Handwriting Services

  • Ink Support
Ink and Handwriting Services

  • Ink Support is not required.
Ink and Handwriting Services

  • Ink Support is not required.

7.Installing Office Web App Server

Perform these procedures on all servers that will run Office Web Apps Server.

Figure: The steps to prepare servers for Office Web Apps Server

The three main steps to prepare servers for Office Web Apps Server.

7.1 Follow instructions about running PowerShell commands at “Prepare servers to run Office Web Apps Server” on the OS that is relevant for the server.

7.2 Restart the server after running the PowerShell cmdlet.

7.3 Run the setup.exe file of the download Office Web App Server file that was downloaded in step 6

7.4 After install of Office web apps  and before creating the new Office web apps server, then apply the following patch update MUST be done in the following order to be completely current with updates. Patched SP1 > April 2014 PU > May 2014 PU > June 2014 CU:

For the complete list of patch CU, see below table:

Build Number Build Name Information Link Download Link
15.0.4420.1007 RTM Download
15.0.4481.1005 March 2013 PU KB2760445 Download
15.0.4481.1508 April 2013 CU KB2810007 Download
15.0.4505.1001 April 9 2013 Hotfix KB2799821 Download
15.0.4517.1003 June 2013 CU KB2817350 Download
15.0.4535.1000 August 2013 CU KB2817521 Download
15.0.4551.1003 October 2013 CU KB2825686 Download
15.0.4551.1508 December 2013 CU KB2850013 Download
15.0.4551.1515 MS14-001 Security Update KB2863879 Download
15.0.4569.1000 Service Pack 1 KB2817431 Download
15.0.4569.1000 Service Pack 1 – Mark 2 Re-release KB2880558 Download
15.0.4605.1001 April 2014 CU (hot fix) KB2863899 Download
15.0.4615.1001 May 2014 KB2880453 Links in KB
15.0.4623.1001 June 2014 CU KB2881051 Download
15.0.4631.1000 July 2014 CU KB2883003 Download
15.0.4641.1001 August 2014 CU KB2883093 Download
15.0.4659.1001 October 2014 CU KB2889898 Download
November 2014 CU None None
15.0.4673.1000 December 2014 CU KB2899574 Download
January 2015 CU None None
15.0.4693.1001 February 2015 CU KB2956101 Download
15.0.4701.1001 March 2015 CU KB2956158 Download
15.0.4711.1000 April 2015 CU KB2965306 Download
15.0.4719.1002 May 2015 CU KB3039748 Download
15.0.4727.1001 June 2015 CU KB3054863 Download
15.0.4737.1001 July 2015 CU KB3054930 Download
15.0.4745.1001 August 2015 CU KB3055003 Download
15.0.4753.1001 September 2015 CU KB3085487 Download
15.0.4763.1000 October 2015 CU KB3085571 Download
15.0.4771.1000 November 2015 CU KB3101367 Download
December 2015 CU No Updates
January 2016 CU No Updates
15.0.4797.1001 February 2016 CU KB3114338 Download
15.0.4805.1000 March 2016 CU KB3114821 Download
15.0.4815.1000 April 2016 CU KB3114934 Download
15.0.4823.1003 May 2016 CU KB3115022 Download
15.0.4833.1003 June 2016 CU KB3115170 Download
15.0.4841.1000 July 2016 CU KB3115289 Download
15.0.4849.1000 August 2016 CU KB3115446 Download

7.5 Download and install language packs for Office Web Apps Server.

8. Deploy Office Webs Server Farm

The next step is to create Office Web Apps Server farm that uses either HTTP or HTTPS with certification.

NOTE: Use HTTP if the farm is a test\development server. Otherwise always use HTTPS on production server farm with certificate install.

The steps are below assuming that certificates has been installed, deployed and configure.

  • Create Office Web Apps Server Farm (See section 8.1)
  • Verify Farm is working OK (See section 8.2)
  • Configure the host

8.1 Create the Office Web Apps Server Farm
Use the New-OfficeWebAppsFarm command to create a new Office Web Apps Server farm that consists of a single server, as shown in the following example for HTTP for a test/dev server:

New-OfficeWebAppsFarm -InternalURL “http://servername” -AllowHttp -EditingEnabled


  • –InternalURL is the name of the server that runs Office Web Apps Server, such as http://servername.
  • –AllowHttp configures the farm to use HTTP.
  • –EditingEnabled enables editing in Office Web Apps when used with SharePoint 2013. This parameter isn’t used by Lync Server 2013 or Exchange Server 2013 because those hosts don’t support editing.

The PowerShell cmdlet for creating new Office Web Apps server farm using HTTPS on production server with trusted certificate already installed and configured on the farm:

New-OfficeWebAppsFarm -InternalUrl Https:// -ExternalUrl Https:// -CertificateName WacCert -AllowHttp


In the above command, would be the Office Web App URL that we will be using (using same for internal and external, however this can be changed as per requirement)

  • InternalURL Refers to URL that will be used by Lync 2013 Clients connected to Lync server internally.
  • ExternalURL Refers to URL that will be used by Lync 2013 Clients connected to Lync server externally.
  • CertificateName is set to ‘WacCert’ which is the friendly name of the certificate that we created earlier.

8.2 Verify Office Web Apps Server farm was created successfully
To verify Office Web Apps server was created in step 3.2.1, open IE browser and go to: http://servername/hosting/discovery , where servername is the name of the server farm that had office Web App installed.

At the end of this step, we have installed office web app server, created an Office Web App Server Farm and have associated valid certificate that was created earlier, Office Web App Server is now ready to be used with SharePoint 2013 host.

9. Configure the SharePoint host

The farm is now ready to provide Office Web Apps functionality to host over HTTP. To configure Office Web apps for hosting SharePoint 2013, follow the steps below. For more information, go to:

  1. Logged into the SharePoint 2013 server farm
  2. Right-click SharePoint 2013 Management Shell to display the app bar.
  3. In the app bar, click Run as administrator.
  4. Create the binding between SharePoint 2013 and Office Web Apps Server:

4a . In a test SharePoint environment that uses HTTP, type the following:

New-SPWOPIBinding -ServerName <WacServerName> -AllowHTTP

4b. In a production SharePoint environment that uses HTTPS, type the following:

New-SPWOPIBinding -ServerName <WacServerName>

<WacServerName> is the fully qualified domain name (FQDN) of the URL that you set for the internal URL. This is the point of entry for Office Web Apps Server traffic. For this test environment, you need to specify the –AllowHTTP parameter to allow SharePoint 2013 to receive discovery information from the Office Web Apps Server farm by using HTTP. If you don’t specify –AllowHTTP, SharePoint 2013 will try to use HTTPS to communicate with the Office Web Apps Server farm, and this command won’t work.

5. View the WOPI zone for SharePoint bindings, by typing the following PowerShell cmdlet: Get-SPWOPIZone

Office Web Apps Server uses zones to determine which URL (internal or external) and which protocol (HTTP or HTTPS) to use when it communicates with the host, in this case, SharePoint 2013. By default, SharePoint Server 2013 uses the internal-https zone.If SharePoint was configured to use externally, then you use internal-https. If SharePoint was configured to be used internally, then you use internal-http. The WOPI zone displayed by this cmdlet should be internal-http. So if it’s displayed wrongly go to step 6. Otherwise go to step 7.

6. Change the WOPI zone to internal-http – If the result from Step 3 was internal-https, run the following command to change the zone to internal-http. You need to make this change because the zone of SharePoint 2013 must match the zone of the Office Web Apps Server farm. Type this PowerShell cmdlet:  Set-SPWOPIZone -zone “internal-http”

Verify that the new zone is internal-http by running Get-SPWOPIZone again.

7. Change the AllowOAuthOverHttp settings in SharePoint to True – To use Office Web Apps with SharePoint 2013 over HTTP in a test environment, you need to set AllowOAuthOverHttp to True. Otherwise Office Web Apps won’t work. You can check the current status by running the following example: (Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp

If this command returns false, run the cmdlet below to set this to true:

$config = (Get-SPSecurityTokenServiceConfig)

$config.AllowOAuthOverHttp = $true


Run the following command again to verify that the AllowOAuthOverHttp setting is now set to True: (Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp

9.1  Verify that Office Web Apps is Working

Further Information

For more information, read the following resources in this order:

Getting Started with Git

What is Git and GitHub?

Git is a repository version source control system that keeps track of files (of any format) and folder changes that are physically kept on the computer hard drive file (e.g. C drive) or shared network drive structure on Windows or Mac OS.

Meanwhile,  GitHub is an online repository source control on the cloud where it host  unlimited public repository  to individual registered users who sign up fora GitHub account. Once users have a GitHub account, they can begin to upload and publish open source code projects and solutions that are shared to the community.

GitHub also host private repository for individual or as an organization at a monthly price that users have to pay if interested.  Thus GitHub does NOT offer any free online private repository, except for Visual Studio Online that offers private repository for up to the first 5 users.

The starting pricing model (at the time this blog was published) for an organization to host private repository is:

  • $9 / month for the first 5 users hosted at GitHub; or
  • From $21/month for a pack of 10 users hosted on SMS private cloud like Windows Azure.

To get started using Git, follow the steps below:

  1. Download and install Git from this site for either Windows or Mac OS. Accept the default settings in the installation wizard dialog box
  2. Download and read eBook Pro Git by Scott Chacon and Ben Straub that is available to read online for free.
  3. Create a new folder on the desktop hard drive
  4. Right mouse click on the folder and “Git Bash Here”. This will open an Git command prompt window starting on the folder that you have just created in step 3
  5. Create a Git repository under the current working area folder. This is done by going into Git command prompt window,  type: get init
  6. Step 5 will create an invisible “.git” folder inside the current working folder. To display a list of files and folder under current working area, type cmdlet: ls -la

How to add a  file/folder into Git?

The process of adding a file into Git is to add it to a staging area. Then commit (check in) the file in staging area

  1. To add a file to staging areal,  type: git add <file name/folder name> This cmdlet will add individual file or add bulk of files (inside the folder) into the staging area.
  2. Type: git status   This will get the status list of all  files under the working folder area. The status messages are:
  • New files – Recently new files added to staging environment (green font)
  • Untrack files – Files that are not yet committed to Get repository (red font)
  • Changes to be committed – Files that has been added into the staging environment but not yet committed (yellow/orange font)

3. Now you are ready to commit (check-in) the file into Git repository, by typing: git commit -m “revision 1”

4. To verify that the comments was stamp onto the committed files, Type: git log

Other Git cmdlets:

  • Git add .  = Add all the list of untrack files to be ready for commitment in the staging environment area.
  • Git commit -m “add comments here” = Commit all the files in staging. Parameter -n means to add the comments and display message during commit process.
  • Git config -global = Add your profile into the committed files
  • Git config -global “David Liong”
  • Git log = Display the last commit process transactions
  • Git checkout <file name> = Undo pending changes made to a file in the current working area $. All save changes made to a file in the current working area will be lost and will be reverted back to the last committed changes in version history
  • Git checkout –<file name> =  Discard files that were deleted in working directory folder. Typically undo deleted file to restore file back from last committed change in  version history. Alternatively use: git checkout <file name> command
  • Get reset HEAD <file name> = Unstage from commit, meaning remove files out of staging environment back and revert file to current working.

Recommended Links

The next step is learn how to get started using GitHub

Office 365 Developer PnP PowerShell Cmdlets

The OfficeDev PnP Cmdlets are a set of cmdlets specifically designed to provision and modify artifacts in SharePoint Online. In this way they differ a bit from the PowerShell cmdlets provided by Microsoft which are mainly focused on administrative tasks. In this post I will introduce you to the basics of the cmdlets.

The cmdlets utilize CSOM behind the scenes, which means that you can run them on any computer that has access to your server over HTTP / HTTPS.

If you want to see the cmdlets in action, please check out this video on Channel 9.


First you need to determine if you want to use the Cmdlets towards SharePoint Online / Office 365, or if you want to use them on-premises. There are two different builds of the cmdlets:

PnPPowerShellCommands15.msi for SharePoint 2013 On-Premises

PnPPowerShellCommands16.msi for SharePoint Online / Office 365.

You can download the releases here:

Download the appropriate package and run the install.


Accept the license agrement and click ‘Install’. The Advanced option allows you to pick if the cmdlets should be installed only for you or if you want to install them for all users on your computer (the latter requires that you have administrative rights with the account you are logged in with).

The install shouldn’t take more than a few seconds.

Using the cmdlets

The cmdlets are using CSOM behind the scenes. CSOM stands for Client Side Object Model and is the default SDK that developers use to build addins for SharePoint. A requirement to use this SDK is that the developer creates a so-called ‘context’ object. Think of a context object as a connection point to the server. In PowerShell we have to do something similar. We ‘connect’ the PowerShell session to your remote server with the Connect-SPOnline cmdlet:

When you enter the command, obviously with a functional url to your server and or Office 365, you will be prompted to enter your user credentials.

After you entered the Connect-SPOnline cmdlet you can execute all the other cmdlets available in the PnP Cmdlets module to perform various tasks.

For instance, to retrieve all the lists in the site:

To retrieve a specific list:


To view a property of the list:

Or to get an overview of all the properties available in the list:

Notice that not all properties might be ‘loaded’ yet. CSOM tries to be efficient when it comes to retrieving data from a SharePoint Server, and this means it will only retrieve those properties that have been explicitely requested. It will for instance never automatically retrieve values of a collection. Let me explain this with an example:

This will return an error as shown in the following screenshot:


This means that while the $list  object has a property called Views, you need to explicitely request it from the server (notice, there is also a Get-SPOView  cmdlet, which returns all the views for a list, but in this case we’re going to retrieve the views the ‘hard way’).

In order to explicitely show the views we need to tell the server to retrieve the collection, and for that we need a ClientContext object. Look at the following PowerShell snippet:


Whats commands are available?

Currently there are over 135 cmdlets available each focused on a specific tasks. It goes to far to describe them all, especially because we have built-in help in PowerShell for the cmdlets after all. To get an overview of all available cmdlets after you installed them, open PowerShell and enter:

This will list all available cmdlets.

If you want more details about a specific cmdlet, for instance about the Get-SPOList cmdlet, enter:

This will return an overview of the supported parameters, a short description per parameter and one or more examples (notice, not all PnP Cmdlets show examples, but most of them do).

If you want you to have a look at all the available cmdlets with your browser, head over here:


Missing functionality or want to contribute?

The cmdlet sourcd code is available in the following github repository: This is a sub repository for the PnP Repository available at In the latter repository you will find a wiki page at that should get you up and running with a pull request, which is the github way of proposing an addition and/or change.

Further Information

Introduction to Office 365 PnP

Getting Started with Office 365 PnP

What is Office 365 PnP (Practice and Pattern)? It is about providing a site provisioning engine to create sites and site collections within a SharePoint Online tenant or a on premise SharePoint farm base on a given definition. The definition of a site provisioning engine is an object describing the provisioned components like list, libraries and features. But also SharePoint security groups, users, site property bags entries and Composed Looks. O365 PnP is also about rising initiatives awareness to the public community about training, best practices and guidance.

With the template provider, the definition object can be transformed to JSON or XML. This works in both ways, so you can transform a XML definition into an object. Therefore you are able to define the structure of a site or site collection in a XML template. The definition object will be referred to as PnP template. Few classic site provisioning techniques is best explain with the blog author Vesa Juvonen who explains these techniques in more detail.

The modern way of site provisioning is remote provisioning. Remote provisioning uses the Client Side Object Model (CSOM) or the REST API to create a site and fill this site incrementally with CSOM/REST requests. This model is suitable for both on-premises and Office 365 online in the cloud, since we control the customizations outside of the SharePoint farm in an independent solution.

To improve the experience using remote provisioning, the Office Dev PnP team created PnP Provisioning. As mentioned earlier, a really great part of PnP Provisioning is defining a site template in a XML using the PnP Provisioning Schema.


Component of PnP

All components of office dev pnp are placed on github. It started in a single repository, but soon the volume of the program became so large, the office dev pnp team decided to split the individual components in separate repositories.

Pnp partner pack
contains the pnp partner pack, a starter kit for customers and partners and combines numerous patterns and practices demonstrated in the pnp samples to one reusable solution, which can be deployed and used in any office 365 tenant.

Pnp sites core
contains the core library and the pnp provisioning engine. The pnp provisioning engine helps to deploy customizations to remote sharepoint environments.

Pnp powershell
contains powershell wrappers to the functionalities of pnp core.

Pnp guidance
contains the documentation and guidance of the program. The contents of the master branch are published to dev.Office.Com and msdn.

Pnp office add-ins
contains samples of how to work with the html and javascript based office add-in model.

Pnp tools
contains more tools, code packages and scripts for the on-premises and hybrid setup, than purely for the office 365 operations. Using classic terminology, this could be considered more targeted for it pro’s, architects and administrators in on-premises deployments.

Pnp transformation
contains the farm solution to add-in model transformation tooling and guidance.

Pnp provisioning schema
contains the provisioning schema for pnp provisioning in XML format, a community driven effort for designing one schema which can be used to define elements in the office 365.

To get started with Office 365, below are some top useful links to begin with:

1. Watch this video title “How to get started with Office 365 PnP” webcast from Channel 9 video blog. You can download the presentation slide for this video here


2. Visit the O365 PnP home page at: 
From this homepage go to the trainining section and watch the videos:

* To find and download the Power Point presentation slides for each video, go to and search for the video title.
* Each training video also contains its sample source codes which can be found at this GitHub site:


3. Visit the O365 PnP GitHub open repository site to explore sample codes and other useful links.


4. To find and search for relevant sample codes and documentation guide on using O365 PnP, go to


5. Install the following tools:


6. Create a Console application project in VS to provision a document library into O365 SharePoint site. For sample code watch the video title “How to get started with Office 365 PnP
Other useful links of sample codes for  specific project needs are:

Introducing PnP Core Component

Site collection and sub site provisioning:

PnP Partner Pack:

Further information

Using AutoSPInstaller To Install SharePoint 2013

This section talks about the software you should have ready on your system before starting the installation and configuration process of your SharePoint 2013 farm using AutoSPInstaller.

Step 1 – Software Download
  1. Login to your SharePoint Server as your domain\sp2013setup local administrator account
  2. Download SharePoint 2013 Server (w/ SP1 preferably) –
  3. Download latest Cumulative Update –
  4. Download lastest AutoSPInstaller –
  5. Download latest AutoSPInstallerGUI –
  6. Download latest AutoSPSourceBuilder –

  7. Extract contents of AutoSPInstaller to C: drive (i.e. C:\SP)

  8. Mount your SharePoint 2013 Media File to a drive

  9. Optional (steps 9-12) – Slipstream install any cumulative updates and download prerequisites for an offline install by extracting AutoSPSourceBuilder to C:\SP  Ensure that the SharePoint farm has internet connection to do step 9-12

  10. Open Windows PowerShell as administrator

  11. Change directory to C:\SP (“CD c:\sp“) and run “Set-ExecutionPolicy ByPass

  12. Choose cumulative update (when prompted) and set parameters for an offline prerequisite install by running “.\AutoSPSourceBuilder.ps1 -GetPrerequisites $true

  13. Extract AutoSPInstallerGUI to C:\SP

  14. Ensure that C:\SP\AutoSPInstaller\AutoSPInstallerInput.xml file is not marked as read only


Step 2 – Farm Configurations and Installations

This step guides you through some of the basic configuration options that AutoSPInstaller and AutoSPInstallerGUI give you when configuring your farm. More advanced configurations are described on the AutoSPInstaller and AutoSPInstallerGUI CodePlex sites, which is now depreciated. So ignore the next steps below and go to the online GUI at to create a configuration XML file for the SharePoint farm

  1. Run AutoSPInstallerGUI.exe from C:\SP

    NOTE: Alternatively AutoSPInstallerGUI is out of date and there is now an online version of GUI where you can upload the AutoSPInstallerInput.xml file

  2. Go to File -> Load XML and point to the C:\SP\AutoSPInstaller\AutoSPInstallerInput.xml configuration file

  3. On the Install tab, fill in the necessary components and how you would like your install to be configured
    1. Set the Environment
    2. Optional – Set it to offline install because you ran AutoSPSourceBuilder and auto slip streamed the cumulative updates and downloaded the pre-reqs
    3. Enable Auto Admin with the setup account (sp2013setup in my case) password so you don’t have to keep logging in after reboots to continue the process
    4. Change the search Index Data Directory to a different drive if possible
    5. Set your PID key (product key) and SKU version

  4. On the Farm tab, populate all the appropriate settings for each sub-tab
    1. Ensure you put in a Passphrase so that you can easily add more servers to the farm
    2. Create a database alias in case you ever need to move the SQL Server
    3. Set the DB Prefix with the environment name to easily identify your databases

    Recommend changing all log file locations to a separate drive

  5. Leave or customize the defaults in the web application tab

  6. Set the Service Application tabs properties


  7. Configure the enterprise service apps if required

  8. Configure Other properties if required

  9. Go to File -> Save to save your XML file and close AutoSPInstallerGUI
  10. In C:\SP\AutoSPInstaller, right click and run the AutoSPInstallerLaunch.bat file as admin


And voila! Once the script has been run, you should have a semi-running SharePoint farm.