<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Nik Patel&#039;s SharePoint World</title>
	<atom:link href="http://nikspatel.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nikspatel.wordpress.com</link>
	<description>An adventure in SharePoint and Microsoft in general.</description>
	<lastBuildDate>Fri, 27 Jan 2012 05:31:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nikspatel.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Nik Patel&#039;s SharePoint World</title>
		<link>http://nikspatel.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nikspatel.wordpress.com/osd.xml" title="Nik Patel&#039;s SharePoint World" />
	<atom:link rel='hub' href='http://nikspatel.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Best Practices to Change App Pool Account for SharePoint Web Application</title>
		<link>http://nikspatel.wordpress.com/2012/01/25/best-practices-to-change-app-pool-account-for-sharepoint-web-applcation/</link>
		<comments>http://nikspatel.wordpress.com/2012/01/25/best-practices-to-change-app-pool-account-for-sharepoint-web-applcation/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 04:21:56 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[Admin General]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1479</guid>
		<description><![CDATA[Updating SharePoint Web Application Pool is one of the most common actions for SharePoint administration. I have repeatedly seen many SharePoint administrators and my fellow colleagues updating their SharePoint web application pool in the IIS and later realizing that their SharePoint content application is inaccessible and throws &#8220;Cannot connect to the configuration database&#8221; error. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1479&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Updating SharePoint Web Application Pool is one of the most common actions for SharePoint administration. I have repeatedly seen many SharePoint administrators and my fellow colleagues updating their SharePoint web application pool in the IIS and later realizing that their SharePoint content application is inaccessible and throws &#8220;Cannot connect to the configuration database&#8221; error.</p>
<p><a href="http://nikspatel.files.wordpress.com/2012/01/1-wrong-apppool-configuration-error.gif"><img class="alignnone size-full wp-image-1490" title="1-Wrong AppPool Configuration Error" src="http://nikspatel.files.wordpress.com/2012/01/1-wrong-apppool-configuration-error.gif" alt="" width="616" height="301" /></a></p>
<p>The real reason behind this is when you create web application either through PowerShell or central admin, SharePoint configures application pool information at many different locations including machine level permissions, IIS, and database permissions. If you ever want to manually change the application pool, you must be aware of what really happens under the hood and visit all the different locations to change application pool manually. As you may think, manually changing all these machine level settings is tedious, error-prone, and requires better option. Luckily Microsoft has provided better option as manage service accounts page on the central administration site. It is best practice to change content web application pool or even service web application pool from the central administration to ensure SharePoint Content Web application runs smoothly.</p>
<p>You can use following step by step guide to change application pool for the given SharePoint web application. Additionally, it would walk you through what really happens under the hood and where SharePoint makes necessary changes to ensure Application Pool is configured properly.</p>
<p><strong>Pre-requisites</strong></p>
<ul>
<li>New AppPool account must be Domain User Account (e.g. Niks\SPAppPool)</li>
<li>New AppPool account must register as SharePoint Managed Account</li>
</ul>
<p><a href="http://nikspatel.files.wordpress.com/2012/01/2-managed-account-for-apppool.gif"><img class="alignnone size-full wp-image-1489" title="2-Managed Account for AppPool" src="http://nikspatel.files.wordpress.com/2012/01/2-managed-account-for-apppool.gif" alt="" width="967" height="460" /></a></p>
<p><strong>Changing Application Pool from the Central Administration</strong></p>
<p>Visit Manage Service Accounts page on the central administration to change the application pool.</p>
<p><a href="http://nikspatel.files.wordpress.com/2012/01/3-updating-sharepoint-web-apppool.gif"><img class="alignnone size-full wp-image-1488" title="3-Updating SharePoint Web AppPool" src="http://nikspatel.files.wordpress.com/2012/01/3-updating-sharepoint-web-apppool.gif" alt="" width="967" height="599" /></a></p>
<p>Run the IISReset after updating application pool to ensure all the configuration settings has been updated to access SharePoint Web Application correctly.</p>
<p><a href="http://nikspatel.files.wordpress.com/2012/01/4-run-iisreset.gif"><img class="alignnone size-full wp-image-1487" title="4-Run IISReset" src="http://nikspatel.files.wordpress.com/2012/01/4-run-iisreset.gif" alt="" width="417" height="222" /></a></p>
<p><strong>What really happens under the hood?</strong></p>
<p>After you change the application pool through central administration, SharePoint automates various configuration settings changes at the machine level, IIS, and SQL Server.</p>
<ul>
<li>SharePoint Web Application App Pool in IIS</li>
</ul>
<p style="padding-left:30px;">   <a href="http://nikspatel.files.wordpress.com/2012/01/5-iis-apppool-setting.gif"><img title="5-IIS AppPool Setting" src="http://nikspatel.files.wordpress.com/2012/01/5-iis-apppool-setting.gif?w=1024&#038;h=477" alt="" width="1024" height="477" /></a></p>
<ul>
<li>Machine-level Permissions
<ul>
<li>New AppPool account added as Member in the WSS_WPG, AD Group</li>
<li>New AppPool account added as Member in the built-in IIS_IUSRS, AD Group</li>
</ul>
</li>
</ul>
<p style="padding-left:30px;">                <a href="http://nikspatel.files.wordpress.com/2012/01/6-spapppool-membership.gif"><img title="6-SpAppPool Membership" src="http://nikspatel.files.wordpress.com/2012/01/6-spapppool-membership.gif?w=424&#038;h=531" alt="" width="424" height="531" /></a></p>
<ul>
<li>SQL Server and database permissions
<ul>
<li>SharePoint will create new SQL Server Login for AppPool Account in the Database if it doesn&#8217;t exists</li>
<li>New AppPool account is assigned to the db_owner role for the Web application content databases.</li>
</ul>
<p><a href="http://nikspatel.files.wordpress.com/2012/01/7-wss_content-spapppool.gif"><img title="7-WSS_Content SPAppPool" src="http://nikspatel.files.wordpress.com/2012/01/7-wss_content-spapppool.gif?w=704&#038;h=632" alt="" width="704" height="632" /></a></p>
<ul>
<li>New AppPool account is assigned to the WSS_CONTENT_APPLICATION_POOLS role associated with the farm configuration database.</li>
</ul>
<p><a href="http://nikspatel.files.wordpress.com/2012/01/8-farm-config-db-spapppool.gif"><img title="8-Farm Config DB SPAppPool" src="http://nikspatel.files.wordpress.com/2012/01/8-farm-config-db-spapppool.gif?w=704&#038;h=632" alt="" width="704" height="632" /></a></p>
<ul>
<li>New AppPool account is assigned to the WSS_CONTENT_APPLICATION_POOLS role associated with the SharePoint_Admin content database.</li>
</ul>
<p><a href="http://nikspatel.files.wordpress.com/2012/01/9-central-admin-db-spapppool.gif"><img title="9-Central Admin DB SPAppPool" src="http://nikspatel.files.wordpress.com/2012/01/9-central-admin-db-spapppool.gif?w=704&#038;h=632" alt="" width="704" height="632" /></a></p>
<ul>
<li>New AppPool account is assigned to the WSS_CONTENT_APPLICATION_POOLS role associated with the StateService database.</li>
</ul>
<p><a href="http://nikspatel.files.wordpress.com/2012/01/10-state-service-db-spapppool.gif"><img title="10-State Service DB SPAppPool" src="http://nikspatel.files.wordpress.com/2012/01/10-state-service-db-spapppool.gif?w=704&#038;h=632" alt="" width="704" height="632" /></a></p>
<ul>
<li>New AppPool account will be assigned to the db_owner role for the associated user profile service application databases (e.g. Profile DB, Social DB, and Sync DB)</li>
</ul>
</li>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2012/01/11-user-profile-dbs-spapppool.gif"><img title="11-User Profile DBs SPAppPool" src="http://nikspatel.files.wordpress.com/2012/01/11-user-profile-dbs-spapppool.gif?w=704&#038;h=632" alt="" width="704" height="632" /></a></p>
<p style="padding-left:30px;">There you go. Hopefully this will help. !!!!!</p>
<p style="padding-left:30px;">
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/administration/admin-general/'>Admin General</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1479/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1479&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2012/01/25/best-practices-to-change-app-pool-account-for-sharepoint-web-applcation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/1-wrong-apppool-configuration-error.gif" medium="image">
			<media:title type="html">1-Wrong AppPool Configuration Error</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/2-managed-account-for-apppool.gif" medium="image">
			<media:title type="html">2-Managed Account for AppPool</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/3-updating-sharepoint-web-apppool.gif" medium="image">
			<media:title type="html">3-Updating SharePoint Web AppPool</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/4-run-iisreset.gif" medium="image">
			<media:title type="html">4-Run IISReset</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/5-iis-apppool-setting.gif" medium="image">
			<media:title type="html">5-IIS AppPool Setting</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/6-spapppool-membership.gif" medium="image">
			<media:title type="html">6-SpAppPool Membership</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/7-wss_content-spapppool.gif" medium="image">
			<media:title type="html">7-WSS_Content SPAppPool</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/8-farm-config-db-spapppool.gif" medium="image">
			<media:title type="html">8-Farm Config DB SPAppPool</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/9-central-admin-db-spapppool.gif" medium="image">
			<media:title type="html">9-Central Admin DB SPAppPool</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/10-state-service-db-spapppool.gif" medium="image">
			<media:title type="html">10-State Service DB SPAppPool</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2012/01/11-user-profile-dbs-spapppool.gif" medium="image">
			<media:title type="html">11-User Profile DBs SPAppPool</media:title>
		</media:content>
	</item>
		<item>
		<title>Custom SharePoint Pages &#8211; Site Pages vs Application Pages</title>
		<link>http://nikspatel.wordpress.com/2012/01/20/custom-sharepoint-pages-site-pages-vs-application-pages/</link>
		<comments>http://nikspatel.wordpress.com/2012/01/20/custom-sharepoint-pages-site-pages-vs-application-pages/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 04:12:59 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[Dev General]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1464</guid>
		<description><![CDATA[Although I have been building custom applications on SharePoint Platform since MOSS 2007 days, when it comes to making decision on whether to use application page or site page features for specific scenario, I typically have to go through basics and try to weight pros and cons of each characteristics especially on coding complexity, runtime [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1464&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Although I have been building custom applications on SharePoint Platform since MOSS 2007 days, when it comes to making decision on whether to use application page or site page features for specific scenario, I typically have to go through basics and try to weight pros and cons of each characteristics especially on coding complexity, runtime performance, future upgrade maintenance, deployment and retraction.</p>
<p>In past, I have time and time again relied on the Ted Pattison&#8217;s Chapter 2 and Chapter 3 of “Inside Microsoft Windows SharePoint Services 3.0” for decision making process on application vs. site pages. Typically it required me to go through both chapters and perform additional home work to review every aspect of application vs. site pages functionality. As you may understand, it has been tiring process. Over the time, I end up building my own list of major differences between site pages and application pages to help me making decision faster if it&#8217;s needed.</p>
<p>Generally my rule of thumb is to go for custom application pages for administrative tasks like maintenance or system pages and go for custom site pages for end-user business functionalities to promote end-user customizations if needed. Here are major characteristics and differences between site pages and application pages categorized by major areas of architectural decisions.</p>
<ul>
<li>Characteristics
<ul>
<li>An Application page is an ASP.NET content page hosted in the LAYOUTs directory on the WFEs and inherits from Microsoft.SharePoint.WebControls.LayoutsPageBase. Site Pages are stored in the virtual file system in the Content databases. SPFile and SPFolder objects represents Site Pages in WSS object model.</li>
<li>As Name Suggest, An Application Page is application or farm scoped and A site page is  site/web scoped.</li>
<li>Site Pages consists of two compoents =&gt; Site Page Templates vs Site Page Instances
<ul>
<li>Site Page Templates are .aspx pages stored in the file system in the FEATURES directory.</li>
<li>Site Page Instances are provisioned through Module and File elements and resides in content database. They are created inside the context of the particular site. WSS treats Un-customized Site Page Instances as a reference pointer to the Site Page Template. You can use SharePoint Designer to customize or view site page instances. Both customized or un-customized site pages exposed through the virtual file system.</li>
</ul>
</li>
</ul>
</li>
<li> Coding
<ul>
<li>An application page can have code behind and inline code but site page can&#8217;t have code behind or inline code. Using PageParserPaths for site pages is not best practice. Workaround for this problem is to create the site pages with web part pages and add web parts which has codebehind during feature activation.</li>
<li>An application page doesn&#8217;t support web parts or web part zones (they are ghosted pages) but Site Pages supports web parts. It means application pages would support only server controls or user controls and cannot be personalized by end-users.</li>
</ul>
</li>
<li>Customization
<ul>
<li>An application page typically requires Visual Studio to customize the page, while Site Page can be easily customized through SharePoint Designer. First time you change the site page template or site page instance through SharePoint designer, it creates a customized copy and stores in the virtual file system. Use &#8220;Reset to Site Definition&#8221; to reset customized site page to the non-customized site page.</li>
</ul>
<ul>
<li>An application page doesn&#8217;t support customization per site by site basis but site page supports different Site Pages per Site</li>
</ul>
</li>
<li>Deploy
<ul>
<li>An application page is available to all the sites, while site page can be deployed only specific sites</li>
<li>An application page is deployed in LAYOUTS directory when solution is deployed to the web application or farm, while site pages are deployed to content database when feature is activated for specific web. Site page templates gets deployed in FEATURES directory same way as application page when solution is deployed.</li>
</ul>
<ul>
<li>An application page must requires a farm solution, while SitePage can be deployed using a sandbox solution. It means, application pages requires farm administrative privileges to deploy the changes while site pages can be deployed by site       collection administrators/end-users.</li>
</ul>
</li>
<li>Runtime
<ul>
<li>URL &#8211; An application page stored in the _layouts directory on each WFEs which would add &#8220;_layouts&#8221; in URL, while site page URLs can have fully customized business URLs. This can be go-no go decision with application pages in most cases.</li>
<li>Performance &#8211; Because application pages are parsed and compiled as classic ASP.NET pages, they run faster than site pages. SPPageParserFilter parses and compiles the page into DLL. Customized Site Pages impact performance and scalability since they are rendered, runs in no-compile mode, and retrieved from the virtual file system.</li>
</ul>
</li>
<li>Upgrade
<ul>
<li>Maintaining or deploying updated Application page is much faster than maintaining Site Page because deployment method requires retracting/re-deploying site page on each site compare to application page on each application. This can be go-no go decision with site pages in thousands of sites deployment.</li>
</ul>
</li>
<li>Cleanup
<ul>
<li>Application pages are removed from the file system from the LAYOUTs folder when the solution is retracted but Site Pages requires Feature Receiver to delete the folder containing site pages in the content database during feature deactivation process. Site page templates gets retracted from FEATURES directory same way as application pages when solution is retracted.</li>
</ul>
</li>
</ul>
<p>Additional References:</p>
<ul type="disc">
<li>Chapter 2 and Chapter 3, Inside Microsoft Windows SharePoint Services 3.0, MS Press, Ted Pattison. This is still one of the best books on SharePoint and applicable to SharePoint 2010.</li>
<li>Sahil Malik&#8217;s Apress Book &#8211; Microsoft SharePoint 2010 Building Solutions for SharePoint 2010, Jun 2010, Page 95. Sahil has demonstrated design pattern of how to build Site Pages with Web Parts to support code-behind in his book.</li>
<li>Brilliant resource, Most complete I have found so far, App page vs Site pages =&gt; <a href="http://srisharepointdevelopment.blogspot.com/2011/07/app-page-vs-site-pages.html">http://srisharepointdevelopment.blogspot.com/2011/07/app-page-vs-site-pages.html</a></li>
</ul>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/development/dev-general/'>Dev General</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1464/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1464&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2012/01/20/custom-sharepoint-pages-site-pages-vs-application-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>
	</item>
		<item>
		<title>Prescriptive Guidance &#8211; InfoPath List Forms Implementation Lifecycle for SharePoint 2010</title>
		<link>http://nikspatel.wordpress.com/2011/12/23/prescriptive-guidance-infopath-list-forms-implementation-lifecycle-for-sharepoint-2010/</link>
		<comments>http://nikspatel.wordpress.com/2011/12/23/prescriptive-guidance-infopath-list-forms-implementation-lifecycle-for-sharepoint-2010/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 19:41:17 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[SP2010 & InfoPath]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1417</guid>
		<description><![CDATA[Have you ever wondered how to use InfoPath List Forms for the SharePoint 2010 and what really happens behind the screen? Have you ever wondered how would you retract customized SharePoint List form and cleanup the form completely from your SharePoint systems? Have you ever wished you had end to end guidance to design, deploy, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1417&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered how to use InfoPath List Forms for the SharePoint 2010 and what really happens behind the screen? Have you ever wondered how would you retract customized SharePoint List form and cleanup the form completely from your SharePoint systems? Have you ever wished you had end to end guidance to design, deploy, and maintain InfoPath List forms for the SharePoint 2010? To me, these are the real questions asked by SharePoint/InfoPath developers while designing forms in the real world scenarios. With this article, hopefully you have a reference material which will provide all these answers.</p>
<p>Ever since I have presented &#8220;Real Word InfoPath 2010 List vs. Library Forms&#8221;, I had promised attendees that I will write detailed blog articles on real world best practices to design, develop, and maintain InfoPath 2010 List and Library forms with SharePoint 2010. Although everyone likes benefits of quick rapid forms design and development using InfoPath 2010 for SharePoint 2010, I have seen more often or not they would get frustrated quickly. In most cases, their frustration is not because of the InfoPath product itself, but because of the developer or development process itself. It is important to remember that InfoPath 2010 development with SharePoint 2010 requires discipline and it must follow specific pattern or guidelines. Based on my experience, one of the biggest things we are lacking in SharePoint 2010 is prescriptive guidance on how to use any feature from end to end in real world scenarios. This article would try to fill the gap between most of the books written on InfoPath 2010 with SharePoint 2010 and real world scenarios.</p>
<p>Although late is better than never, here is the blog article on Prescriptive Guidance for InfoPath List Forms Implementation Lifecycle. Please note that this article discusses InfoPath List Forms, not Library Forms. If you want to read the differences between List and Library Forms and when to use which one, please read <a href="http://nikspatel.wordpress.com/2011/12/23/infopath-2010-and-sharepoint-2010-list-forms-vs-library-forms/" target="_blank">this article</a>. Additionally, please note that this is not detailed step by step guide to demonstrate end to end example using lots of screenshots. It will take reader to typical real-world situations during InfoPath forms lifecycle in SharePoint 2010 &#8211; Prepare the Environment, Design the InfoPath 2010 Form, Deploy InfoPath 2010 forms to SharePoint 2010, Upgrade/Maintain InfoPath 2010 forms to SharePoint 2010, and Retract/Cleanup InfoPath 2010 forms to SharePoint 2010.</p>
<p>Here is prescriptive guidance on how to create and maintain sample “Project Request Form” by walking through end of end example and what really happens behind the screen.</p>
<p><strong>Step 1 =&gt; Prepare the SharePoint and InfoPath Environment</strong></p>
<p>First step of the SharePoint and InfoPath 2010 development is to make sure you have all the tools installed for InfoPath form design and all the SharePoint services configured. Follow this step to ensure your environment is prepared for the SharePoint and InfoPath development.</p>
<p><a href="http://nikspatel.files.wordpress.com/2011/12/1-prepare-infopath-list-form.jpg"><img title="1-Prepare InfoPath List Form" src="http://nikspatel.files.wordpress.com/2011/12/1-prepare-infopath-list-form.jpg?w=931&#038;h=112" alt="" width="931" height="112" /></a></p>
<ul>
<li>Prepare SharePoint 2010 Environment</li>
<ul>
<li>Have SharePoint Server Enterprise CAL Installed. Browser based InfoPath Forms available in SharePoint Enterprise CAL as InfoPath Form Services.</li>
<li>InfoPath Form Services enabled on SharePoint 2010 Enterprise by default. You can Configure InfoPath Form Services Settings on the Central Administration -&gt; General Application Settings -&gt; InfoPath Forms Services -&gt; Configure InfoPath Form Services -&gt; Enable/Disable User Browser Enabled Form Templates</li>
</ul>
<li>Prepare Development Environment</li>
<ul>
<li>Install InfoPath 2010 using Office Professional Plus 2010 &#8211; InfoPath Designer 2010 and InfoPath Filler 2010</li>
</ul>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/6-configure-infopath-form-services.jpg"><img title="6-Configure InfoPath Form Services" src="http://nikspatel.files.wordpress.com/2011/12/6-configure-infopath-form-services.jpg?w=751&#038;h=212" alt="" width="751" height="212" /></a></p>
<p><strong>Step 2 =&gt; Design the InfoPath List Forms and SharePoint Application</strong></p>
<p><a href="http://nikspatel.files.wordpress.com/2011/12/2-design-infopath-list-form.jpg"><img title="2-Design InfoPath List Form" src="http://nikspatel.files.wordpress.com/2011/12/2-design-infopath-list-form.jpg?w=929&#038;h=108" alt="" width="929" height="108" /></a></p>
<p>This step will create sample SharePoint List (e.g. Projects) to host InfoPath List Form (e.g. Project Requests Form) and customize the form using InfoPath Form Designer 2010.</p>
<ul>
<li>Create the Custom List (Projects List) to hold the Project Requests</li>
<ul>
<li>Add List Columns. In real world, I like to standardize the lists or library metadata with Site Content Type.  For this example, create list columns directly on the list.</li>
<ul>
<li>Basic Info</li>
<ul>
<li>Fiscal Year &#8211; 2011-2015 &#8211; Required &#8211; Choice</li>
</ul>
<ul>
<li>Project Name &#8211; Required (Rename Title Column)</li>
</ul>
<ul>
<li>Project Description &#8211; Single Line of Text</li>
</ul>
<ul>
<li>Department &#8211; IT, HR, Finance, Legal, Sales, Marketing, Other &#8211; Required &#8211; Choice</li>
</ul>
<ul>
<li>Project Requester &#8211; Required &#8211; Person &amp; Group</li>
</ul>
<ul>
<li>Project Sponsor &#8211; Single Line of Text</li>
</ul>
<ul>
<li>Project Priority &#8211; High, Medium, Low &#8211; Choice</li>
</ul>
<ul>
<li>Project Type &#8211; New Implementation, Modifications, Enhancements, Replacement &#8211; Choice</li>
</ul>
</ul>
<ul>
<li>Business Case</li>
<ul>
<li>Problem Statements &#8211; Multiple lines of Text &#8211; Rich Text Field</li>
</ul>
<ul>
<li>Project Mission (including Project Scope) &#8211; Multiple lines of Text &#8211; Rich Text Field</li>
</ul>
<ul>
<li>Project Benefits &#8211; Multiple lines of Text &#8211; Rich Text Field</li>
</ul>
<ul>
<li>Business Dependencies &#8211; Multiple lines of Text &#8211; Rich Text Field</li>
</ul>
<ul>
<li>IT Dependencies &#8211; Multiple lines of Text &#8211; Rich Text Field</li>
</ul>
</ul>
<li>Configure Advanced List Properties as needed</li>
<ul>
<li>Enable the Versioning (Version Settings)</li>
</ul>
<ul>
<li>If you have created content types for Project Request Item, Enable the Content Type (Advance Settings) and Add Projects Content Type and Delete the Default Item Content Type</li>
<li>Configure Default View &#8211; Remove unnecessary column</li>
</ul>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/7-projects-list-schema.jpg"><img title="7-Projects List Schema" src="http://nikspatel.files.wordpress.com/2011/12/7-projects-list-schema.jpg?w=676&#038;h=573" alt="" width="676" height="573" /></a></p>
<ul>
<ul>
<li>In the Out of box SharePoint Lists, If you add new item without customizing the forms, item view form would look like this as Standard UI.</li>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/15-standard-list-form.jpg"><img title="15-Standard List Form" src="http://nikspatel.files.wordpress.com/2011/12/15-standard-list-form.jpg?w=621&#038;h=572" alt="" width="621" height="572" /></a></p>
<ul>
<ul>
<li>Behind the screen – What really happens?
<ul type="disc">
<li>Three out of box List Form Web Parts available on the List Ribbon UI.</li>
</ul>
<p>   <a href="http://nikspatel.files.wordpress.com/2011/12/16-standard-list-edit-forms.jpg"><img title="16-Standard List Edit Forms" src="http://nikspatel.files.wordpress.com/2011/12/16-standard-list-edit-forms.jpg?w=262&#038;h=133" alt="" width="262" height="133" /></a></p>
<ul type="disc">
<li>You can open the site collection in SharePoint Designer and navigate to the All Files -&gt; Lists -&gt; &lt;List Name&gt; -&gt; &lt;Content Type (e.g. Item)&gt; folder. Folder should be empty and there won&#8217;t be any custom InfoPath templates and forms.</li>
</ul>
</li>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/17-standard-spd-list-forms.jpg"><img title="17-Standard SPD List Forms" src="http://nikspatel.files.wordpress.com/2011/12/17-standard-spd-list-forms.jpg?w=818&#038;h=630" alt="" width="818" height="630" /></a></p>
<ul>
<li> Customize the InfoPath Lists Forms</li>
<ul>
<li>Use &#8220;Customize Form&#8221; from the Projects List Ribbon bar and it should open the InfoPath 2010 Designer to customize the Lists Forms.</li>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/8-customize-form-on-list-ribbon.jpg"><img title="8-Customize Form on List Ribbon" src="http://nikspatel.files.wordpress.com/2011/12/8-customize-form-on-list-ribbon.jpg?w=204&#038;h=111" alt="" width="204" height="111" /></a></p>
<ul>
<ul>
<li>Projects Request InfoPath Form will be automatically configured in the InfoPath Form Designer</li>
<ul>
<li>InfoPath Form Fields are linked to the Underlying SharePoint List</li>
<li>InfoPath Form Publishing Location is already configured as Underlying SharePoint List</li>
</ul>
<li>Design Projects Request Data Entry InfoPath Form</li>
<ul>
<li>Configure Views (UI and Branding), Rules, and Data Sources.</li>
<li>Configure Forms Options &#8211; Toolbar options, default display view</li>
</ul>
<li>Review Data Connections &#8211; Main Data Connection would be configure to retrieve and submit data to the underlying SharePoint List. You can notice from the following screenshot, publishing location is already configured to underlying List URL.</li>
</ul>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/9-infopath-projects-request-form-design.jpg"><img title="9-InfoPath Projects Request Form Design" src="http://nikspatel.files.wordpress.com/2011/12/9-infopath-projects-request-form-design.jpg?w=928&#038;h=634" alt="" width="928" height="634" /></a></p>
<p><strong>Step 3 =&gt; Deploy InfoPath List Forms</strong></p>
<p><a href="http://nikspatel.files.wordpress.com/2011/12/3-deploy-infopath-list-form.jpg"><img title="3-Deploy InfoPath List Form" src="http://nikspatel.files.wordpress.com/2011/12/3-deploy-infopath-list-form.jpg?w=927&#038;h=111" alt="" width="927" height="111" /></a></p>
<ul>
<li>Publish the InfoPath Forms to the SharePoint List</li>
<ul>
<li>Publish the Form using Quick Publish from InfoPath Designer.</li>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/10-quick-publsh-infopath.jpg"><img title="10-Quick Publsh InfoPath" src="http://nikspatel.files.wordpress.com/2011/12/10-quick-publsh-infopath.jpg?w=636&#038;h=268" alt="" width="636" height="268" /></a></p>
<ul>
<ul>
<li>Behind the screen &#8211; What really happens?</li>
<ul>
<li>As you soon as you publish the form first time, Newly publish form will be deployed to the Site Collection Content Database along with the List contents.</li>
</ul>
<ul>
<li>Three additional Form Web Parts Customization Menu Items will be added to the List Ribbon UI.</li>
</ul>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/11-new-list-edit-forms.jpg"><img title="11-New List Edit Forms" src="http://nikspatel.files.wordpress.com/2011/12/11-new-list-edit-forms.jpg?w=306&#038;h=222" alt="" width="306" height="222" /></a></p>
<ul>
<ul>
<ul>
<li>You can open the site collection in SharePoint Designer and navigate to the All Files -&gt; Lists -&gt; &lt;List Name&gt; -&gt; &lt;Content Type (e.g. Item)&gt; folder. Folder should contain InfoPath template (template.xsn) and three additional default Edit, Add, and Display forms (newifs.aspx, editifs.aspx, and displayifs.aspx). All your forms and form template gets stored in the content database.</li>
</ul>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/12-spd-view-list-form.jpg"><img title="12-SPD View List Form" src="http://nikspatel.files.wordpress.com/2011/12/12-spd-view-list-form.jpg?w=818&#038;h=630" alt="" width="818" height="630" /></a></p>
<ul>
<ul>
<ul>
<li>Three new Edit, Add, and Display forms contains the newly introduced web part in SharePoint 2010 &#8220;InfoPath web part&#8221; and configured by adding InfoPath Form Template with  default</li>
<ul>
<li>Display Form Markup &#8211; location &#8211; list infopath from, content type id, list form mode &#8211; Readonly</li>
<ul>
<li> &lt;WpNs0:BrowserFormWebPart runat=&#8221;server&#8221; AllowEdit=&#8221;True&#8221; AllowConnect=&#8221;True&#8221; SubmitBehavior=&#8221;FormDefault&#8221; ConnectionID=&#8221;00000000-0000-0000-0000-000000000000&#8243; Title=&#8221;InfoPath Form Web Part&#8221; IsIncluded=&#8221;True&#8221; Dir=&#8221;Default&#8221; ExportMode=&#8221;All&#8221; IsVisible=&#8221;True&#8221; ShowFormRibbon=&#8221;True&#8221; AllowMinimize=&#8221;True&#8221; ExportControlledProperties=&#8221;True&#8221; ZoneID=&#8221;Main&#8221; ID=&#8221;g_64f73c52_bc1c_4f65_9e84_eae4ce99e904&#8243; FormLocation=&#8221;~list/Project Request/template.xsn&#8221; FrameState=&#8221;Normal&#8221; SendDataOnPostback=&#8221;True&#8221; AllowHide=&#8221;True&#8221; SuppressWebPartChrome=&#8221;False&#8221; DetailLink=&#8221;" ChromeType=&#8221;None&#8221; HelpLink=&#8221;" MissingAssembly=&#8221;Cannot import this Web Part.&#8221; PartImageSmall=&#8221;" AllowRemove=&#8221;True&#8221; ListFormMode=&#8221;ReadOnly&#8221; ContentTypeId=&#8221;0x010094C0C4EE6041654B87BF74AF58C0253000AACADF5B2CC621429FBDD7D807134CF8&#8243; HelpMode=&#8221;Modeless&#8221; FrameType=&#8221;None&#8221; AllowZoneChange=&#8221;True&#8221; PartOrder=&#8221;2&#8243; Description=&#8221;Use this Web Part to display an InfoPath browser-enabled form.&#8221; PartImageLarge=&#8221;" IsIncludedFilter=&#8221;" __MarkupType=&#8221;vsattributemarkup&#8221; __WebPartId=&#8221;{64F73C52-BC1C-4F65-9E84-EAE4CE99E904}&#8221; WebPart=&#8221;true&#8221; Height=&#8221;" Width=&#8221;"&gt;&lt;/WpNs0:BrowserFormWebPart&gt;</li>
</ul>
<li>Edit Form  Markup &#8211; location &#8211; list infopath from, content type id, list form mode &#8211; Editable</li>
<ul>
<li>&lt;WpNs0:BrowserFormWebPart runat=&#8221;server&#8221; AllowEdit=&#8221;True&#8221; AllowConnect=&#8221;True&#8221; SubmitBehavior=&#8221;FormDefault&#8221; ConnectionID=&#8221;00000000-0000-0000-0000-000000000000&#8243; Title=&#8221;InfoPath Form Web Part&#8221; IsIncluded=&#8221;True&#8221; Dir=&#8221;Default&#8221; ExportMode=&#8221;All&#8221; IsVisible=&#8221;True&#8221; ShowFormRibbon=&#8221;True&#8221; AllowMinimize=&#8221;True&#8221; ExportControlledProperties=&#8221;True&#8221; ZoneID=&#8221;Main&#8221; ID=&#8221;g_0bda7a45_0e6c_4e4e_b861_1492d88ce90c&#8221; FormLocation=&#8221;~list/Project Request/template.xsn&#8221; FrameState=&#8221;Normal&#8221; SendDataOnPostback=&#8221;True&#8221; AllowHide=&#8221;True&#8221; SuppressWebPartChrome=&#8221;False&#8221; DetailLink=&#8221;" ChromeType=&#8221;None&#8221; HelpLink=&#8221;" MissingAssembly=&#8221;Cannot import this Web Part.&#8221; PartImageSmall=&#8221;" AllowRemove=&#8221;True&#8221; ListFormMode=&#8221;Editable&#8221; ContentTypeId=&#8221;0x010094C0C4EE6041654B87BF74AF58C0253000AACADF5B2CC621429FBDD7D807134CF8&#8243; HelpMode=&#8221;Modeless&#8221; FrameType=&#8221;None&#8221; AllowZoneChange=&#8221;True&#8221; PartOrder=&#8221;2&#8243; Description=&#8221;Use this Web Part to display an InfoPath browser-enabled form.&#8221; PartImageLarge=&#8221;" IsIncludedFilter=&#8221;" __MarkupType=&#8221;vsattributemarkup&#8221; __WebPartId=&#8221;{0BDA7A45-0E6C-4E4E-B861-1492D88CE90C}&#8221; WebPart=&#8221;true&#8221; Height=&#8221;" Width=&#8221;"&gt;&lt;/WpNs0:BrowserFormWebPart&gt;</li>
</ul>
<li>New Form Markup &#8211; location &#8211; list infopath from, content type id, list form mode &#8211; Editable</li>
<ul>
<li>&lt;WpNs0:BrowserFormWebPart runat=&#8221;server&#8221; AllowEdit=&#8221;True&#8221; AllowConnect=&#8221;True&#8221; SubmitBehavior=&#8221;FormDefault&#8221; ConnectionID=&#8221;00000000-0000-0000-0000-000000000000&#8243; Title=&#8221;InfoPath Form Web Part&#8221; IsIncluded=&#8221;True&#8221; Dir=&#8221;Default&#8221; ExportMode=&#8221;All&#8221; IsVisible=&#8221;True&#8221; ShowFormRibbon=&#8221;True&#8221; AllowMinimize=&#8221;True&#8221; ExportControlledProperties=&#8221;True&#8221; ZoneID=&#8221;Main&#8221; ID=&#8221;g_29a83ffc_f17a_47ff_8812_ad34639e713f&#8221; FormLocation=&#8221;~list/Project Request/template.xsn&#8221; FrameState=&#8221;Normal&#8221; SendDataOnPostback=&#8221;True&#8221; AllowHide=&#8221;True&#8221; SuppressWebPartChrome=&#8221;False&#8221; DetailLink=&#8221;" ChromeType=&#8221;None&#8221; HelpLink=&#8221;" MissingAssembly=&#8221;Cannot import this Web Part.&#8221; PartImageSmall=&#8221;" AllowRemove=&#8221;True&#8221; ListFormMode=&#8221;Editable&#8221; ContentTypeId=&#8221;0x010094C0C4EE6041654B87BF74AF58C0253000AACADF5B2CC621429FBDD7D807134CF8&#8243; HelpMode=&#8221;Modeless&#8221; FrameType=&#8221;None&#8221; AllowZoneChange=&#8221;True&#8221; PartOrder=&#8221;2&#8243; Description=&#8221;Use this Web Part to display an InfoPath browser-enabled form.&#8221; PartImageLarge=&#8221;" IsIncludedFilter=&#8221;" __MarkupType=&#8221;vsattributemarkup&#8221; __WebPartId=&#8221;{29A83FFC-F17A-47FF-8812-AD34639E713F}&#8221; WebPart=&#8221;true&#8221; Height=&#8221;" Width=&#8221;"&gt;&lt;/WpNs0:BrowserFormWebPart&gt;</li>
</ul>
</ul>
</ul>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/14-infopath-form-web-part.jpg"><img title="14-InfoPath Form Web Part" src="http://nikspatel.files.wordpress.com/2011/12/14-infopath-form-web-part.jpg?w=948&#038;h=693" alt="" width="948" height="693" /></a></p>
<ul>
<ul>
<li>Best Practices &#8211; Do not customize the InfoPath Form Web Part properties on the Add, Edit, and Display InfoPath forms from the SharePoint Designer. Instead customize web part propreties from the browser UI. Form the List Ribbon, customize the form web parts from the content types section.</li>
<li>With the Customized InfoPath List Form, SharePoint List item view form would look like this.</li>
</ul>
</ul>
<p style="padding-left:90px;"><a href="http://nikspatel.files.wordpress.com/2011/12/18-infopath-list-form.jpg"><img title="18-InfoPath List Form" src="http://nikspatel.files.wordpress.com/2011/12/18-infopath-list-form.jpg?w=735&#038;h=546" alt="" width="735" height="546" /></a></p>
<p> <strong>Step 4 =&gt; Upgrade InfoPath List Forms</strong></p>
<p><a href="http://nikspatel.files.wordpress.com/2011/12/4-upgrade-infopath-list-form.jpg"><img title="4-Upgrade InfoPath List Form" src="http://nikspatel.files.wordpress.com/2011/12/4-upgrade-infopath-list-form.jpg?w=926&#038;h=108" alt="" width="926" height="108" /></a></p>
<ul>
<li>Modify/Enhance/Upgrade the InfoPath List Form</li>
<ul>
<li>Any list schema changes requires updating the InfoPath form. Any major schema changes in the SharePoint List would make associated InfoPath Form Invalid. Use &#8220;Customize Form&#8221; from the Projects List Ribbon bar.</li>
</ul>
<ul>
<li>Update/Redesign the List Form and republish it to sync the List changes to the InfoPath Form Schema</li>
</ul>
</ul>
<p><strong>Step 5 =&gt; Retract InfoPath List Forms</strong></p>
<p><a href="http://nikspatel.files.wordpress.com/2011/12/5-cleanup-infopath-list-form.jpg"><img title="5-Cleanup InfoPath List Form" src="http://nikspatel.files.wordpress.com/2011/12/5-cleanup-infopath-list-form.jpg?w=929&#038;h=110" alt="" width="929" height="110" /></a></p>
<ul>
<li>Clean up the InfoPath List Form</li>
<ul>
<li>From List Settings -&gt; Form Options, you have option to revert back to the out of the box ASP.NET forms and option to permanently delete the associated list form or preserve the InfoPath forms</li>
</ul>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/13-delete-form.jpg"><img title="13-Delete Form" src="http://nikspatel.files.wordpress.com/2011/12/13-delete-form.jpg?w=812&#038;h=499" alt="" width="812" height="499" /></a></p>
<p>Hopefully this will be helpful designing your next InfoPath List Form for SharePoint 2010.</p>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/sp2010-infopath/'>SP2010 &amp; InfoPath</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1417/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1417/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1417/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1417/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1417/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1417/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1417/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1417&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2011/12/23/prescriptive-guidance-infopath-list-forms-implementation-lifecycle-for-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/1-prepare-infopath-list-form.jpg" medium="image">
			<media:title type="html">1-Prepare InfoPath List Form</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/6-configure-infopath-form-services.jpg" medium="image">
			<media:title type="html">6-Configure InfoPath Form Services</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/2-design-infopath-list-form.jpg" medium="image">
			<media:title type="html">2-Design InfoPath List Form</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/7-projects-list-schema.jpg" medium="image">
			<media:title type="html">7-Projects List Schema</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/15-standard-list-form.jpg" medium="image">
			<media:title type="html">15-Standard List Form</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/16-standard-list-edit-forms.jpg" medium="image">
			<media:title type="html">16-Standard List Edit Forms</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/17-standard-spd-list-forms.jpg" medium="image">
			<media:title type="html">17-Standard SPD List Forms</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/8-customize-form-on-list-ribbon.jpg" medium="image">
			<media:title type="html">8-Customize Form on List Ribbon</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/9-infopath-projects-request-form-design.jpg" medium="image">
			<media:title type="html">9-InfoPath Projects Request Form Design</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/3-deploy-infopath-list-form.jpg" medium="image">
			<media:title type="html">3-Deploy InfoPath List Form</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/10-quick-publsh-infopath.jpg" medium="image">
			<media:title type="html">10-Quick Publsh InfoPath</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/11-new-list-edit-forms.jpg" medium="image">
			<media:title type="html">11-New List Edit Forms</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/12-spd-view-list-form.jpg" medium="image">
			<media:title type="html">12-SPD View List Form</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/14-infopath-form-web-part.jpg" medium="image">
			<media:title type="html">14-InfoPath Form Web Part</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/18-infopath-list-form.jpg" medium="image">
			<media:title type="html">18-InfoPath List Form</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/4-upgrade-infopath-list-form.jpg" medium="image">
			<media:title type="html">4-Upgrade InfoPath List Form</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/5-cleanup-infopath-list-form.jpg" medium="image">
			<media:title type="html">5-Cleanup InfoPath List Form</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/13-delete-form.jpg" medium="image">
			<media:title type="html">13-Delete Form</media:title>
		</media:content>
	</item>
		<item>
		<title>InfoPath 2010 and SharePoint 2010 &#8211; List Forms vs Library Forms</title>
		<link>http://nikspatel.wordpress.com/2011/12/23/infopath-2010-and-sharepoint-2010-list-forms-vs-library-forms/</link>
		<comments>http://nikspatel.wordpress.com/2011/12/23/infopath-2010-and-sharepoint-2010-list-forms-vs-library-forms/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 18:06:48 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[SP2010 & InfoPath]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1412</guid>
		<description><![CDATA[Not many aware of two different kinds of InfoPath forms available in SharePoint 2010 – List Forms and Library Forms. Having understanding of both kind of InfoPath forms is one of the most fundamental knowledge one need to have to be better InfoPath Developer for SharePoint 2010. Since you can’t switch from List forms to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1412&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Not many aware of two different kinds of InfoPath forms available in SharePoint 2010 – List Forms and Library Forms. Having understanding of both kind of InfoPath forms is one of the most fundamental knowledge one need to have to be better InfoPath Developer for SharePoint 2010. Since you can’t switch from List forms to library forms or vice-a-versa (Yes, you read it right, you can’t switch or migrate forms from one to another), deciding on List vs Library form becomes one of the most fundamental architectural decisions part of InfoPath-SharePoint solution.</p>
<p>This article highlights high level differences between SharePoint 2010 List and Library forms and guidance on when to use which kind of forms. Microsoft has published wonderful article on this topic and my article is extension of what’s been published on InfoPath blog with some additional notes I have taking over the last two years.</p>
<p><strong>InfoPath Team Blog Reference</strong> &#8211; <a href="http://blogs.msdn.com/b/infopath/archive/2010/04/22/comparing-list-and-form-library-forms.aspx">http://blogs.msdn.com/b/infopath/archive/2010/04/22/comparing-list-and-form-library-forms.aspx</a></p>
<p> <strong>List Forms &#8211; Tied to the List &#8211; New in SharePoint 2010</strong></p>
<ul>
<li>Key Characteristics</li>
<ul>
<li>InfoPath Form Tied to specific SharePoint list, Not reusable</li>
<li>InfoPath Form Schema tied to SharePoint List Schema</li>
<li>InfoPath Form data stored in the SharePoint List.</li>
</ul>
<ul>
<li>Each control (e.g. text box) in the InfoPath Form is bound to a column in the SharePoint List.</li>
</ul>
<ul>
<li>Supported on Simple SharePoint Lists like Custom List, Tasks, Announcements, Links, Contacts from Browser Interface</li>
</ul>
<ul>
<li>Not supported in Document Libraries and advanced SharePoint Lists like Calendar</li>
</ul>
<ul>
<li>You can customize or edit the published form template by clicking the &#8220;Customize Form&#8221; on the List Ribbon Bar</li>
</ul>
<ul>
<li>Requires SharePoint Designer to customize the External Lists Forms</li>
</ul>
<li>Limitations</li>
<ul>
<li>Tied to only 1 list and data stored directly in list</li>
<li>No Custom Code Support</li>
<li>No Digital Signatures</li>
<li>Because it&#8217;s tied to specific list, No Custom Submit or Publish Behavior</li>
<li>No Repeating and Nested Data</li>
<li>No Print Support &#8211; No Print Button</li>
<li>Not available to the Document Library</li>
</ul>
<li>Use cases</li>
<ul>
<li>To customize the out of the box List New Form, List Edit Form, and List Display Forms</li>
<li>Ideal for Prototypes or quickly get started building InfoPath forms on SharePoint</li>
<li>Ideal for No-code solutions using SharePoint Designer and Browser Customization for Pre-Packaged Departmental SharePoint Sites designed on production farm.</li>
<li>To use forms offline with SharePoint Workspace</li>
</ul>
<li>Important Note =&gt; Do not use List InfoPath Forms in formal code management and deployment scenarios from development to staging to production.</li>
</ul>
<p><strong>Library Forms – Tied to the form libraries – Same as SharePoint 2007</strong></p>
<ul>
<li>Key Characteristics</li>
<ul>
<li>Form data stored as the XML document in SharePoint Form Library</li>
<li>More complex and requires more disciplined/structured approach</li>
<li>Can be deployed as Sandbox or Farm Level Solutions</li>
<li>Unlike list forms, Form library forms can be deployed as a template to associate the forms to multiple form libraries across multiple sites or site collections or multiple web applications within farm</li>
</ul>
<li>Publishing Mechanism</li>
<ul>
<li>Single Library</li>
<ul>
<li>Deploy/Publish to specific form library</li>
</ul>
<ul>
<li>Not reusable in another library</li>
<li>Only one form template per form library, Same benefits as list InfoPath forms. If Form is directly published to form library, another form can&#8217;t be published or used in the form library.</li>
</ul>
<li>Reusability across Site Collection &#8211; Multiple libraries or sites within Site Collection</li>
<ul>
<li>Deploy/Publish as a Form Content Type and Later use Content Type in the Form Library</li>
<li>Enables deployment to multiple document libraries</li>
<li>Supports multiple content type per library. It means,  multiple types of Form Templates can be tied to the Form Library using multiple Form Content Types</li>
</ul>
<li>Reusability across Farm &#8211; Multiple Site Collections or Web Applications</li>
<ul>
<li>Deploy/Publish as a Administrator Approved Form Templates</li>
<li>Once deployed and activated on the site collection, Administrator-Approved Form Templates behaves same as Content Type Form</li>
<li>Deploy as features and solutions framework, PowerShell, or manual upload</li>
</ul>
</ul>
<li>Use cases</li>
<ul>
<li>Form Templates with Code</li>
<li>Form Templates with Tabular Structure (Nested or Repeated Data) or Complex Schema</li>
<li>Form Templates with Printing Support from Ribbon Bar</li>
<li>Form Templates with Custom Submit Behavior</li>
<li>From Templates needs to be digitally signed</li>
<li>Great fit for Enterprise Level Form Solutions with Advanced and Reusable Functionality</li>
<li>Admin Approved forms eases future enhancements, upgrade, maintenance, and deployment</li>
<li>Fits perfectly in formal deployment process of moving features from development to staging to production.</li>
<li>Form is not hosted in SharePoint or you need to store results as an XML document</li>
</ul>
</ul>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/sp2010-infopath/'>SP2010 &amp; InfoPath</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1412/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1412&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2011/12/23/infopath-2010-and-sharepoint-2010-list-forms-vs-library-forms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>
	</item>
		<item>
		<title>Step by Step Guide to Configure SharePoint 2010 Forms Based Authentication with SQL</title>
		<link>http://nikspatel.wordpress.com/2011/12/22/step-by-step-guide-to-configure-sharepoint-2010-forms-based-authentication-with-sql/</link>
		<comments>http://nikspatel.wordpress.com/2011/12/22/step-by-step-guide-to-configure-sharepoint-2010-forms-based-authentication-with-sql/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 23:29:03 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[Admin General]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1380</guid>
		<description><![CDATA[It is very common to use SQL Server database to store external users and roles in extranet environments for physical separation of the internal and external users. Typically external identity systems require specific schema changes and AD administrators don’t allow applications to store their users in the main organization domain directory for security concerns. I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1380&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It is very common to use SQL Server database to store external users and roles in extranet environments for physical separation of the internal and external users. Typically external identity systems require specific schema changes and AD administrators don’t allow applications to store their users in the main organization domain directory for security concerns.</p>
<p>I have recently wrote an article on step by step guide to configure <a href="http://nikspatel.wordpress.com/2011/12/12/step-by-step-guide-to-configure-sharepoint-2010-forms-based-authentication-with-adlds/" target="_blank">SharePoint 2010 FBA with ADLDS</a>. This article follows same pattern to configure SharePoint FBA with SQL Server. As you may notice, most of the steps are same and web configuration file changes are similar. This article describes 5-Steps guide to configure SQL Users and Roles in Single-Server SharePoint 2010 environment on Windows 2008 R2 server for Forms Based Authentication.</p>
<p>Note: If you are looking for detailed step by step guide with lots of screenshots, you can download<strong> <a href="http://dl.dropbox.com/u/5666151/SharePoint%202010%20Claims%20-%20Configuring%20FBA%20with%20SQL.pdf" target="_blank">35-pages step by step PDF guide</a> </strong>demonstrating same steps discussed in this article.</p>
<p><strong> Step 1 &#8211; Create SQL Server Database to host FBA Accounts</strong></p>
<ul type="disc">
<li>Run C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe to create the SQL DB &#8211; aspnetdb</li>
<li>Verify that Niks\Administrator is running Application Pools for the Content and Central Admin Web Application and it&#8217;s added as dbowner role on the aspnetdb database.</li>
</ul>
<p style="padding-left:30px;"><a href="http://nikspatel.files.wordpress.com/2011/12/1-asp-sql-db.jpg"><img title="1-ASP SQL DB" src="http://nikspatel.files.wordpress.com/2011/12/1-asp-sql-db.jpg?w=845&#038;h=503" alt="" width="845" height="503" /></a></p>
<p><strong>Step 2 &#8211; Add SQL Users and Roles for FBA</strong></p>
<ul>
<li>Download the MembershipSeeder to load users for form-based authentication &#8211; <a href="http://cks.codeplex.com/releases/view/7450">http://cks.codeplex.com/releases/view/7450</a></li>
<li>How to use MembershipSeeder tool?</li>
<ul>
<li>Open the  \Bin\Release\MembershipSeeder.exe and Update the SQL Server Name by clicking &#8220;Configure&#8221; button and close the tool</li>
<li>Reopen the tool and use following guidelines to add users.</li>
<ul>
<li>Add 1 user at a time from membership section using &#8220;create&#8221; button</li>
<li>Add 1 role at a time from roles section using &#8220;create&#8221; button</li>
<li>Add 1 user to the role at a time from roles section using &#8220;Add to Role&#8221; button</li>
</ul>
</ul>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/2-membership-seeder-tool.jpg"><img title="2-Membership Seeder Tool" src="http://nikspatel.files.wordpress.com/2011/12/2-membership-seeder-tool.jpg?w=715&#038;h=386" alt="" width="715" height="386" /></a></p>
<ul>
<li>Add SQL Roles and Users as following</li>
<ul>
<li>Roles &#8211; sqlowners, sqlcontributors, sqlreaders</li>
<li>Users &#8211; sqlowner, sqlcontributor, sqlreader and add them to specific groups</li>
</ul>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/3-sql-users.jpg"><img title="3-SQL Users" src="http://nikspatel.files.wordpress.com/2011/12/3-sql-users.jpg?w=1019&#038;h=503" alt="" width="1019" height="503" /></a></p>
<p><strong>Step 3 &#8211; Create New Web Application with Forms Based Authentication</strong></p>
<ul type="disc">
<li>Add DNS entries for the host headers &#8211; sqlportal.niks.local</li>
<li>Create New Web Application with Claims Based Authentication</li>
<ul type="circle">
<li>Specify Port-80 and Host Header &#8211; sqlportal.niks.local</li>
<li>Select Windows Authentication and Forms Based Authentication</li>
<ul type="disc">
<li>Specify Membership Provider &#8211; SqlMember and Role Provider &#8211; SqlRole</li>
</ul>
</ul>
<ul type="circle">
<li>Specify proper content database name and leave everything else as it is</li>
<li>Create New Site Collection and specify Niks\Administrator as Site Collection Admin</li>
<li>Verify the Windows Authentication by logging to http:\\sqlportal.niks.local as Using Niks\Administrator</li>
</ul>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/4-sql-fba.jpg"><img title="4-SQL FBA" src="http://nikspatel.files.wordpress.com/2011/12/4-sql-fba.jpg?w=479&#038;h=356" alt="" width="479" height="356" /></a></p>
<p><strong>Step 4 &#8211; Update the Web Config Files for FBA – Content Web App, Central Admin Web App, and STS</strong></p>
<ul type="disc">
<li>Update the Web Config Files for FBA, Please make sure to have a copy of all the original web.config files before making changes.</li>
<ul type="circle">
<li>Follow Mirjam&#8217;s blog, it works &#8211; <a href="http://www.sharepointchick.com/archive/2010/05/07/configuring-claims-and-forms-based-authentication-for-use">http://www.sharepointchick.com/archive/2010/05/07/configuring-claims-and-forms-based-authentication-for-use-with-a.aspx<strong> </strong></a></li>
</ul>
<li><strong>Content Web App Configuration</strong></li>
<ul type="circle">
<li>Update sqlportal.niks.local web application web.config &#8211; C:\inetpub\wwwroot\wss\VirtualDirectories\sqlportal.niks.local80\web.config</li>
<li>Find the &lt;/configSections&gt; entry and add following XML directly below i</li>
</ul>
</ul>
<p><pre class="brush: xml;">

  &lt;connectionStrings&gt;
     &lt;clear /&gt;
     &lt;add name=&quot;AspNetSqlMembershipProvider&quot; connectionString=&quot;data source=SP2010VM;Integrated Security=SSPI;Initial Catalog=aspnetdb&quot;  providerName=&quot;System.Data.SqlClient&quot; /&gt;
  &lt;/connectionStrings&gt;
</pre></p>
<ul type="disc">
<ul>
<li>Replace the  &lt;PeoplePickerWildcards&gt; entry with following XML</li>
</ul>
</ul>
<p><pre class="brush: xml;">
  &lt;PeoplePickerWildcards&gt;
   &lt;clear /&gt;
   &lt;add key=&quot;AspNetSqlMembershipProvider&quot; value=&quot;%&quot; /&gt;
   &lt;add key=&quot;SqlMember&quot; value=&quot;%&quot;/&gt;
   &lt;add key=&quot;SqlRole&quot; value=&quot;%&quot;/&gt;
  &lt;/PeoplePickerWildcards&gt;
</pre></p>
<ul>
<ul>
<li>Locate the &lt;membership&gt; entry and Replace everything from &lt;membership&gt; to &lt;/membership&gt; with the following XML</li>
</ul>
</ul>
<p><pre class="brush: xml;">
   &lt;membership defaultProvider=&quot;i&quot;&gt;
      &lt;providers&gt;
        &lt;clear /&gt;
        &lt;add connectionStringName=&quot;AspNetSqlMemberShipProvider&quot;
           enablePasswordRetrieval=&quot;false&quot;
           enablePasswordReset=&quot;true&quot;
           requiresQuestionAndAnswer=&quot;true&quot;
           passwordAttemptWindow=&quot;10&quot;
           applicationName=&quot;/&quot;
           requiresUniqueEmail=&quot;false&quot;
           passwordFormat=&quot;Hashed&quot;
           name=&quot;SqlMember&quot;
           type=&quot;System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0,
  Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt;
        &lt;add name=&quot;i&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
     &lt;/providers&gt;
    &lt;/membership&gt;
</pre></p>
<ul>
<ul>
<li>Locate the &lt;roleManager&gt; entry and Replace everything from &lt;roleManager&gt; to &lt;/roleManager&gt; with the following XML</li>
</ul>
</ul>
<p><pre class="brush: xml;">
   &lt;roleManager defaultProvider=&quot;c&quot; enabled=&quot;true&quot; cacheRolesInCookie=&quot;false&quot;&gt;
      &lt;providers&gt;
          &lt;clear /&gt;
           &lt;add connectionStringName=&quot;AspNetSqlMemberShipProvider&quot;
              applicationName=&quot;/&quot;
              name=&quot;SqlRole&quot;
              type=&quot;System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0,
  Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt;
           &lt;add name=&quot;c&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider,
  Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
     &lt;/providers&gt;
  &lt;/roleManager&gt;
</pre></p>
<ul>
<li><strong><strong>Central Admin Web Application </strong></strong>
<ul type="circle">
<li>Update Central Admin Web Application web.config file (to find central admin web.config &#8211; go to the IIS, select central admin, and click Explore to find contents)</li>
<li>Find the &lt;/configSections&gt; entry and add following XML directly below it</li>
</ul>
<p><pre class="brush: xml;">
&lt;connectionStrings&gt;
     &lt;clear /&gt;
     &lt;add name=&quot;AspNetSqlMembershipProvider&quot; connectionString=&quot;data source=SP2010VM;Integrated Security=SSPI;Initial Catalog=aspnetdb&quot;  providerName=&quot;System.Data.SqlClient&quot; /&gt;
  &lt;/connectionStrings&gt;</pre></li>
<ul>
<li>Replace the  &lt;PeoplePickerWildcards&gt; entry with following XML</li>
</ul>
</ul>
<p><pre class="brush: xml;">
&lt;PeoplePickerWildcards&gt;
   &lt;clear /&gt;
   &lt;add key=&quot;AspNetSqlMembershipProvider&quot; value=&quot;%&quot; /&gt;
   &lt;add key=&quot;SqlMember&quot; value=&quot;%&quot;/&gt;
   &lt;add key=&quot;SqlRole&quot; value=&quot;%&quot;/&gt;
&lt;/PeoplePickerWildcards&gt;</pre></p>
<ul>
<ul>
<li>Find the &lt;system.web&gt; entry and add the following XML directly below it. By default, there should be 1 blank Membership or RoleManager entry. Double check whether the &lt;membership&gt; and &lt;rolemanager&gt; entries only exist ones. Delete any double entries.</li>
</ul>
</ul>
<p><pre class="brush: xml;">
  &lt;membership defaultProvider=&quot;i&quot;&gt;     
    &lt;providers&gt;
        &lt;clear /&gt;
        &lt;add connectionStringName=&quot;AspNetSqlMembershipProvider&quot;
           enablePasswordRetrieval=&quot;false&quot;
           enablePasswordReset=&quot;true&quot;
           requiresQuestionAndAnswer=&quot;true&quot;
           passwordAttemptWindow=&quot;10&quot;
           applicationName=&quot;/&quot;
           requiresUniqueEmail=&quot;false&quot;
           passwordFormat=&quot;Hashed&quot;
           name=&quot;SqlMember&quot;
           type=&quot;System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt;
        &lt;add name=&quot;i&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
   &lt;/providers&gt;
 &lt;/membership&gt;
      
 &lt;roleManager defaultProvider=&quot;AspNetWindowsTokenRoleProvider&quot; enabled=&quot;true&quot; cacheRolesInCookie=&quot;false&quot;&gt;
    &lt;providers&gt;
        &lt;clear /&gt;
        &lt;add connectionStringName=&quot;AspNetSqlMembershipProvider&quot;
           applicationName=&quot;/&quot;
           name=&quot;SqlRole&quot;
           type=&quot;System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt;
        &lt;add applicationName=&quot;/&quot;
           name=&quot;AspNetWindowsTokenRoleProvider&quot;
           type=&quot;System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt;
    &lt;/providers&gt;

 &lt;/roleManager&gt;

</pre></p>
<ul>
<li><strong><strong>Modify STS web.config file </strong></strong>
<ul type="circle">
<li>From the IIS, select the SecurityTokenServiceApplication under SharePoint Web Services and click Explore &#8211; it should take you to the C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\SecurityToken</li>
</ul>
<ul type="circle">
<li>Find the &lt;/system.net&gt; entry and add the following XML directly below it</li>
</ul>
</li>
</ul>
<p><pre class="brush: xml;">
  &lt;connectionStrings&gt;
     &lt;clear /&gt;     
     &lt;add name=&quot;AspNetSqlMembershipProvider&quot; connectionString=&quot;data source=SP2010VM;Integrated Security=SSPI;Initial Catalog=aspnetdb&quot;  providerName=&quot;System.Data.SqlClient&quot; /&gt;
  &lt;/connectionStrings&gt;   
  &lt;system.web&gt;
    &lt;membership defaultProvider=&quot;i&quot;&gt;
     &lt;providers&gt;
        &lt;clear /&gt;
       &lt;add connectionStringName=&quot;AspNetSqlMembershipProvider&quot;
          enablePasswordRetrieval=&quot;false&quot;
          enablePasswordReset=&quot;true&quot;
          requiresQuestionAndAnswer=&quot;true&quot;
          passwordAttemptWindow=&quot;10&quot;
          applicationName=&quot;/&quot;
          requiresUniqueEmail=&quot;false&quot;
          passwordFormat=&quot;Hashed&quot;
          name=&quot;SqlMember&quot;
          type=&quot;System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0,
  Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt;
      &lt;add name=&quot;i&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
     &lt;/providers&gt;
   &lt;/membership&gt;
  
   &lt;roleManager defaultProvider=&quot;c&quot; enabled=&quot;true&quot;&gt;
     &lt;providers&gt;
     &lt;clear /&gt;
        &lt;add connectionStringName=&quot;AspNetSqlMembershipProvider&quot;         applicationName=&quot;/&quot;
           name=&quot;SqlRole&quot;
           type=&quot;System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt;
        &lt;add name=&quot;c&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
     &lt;/providers&gt;
   &lt;/roleManager&gt;
  &lt;/system.web&gt;   
</pre></p>
<p><strong>Step 5 &#8211; Configure the SharePoint Authorization and Verify the Access for the both AD (Windows) and SQL(Forms Based) Users</strong></p>
<ul>
<li>Verify AD Groups and Users are available to test
<ul type="circle">
<li>Sample Global Security Groups &#8211; adowners,adcontributors,adreaders</li>
</ul>
<ul type="circle">
<li>Sample Users &#8211; adowner,adcontributor,adreader</li>
</ul>
<ul type="circle">
<li>Add AD Groups and SQL Roles as SharePoint Security Groups &#8211; Readers, Contributors, and Owners</li>
</ul>
</li>
<li>Verify that central admin and content web application people picker finds both AD groups/users and SQL roles/users &#8211; Please note that SQL Roles can be searched with the full role name while SQL user names can be searched via wildcard</li>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/5-people-picker-with-sql.jpg"><img title="5-People Picker with SQL" src="http://nikspatel.files.wordpress.com/2011/12/5-people-picker-with-sql.jpg?w=509&#038;h=430" alt="" width="509" height="430" /></a></p>
<ul>
<li>Add AD users and SQL users into SharePoint Security Groups via AD Groups/SQL Roles and verify proper access &#8211; read-only, contribute, full control</li>
</ul>
<p>Following screenshot demonstrate that I was able to successfully login as SQL User &#8211; SQLOwner</p>
<p><a href="http://nikspatel.files.wordpress.com/2011/12/5-fba-login-with-sqlowner.jpg"><img title="5-FBA Login with SQLOwner" src="http://nikspatel.files.wordpress.com/2011/12/5-fba-login-with-sqlowner.jpg?w=800&#038;h=556" alt="" width="800" height="556" /></a></p>
<p><strong>More Resources</strong></p>
<ul type="disc">
<li>Forms Based Authentication in SharePoint 2010 using Sql Membership Providers &#8211; <a href="http://sharepoint-2010-world.blogspot.com/2011/03/forms-based-authentication-in.html">http://sharepoint-2010-world.blogspot.com/2011/03/forms-based-authentication-in.html</a></li>
<li>Andy&#8217;s Blog
<ul type="disc">
<li>UAG – How to Authenticate users against SQL Server &#8211; <a href="http://microsoft-iag.blogspot.com/2010/10/uag-how-to-authenticate-users-against.html">http://microsoft-iag.blogspot.com/2010/10/uag-how-to-authenticate-users-against.html</a></li>
<li>UAG–Enable SSO by passing user credentials to formula based Web Applications &#8211; <a href="http://microsoft-iag.blogspot.com/2010/10/uagenable-sso-by-passing-user.html">http://microsoft-iag.blogspot.com/2010/10/uagenable-sso-by-passing-user.html</a></li>
</ul>
</li>
<li>Great Article &#8211; It Woks &#8211; Mirjam van Olst
<ul type="disc">
<li>Configuring claims and forms based authentication for use with a SQL provider in SharePoint 2010 &#8211; <a href="http://www.sharepointchick.com/archive/2010/05/07/configuring-claims-and-forms-based-authentication-for-use-with-a.aspx">http://www.sharepointchick.com/archive/2010/05/07/configuring-claims-and-forms-based-authentication-for-use-with-a.aspx</a></li>
</ul>
</li>
<li>Jeremy Jameson &#8211; CBA and SQL Server
<ul type="disc">
<li><a href="http://blogs.msdn.com/b/jjameson/archive/2011/02/19/configuring-claims-based-authentication-in-sharepoint-se">http://blogs.msdn.com/b/jjameson/archive/2011/02/19/configuring-claims-based-authentication-in-sharepoint-server-2010.aspx</a></li>
<li><a href="http://blogs.msdn.com/b/jjameson/archive/2011/02/25/claims-login-web-part-for-sharepoint-server-2010.aspx">http://blogs.msdn.com/b/jjameson/archive/2011/02/25/claims-login-web-part-for-sharepoint-server-2010.aspx</a></li>
</ul>
</li>
</ul>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/administration/admin-general/'>Admin General</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1380/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1380&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2011/12/22/step-by-step-guide-to-configure-sharepoint-2010-forms-based-authentication-with-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/1-asp-sql-db.jpg" medium="image">
			<media:title type="html">1-ASP SQL DB</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/2-membership-seeder-tool.jpg" medium="image">
			<media:title type="html">2-Membership Seeder Tool</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/3-sql-users.jpg" medium="image">
			<media:title type="html">3-SQL Users</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/4-sql-fba.jpg" medium="image">
			<media:title type="html">4-SQL FBA</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/5-people-picker-with-sql.jpg" medium="image">
			<media:title type="html">5-People Picker with SQL</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/5-fba-login-with-sqlowner.jpg" medium="image">
			<media:title type="html">5-FBA Login with SQLOwner</media:title>
		</media:content>
	</item>
		<item>
		<title>Code Snippet &#8211; Programmatically Access Root Site Collection in Multi-Site Collection Heirarchy</title>
		<link>http://nikspatel.wordpress.com/2011/12/21/code-snippet-programmatically-access-root-site-collection-in-multi-site-collection-heirarchy/</link>
		<comments>http://nikspatel.wordpress.com/2011/12/21/code-snippet-programmatically-access-root-site-collection-in-multi-site-collection-heirarchy/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 22:27:34 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[Code Snippets]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1370</guid>
		<description><![CDATA[It&#8217;s fairly common need in multi-site collection environment to access root site collection programmatically from the current sub site collection or sub site. It&#8217;s kind of ironic that one of my colleagues asked me same question while working on our multi-site collection environment this week. To access the root site collection from the sub site [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1370&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s fairly common need in multi-site collection environment to access root site collection programmatically from the current sub site collection or sub site. It&#8217;s kind of ironic that one of my colleagues asked me same question while working on our multi-site collection environment this week.</p>
<p>To access the root site collection from the sub site or sub site collections in given web application, you have to somehow access the SPWebApplication object. It&#8217;s easy to access SPWebApplication object using SPSite object’s WebApplication property. Once you have access to the SPWebApplication object, you can access first site collection from SPWebApplication.Sites collection to get the handle of the root site collection.</p>
<p>From the sub site, use the following line of code to access root site collection and its URL.</p>
<p><pre class="brush: csharp;">
string rootSiteCollectionURL = SPContext.Current.Web.Site.WebApplication.Sites[0].Url;

</pre></p>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/development/code-snippets/'>Code Snippets</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1370/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1370&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2011/12/21/code-snippet-programmatically-access-root-site-collection-in-multi-site-collection-heirarchy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>
	</item>
		<item>
		<title>Step by Step Guide to Configure SharePoint 2010 Forms Based Authentication with ADLDS</title>
		<link>http://nikspatel.wordpress.com/2011/12/12/step-by-step-guide-to-configure-sharepoint-2010-forms-based-authentication-with-adlds/</link>
		<comments>http://nikspatel.wordpress.com/2011/12/12/step-by-step-guide-to-configure-sharepoint-2010-forms-based-authentication-with-adlds/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 03:35:44 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[Admin General]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1333</guid>
		<description><![CDATA[It is very common to use Active Directory Lightweight Directory Services &#8211; ADLDS in Windows 2008 environments (ADAM in Windows 2003 environments) to store external users in extranet environments for physical separation of the internal and external users. Typically external identity systems require specific schema changes and AD administrators don’t allow applications to store their [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1333&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It is very common to use Active Directory Lightweight Directory Services &#8211; ADLDS in Windows 2008 environments (ADAM in Windows 2003 environments) to store external users in extranet environments for physical separation of the internal and external users. Typically external identity systems require specific schema changes and AD administrators don’t allow applications to store their users in the main organization domain directory for security concerns.</p>
<p>Recently I was able to successfully configure SharePoint 2010 Claims based authentication for the ADLDS using Forms based authentication. This article describes 5-Steps guide to configure ADLDS in Single-Server SharePoint 2010 environment on Windows 2008 R2 server for Forms Based Authentication in non-SSL environment. You can easily adopt this guide to use in SSL environment.</p>
<p>Note: If you are looking for detailed step by step guide with lots of screenshots, you can download<strong> <a href="http://dl.dropbox.com/u/5666151/SharePoint%202010%20Claims%20-%20Configuring%20FBA%20with%20ADLDS.pdf" target="_blank">55-pages step by step PDF guide</a> </strong>demonstrating same steps discussed in this article.</p>
<p><strong>Step 1 &#8211; Configure ADLDS Environment</strong></p>
<ul>
<li>Install ADLDS Server Role (<a href="http://technet.microsoft.com/en-us/library/cc754486(WS.10).aspx">http://technet.microsoft.com/en-us/library/cc754486(WS.10).aspx</a>)</li>
<li>Create ADLDS Instance (e.g. SP2010VM.niks.local:52983) and Partition (e.g. O=NIKSADLDS,C=LOCAL) (<a href="http://technet.microsoft.com/en-us/library/cc725619(WS.10).aspx">http://technet.microsoft.com/en-us/library/cc725619(WS.10).aspx</a>)</li>
<li>Connect to ADLDS Instance from ADSI EDIT Tool (<a href="http://technet.microsoft.com/en-us/library/cc732675(WS.10).aspx">http://technet.microsoft.com/en-us/library/cc732675(WS.10).aspx</a>)</li>
<li>Create Container &#8211; CN for Groups and Users (<a href="http://technet.microsoft.com/en-us/library/cc730701(WS.10).aspx">http://technet.microsoft.com/en-us/library/cc730701(WS.10).aspx</a>)</li>
<ul>
<li>Create CN (e.g. WPSCN)</li>
<li>Create Users (e.g. WPSCNAdminUser, WPSCNMemberUser, WPSCNReaderUser)</li>
<ul>
<li>Reset Passwords of all Users</li>
<li>Enable Users</li>
<ul>
<li>Set ms-DS-UserAccountDisabled = FALSE</li>
<li>Set ms-DS-UserDontExpirePassword = FALSE</li>
<li>Set ms-DS-UserPasswordNotRequired = FALSE</li>
</ul>
</ul>
<ul>
<li>Make Sure User&#8217;s cn, distinguishedName, and userPrincipalName is filled out</li>
<li>Make Sure userPrincipalName  has no spaces.</li>
</ul>
</ul>
<ul>
<li>Create Groups (e.g. WPSCN Admin Users, WPSCN Member Users, WPSCN Reader Users)</li>
<ul>
<li>Make Sure Group&#8217;s cn, distinguishedName is filled out</li>
</ul>
</ul>
<ul>
<li>Add Users to the Groups &#8211; Use Group&#8217;s Member Property</li>
</ul>
</ul>
<p style="padding-left:30px;"><img title="ADLDS Settings" src="http://nikspatel.files.wordpress.com/2011/12/adlds-settings1.jpg?w=950&#038;h=441" alt="" width="950" height="441" /></p>
<p> <strong>Step 2 &#8211; Create New Web Application with Forms Based Authentication</strong></p>
<ul>
<li>Add DNS entries for the host headers (e.g. adldsportal.niks.local)</li>
<li>Create New Web Application with Claims Based Authentication</li>
<ul>
<li>Specify Port-80 and Host Header (e.g. adldsportal.niks.local)</li>
<li>Select Windows Authentication and Forms Based Authentication</li>
<ul>
<li>Specify Membership Provider &#8211; LdapMember and Role Provider &#8211; LdapRole</li>
</ul>
</ul>
<ul>
<li>Specify proper content database name and leave everything else as it is</li>
<li>Create New Site Collection and specify Niks\Administrator as Site Collection Admin</li>
<li>Verify the Windows Authentication by logging to http:\\adldsportal.niks.local as Using Niks\Administrator</li>
</ul>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/claims-web-app-configuration1.jpg"><img title="Claims Web App Configuration" src="http://nikspatel.files.wordpress.com/2011/12/claims-web-app-configuration1.jpg?w=493&#038;h=395" alt="" width="493" height="395" /></a></p>
<p><strong>Step 3 &#8211; Grant “Application Pool” accounts READ Permission on ADLDS instance</strong></p>
<ul>
<li>Add Content SharePoint Web Application “Application Pool”, Central Administration Web Application “Application Pool”, and Security Token Service “Application Pool”  accounts READERS Roles on ADLDS instance. This would allow SharePoint to browse ADLDS store in least privileged scenario.</li>
<li>In My Sandbox, both ADLDS Administrators and SharePoint Application Pool accounts are same so, there is no need for explicit setting of permissions but in real world least privileged environment, these application pool accounts will be different and must be granted permission on the ADLDS. Failure of granting permissions for STS application Pool account may cause login failure issues. Failure of granting permissions for Web Application Pool accounts may cause people picker failure.</li>
</ul>
<p style="padding-left:30px;"><a href="http://nikspatel.files.wordpress.com/2011/12/iis-app-pools1.jpg"><img title="IIS App Pools" src="http://nikspatel.files.wordpress.com/2011/12/iis-app-pools1.jpg?w=872&#038;h=475" alt="" width="872" height="475" /></a></p>
<p style="padding-left:30px;"><a href="http://nikspatel.files.wordpress.com/2011/12/adlds-readers-permission1.jpg"><img title="ADLDS Readers Permission" src="http://nikspatel.files.wordpress.com/2011/12/adlds-readers-permission1.jpg?w=1024&#038;h=573" alt="" width="1024" height="573" /></a></p>
<p><strong>Step 4 &#8211; Update the Web Config Files for FBA – Content Web App, Central Admin Web App, and STS</strong></p>
<ul>
<li>Follow Mirjam&#8217;s blog, it works &#8211; <a href="http://sharepointchick.com/archive/2010/05/06/configuring-claims-and-forms-based-authentication-for-use">http://sharepointchick.com/archive/2010/05/06/configuring-claims-and-forms-based-authentication-for-use-with-an.aspx</a></li>
<li>Before you make any changes, Please make sure to have a copy of all the original web.config files before making changes.</li>
<li>Please note that these web.config entries would work for ADLDS Containers, ADLDS Group Objects, and ADLDS Users Objects. If you are using either OUs, Persons, or other ADLDS objects, please modify the LDAP membership and roles providers entries as needed.</li>
<li><strong>Content Web App Configuration</strong></li>
<ul>
<li>Update adldsportal.niks.local web application web.config &#8211; C:\inetpub\wwwroot\wss\VirtualDirectories\adldsportal.niks.local80\web.config</li>
<li>Replace the  &lt;PeoplePickerWildcards&gt; entry with following XML</li>
</ul>
</ul>
<p><pre class="brush: xml;">
      &lt;PeoplePickerWildcards&gt;
        &lt;clear /&gt;
        &lt;add key=&quot;AspNetSqlMembershipProvider&quot; value=&quot;%&quot; /&gt;
        &lt;add key=&quot;LdapMember&quot; value=&quot;*&quot; /&gt;
        &lt;add key=&quot;LdapRole&quot; value=&quot;*&quot; /&gt;
      &lt;/PeoplePickerWildcards&gt;
</pre></p>
<ul>
<li>Locate the &lt;membership&gt; entry and Replace everything from &lt;membership&gt; to &lt;/membership&gt; with the following XML</li>
</ul>
<p><pre class="brush: xml;">
      &lt;membership defaultProvider=&quot;i&quot;&gt;
        &lt;providers&gt;
          &lt;clear /&gt;
          &lt;add name=&quot;LdapMember&quot; type=&quot;Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; server=&quot;SP2010VM.niks.local&quot; port=&quot;52983&quot; useSSL=&quot;false&quot; userDNAttribute=&quot;distinguishedName&quot; userNameAttribute=&quot;userPrincipalName&quot; userContainer=&quot;CN=WPSCN,O=NIKSADLDS,C=LOCAL&quot; userObjectClass=&quot;user&quot; userFilter=&quot;(ObjectClass=user)&quot; scope=&quot;Subtree&quot; otherRequiredUserAttributes=&quot;cn&quot; /&gt;
          &lt;add name=&quot;i&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
        &lt;/providers&gt;
      &lt;/membership&gt;
</pre></p>
<ul>
<li>Locate the &lt;roleManager&gt; entry and Replace everything from &lt;roleManager&gt; to &lt;/roleManager&gt; with the following XML</li>
</ul>
<p><pre class="brush: xml;">
      &lt;roleManager defaultProvider=&quot;c&quot; enabled=&quot;true&quot; cacheRolesInCookie=&quot;false&quot;&gt;
        &lt;providers&gt;
          &lt;clear /&gt;
          &lt;add name=&quot;LdapRole&quot; type=&quot;Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; server=&quot;SP2010VM.niks.local&quot; port=&quot;52983&quot; useSSL=&quot;false&quot; groupContainer=&quot;CN=WPSCN,O=NIKSADLDS,C=LOCAL&quot; groupNameAttribute=&quot;cn&quot; groupMemberAttribute=&quot;member&quot; dnAttribute=&quot;distinguishedName&quot; userNameAttribute=&quot;userPrincipalName&quot; groupFilter=&quot;(ObjectClass=group)&quot; userFilter=&quot;(ObjectClass=user)&quot; scope=&quot;Subtree&quot; /&gt;
          &lt;add name=&quot;c&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
        &lt;/providers&gt;
      &lt;/roleManager&gt;
</pre></p>
<ul>
<li><strong>Central Admin Web Application</strong></li>
<ul>
<li>Update Central Admin Web Application web.config file (to find central admin web.config &#8211; go to the IIS, select central admin, and click Explore to find contents)</li>
<li>Replace the  &lt;PeoplePickerWildcards&gt; entry with following XML</li>
</ul>
</ul>
<p><pre class="brush: xml;">
      &lt;PeoplePickerWildcards&gt;
        &lt;clear /&gt;
        &lt;add key=&quot;AspNetSqlMembershipProvider&quot; value=&quot;%&quot; /&gt;
        &lt;add key=&quot;LdapMember&quot; value=&quot;*&quot; /&gt;
        &lt;add key=&quot;LdapRole&quot; value=&quot;*&quot; /&gt;
      &lt;/PeoplePickerWildcards&gt;
</pre></p>
<ul>
<li>Find the &lt;system.web&gt; entry and add the following XML directly below it. By default, there should be 1 blank Membership or RoleManager entry. Double check whether the &lt;membership&gt; and &lt;rolemanager&gt; entries only exist ones. Delete any double entries.</li>
</ul>
<p><pre class="brush: xml;">
    &lt;membership defaultProvider=&quot;i&quot;&gt;
      &lt;providers&gt;
        &lt;clear /&gt;
        &lt;add name=&quot;LdapMember&quot;
   type=&quot;Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot;
   server=&quot;SP2010VM.niks.local&quot;
   port=&quot;52983&quot;
   useSSL=&quot;false&quot;
   userDNAttribute=&quot;distinguishedName&quot;
   userNameAttribute=&quot;userPrincipalName&quot;
   userContainer=&quot;CN=WPSCN,O=NIKSADLDS,C=LOCAL&quot;
   userObjectClass=&quot;user&quot;
   userFilter=&quot;(ObjectClass=user)&quot;
   scope=&quot;Subtree&quot;
   otherRequiredUserAttributes=&quot;cn&quot; /&gt;
        &lt;add name=&quot;i&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
     &lt;/providers&gt;
    &lt;/membership&gt;
  
  &lt;roleManager defaultProvider=&quot;AspNetWindowsTokenRoleProvider&quot; enabled=&quot;true&quot; cacheRolesInCookie=&quot;false&quot;&gt;
        &lt;providers&gt;
          &lt;clear /&gt;
         &lt;add name=&quot;LdapRole&quot;
   type=&quot;Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot;
   server=&quot;SP2010VM.niks.local&quot;
   port=&quot;52983&quot;
   useSSL=&quot;false&quot;
   groupContainer=&quot;CN=WPSCN,O=NIKSADLDS,C=LOCAL&quot;
   groupNameAttribute=&quot;cn&quot;
   groupMemberAttribute=&quot;member&quot;
   dnAttribute=&quot;distinguishedName&quot;
   userNameAttribute=&quot;userPrincipalName&quot;
   groupFilter=&quot;(ObjectClass=group)&quot;
   userFilter=&quot;(ObjectClass=user)&quot;
   scope=&quot;Subtree&quot; /&gt;
        &lt;add applicationName=&quot;/&quot;
           name=&quot;AspNetWindowsTokenRoleProvider&quot;
           type=&quot;System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; /&gt;
       &lt;/providers&gt;
  &lt;/roleManager&gt;
</pre></p>
<ul>
<li><strong>Modify STS web.config file</strong></li>
<ul>
<li>From the IIS, select the SecurityTokenServiceApplication under SharePoint Web Services and click Explore &#8211; it should take you to the C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\SecurityToken</li>
<li>Find the &lt;/system.net&gt; entry and add the following XML directly below it</li>
</ul>
</ul>
<p><pre class="brush: xml;">
&lt;system.web&gt; 
   &lt;membership defaultProvider=&quot;i&quot;&gt;
      &lt;providers&gt;
         &lt;clear /&gt;
         &lt;add name=&quot;LdapMember&quot;
    type=&quot;Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot;
    server=&quot;SP2010VM.niks.local&quot;
    port=&quot;52983&quot;
    useSSL=&quot;false&quot;
    userDNAttribute=&quot;distinguishedName&quot;
    userNameAttribute=&quot;userPrincipalName&quot;
    userContainer=&quot;CN=WPSCN,O=NIKSADLDS,C=LOCAL&quot;
    userObjectClass=&quot;user&quot;
    userFilter=&quot;(ObjectClass=user)&quot;
    scope=&quot;Subtree&quot;
    otherRequiredUserAttributes=&quot;cn&quot; /&gt;
       &lt;add name=&quot;i&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
      &lt;/providers&gt;
   &lt;/membership&gt;
   
   &lt;roleManager defaultProvider=&quot;c&quot; enabled=&quot;true&quot;&gt;
      &lt;providers&gt;
    &lt;clear /&gt;
    &lt;add name=&quot;LdapRole&quot;
     type=&quot;Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot;
     server=&quot;SP2010VM.niks.local&quot;
     port=&quot;52983&quot;
     useSSL=&quot;false&quot;
     groupContainer=&quot;CN=WPSCN,O=NIKSADLDS,C=LOCAL&quot;
     groupNameAttribute=&quot;cn&quot;
     groupMemberAttribute=&quot;member&quot;
     dnAttribute=&quot;distinguishedName&quot;
     userNameAttribute=&quot;userPrincipalName&quot;
     groupFilter=&quot;(ObjectClass=group)&quot;
     userFilter=&quot;(ObjectClass=user)&quot;
     scope=&quot;Subtree&quot; /&gt;
         &lt;add name=&quot;c&quot; type=&quot;Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; /&gt;
      &lt;/providers&gt;
   &lt;/roleManager&gt;
&lt;/system.web&gt;
</pre></p>
<p><strong>Step 5 &#8211; Configure the SharePoint Authorization and Verify the Access for the both AD (Windows) and ADLDS (Forms Based) Users</strong></p>
<ul>
<li>Verify ADLDS Users and Groups are available to test</li>
<ul>
<li>Sample Roles &#8211; adldsowners, adldscontributors,adldsreaders</li>
</ul>
<ul>
<li>Sample Users &#8211; adldsowner,adldscontributor,adldsreader and add them to specific groups</li>
</ul>
</ul>
<ul>
<li>Verify AD Groups and Users are available to test</li>
<ul>
<li>Sample Global Security Groups &#8211; adowners,adcontributors,adreaders</li>
</ul>
<ul>
<li>Sample Users &#8211; adowner,adcontributor,adreader</li>
</ul>
</ul>
<ul>
<li>Verify that central admin people picker finds for both AD groups/users and ADLDS roles/users &#8211; Please note that ADLDS roles can be searched with the full role name while ADLDS user names can be searched via wildcard</li>
<li>Configure AD Groups/Users and ADLDS Roles/Users Membership to the SharePoint Security Groups &#8211; Readers, Contributors, and Owners</li>
<li>Verify that AD users and ADLDS users added in SharePoint Security Groups via AD Groups/ADLDS Roles have proper access &#8211; read-only, contribute, full control</li>
</ul>
<p style="padding-left:30px;">Following screenshot demonstrate that I was able to successfully login as ADLDS User &#8211; WPSCNAdminUser</p>
<p style="padding-left:30px;"><a href="http://nikspatel.files.wordpress.com/2011/12/logging-in-as-wpscnadminuser1.jpg"><img title="Logging in as WPSCNAdminUser" src="http://nikspatel.files.wordpress.com/2011/12/logging-in-as-wpscnadminuser1.jpg?w=865&#038;h=556" alt="" width="865" height="556" /></a></p>
<p><strong>More Resources</strong></p>
<ul type="disc">
<li>SharePoint 2010 and ASP.NET Form Authentication with ADAM</li>
<ul type="circle">
<li>ADAM-Forms Based Authentication in SharePoint 2010 &#8211; <a href="http://sharepoint-2010-world.blogspot.com/2011/03/adam-forms-based-authentication-in.html">http://sharepoint-2010-world.blogspot.com/2011/03/adam-forms-based-authentication-in.html</a></li>
</ul>
</ul>
<ul type="disc">
<li>SharePoint 2010 and ASP.NET Form Based Authentication with ADLDS</li>
<ul type="circle">
<li>Installing the Active Directory Lightweight Directory Services [AD-LDS] &#8211; <a href="http://sharepoint-2010-world.blogspot.com/2011/03/installing-active-directory-lightweight.html">http://sharepoint-2010-world.blogspot.com/2011/03/installing-active-directory-lightweight.html</a></li>
</ul>
<ul type="circle">
<li>AD LDS Getting Started Step-by-Step Guide &#8211; <a href="http://technet.microsoft.com/en-us/library/cc770639(WS.10).aspx">http://technet.microsoft.com/en-us/library/cc770639(WS.10).aspx</a></li>
</ul>
<ul type="circle">
<li>ADLDS Forms Based Authentication in SharePoint 2010</li>
<ul type="disc">
<li><a href="http://sharepoint-2010-world.blogspot.com/2011/03/adlds-forms-based-authentication-in.html">http://sharepoint-2010-world.blogspot.com/2011/03/adlds-forms-based-authentication-in.html</a></li>
</ul>
</ul>
<ul type="circle">
<li>ADLDS Forms Based Authentication in SharePoint 2007</li>
<ul type="disc">
<li><a href="http://sharepointgeorge.com/2009/ad-lds-sharepoint-and-forms-based-authentication/">http://sharepointgeorge.com/2009/ad-lds-sharepoint-and-forms-based-authentication/</a></li>
</ul>
<ul type="disc">
<li><a href="http://www.gk.id.au/2009/05/ad-lds-sharepoint-and-forms-based.html">http://www.gk.id.au/2009/05/ad-lds-sharepoint-and-forms-based.html</a></li>
</ul>
<ul type="disc">
<li><a href="http://leedale.wordpress.com/2008/09/11/moss-2007-forms-based-authentication-using-ad-lds-and-windo">http://leedale.wordpress.com/2008/09/11/moss-2007-forms-based-authentication-using-ad-lds-and-windows-server-2008/</a></li>
</ul>
</ul>
</ul>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/administration/admin-general/'>Admin General</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1333/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1333&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2011/12/12/step-by-step-guide-to-configure-sharepoint-2010-forms-based-authentication-with-adlds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/adlds-settings1.jpg" medium="image">
			<media:title type="html">ADLDS Settings</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/claims-web-app-configuration1.jpg" medium="image">
			<media:title type="html">Claims Web App Configuration</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/iis-app-pools1.jpg" medium="image">
			<media:title type="html">IIS App Pools</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/adlds-readers-permission1.jpg" medium="image">
			<media:title type="html">ADLDS Readers Permission</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/logging-in-as-wpscnadminuser1.jpg" medium="image">
			<media:title type="html">Logging in as WPSCNAdminUser</media:title>
		</media:content>
	</item>
		<item>
		<title>What really happens during SharePoint 2010 Solution Deployment/Retraction and Feature Activation/Deactivation Process?</title>
		<link>http://nikspatel.wordpress.com/2011/12/05/behind-the-screen-what-really-happens-during-solution-deploymentretraction-feature-activationdeactivation-process/</link>
		<comments>http://nikspatel.wordpress.com/2011/12/05/behind-the-screen-what-really-happens-during-solution-deploymentretraction-feature-activationdeactivation-process/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 04:59:37 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[Dev General]]></category>
		<category><![CDATA[Dev PowerShell]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1315</guid>
		<description><![CDATA[Have you ever wondered what really happens when you deploy/retract SharePoint WSPs and Activate/Deactivate site collection or sub site level features at the farm level? As you execute different PowerShell commands or activate/deactivate features from browser interface, SharePoint 2010 makes several changes at the different places on the servers and databases. This article provides high [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1315&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered what really happens when you deploy/retract SharePoint WSPs and Activate/Deactivate site collection or sub site level features at the farm level? As you execute different PowerShell commands or activate/deactivate features from browser interface, SharePoint 2010 makes several changes at the different places on the servers and databases.</p>
<p>This article provides high level overview of what really happens when you execute different farm level PowerShell commands. Hopefully it will be helpful. </p>
<div>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td> </td>
<td><strong>Central Admin</strong></td>
<td><strong>Site/Web Level Features</strong></td>
<td><strong>GAC</strong></td>
<td><strong>Web.Config</strong></td>
<td><strong>14-Root </strong><strong>Features</strong></td>
<td><strong>SharePoint Config DB, Objects Table &#8211; Solutions</strong></td>
<td><strong>SharePoint Config DB, Objects Table &#8211; Features</strong></td>
<td><strong>Web App Content DB, Features Table</strong></td>
</tr>
<tr>
<td><strong>Add-SPSolution</strong></td>
<td>Solution Added but Not Deployed</td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>Yes &#8211; Solution Definition Added</td>
<td>N/A</td>
<td>N/A</td>
</tr>
<tr>
<td><strong>Install-SPSolution</strong></td>
<td>Deployed to Web App</td>
<td>Installed Feature</td>
<td>Yes &#8211; DLLs Added</td>
<td>Yes &#8211; Safe Control Entries Added</td>
<td>Yes &#8211; Features Added</td>
<td>Yes &#8211; Solution Definition Still Exists</td>
<td>Yes &#8211; Feature Definition Added</td>
<td>N/A</td>
</tr>
<tr>
<td><strong>Enable-SPFeature</strong></td>
<td>Solution Still Deployed</td>
<td>Activated feature to Site/Web</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Solution Definition Still Exists</td>
<td>Yes &#8211; Feature Definition Still Exists</td>
<td>YES &#8211; Feature Activation Link Added</td>
</tr>
<tr>
<td><strong>Disable-SPFeature</strong></td>
<td>Solution Still Deployed</td>
<td>Deactivated feature from Site/Web</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Solution Definition Still Exists</td>
<td>Yes &#8211; Feature Definition Still Exists</td>
<td>NO &#8211; Feature Activation Link Deleted</td>
</tr>
<tr>
<td><strong>UnInstall-SPFeature</strong></td>
<td>Solution Still Deployed</td>
<td>Uninstalled feature</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Still Exists</td>
<td>Yes &#8211; Solution Definition Still Exists</td>
<td>No &#8211; Feature Definition Deleted</td>
<td>N/A</td>
</tr>
<tr>
<td><strong>UnInstall-SPSolution</strong></td>
<td>Retracted from Web App</td>
<td>Uninstalled feature</td>
<td>No &#8211; DLLs Deleted</td>
<td>No &#8211; Safe Control Entries Deleted</td>
<td>No &#8211; Features Deleted</td>
<td>Yes &#8211; Solution Definition Still Exists</td>
<td>No &#8211; Feature Definition Deleted</td>
<td>N/A</td>
</tr>
<tr>
<td><strong>Remove-SPSolution</strong></td>
<td>Solution Deleted</td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>Yes &#8211; Solution Definition Deleted</td>
<td>N/A</td>
<td>N/A</td>
</tr>
</tbody>
</table>
</div>
<div> </div>
<div> </div>
<div> </div>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/development/dev-general/'>Dev General</a>, <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/development/dev-powershell/'>Dev PowerShell</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1315/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1315&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2011/12/05/behind-the-screen-what-really-happens-during-solution-deploymentretraction-feature-activationdeactivation-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>
	</item>
		<item>
		<title>Code Snippet &#8211; Programmatically Create Web Application Managed Paths in SharePoint 2010</title>
		<link>http://nikspatel.wordpress.com/2011/12/05/code-snippet-programmatically-create-web-application-managed-paths-in-sharepoint-2010/</link>
		<comments>http://nikspatel.wordpress.com/2011/12/05/code-snippet-programmatically-create-web-application-managed-paths-in-sharepoint-2010/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 00:17:13 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[Code Snippets]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1306</guid>
		<description><![CDATA[While creating site collections, it is fairly common to create site collections at the more user friendly URLs. By default, each web application has two managed paths &#8211; Explicitly named single site collection managed path &#8220;(root)&#8221; which would allow only 1 site collection at the root path, http://&#60;WebAppURL&#62;/ and Wildcard managed path &#8220;sites&#8221; to host [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1306&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While creating site collections, it is fairly common to create site collections at the more user friendly URLs. By default, each web application has two managed paths &#8211; Explicitly named single site collection managed path &#8220;(root)&#8221; which would allow only 1 site collection at the root path, <a href="http://%3cwebappurl%3e/">http://&lt;WebAppURL&gt;/</a> and Wildcard managed path &#8220;sites&#8221; to host multiple site collections which would allow users to create multiple site collections at the <a href="http://%3cwebappurl%3e/sites/">http://&lt;WebAppURL&gt;/sites/</a> path.</p>
<p><a href="http://nikspatel.files.wordpress.com/2011/12/default-managed-path.jpg"><img title="Default Managed Path" src="http://nikspatel.files.wordpress.com/2011/12/default-managed-path.jpg?w=504&#038;h=495" alt="" width="504" height="495" /></a></p>
<p>To automate hundreds or thousands of site collections creation process for a given web application, you can create either explicit or wildcard managed path programmatically. Following code snippets shows two different ways to create managed paths. Both ways shows different ways to access the SPWebApplication application object &#8211; using URI or SPSite to create managed path.</p>
<p><pre class="brush: csharp;">

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;

namespace CodeSnippets
{
    class Program
    {
        static void Main(string[] args)
        {
            //Retrieve the Input Arguments
            string url = string.Empty;
             if (args.Length &gt; 0)
            {
                Console.WriteLine(&quot;Input Web App URL: &quot; + args[0].ToString());
                url = args[0].ToString();
            }
            else
            {
                url = &quot;&lt;a href=&quot;http://sp2010vm:1000/&quot;&gt;http://sp2010vm:1000&lt;/a&gt;&quot;;
            }

            //Create Managed Path
            CreateManagedPathUsingWebAppURI(url, &quot;teamsUri&quot;, true);
            CreateManagedPathUsingWebAppURI(url, &quot;salesUri&quot;, false);
            CreateManagedPathUsingSPSite(url, &quot;teamsSpSite&quot;, true);
            CreateManagedPathUsingSPSite(url, &quot;salesSpSite&quot;, false);
        }

        ////Method 1 - Create Web App object using URI
        private static void CreateManagedPathUsingWebAppURI(string webAppURL, string NewSiteCollectionName, bool isWildCardInclusion)
        {
            SPWebApplication spWebApp = SPWebApplication.Lookup(new Uri(webAppURL));
            SPPrefixCollection prefixColl = spWebApp.Prefixes;
            if (prefixColl.Contains(NewSiteCollectionName) == false)
            {
                if (isWildCardInclusion)
                {
                    SPPrefix prefix = spWebApp.Prefixes.Add(NewSiteCollectionName, SPPrefixType.WildcardInclusion);
                }
                else
                {
                    SPPrefix prefix = spWebApp.Prefixes.Add(NewSiteCollectionName, SPPrefixType.ExplicitInclusion);
                }
            }
        }

        //Method 2 - Reference Web App Object from SPSite
        private static void CreateManagedPathUsingSPSite(string webAppURL, string NewSiteCollectionName, bool isWildCardInclusion)
        {
            using (SPSite spSite = new SPSite(webAppURL))
            {
                SPWebApplication spWebApp = spSite.WebApplication;
                SPPrefixCollection prefixColl = spWebApp.Prefixes;
                if (prefixColl.Contains(NewSiteCollectionName) == false)
                {
                    if (isWildCardInclusion)
                    {
                        SPPrefix prefix = spWebApp.Prefixes.Add(NewSiteCollectionName, SPPrefixType.WildcardInclusion);
                    }
                    else
                    {
                        SPPrefix prefix = spWebApp.Prefixes.Add(NewSiteCollectionName, SPPrefixType.ExplicitInclusion);
                    }
                    spWebApp.Update(true);
                }
            }
        }
    }
}
</pre></p>
<p><a href="http://nikspatel.files.wordpress.com/2011/12/customt-managed-path.jpg"><img title="Customt Managed Path" src="http://nikspatel.files.wordpress.com/2011/12/customt-managed-path.jpg?w=502&#038;h=537" alt="" width="502" height="537" /></a></p>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/development/code-snippets/'>Code Snippets</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1306/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1306&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2011/12/05/code-snippet-programmatically-create-web-application-managed-paths-in-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/default-managed-path.jpg" medium="image">
			<media:title type="html">Default Managed Path</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/customt-managed-path.jpg" medium="image">
			<media:title type="html">Customt Managed Path</media:title>
		</media:content>
	</item>
		<item>
		<title>SharePoint 2010 Recycle Bin Capabilities – Do you know how it really works?</title>
		<link>http://nikspatel.wordpress.com/2011/12/04/sharepoint-2010-recycle-bin-capabilities-do-you-know-how-it-really-works/</link>
		<comments>http://nikspatel.wordpress.com/2011/12/04/sharepoint-2010-recycle-bin-capabilities-do-you-know-how-it-really-works/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 18:08:36 +0000</pubDate>
		<dc:creator>nikspatel</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://nikspatel.wordpress.com/?p=1293</guid>
		<description><![CDATA[Do you really know how 2-stage SharePoint Recycle bin works? If your answer is yes, please beware and ensure you are aware of what’s in this article. Recently one of my clients asked me question regarding how 2-stage SharePoint Recycle bin works and its impact on the database sizing. It was interesting because recycle bin [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1293&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Do you really know how 2-stage SharePoint Recycle bin works? If your answer is yes, please beware and ensure you are aware of what’s in this article. Recently one of my clients asked me question regarding how 2-stage SharePoint Recycle bin works and its impact on the database sizing. It was interesting because recycle bin and its impact on database sizing is one of the most overlooked topic in the SharePoint world. Not many people know that by default, SharePoint 2nd stage recycle bin would increase site collection storage quota to 50% of originally specified during site collection creation process. For the small site collection, it may not matter but for the larger site collections, this would make huge impact on overall architectural decisions.</p>
<p>I had been taking notes on how 2-stage SharePoint recycle bin works since MOSS 2007 days but never blogged about it because of its trivial nature. Knowing how 2-stage recycle bin really works is one of the most important weapons in SharePoint architect armory. Thanks to Todd Klindt and Shane Young’s SharePoint 2010 Administration book, I was able to refine my notes and here are hopefully all the information you need to know how 2-stage SharePoint recycle bin really works and how it can help you to make intelligent decisions around this most overlooked functionality.</p>
<p><strong>First-Stage/Site Level/End-User Recycle Bin</strong></p>
<p style="padding-left:30px;"> <a href="http://nikspatel.files.wordpress.com/2011/12/site-level-first-stage-recycle-bin1.jpg"><img title="Site level First Stage Recycle bin" src="http://nikspatel.files.wordpress.com/2011/12/site-level-first-stage-recycle-bin1.jpg?w=811&#038;h=444" alt="" width="811" height="444" /></a></p>
<ul type="disc">
<li>Accessible from the &#8220;Recycle Bin&#8221; link on the Quick Launch bar at the top level or sub site level</li>
<li>Available to the users with Contribute, Design, or Full Control Permissions</li>
<li>When user deletes the item in the list/library, items are moved to the first level recycle bin. It stays there until it remains purged by either the user or automatically deleted after number of days based on central admin recycle bin retention settings.</li>
<li>Users can restore the item from the recycle bin or permanently delete the item from the recycle bin</li>
<li>If second-stage recycle bin is not enabled, items deleted or automatically purged from this recycle bin will be permanently deleted from the content database.</li>
<li>Items located in this stage counts towards the Site Collection Quota.</li>
</ul>
<p><strong>Second-Stage/Site Collection Level Recycle Bin</strong></p>
<ul>
<li> Accessible from the Site Collection Administration section from the Site Settings page</li>
<li>Available to the users with Site Collection Administrators Role</li>
<li>When end-user deletes the items from their site recycle bin, it will be moved to the Site Collection recycle bin. It stays there until site collection administrators flush them or automatically deleted after number of days defined in central admin recycle bin retention settings or until the second stage recycle bin has reached its allocated size limit defined in the central admin second stage quota settings, in which case the oldest items are permanently deleted.</li>
<li>Items located in this stage doesn&#8217;t count towards the Site Collection Quota. Second-Stage Recycle Bin quota separately defined in the Central Administration per application basis.</li>
<li>Site Collection Administrator can manage both recycle bin</li>
<ul type="square">
<li>Rollup View of All First-Level/End-User Recycle Bin &#8211; Site Collection Admin can restore one or many items, delete one or many items or empty end-user recycle bin. This is rollup view of all the site level recycle bin at the Site Collection level.</li>
</ul>
</ul>
<p style="padding-left:60px;"><a href="http://nikspatel.files.wordpress.com/2011/12/sitecollection-level-end-user-recycle-bin1.jpg"><img title="SiteCollection level end-user Recycle bin" src="http://nikspatel.files.wordpress.com/2011/12/sitecollection-level-end-user-recycle-bin1.jpg?w=812&#038;h=321" alt="" width="812" height="321" /></a></p>
<ul type="disc">
<ul type="square">
<li>Site Collection Second-Stage Recycle Bin &#8211; All the items deleted from site level/first-level recycle bin gets moved to the second-stage recycle bin. Site Collection Admin can restore one or many items or permanently delete the items from the 2nd stage recycle bin and content database. Items deleted from this recycle bin is not recoverable.</li>
</ul>
</ul>
<p style="padding-left:60px;"> <a href="http://nikspatel.files.wordpress.com/2011/12/sitecollection-level-second-stage-recycle-bin1.jpg"><img title="SiteCollection level Second Stage Recycle bin" src="http://nikspatel.files.wordpress.com/2011/12/sitecollection-level-second-stage-recycle-bin1.jpg?w=810&#038;h=325" alt="" width="810" height="325" /></a></p>
<p><strong>Recycle bin settings are managed at the Web Application Level.</strong></p>
<p style="padding-left:30px;"> <a href="http://nikspatel.files.wordpress.com/2011/12/web-app-recycle-bin-settings.jpg"><img title="Web App Recycle Bin Settings" src="http://nikspatel.files.wordpress.com/2011/12/web-app-recycle-bin-settings.jpg?w=619&#038;h=315" alt="" width="619" height="315" /></a></p>
<ul type="circle">
<li>By default, Recycle bin is ON.</li>
<li>You can enable/disable recycle bin at the web application from the Central Admin -&gt; Application Management -&gt; Manage Web Applications -&gt; Select Web Application -&gt; Select General Settings from the Ribbon</li>
<ul type="disc">
<li>Disabling Recycle in at the web application level will still show the &#8220;Recycle Bin&#8221; link on all the pages but it wouldn&#8217;t hold any information to restore at the site or site collection level.</li>
</ul>
<ul type="disc">
<li>Please note. This is very Important Info =&gt; Disabling Recycle bin even for a minute will immediately flush all the data from both recycle bins and those contents are unrecoverable.</li>
</ul>
</ul>
<ul type="circle">
<li>Configure the recycle bin retention period &#8211; define when items in the recycle bin will automatically purged &#8211; by default is after 30 days.</li>
<ul type="disc">
<li>You can configure to never purge from the recycle bin.</li>
</ul>
<ul type="disc">
<li>Note that this retention period reflects the total time after the item was initially deleted. In other words, total time spent by the item in both recycle bins.</li>
<li>Example: With the default value of 30 days, if item never deleted by the user in the first recycle bin, it will be automatically deleted permanently from the first and second recycle bin after 30 days. If item is deleted from the first recycle bin after 10 days, item will be permanently deleted from the second stage recycle bin after 20 days.</li>
</ul>
</ul>
<ul type="circle">
<li>Configure the second-stage recycle bin &#8211; You can define the second stage recycle bin storage quota. by default, it’s a 50% of site quota. Maximum is 100% of site quota.</li>
<ul type="disc">
<li>You can completely turn off the second-stage recycle bin which will disable the second-stage recycle bin.</li>
</ul>
<ul type="disc">
<li>Keep in mind that first stage of the recycle bin counts towards your site collection quota but Second stage of recycle bin has its own quota defined by these settings.</li>
</ul>
<ul type="disc">
<li>Example: If you define 100 GB site quota per site collection in the web application and allocate 50% quota for the second stage recycle bin, SharePoint will allocate 50 GB storage quota to the second-stage recycle bin making it 150 GB storage quota per site collection on the web application in the content database. This may have large implication of content database sizing and SQL Server storage requirements.</li>
<li>Here is most important and potentially scary nature of 2nd stage recycle bin =&gt; If site quota is not configured at the site collection level then recycle bin quota is unlimited.</li>
</ul>
</ul>
<br />Filed under: <a href='http://nikspatel.wordpress.com/category/sharepoint-2010/architecture/'>Architecture</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nikspatel.wordpress.com/1293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nikspatel.wordpress.com/1293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nikspatel.wordpress.com/1293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nikspatel.wordpress.com/1293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nikspatel.wordpress.com/1293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nikspatel.wordpress.com/1293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nikspatel.wordpress.com/1293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nikspatel.wordpress.com/1293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nikspatel.wordpress.com/1293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nikspatel.wordpress.com/1293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nikspatel.wordpress.com/1293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nikspatel.wordpress.com/1293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nikspatel.wordpress.com/1293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nikspatel.wordpress.com/1293/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nikspatel.wordpress.com&amp;blog=12374945&amp;post=1293&amp;subd=nikspatel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nikspatel.wordpress.com/2011/12/04/sharepoint-2010-recycle-bin-capabilities-do-you-know-how-it-really-works/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efcfc6292651ed012fb002db664cdc9d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nikspatel</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/site-level-first-stage-recycle-bin1.jpg" medium="image">
			<media:title type="html">Site level First Stage Recycle bin</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/sitecollection-level-end-user-recycle-bin1.jpg" medium="image">
			<media:title type="html">SiteCollection level end-user Recycle bin</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/sitecollection-level-second-stage-recycle-bin1.jpg" medium="image">
			<media:title type="html">SiteCollection level Second Stage Recycle bin</media:title>
		</media:content>

		<media:content url="http://nikspatel.files.wordpress.com/2011/12/web-app-recycle-bin-settings.jpg" medium="image">
			<media:title type="html">Web App Recycle Bin Settings</media:title>
		</media:content>
	</item>
	</channel>
</rss>
