Creation of site and basic customization

  • How can I create my first site in SharePoint?
  • What is Quick Launch menu?
  • We have heard that we can customize SharePoint sites how do we do that?
  • We have heard it has ready made functional modules for collaboration?
  • How can we enable these reusable components in my site?
  • How can we display a simple custom page in SharePoint?
  • The above page does not look like a standard SharePoint page?
  • Above code is completely inline, how can we implement behind code in SharePoint?
  • What is the concept of features in SharePoint?
  • Can you explain the broader steps for deploying / activating a feature?
  • I want that the feature should be only displayed to admin?

How can I create my first site in SharePoint?

When you want to create any site in SharePoint we need to prepare a site collection and define site inside the site collection. Ok, that’s a simple four step procedure and can be easily achieved by using the SharePoint central administration.

Step 1:- Click on start and you should find the SharePoint central administration menu.

Step 2:- Once you click on the central administration menu you need to click on the ‘application management’ tab and then click ‘Create site collection’.

Step 3:- Once you click ‘Create site collection’ you should see a form which needs all necessary details to create a site. All details are almost self-understandable. We have just stressed on three points one is the site name, the other is a template and the last is the username in which SharePoint will run. All sites in SharePoint need to be inherited from some master they can not stand on their own.

Step 4:- Once you have clicked ‘Ok’ you can now run the URL with your SharePoint name you should see something as shown below. As we have created from a blank site currently we do not have anything. Below is how a blank site looks like.

What is Quick Launch menu?

Below figure shows what is the quick launch menu. In this question we just wanted to make sure you know the terminology and where it maps to. In the further section we will be using this terminology for the left hand menu shown in the figure below.

We have heard that we can customize SharePoint sites how do we do that?

We will continue with the same example of our blank site which we discussed previously. On the left hand side corner you will see a site actions menu. So click on the site action menu and click on site settings menu link. Once you click on the link you will be popped with different settings by which you can do customization. We will not discuss right now what every setting is, but in the later section we will understand some important settings by which we can achieve customization.

To increase your confidence you can play around with the ‘Look and feel’ settings. But this will be the landing page when we want to implement customization in SharePoint.

We have heard it has ready made functional modules for collaboration?

Oh, yes you have heard it loud, right and clear. The best part about SharePoint is collaboration. Collaboration has four major entities people, task, data and communication.

So below are some key points of enterprise:-
• We have people in our organizations.
• People are assigned task.
• To complete task we need to exchange data.
• We also need to plan/monitor tasks.
• To communicate data we need a communication channel like email, WIKI etc.

SharePoint has lot of ready made function which can help us to accommodate all the requirements of collaboration. To see those ready made functionalities click on site actions and click on create. You will be popped with a list of reusable functionality page which you can pick up and achieve collaboration.

Now let’s map the ready made functionalities with collaboration requirements.

Ready made functionalities in SharePoint

People Contacts You can get this section in the communication section of the create page. It creates page which can help us to maintain contact information about people.
Task Tasks You can get this in the tracking section of the create page. It helps us to track task which your team member needs to complete.
Data Document library Its helps to share, edit and version documents.
Picture Library Helps to share picture documents
Translation management Helps to create document in multilingual languages.
Data connection library It helps to share files that contain information about external data.
Monitoring  Project task You can get this in the tracking section of the create page. It gives a Gantt chart view of tasks.
Issue tracking You can get this reusable functionality in the tracking section of create page. Its helps to manage / assign and prioritize issues from start to finish.
Calendar Helps to create calendar for deadlines and events
Communication  WIKI Helps to create interconnected system like WIKI.
Announcement Helps to share news and status through announcements.
Discussion board Helps to create discussion board like the news group.

How can we enable these reusable components in my site?

Ok, now that we are familiar with the reusable components and how they map to the collaboration requirements. Its time add one reusable functionality in your website. We will add a link inside the documents menu called as ‘SharePoint tutorial’. In this section team can upload tutorials for SharePoint in word document format. It’s a simple three step process so let’s understand the same step by step.

Step 1:- Click on the site actions and click on create link from the menu. You will be displayed reusable functionalities provided by SharePoint. Select ‘Document library’ from the libraries section.

Step 2 :- Give the link name as ‘SharePoint tutorial’ and select document types to be unloaded as word format. For this you need to select the document template to be of type ‘Microsoft word’.

Step 3:- Bravo! You can now see the SharePoint tutorial link and you can click on upload to push in a word document inside this library collection.

You can see from the figure below how we have uploaded a word document i.e. “SharePoint tutorial”. You can right click and experiment with more functionalities like check out , versioning , workflow , send alerts when document is modified etc etc.

Note: – You can try adding other functionalities like WIKI, announcement board, picture library and lot more. So feel free to experiment and see how you can easily leverage the reusable functionalities to meet the collaboration requirements.

How can we display a simple custom page in SharePoint?

Ok first thing there is no concept of simple page in SharePoint. There are two types of pages in SharePoint as we discussed in the previous article one is an Application page and the other is the site page.

Application page is a generic page while site pages are custom to a website. To just cool you off lets display a simple Application page first.

Some points to be noted about Application pages:-
• They are pages which are shared across sites like ‘settings.aspx’ , which will helps us set generic properties across sites in a site collection.
• The second important part is that we need to save application pages in ‘C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS’ folder. If you browse to the folder you will find SharePoint’s own application pages.

Ok, what we will do is that to build confidence let’s make a simple page called as ‘SimplePage.aspx’. We are not doing anything great in this we will just write this simple sentence inside the page.

<b> Ohhhh I never Knew SharePoint is so easy </b>

Once you have saved the page just browse to the IIS application and browse to the _layouts folder as shown in the figure below. If you open the page in browser you should see your display message.

Note: – For the next question you need to understand the concept of master pages. If you have not please read it once. Consistent look and feel is one of the most important factor in enterprise portal and SharePoint achieves the same using Master pages.

The above page does not look like a standard SharePoint page?

In order to get the SharePoint look and feel we need to inherit from a SharePoint master page. As a rule you should always inherit from a SharePoint master page so that your sites have a consistent look and feel. So let’s modify our ‘SimplePage.aspx’. To get the SharePoint style we need to inherit from the SharePoint master page ‘Application.Master’.

We have now tailored the ‘simplepage.aspx’ source code as shown below. We need to do the following:-

• First refer the assembly using the ‘Assembly directive.
• Refer the masterpage files as ‘Application.master’.
• Import the sharepoint namespace. If we had used the behind code we would have imported this in the behind code itself.
• There are three placeholder one for title , one for centre area and one for the page title. We need to define the placeholders in the child page.

<!— First refer the assembly using the Assembly directive ->
<%@ Assembly Name=”Microsoft.SharePoint,Version=, Culture=neutral,PublicKeyToken=71e9bce111e9429c” %>
<!— Refer the master page from the _layouts directory ->
<%@ Page Language=”C#” MasterPageFile=”~/_layouts/application.master”
Inherits=”Microsoft.SharePoint.WebControls.LayoutsPageBase” %><!—Import the sharepoint namespace ->
<%@ Import Namespace=”Microsoft.SharePoint” %><!—This is the content holder for page title ->
<asp:Content ID=”Content3″ ContentPlaceHolderId=”PlaceHolderPageTitle” runat=”server”>
Let’s learn SharePoint….
</asp:Content><!- This is the place holder for data for main page area ->
<asp:Content ID=”Content1″ ContentPlaceHolderId=”PlaceHolderMain” runat=”server”>
Oh its Damn Simple…..
</asp:Content><!- This is the placeholder for page title area ->
<asp:Content ID=”Content2″ ContentPlaceHolderId=”PlaceHolderPageTitleInTitleArea” runat=”server”>
SharePoint is Simple…..

LOL !…Your SharePoint page now looks like a page.

You can get the source of the simple inline ASPX file attached at the end of the article.

Above code is completely inline, how can we implement behind code in SharePoint?

Some couple of points we need to take care regarding implementing behind code in ASP.NET are the following:-

• The first and foremost requirement is that behind code should be registered in to the GAC assembly. In other words we need to code the behind code in a separate assembly / namespace and then compile the same in a DLL. Later we need to register the DLL in GAC.
• Second we need to use the assembly directive to refer the behind code.

Step 1:- So the first step is to make two solution files one is the behind code which goes in separate assembly ‘ClassLibrary1’ namespace and the other is the ASP.NET web project which has the ‘SimplePageCodeBehind.aspx’. We also need to register this DLL in a GAC. So you need to generate a strong name give to the assembly and register the same using the ‘GACUTIL’ provided by the .NET framework.

Step 2:- The behind code is in a separate assembly as need to register the same in the GAC. We have kept the behind code simple. We have create two label objects and set the value. One of the important points to be noted is that we have referenced the ‘System.Web.UI’ namespace DLL and ‘Microsoft.SharePoint’ namespace DLL. The other point to be noted is that the class inherits from ‘LayoutsPageBase’ class which belongs to ‘Microsoft.SharePoint’ namespace.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
// need to refer the UI objects of ASP.NET
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;// Need to refer the SharePoint DLL
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace ClassLibrary1
{// Inherit the behind code from ‘LayoutsPageBase’ class of SharePointpublic partial class _Default : LayoutsPageBase
{protected Label lblSiteQuestion;
protected Label lblSiteAnswer;protected override void OnLoad(EventArgs e)
lblSiteQuestion.Text = ” How can we implement behind code in SharePoint ?”;
lblSiteAnswer.Text = ” We need to register the behind DLL in GAC”;

We need to also register the above DLL in GAC. So we need to generate a strong name and register the same using GACUTIL.

Step 3:- Now comes the UI part of the ASP.NET i.e. the ASPX page. Below is the code snippet which shows how the ASP.NET UI looks like.

The first thing to note is that behind code is not referred as code behind but is referred using the GAC public token key. In order to refer it using GAC key we need to use the ‘Assembly’ attribute for the same.

We have also inherited from the master page file i.e. ‘Application.Master’ so that we have a consistent look and feel.

<!—Refer the sharepoint assembly -><%@ Assembly Name=”Microsoft.SharePoint,Version=, Culture=neutral,PublicKeyToken=71e9bce111e9429c” %><!—Refer the behind code, Note that the behind code is coded in a different assembly and registered in the GAC -> <%@ Assembly Name=”ClassLibrary1, Version=, Culture=neutral,PublicKeyToken=af6d081bf267e17e” %><!— In order to maintain consistent look and feel we need to inherit from the Application.Master page -><%@ Page Language=”C#” MasterPageFile=”~/_layouts/application.master” Inherits=”ClassLibrary1._Default” EnableViewState=”false” EnableViewStateMac=”false” %>

Once we have referred the Assembly and set the Page attributes. Its time to fill the content in the placeholders defined in the master page ‘Application.Master’.

<asp:Content ID=”Main” contentplaceholderid=”PlaceHolderMain” runat=”server”>
<table border=”1″ cellpadding=”4″ cellspacing=”0″ style=”font-size:12″>
<td><b><asp:Label ID=”lblSiteQuestion” runat=”server” /></b></td>
<td><asp:Label ID=”lblSiteAnswer” runat=”server” /></td>
<asp:Content ID=”PageTitle” runat=”server”
contentplaceholderid=”PlaceHolderPageTitle” >
SharePoint Behind code implementation
</asp:Content><asp:Content ID=”PageTitleInTitleArea” runat=”server”
contentplaceholderid=”PlaceHolderPageTitleInTitleArea” >
When we want to implement behind code we need to register the same in GAC.
Note: – Do not try to compile the project in VS.NET IDE. You can only compile the class assembly. The ASPX file you need to later paste it to the ‘_layout’ directory i.e. ‘C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS’.

Once you have copied the ASPX file and registered the behind code assembly in GAC, you can run and enjoy how it looks like.

If you are thinking that behind code pages implementation is lot of pain in SharePoint. Hang on as we move ahead you will see better way of implementation. Second we can not rule out the benefits as compared to the pain incurred in implementing behind code pages in ASP.NET.

What is the concept of features in SharePoint?

Whenever we think about SharePoint think in terms of collaboration. One of the much needed features in collaboration is on-demand functionality / feature activation. Feature makes it easier to activate and deactivate functionality in SharePoint.

Some points which you should note about features:-

• All features needs to be copied in “C:\Program Files\Common Files\Microsoft Shared\Web server extensions\12\Template\FEATURES\” directory. Microsoft Share reads the features from this directory. If you open the directory you can find pre-installed features by Share Point as shown below.

• Every feature will have two XML files one is the ‘Feature.xml’ and the other is ‘ElementManifest.xml’.

• Share point understands there is a feature by reading the feature XML file from the features folder.
• All features are identified by a unique GUID number.
• Features emit events which can be captured to write custom code. These events are captured in assembly which needs to be registered in a GAC.
• Summarizing what we discussed we have a ‘feature.xml’ which points to an assembly which captures the feature events for custom code. It also other XML file which defines what exactly this feature will do.

Can you explain the broader steps for deploying / activating a feature?

In order to understand the feature concepts lets deploy the simple application page i.e. ‘SimplePageCodeBehind.aspx’ as feature. So when the user activates this feature he will be able to browse the ‘SimplePageCodeBehind.aspx’.

Step 1:- Let’s create a project ‘SharePointFeature’. You can find the source code of the same attached with this article. So below is the project tree which has the two XML files and a class file which will process the four events i.e. ‘FeatureInstalled’,’FeaturesUnInstalling’ , ‘FeatureActivated’ and ‘FeatureDeactivating’.

Let’s understand these three files first.
Feature.XML :- This is the most important file because it helps SharePoint identify the feature. All features in SharePoint are identified by the GUID key.

<Feature Id=”48DEF2C4-33F9-4885-B0DE-6FE82E9FDCD8″
Title=”Go to Custom Pages”
Description=”This features enables us to goto Custom Page”
ReceiverAssembly=”SharePointFeature, Version=, Culture=neutral, PublicKeyToken=af83741e324f585c”
xmlns=”; >
<ElementManifest Location=”ElementManifest.xml” />

To generate a new GUID click on Tools à Create GUID and click ‘New GUID’. Tools menu you will get from within the IDE. We have marked the GUID value which you need to copy and paste in the ‘feature.xml ‘file.

Other than feature description and title there are two important things in the XML file. The first it points towards some other XML file and second it points to an assembly which captures events.

ElementManifest.XML file :- ElementManifest.xml file actually specifies how the implementation will look like. There are two important points to be noted for the ElementManiFest.XML file. The custom action tag specifies on which control the feature will be activated. The control we are targeting at this moment is the ‘SiteActionsToolBar’. This tool bar is the one which you see on the right hand side corner of your SharePoint portal. There is also a URLaction property which specifies which URL it redirect to.

<Elements xmlns=””&gt;
Title=”Display Custom Pages”
Description=”This links helps to display Custom Page”
<UrlAction Url=”_layouts/SimplePageCodeBehind.aspx”/>

In other words ‘ElementManifest.xml’ specifies the location of the feature and which page it should redirect to.

FeatureReceiver.cs :- This class listens and implements custom actions of the feature.

We need to first refer the share point namespace as shown in the below code snippet.

using System;
using System.Collections.Generic;
using System.Text;
// Refer the SharePoint namespace
using Microsoft.SharePoint;

We need to implement the ‘SPFeatureReceiver’ class and implement all the events.

namespace SharePointFeature
// Inherit from the ‘SPFeatureReceiver” class
public class clsFeatureReceiver : SPFeatureReceiver
// Implement the four events of SPFeatureReceiver class
public override void FeatureInstalled(SPFeatureReceiverProperties properties){}
public override void FeatureUninstalling(SPFeatureReceiverProperties properties) { }
// This event fires when the feature is activated
public override void FeatureActivated(SPFeatureReceiverProperties properties)
// This event fires when the feature is deactivated
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)


As a sample in the ‘FeatureActivated’ event we have set the description and title of the website.

public override void FeatureActivated(SPFeatureReceiverProperties properties)
// get the object of SharePoint Web
SPWeb site = (SPWeb)properties.Feature.Parent;
// Set the description ,properties , titile and update the SpWeb object
site.Description = “Click on the SiteActions to See how the custom page display”;
site.Properties[“OriginalTitle”] = “Display CustomPage”;
site.Title = “This Site now has the custom page display”;

In ‘FeatureDeactivating’ we have reverted back the title and description.

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
// Get hold of the SharePoint web object and reset back the values
SPWeb site = (SPWeb)properties.Feature.Parent;
site.Description = “Custom Page display is disabled”;
site.Title = site.Properties[“OriginalTitle”];

Step 2 :- We need to register the compiled assembly in GAC and provide the token value in the ‘Feature.XML’ file. You need to use GACUTIL to register. You can get the token by browsing to ‘c:\Windows\Assembly’ and then viewing the properties of the assembly.

Step 3:- Copy the two XML file i.e. ‘Feature.xml’ and ‘ElementManisfest.xml’ in the ‘C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\DisplayCustomPage’ directory.

Step 4:- Now we need to install the feature using STSADM.exe. So go to dos prompt à and go to ‘C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN’ directory.

>cd C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN

To install the feature run the below command using ‘STSADM’. Please note that you need to specify the relative directory path and not the physical path of ‘Feature.xml’ file.

>stsadm -o installfeature -filename DisplayCustomPage\Feature.xml

To ensure that SharePoint registers about this feature run IISRESET on the machine.

Step 5:- Now click on the Site Action à Site Settings à Site Features and Activate the feature.

Now you can see your feature enabled in the site actions menu. If you click on the feature i.e ‘Display Custom Pages’ it will redirect you to ‘SimplePageCodeBehind.aspx’.

The other point to be noted is that the events have fired and set the title and description as described in the code.

Try to experiment and deactivate the feature and you will see the title and description changing.

Note: – You can get the source for the feature in the ZIP file provided with the article

I want that the feature should be only displayed to admin?

If you want only administrators to view the features set RequireSiteAdministrator=”True” as shown in the below ‘ElementManifest.XML’ file.

<Elements xmlns=””&gt;
Title=”Display Custom Pages”
Description=”This links helps to display Custom Page”
<UrlAction Url=”_layouts/SimplePageCodeBehind.aspx”/>

Top 10 SharePoint Server 2010 features

    • Access Services & Visio Services

Building on the successful Excel Services pattern, SPS 2010 allows users to publish Access and Visio applications to SharePoint which other users can access through their browsers. As can be expected, Access and Visio Services will be somewhat limited in functionality(when compared to their respective desktop versions), but on the flip side, the customers would benefit from the server-side capabilities such as scalability, one centralized version of the document (rendered in a browser friendly format), access to multiple users and security control.

Access Services will allow customers to publish their Access 2010 applications to SharePoint. For example, consider a departmental application such as a travel planner built using Access. Using Access Services it will be possible to bring such an application to Sharepoint, thereby reducing the total cost of ownership through one common user experience, development and deployment strategy.

Similarly, Visio Services will allow customers to render Visio diagrams within the browser. An application of Visio Services would be a visualization of a SharePoint workflow that is rendered inside a browser as a Visio flowchart. Note that no client-side Visio software would be needed in this scenario.

    • Business Connectivity Services (BCS)

In MOSS 2007, Business Data Connector (BDC) was the tool of choice for integrating external data sources  into Sharepoint. BDC was available only to customers who purchased the enterprise version of MOSS 2007. Furthermore, BDC was limited to only reading data from the external data sources. Busincess Connectivity Services (BCS), which replaces the BDC functionality in SPS 2010, goes much further. Not only is BCS going to be available with the free, base version of SPS 2010 (renamed to Windows SharePoint Foundation from Windows SharePoint Services), it now supports updating, deletion and insertion of data into an external data source.  Another key advantage of BCS is that it will enable SharePoint Lists to be created directly based on a database table.

    • Developer Productivity Enhancements

First and foremost and unlike previous versions, it will now be possible to conduct SharePoint development on a client OS such as Windows 7. In earlier versions SharePoint development had to be undertaken on a server OS. This inevitably created overhead as the development had to be undertaken in a virtualized environment. Secondly, developer enhancements go beyond the support for client operating systems. Developers can now utilize familiar .NET patterns and practices such as LINQ (Language Integrated Query) to query data from a SharePoint List, XSLT for customizing a SharePoint list and Silverlight for creating richer visualizations. There are also a number of enhancements to the SharePoint programming model that offer greater flexibility in extending the out-of-the-box SharePoint behavior.  For example, SharePoint developers commonly extend the SharePoint behavior using small segments of code commonly referred to as event handlers. A common issue with event handlers in MOSS 2007 is that the event handler is not finished executing before the control is returned back to the user. This can lead to a confusing behavior for the users. SPS 2010 seeks to alleviate this by introducing “After-Synchronous” events which are guaranteed to complete execution before the control is returned to the user.

Finally, Visual Studio 2010 contains extended capabilities for developers to create rich applications on the SPS 2010 platform. Many improvements have also been made in Visual Studio 2010 to increase developer productivity as well as take advantage of SPS 2010 functionality. These improvements help make it easier for .NET developers to create and deploy SharePoint solutions.

    • SharePoint Designer Enhancements

SharePoint Designer is a tool targeted towards business users and designers who have used it to quickly and easily perform actions such as customizing lists, changing layouts and creating simple workflows. The one area of improvement often requested is the ability to package and reuse the changes made using SharePoint Designer.  Fortunately, SharePoint Designer 2010 not only addresses this request, it also comes with major improvements with regard to designing workflows, editing SharePoint pages and setting up BCS ( discussed above). SharePoint administrators also have greater control over how SharePoint Designer 2010 is used within their environment. For instance, administrators can block the ability to perform certain actions such as modifying certain SharePoint pages and restricting access to certain areas with the Sharepoint setup.

One other key feature provided by SharePoint Designer 2010 is the improved interaction between the business users and the IT department. Since SharePoint Designer 2010 uses the same packing and deployment format (commonly referred to as WSP solution package) as the rest of the SharePoint platform, it is now possible to take the work done by a business user within the SharePoint Designer 2010 and import it within Visual Studio 2010. This will allow the IT department to build upon and extend the work done by the business users.

    • Business Intelligence Enhancements

Business Intelligence is another area with significant improvements. To begin, there are a number of scalability improvements to the desktop version of Excel 2010, including the support for the numbers of rows within a workbook that goes far beyond the 64K limit in the current version. The new version of Excel effectively utilizes enhancements in the OS such as the 64-bit support for access to large memory pools and enhancement in hardware such as the multi-core computers.

Microsoft has made a strategic decision to leverage Excel as the primary BI analyst tool. As part of the self-service BI initiative, Excel users can import large amounts of data from various data sources and quickly generate pivot tables. Once the data is imported into Excel 2010, using a feature called “Slicers”, users will be able to easily filter the data. In other words, Excel users can extract, transform and load (ETL) data from multiple sources directly into Excel without requiring IT to build a formal data import setup. The pivot table generated from imported data can later be shared with other users by publishing it to SharePoint 2010. Under the covers, the publishing process creates an SQL Server Analysis Services instance that can be monitored by IT, using tools such as usage dashboard and resource quota.

Excel Services, the server-side Excel functionality provided by SharePoint Server, has seen a number of improvements as well. First off, it directly benefits from the scalability improvements to the underlying calculation engine mentioned earlier. Secondly, it enables additional programmability enhancements. For example it, using a JavScript based program, it will be possible

  • In-Place Records Management

Records management relates to the process of marking a document as a record or “laminating” them for legal and compliance reasons. A records repository is a library of such records. SPS 2010 dramatically improves upon the capabilities for managing records by extending where and how the records are managed. Unlike MOSS 2007, SPS 2010 will support multiple records repositories within a single SharePoint installation.. This means that users can route records to multiple record repositories. Records managers can also define routing rules to aid in the classification of records. Records repositories now also support the use of hierarchical structures (commonly referred to as File Plan) for storing records in a manner that matches the customer’s organizational hierarchy.

SharePoint 2010 also provides the flexibility for defining and applying retention rules. For instance, it is now possible to apply a recurring retention rule that specifies several stages of  record retention. This will be very helpful when a records manager wants to specify a retention rule such as “Maintain this document for three years after project completion then transfer it to the archive for the next five years”.

In addition to using a records repository, SPS 2010 has the ability to declare records in-place, i.e., allow any document inside a document library to be marked as a record without the need to explicitly move it to a records repository. The new in-place record management capability exemplifies Microsoft’s mantra of “compliance everywhere”

    • Enhancements related to Large List Handling

Microsoft has placed a lot of emphasis on performance of lists with large numbers of items in them. This has resulted in the addition of the new SPS 2010 features known as : Query Throttling, Batch Query Support, Remote Blob Storage, and External Lists.

Query Throttling allows IT administrators to limit -or “throttle” – queries that are executed against large lists from consuming too many resources. For example, SharePoint will now block queries that will return more than 5000 rows by default – and this is of course, a configurable setting.  Rather than iterating over each item, SharePoint also includes the capability to process multiple items in a list simultaneously, as a single batch operation.  If there is content that is more suitable for storage outside SharePoint (for instance large media files), the Remote Blob Storage feature will provide a mechanism to store it on file shares (SANS, NAS, RAID arrays, File Servers).

Finally, External Lists is another mechanism by which large lists can be incorporated in SharePoint. As stated earlier, database-backed lists that are a part of BCS allow content to be stored in separate data stores – such as SQL Server – outside of the Content Database. The benefit of course is that this feature allows for providing supporting large lists without burdening the SharePoint 2010 content database.

    • Workflow Improvements

Workflow is a very useful feature of SharePoint 2007. In addition to the out-of-the box workflows that were included with SharePoint 2007, it is possible to use the SharePoint designer to build declarative (no-code) workflows. For more advanced scenarios, developers created custom workflows in Visual Studio. Two of the main challenges in building workflows with SharePoint 2007 relate to the limitations in SharePoint Designer 2007 and the workflow host that is part of SharePoint 2007. While SharePoint Designer allows business users to develop simple workflows, it requires a direct connection to the site for which the workflow is being developed, thus limiting the ability to reuse the workflow in different locations. Furthermore, there is no easy way to leverage code components developed by IT. The workflow host within SharePoint 2007 comes pre-configured with a set of services such as persistence, eventing and tracing. There is no way to add custom services to the runtime host. For instance, there is no direct way to allow SharePoint-based workflows to interact with events other than the list item events.

SharePoint 2010 alleviates these challenges by allowing the workflows created using SharePoint Designer to be saved as templates for reuse. SharePoint Designer 2010 has also been enhanced significantly to allow business users to leverage tools such as Visio for workflow modeling and visualization. Another major improvement is the ability to modify out-of-the-box SharePoint workflows (e.g. approval workflow, three-state workflow).

The workflow host within SharePoint 2010 now provides the extensibility option to inject custom services. It is also now possible to kickoff workflows without explicitly associating it to a list item.

Finally, and from an overall scalability perspective, it is also going to be possible to designate application server nodes as workflow participants. In other words, unlike SharePoint 2007 where each application server node participated in executing the workflows, there will be a way to throttle the workflow execution to a limited set of machines. This allows isolation of services within the farm so system administrators can better manage resources and troubleshoot issues.

    • Social Networking Capabilities

One can debate the impact and applicability of social networking tools such as Facebook in the workplace, but there is no doubt that information workers today are demanding similar capabilities from the tools they use inside the workplace. This is why the SPS 2010 enhancements in this arena are so noteworthy. In SPS 2010, just about every element such as sites, documents, videos, blog posts are taggable. There is out-of-the-box support for navigating the tag clouds and lists. Users will be able to rate artifacts and recommend it to others. Co-workers can keep up with the latest by tracking the activity data available as a new feed. Individual users will be able to setup profiles, write to a common or personal board, indicate their presence/location and be able to take advantage of micro-blogging capabilities.

    • Deployment Advancements

Unlike the previous versions, SPS 2010 uses a solution package-based single, consistent scheme for packaging and deploying any customizations. The solution package is a compressed file containing all of the necessary components such as features, web parts, list definitions, assemblies, customized ASPX pages and workflows. Additionally, the previous versions required an extensive amount of manual modification of XML files. In SharePoint 2010, these modifications can be done through point and click configuration with SharePoint Designer 2010.

SharePoint 2010 also introduces a notion of sandbox solution packages that are designed to improve security and manageability. Sandbox solution packages restrict the scope to which a customization can be applied (For example, restricting the scope for a list customization to site collection). Sandbox solutions are also restricted to a subset of SharePoint programmability options. Finally, administrators can enforce quote limits on resources consumed by sandbox solutions to prevent abuse.