Update: 2/21/2011 — Thanks to the attendees for voting me to the Top 10 speakers list. I enjoyed the event as well.


SharePoint 2010 Application Lifecycle Management (ALM)

I am back at Philly for bi-annual SharePoint Saturday event on 2/5/2011 at Devry University, Fort Washington, PA. Over 325 people have registered and the registration will close at 400.

My topic will be on SharePoint 2010 ALM:

SharePoint 2010, VS 2010 & TFS 2010 ALM tools help developers to improve code quality and metrics. ALM stands for Application Lifecycle Management – It is management & co-ordination of all software development lifecycle activities like requirements gathering, requirements modeling, code development, build process, testing activities and implementation events. Developers now can use all the ALM features of TFS & VS to develop quality SharePoint solutions . ALM is no longer just confined to .NET developers but to the SharePoint development as well. This session will demo TFS integration with SharePoint & Visual Studio and how developers can utilize ALM tools to deliver better quality conscious products to customers.

See you at SharePoint Saturday!

Page copy protected against web site content infringement by Copyscape


FAST Search for SharePoint 2010 – Using PowerShell to execute searches.
In some cases, you may want to test query results and there is a relatively easy way to do using PowerShell.

General steps are:

1) Pass the site URL to the Search object
2) Pass the QueryText (the query that you want to test)
3) Set search parameters
4) Execute query and format the results

Here is the code:

   1:  #load the site and set the keyword query object
   2:  $searchSite = Get-SPSite http://www.sathishtk.com
   3:  $keywordQuery = New-Object Microsoft.Office.Server.Search.Query.KeywordQuery $searchSite
   4:  $keywordQuery.ResultTypes = [Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults
   5:  # activate FQL queries
   6:  $keywordQuery.EnableFQL = 1 
   7:  $keywordQuery.RowLimit = 10
   8:  #Pass the query text - SharePoint
   9:  $keywordQuery.QueryText = "SharePoint"
  10:  #query execution
  11:  $results = $keywordQuery.Execute()
  12:  #display total number of rows
  13:  Write-Host Total hits: $results[1].TotalRows
  14:  $resultsTable = $results.Item([Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults)
  15:  $resultsDataTable = $resultsTable.Table
  16:  # display the results in table format for better view
  17:  $resultsDataTable | Format-Table -AutoSize -Property title, url

Page copy protected against web site content infringement by Copyscape

User Profile synchronization is bit complicated to troubleshoot and this post will aim to give you some pointers and save some time.

Useful Links (there are many useful web sites out there, I am listing a couple)

1)    Technet — http://technet.microsoft.com/en-us/library/ee721049/ — As of writing this the last update was done on September 30, 2010. I am sure MS folks will update this document as they discover new information.

2)    http://www.harbar.net/articles/sp2010ups/ – Spencer Harbar — Good write up on UP sync.

Now pointers:

  • Create a new web application and site collection to host My Sites. Do not mix your content apps with My Sites web apps.


  • If possible, create the My Site Host at the site collection root. Example: My Site Host – http://mywebapps.com/ and personal sites at /personal. If done right, the managed path (/personal) will be created for you and you don’t have to create it manually.


  • Do not use the Farm Configuration wizard to create the User Profile service apps. No, don’t. Use the New option under Central Admin (CA) – Application Management – Manage service applications.


  • Do not start the Forefront services manually (Forefront Identity Manager and Forefront Identity Manager Synchronization). Use CA – System Settings – Manage Services on server and start the User Profile service – This will automatically start the services. The initial state of these services will be “Disabled” but the UP service will reset the status and start it. After this step, execute IIS reset.


  • Use the ULS Log viewer and yes read the logs. It does show some useful information sometimes. Do read it to troubleshoot.


  • It is tempting to select the entire AD container, but organize your users into specific OUs and then select only those relevant OUs.


  • AD Sync – In the first run, ensure the AD sync account you using has all administrator privileges on AD as well as the sync server. Yes, I understand this is not best practice, but this will save you time.  Next, tweak the account for exact privileges. For specific rights, check Technet article. Don’t forget to remove the account from the admin group once you are done.


  • Enable Self Service site creation CA– Security – Configure self-service site creation.

So to sum up – Create UP service application – ensure Sync, Profile databases are created – Start UP services – Setup AD Connection – Start full import and then schedule incremental sync.

Page copy protected against web site content infringement by Copyscape

I encountered a “Specified value is not supported for the parameter” error when trying to create a web application in SharePoint 2010. Tried to create a couple of service applications and met with the same error. This was on my laptop that was part of corporate domain but was not joined to the domain. So, after some error log reviews, I was able to resolve it by joining the Windows 7 laptop to corporate domain before performing these operations.

SharePoint actually checks whether the machine (user account too) is connected to the domain before these actions are completed. This happens to machines that are part of the domain during SharePoint install and configuration.

Page copy protected against web site content infringement by Copyscape

I recently setup FAST Search Server 2010 for SharePoint 2010 and here are the documented steps:


  • FAST Search Server was installed on a dedicated server different from SharePoint 2010 server.

  • FAST Server was not installed on a domain controller.

  • FAST Server was patched with latest windows update and windows update service was running.

  • Used the Pre-requisite installer for FAST Server 2010 (available on the installation media) to install all required components for FAST Server 2010

  • Identify the user who is running the Microsoft SharePoint 2010 Timer Service (you will need this account to provide handshake between SharePoint 2010 Server and FAST 2010 Search Server)

  • Configuring SSL enabled communicate is required when you setup Content SSA.

  • Followed all step by step instructions mentioned in TechNet


Here are the high level steps that I followed from the article:


  • Enable PowerShell scripts to run.

  • Install FAST Search Server 2010.

  • Configure a single server deployment.

  • Setup the Content Search Service Application (SSA) – Content SSA is responsible for crawling content and feeding it into FAST Server for SharePoint back-end.

  • Setup the Query Search Service Application – Query SSA fetches query results from the content that is crawled by the Content SSA.

  • Configure claims authentication.


Once all the above steps are configured, check whether all FAST Search Server services are running by typing the following PowerShell command using Microsoft FAST Search Server 2010 for SharePoint shell

nctrl status

You should see the output as shown in the screenshot below



Next step, is to Test FAST Search Server 2010 for SharePoint (TechNet article has all the detailed steps)

On your SharePoint 2010 server, check the association between FAST Query SSA and your web application by clicking on “Configure service application associations” available under “Application Management”. You can see “FAST Query SSA” associated with my web application below



Once the association is complete, perform a search query and you will see FAST Search server in action (assuming you have crawled the content sources using FAST Query SSA)

This screen shot shows the Crawl History for FAST Query SSA





Search query results using FAST Query SSA



Check out the refinements search on the left (Result Type, Site, Date)…  Pretty cool… right?

Page copy protected against web site content infringement by Copyscape

I was going through the steps of deleting content db using stsadm (as you know it does not delete the content database from SQL Server, but just removes the reference from SharePoint perspective) and using stsadm –o addcontentdb to attach a content database from production to development server for testing purposes. Once the stsadm –o adcontentdb operation was completed successfully, I went into Manage Content Databases section and noticed the Current Number of Sites was set to 0.



To confirm that the content database had some valid entries for webs and sites, I queried the following tables

select * from Sites with (nolock)

and then the webs table

select * from webs with (nolock)


The query results showed entries existed in the sites table as well as the relevant webs table. After further troubleshooting, the issue was caused by GUID conflicts in SQL Server. I had restored the same content database from production to development server few months back for some other testing purpose to a different web application. Although this was a brand new web application that I had created, the GUID conflict still occurred and that is the reason the number of sites was set to 0. So, to ensure that the restore process was clean, I started the restore process again on SQL Server, executed stsadm –o deletecontentdb for the new web application I had created followed by stsadm –o addcontentdb pointing to the new database restored.

Now, if you have a question, so how do I maintain 2 copies of the same content database in production in this scenario without GUID conflicts? You can use stsadm backup and restore (or) content deployment. I did try with stsadm backup and restore and the process was successful.

Hopefully, this post will save you some time next time you encounter a similar situation.

Page copy protected against web site content infringement by Copyscape

I was setting up some BDC models in SharePoint 2010 which involves managing authorization levels for BDC Metadata Store.

In Central Admin – BDC Service – Set Metadata Store Permissions

Add an user and the Permissions box will be populated with different authorization roles. Initially I couldn’t find any documentation on these roles.




So, after some digging around, here it is:


Edit – Create, delete, and Update metadata for BCS

Execute – Permission to make a call to an external system

Selectable in Clients – If you need to provide users with access to utilities like entity picker

Set Permissions – Gives the current user the ability to grant rights to other users.

Philadelphia SharePoint community holds SharePoint Saturday events once or twice per year. On May 8, 2010, it will be a full day of SharePoint.

My session covers BI features with SharePoint


The session will demonstrate BI capabilities of SharePoint that include dashboards, Visio services, excel services, Performance point, and new BI controls in SharePoint 2010.  I will walk the audience through the steps of creating KPIs, score cards and publishing them to SharePoint plus demonstrate SQL Server connected Visio diagrams. 

 See you there!