Musings on Cloud, BigData, AI, Machine Learning, Containers and IOT

Visual Studio 2013 Community Launch @ Chennai–Dec 21, 2013

Saturday, December 21, 2013 from 9:30 AM to 1:00 PM (PST)


471, 2nd floor, Prestige Polygon, Anna Salai
Rathna Nagar, Teynampet
Chennai, 600018

Agenda & Schedule

No Agenda Schedule
1 Registration 9:30 – 10:00 AM
2 Visual Studio Studio 2013 IDE Changes and what’s new in .NET 4.5.1 10:00 AM – 11:00 AM
3 Tea Break 11:00 AM – 11:15 AM
4 Web Development in Visual Studio 2013 11:15 AM – 12:15 PM
5 Build HTML 5 based LOB Apps with Light Switch 12:15 PM – 1:00 PM
6 Q&A 1:00 AM – 1:15 AM

 Subscribe to my blog

Useful resources on SharePoint 2013 Capacity Planning

I’ve collated a list of resources that comes handy when we do Capacity Planning and Sizing for SharePoint Server 2013. The list of resources are below :-

1.Hardware and software requirements for SharePoint 2013

2. Enterprise scale farms for SharePoint Server 2013

3. Streamlined topologies for SharePoint Server 2013

4. Traditional topologies for SharePoint Server 2013

5.Plan and use the Distributed Cache Service in SharePoint Server 2013

6.Plan for feeds and the Distributed Cache Service in SharePoint Server 2013

7.Enterprise Search architectures for SharePoint Server 2013

8.Internet sites search architectures for SharePoint Server 2013

9.Scale search for performance and availability in SharePoint Server 2013

10.Capacity Planning, Sizing and High Availability for Search in SPC172

11.Configuring a highly available workflow in workflow manager

12.Use best practice for configurations for the SharePoint 2013 virtual machines and Hyper-V environment

13.Plan Office Web Apps Server

14.Estimate performance and capacity requirements for enterprise intranet collaboration environments (SharePoint Server 2013)

15.Estimate capacity and performance for Web Content Management (SharePoint Server 2013)

16.Estimate capacity and performance for Managed Metadata Service

17.Estimate capacity and performance for video content management in SharePoint Server 2013

18.Estimate capacity and performance for compliance and eDiscovery for SharePoint Server 2013

 Subscribe to my blog

Microsoft Community Day–Nov 9

Tomorrow, Nov 9 is the Microsoft Community Day, there are whole lot of community activities planned around latest Microsoft technologies. 

The following webcasts are scheduled.

Working with Windows Azure IaaS

2:00PM IST


What’s new in CRM 2013

3:00PM IST



4:00PM IST


Developing Near Field Communication in Windows Phone 8

5:00PM IST


Windows 8 and Hyper-V

6:00PM IST


Exchange Server 2013: Modern Public Folders

8:00PM IST


Working with SharePoint 2013

9:00PM IST


The following chat sessions are also scheduled


If you are interested, please register here

 Subscribe to my blog

Retrieve Person or Group field using SharePoint 2013 Client Object Model

I’m involved in troubleshooting a crazy people picker field issue in SharePoint 2013, which necessitates me to programmatically query the Person or Group field of SharePoint list using Client Object model. I was trying to figure out the exact syntax that can be used to grab the Person or Group field using FieldUserValue objects. Here is the complete code below :-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Client;
using System.Net;

namespace ReadApproverNameField
    public class Program
        static void Main(string[] args)


        public static void GetApproverDetails()
            ClientContext clientContext = new ClientContext(http://servername/sites/sitecollectionname);
            NetworkCredential oNetworkCredential = new NetworkCredential();
            oNetworkCredential.Domain = @"Domain Name";
            oNetworkCredential.UserName = @"User Id";
            oNetworkCredential.Password = @"Password";
            clientContext.Credentials = oNetworkCredential;

            List list = clientContext.Web.Lists.GetByTitle("Name of the list");

            CamlQuery camlQuery = new CamlQuery();
            camlQuery.ViewXml = "<View/>";
            ListItemCollection listItems = list.GetItems(camlQuery);

            foreach (ListItem oListItem in listItems)
                FieldUserValue name = oListItem.FieldValues["ApproverName"] as FieldUserValue;
                string person = name.LookupValue;                
                Console.WriteLine(oListItem.Id + "     " + oListItem["Title"].ToString() + "     " + person);

Basically we cannot create a new instance of FieldUserValue object, it needs to be casted from the current item’s field using ‘as FieldValue’ syntax
and then the LookupValue need to be invoked to fetch the value. If we run the above code, we’ll get the output below.

 Subscribe to my blog

Import MS Project 2010 plan to Project Server

This article will cover the steps required to import the Project Plan created in MS Project 2010 to the Project Server (Project Web Access). This assumes that you’ve already established a connectivity to the Project Server through File –> Info –> Manage Accounts –> Add


Now let’s add an option in the Ribbon Control to enable upload the project plan to Project Server

File –> Options –> Customize Ribon

Under Main Tabs –> Project –> Create a a new group pressing ‘New Group’ button

On the left side –> Choose commands from –> Select ‘Import Project to Enterprise’


Now you’ll get to see an option called ‘Import Project to Enterprise’ under Projects in Ribbon.

 Subscribe to my blog

Connecting MS Project 2010 to Project Web App

I was trying to connect MS Project 2010 to a Project Web App (MS Project Server), got this error “.


The root cause of the issue was that, the MS Project 2010 was not able to connect to Project Web App using the logged on user’s credential.

I had to make a change to the following browser settings to get this working.

IE –> Tools –> Internet Options –> Security –> Intranet (in my case PWA site is hosted in intranet zone)

Custom Level –> User Authentication –> Logon –> Prompt for user name and password


 Subscribe to my blog

You can’t remotely debug events Windows Azure Service Bus connection string is missing

I was trying to debug a SharePoint 2013 remote event receiver running against a SharePoint Hosted App in Visual Studio 2012. I got the following error.


I learnt that I need to create a Windows Azure Service Bus and configure the end point of Azure Service Bus in the Visual Studio project property.

Create a new service bus object in Azure Management Portal


Go to project property in Visual Studio 2012 –> SharePoint Tab –> Enable Remote Debugging by providing the endpoint of the Azure Service Bus


Now we’re able to debug the remote event receiver in Visual Studio 2012.


 Subscribe to my blog

Microsoft MVP Lunch Hour Session on Sep 18

I’m conducting a session for the South Asia Microsoft MVP Lunch Hour series  on Microsoft events online platform (

The topic is ‘SharePoint 2013 Remote Event Receivers” and it will be a Level 300 session. The event date is 18’th September 2013.

If you are interested, please register it in the below link

 Subscribe to my blog

SharePoint 2013 OAuth Tokens–Frequently asked questions

In one of my previous blog post I wrote about SharePoint 2013 App authentication flow, which briefed about oAuth protocol. There is lot of things to be learnt with respect to oAuth. I feel it’s worth compiling an FAQ  on oAuth, this is the result of that :

1. What is a Context Token ?

The context token is specific to App Configuration information and it is issued by Windows Azure Access Control Services (ACS). The trusted ACS server signs and issues the Context Token, when it receives request from App.

2. What is the format of CacheKey of Context Token ?

The CacheKey of context token is a combination of UserNameId, UserNameIdIssuer, ApplicationId and Realm.

CacheKey= UserNameId + “,” + UserNameIdIssuer + ApplicationId + “,” + Realm.

Note: The Cache Key does not have site URL details. The Cache Key relies on the uniqueness of the realm, it is unique for user, app and tenant.

3. How a Context Token look like ?

The same context token is illustrated below:


4. What are the various information present in the Context Token ?



Represented Fields

Sample Value


‘add’ means audience. The format of add is below

{target client ID}/ {target URL authority} @ {target realm}



iss iss stands for issuer. It represents the principal that has created the Token. The format is {ACS}@{target realm} ACS


realm Tenancy realm


nbf ‘nbf’ stands for not before. It represents the validity start of the token nbf


exp ‘exp’ stands for expiration. It represents the time after which the token is not valid. exp


Actor It is the principal identity of SharePoint 2013 SharePoint 2013


5. How to calculate the validity and expiry timestamp from nbf and exp ?

Nbf and Exp are denoted based on JWT specification. It is calculated as number of elapsed seconds since 1’st January, 1970.

6. How long a refresh token is valid ?

The refresh token is valid for 6 months (as of today’s App Authentication Framework design).

7. Can we store the access token in cookies ?

It is recommended not to store the access token in cookies (it’s not very secure). The refresh token can be stored in cookies (which is valid for 6 months), a new Access Token can be requested based on the stored refresh token.

8. Can we grant or deny the permissions for launching an App ?

No. If the user has access to browse the site, he’ll automatically be able to launch the app. The Grant or Deny permissions for an app can be defined only during the install time.

9. Can we use HttpDav protocol (HttpDav APIs) inside the App ?

The HTTP Dav protocol does not work with oAuth.

10. Whether AppId and SecretId will be same across all tenants for a given app ?

The AppId and SecretId are constant across all tenants for a given app, if the app is running in a separate remote web application and app is registered in the Seller dashboard.


 Subscribe to my blog

How to Add external users to SharePoint Online

I was wondering if there is a way to add external users to SharePoint Online. The external users are nothing but people who don’t have user accounts in the SharePoint Online environment. The access to external users can be provided by sending them an invitation through e-mail. I’ve learnt that we can send the e-mail invitation to any type of e-mail address such as *, * or * However to log-in to the SharePoint online environment, the e-mail account has to be associated with a valid Microsoft account.


Click Share


Now the a email invite will be sent to the invitees (external users)

Open the e-mail invite and click the link on that.


To accept the invite, you need to have a valid Microsoft account.


This completes the sign-in process for the external user to the SharePoint Online Team site using a valid Microsoft account.

 Subscribe to my blog