Page copy protected against web site content infringement by Copyscape

Just back after attending the SharePoint 2010 conference. Very impressive new features in SharePoint 2010 for developers This is definitely not the complete list, but some of my favorites.

Note: Visual Studio 2010 SharePoint projects will work only with SharePoint 2010. Hard luck, can't use the cool features for MOSS 2007 development.


  • Finally, we can now use client OS (Windows 7/Vista SP1) for SharePoint development. Of course, x64 bit. No need for a separate VM.
  • Integrated Debugging — Yep, you read that right. Debugging your web parts just got a lot easier. Dump your "attaching to worker process" headache. Developer Dashboard provides you with detailed debugging information and performance analysis which will help with problem isolation and fix.
  • Deployment of web parts is integrated within VS 2010. Click F5 and watch build, package & deploy. Yes, you can customize the deployment process.
  • VS 2010 has now in-built support for Visual Web part development. You can use the designer to control the look and feel of your web part.
  • Cascading deletes with Lists — Handle with care — but powerful feature. Out of the box support for linking lists. Lists have been scaled to accommodate millions of rows.
  • Client Object Model (OM): Tons of posts will invade the web, but for now remember — it is API on steroids with ability to select, add, manage and update data in SharePoint. Overcome current restrictions of MOSS web services and full support for JavaScript. Also, OM is very low on file size, so easy to redistribute.
  • REST APIs support through ADO.NET Data Services — Yes, strongly typed and full support for REST protocols — ATOM, JSON, & ATOMPub. Use REST to pull data from Lists, Cloud and Excel sheets.  
  • LINQ — If you have not learnt LINQ, I would urge you to do so… LINQ to SharePoint provider is slick for Entity based programming and can be used in event receivers, webparts etc.,
  • Ribbon Framework — People who love the Ribbon, now you have a complete framework to go crazy and this stuff is very extensible.
  • BCS – Business Connectivity Services (our good old BDC supercharged) — With ECT- External Content Types (imagine this as the structure of external systems — methods, fields, connections), BCS can pull in external data into SP 2010. There is a bunch of enhancements on business data connectivity like custom connections, batch operations, and read and write capabilities. Plus, now we have a GUI type interface to modify application definition files.
  • Out of the box ALM (Application Life Cycle Management) support for SharePoint development with Team Foundation Server(TFS) 2010. Code versioning, Code Coverage, CI Builds, Batch builds, Code quality metrics, Work Item Tracking, Automated Load Testing are all integrated for SharePoint development.
  • Sandboxed Solutions — Follows a iterative development and easy deployment model with a separate process for solutions. The good thing is that Sandbox solutions can be restricted by Code Access Security (CAS)  and exposes a subset of Microsoft.SharePoint API. As you may guessed by now, Sandbox solution can not be used to develop Visual web parts but Event/Feature receivers, List definitions, Site Pages, Content Types, Infopath Forms services and SharePoint online are all supported.
  • Service Applications — Bye, bye SSP. SSP was all or nothing, but now, each web apps can determine what type of service applications it needs.  Service applications can now be shared between farms. Developers who have good WCF experience can now go crazy and develop their own service applications (core service app, app proxy, app end point) enable service apps for discovery and write consumers (web parts, Power Shell cmdlets). You would definitely want to consider writing your own service apps when you want a scalable solution that can share data between site collections.
  • Plus,  Visio Services (No problem if you don't have visio client, real time data can be shared to a SharePoint Site. Visio diagrams can have different data sources like SharePoint Lists, SQL Database and Excel sheets) is a welcome addition. Excel Services is all beefed up. Not to mention that BI integration with SharePoint is whole lot easier now. Tons of enhancements to Analytic reports. KPIs can be easily deployed from Performance Point to SharePoint sites. Feed Performance Point with data from lists and document libraries.


More to come…..

Page copy protected against web site content infringement by Copyscape

I was in the process of configuring TFS 2010 Beta 1 and the configuration wizard was failing on Reporting Services with error message TF255275: SQL Reporting Services could be accessed…..

Server: Win 2008 x64

Database: SQL Server 2008 x64  

The issue was my existing Reporting Services database was configured for SharePoint mode. So, use SQL 2008 Reporting Services Configuration — Database — Change Database to create a new database for Reporting Services. This should take care of the problem. To understand RS Configuration in SQL 2008 for TFS 2010, refer to "Configure Reporting Server Manually" section in Beta1 Install Guide.


Page copy protected against web site content infringement by Copyscape

After TFS 2008 install with SP1 is complete and you create a team project and try to navigate to the team project site, you may hit an error which says

The permissions granted to user 'domain\user' are insufficient for performing this operation. (rsAccessDenied)

There is a whole lot of help if you google or bing. Here is what I had to do to fix my issue

My setup was three-tier. SQL Server 2008 x64 bit. MOSS 2007 64 bit and TFS 2008 (of course, just 32 bit)

I was accessing the portal site on a windows 2008 box.

I followed this suggestion for the AT (TFS box)

Basically, I had to repeat the same step but for the team site hosted on the MOSS server. Once I added the MOSS server as the trusted site on IE, the reports started displaying.

Again, this will fix your issue only when all other permissions are set properly on Reporting Services and MOSS. Don't forget that in win2008 you have to start the browser as "Run as administrator" to see TfsReportDS & TfsOlapReportDS links on RS portal. 

Hope it helps!

Page copy protected against web site content infringement by Copyscape


I am sharing with you the SharePoint Governance poster that I show my clients to give them an overview of different areas in SharePoint Governance. This is a very high level view of SharePoint Governance but is a good starter to get the discussion rolling. Hope this helps!




If you are starting out on SharePoint Governance (or) already into it, the codeplex material is a good read:

Page copy protected against web site content infringement by Copyscape

In some cases, it may be useful to query the existing Content Types in your site collection that have an associated Workflow defined. Use this query to loop through your content types and find the ones that have workflow enabled.

         string siteCollectionName = "http://devsite";
            SPSite siteCollection = new SPSite(siteCollectionName);
            SPWeb site = siteCollection.OpenWeb();
            foreach (SPContentType contentType in site.AvailableContentTypes)
               if ((contentType.Group.ToString() != "_Hidden") && (contentType.WorkflowAssociations.Count > 0))
                Console.WriteLine("Content Type Name: " + contentType.Name.ToString() + " Content Type Group: " + contentType.Group.ToString());
            Console.WriteLine("Press any key to continue….");

I am filtering out the hidden groups and using the WorkflowAssociations property to track the content types that have workflows associated with them.

Time for April 2009 Code Camp.

If you are in the Philly area, you should plan on attending. There are about 60 sessions and all of them are free.

I will be doing a session on SharePoint 2007 HA (High Availability). Will discuss about WFE(Web Front End Servers), NLB (Network Load Balancers) & SQL Server HA (Clustering, Mirrorring).

Follow the link

Join in and see you there!



Page copy protected against web site content infringement by Copyscape

If you are using a single computer configuration for BizTalk 2006 R2 and if you are experiencing performance degradation, there is a simple setting that you can try before spending too much time attacking performance issues.

Disable SQL Server Shared Memory Protocol

1.    In SQL Server Configuration Manager, expand SQL Server 2005 Network Configuration, and select Protocols for MSSQLSERVER.
2.    Right-click Shared Memory, and then click Disable.
3.    Close and Re-cycle SQL Server.

If you are using SQL 2000, disable Shared Memory using SQL Server Client Network Utility.

Again, this issue may not occur on a multi-computer configuration (database server is different from the BizTalk Sever).

Page copy protected against web site content infringement by Copyscape

With all the buzz going on about ALM Assessment and why it is required, this post aims to demystify ALM. I will try to lay this as simple as possible.

1. What is ALM?

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.

2. What areas does ALM cover?

  • Program & Project Management & Planning
  • Software Architecture & Design
  • Requirements Gathering & End-user experience
  • Software Development
  • Testing & QA
  • Deployment, Operations Management, Compliance & Governance
  • SCM (Software Configuration Management)

3. Is ALM Assessment required for my company?

Does your team have the “just develop it” attitude towards software development?

Does your development team encounter application development pain points (lack of proper requirements gathering, software delays, missing code quality, lack of co-ordination between disparate teams, business objectives not met) ?

Answering these 2 questions will you give you some insight into areas of improvement and need for ALM assessment.

4. What are the benefits of ALM Assessment?

  • Identify failure points
  • Identify areas of process improvement
  • Understand how to address traceability & visibility of lifecycle activities.

5. Truly, will I get something useful after an ALM Assessment?

I would have to answer that with my experience so far. I do see a big value in doing an ALM assessment. Do with the right company. Tap into your local Microsoft regional center and find out the qualified Microsoft partner who can get it done right. Microsoft has an elaborate ALM Assessment program, but that is not the end of the story. You need a subject matter expert to come and meet with your team and go over your team lifecycle activities. He/She will suggest the next steps and how to effectively introduce ALM to your team. Be open with the ALM expert and lay out all the pain points your team is experiencing. Remember, they are there to help you streamline your process. The more useful information you can give, the better for the expert to suggest practical steps to take.

6. What are the tools required by my team to start using Microsoft ALM processes?

1. VSTS (Visual Studio Team System)

2. TFS (Team Foundation Server)

7. Is there a particular version number for your tools?

If you are starting out new, go with VSTS 2008 and TFS 2008. If you have an existing 2005 code base and don’t have plans to upgrade any time soon, you can use the 2005 version.

8. We have Visual Basic code base, can we still use ALM tools?

Yes. Microsoft does provide a MSSCCI Provider for TFS 2008/2005. You can configure MSSCCI provider and be able to integrate VB 6.0 with TFS server.

9. I am done with ALM assessment, what is our next step?

Once the ALM assessment is done and you have given the practical steps to take, the next thing is figuring out the tools purchase. Do you have the VSTS (or) TFS? You can use TFS with any VS 2008 Professional edition with Team explorer, but I would strongly suggest using the VSTS edition. Why take the ALM initiative without the proper tools in place?

10. Can ALM implementation deliver benefits for my team?

Yes. If you have implemented it right,  you can see improvements in

  • Code Quality (just as an example — traceability will be high and everyone in your team will strive to code better as they don’t want to be singled out during a build failure process)
  • High accountability (Check in Policies – I don’t want to outline all features of TFS here, but you can enforce some strict check-in policies that can ensure checked in code quality is good and the developer is accountable to make that happen)
  • Project management improvements (tie this into Project server and you will reap more benefits)
  • Compliance will become big. Yes with that the governance initiatives will start making progress.

11. What are the different ALM Roles?

Note: These roles can be shared between individuals. But, you need to keep a tab on not letting it overwhelm your team members.

  • Software Architect
  • Software Developer
  • Creative Designer
  • DBA & Operations Management
  • QA Tester
  • Project Manager & Business Analyst

Of course, every project will have a stake holder. That role will always be handled by a separate member of the company.

12. Any final field notes?

There are plenty. But I  will confine it to basic steps

“Do not push all the ALM features of TFS 2008 to your team. That will surely overwhelm them and they will be spending time to cope up with the tool rather than concentrating on their current projects. I can’t emphasize this enough “take baby steps in ALM implementation”. That is the only way you will garner support from your team members. Your team members will become more accountable and you need to handle reactions that you get. Introduce features one at a time (For example: Basic check in policy, code quality metrics and code traceability) and let them get comfortable with using each feature before jumping to the next one.”


Page copy protected against web site content infringement by Copyscape

This post will outline how to configure search in MOSS 2007 so that search results do not crawl other site collections and how to use Search Scopes to implement this.

If you search on the web, you will find numerous articles on general MOSS 2007 Search configuration. So, I am not going to repeat that here. My goal is to help you understand Search Scope in MOSS 2007 and restrict crawl results against other site collections.


  • SSP (Shared Services Provider) was configured in Central Administration using standard settings.
  • Web application is created on Port 80:  http://dev1
  • Root site collection (named "Dev Portal") is created on dev1 using publishing site template.
  • Using Central administration a managed path with name "finance" is created.
  • Site collection (named "Finance Portal")  is created on the managed path (http://dev1/finance)  using publishing site template.


If you search on Dev Portal, the results returned should be confined only to Dev Portal site collection and not the site collection present under Dev Portal(i.e. no results from Finance Portal) and vice versa.


I searched for a keyword "scott" on my Dev Portal and this is the result I got


As you can see, I have 2 listings (one from the root site collection — Dev Portal and the other from site collection created on the managed path — Finance Portal)

Now, let me perform the same search on the Finance Portal


Ok, so now let us go about creating search scope and confining the search results only to the respective site collection.

1. Navigate to Site Actions — Site settings — Modify all site settings in the Dev Portal

2. Select "Search Scopes" under "Site Collection Administration"

3. In the window that displays, select New Scope


4. Type in the name of the scope as shown and check the Search Dropdown & Advanced Search check boxes. These are the standard display groups.


5. Once the new scope is created, add new rules to the scope.  The first rule is shown in the screen shot below. This rule ensures that finance site collection is excluded from the search performed in the Dev Portal


6. Add one more rule and in this rule, add the root site collection and set the Behavior to "Require" as shown in the screen shot. When you are done with setting the rules, the compilation will take place as per the schedule. Let the compilation finish.


7. Click on the "Search Dropdown" option on the View scopes screen and make the changes shown in the screen shot. I have unchecked "All sites" and "People". You can keep them based on your requirement.


Repeat the same settings for "Advanced Search"


8. Now we are done with the Search scopes screen. Perform any type of search on Dev Portal so that the search results page is display. Click on Site Actions — Edit Page and select the "Search core results" web part.


Select edit — Modify shared web part and under Miscellaneous section, set the scope to "Dev Portal Search Scope". Re-call that this is the name of the new search scope we had created.


Click "Ok", check-in, publish, approve the page.

9. Now, go back to Dev Portal home page and perform the search again for the keyword "scott" and you will see that only search result is retrieved and it is confined to only the "Dev Portal" site collection.


10. You can repeat the same steps for "Finance Portal" site collection with the exception of Step 5.

Hope this posting helped you understand the concepts of Search Scopes and how to utilize them to confine search results to specific site collections.