<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Hanz Blog</title><link>http://blogs.msdn.com/hanz/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>How to create a feature receiver that update a theme</title><link>http://blogs.msdn.com/hanz/archive/2009/02/06/how-to-create-a-feature-receiver-that-update-a-theme.aspx</link><pubDate>Fri, 06 Feb 2009 09:39:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9401196</guid><dc:creator>mshanz</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/hanz/comments/9401196.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hanz/commentrss.aspx?PostID=9401196</wfw:commentRss><description>&lt;h3&gt;Pre request:&lt;/h3&gt; &lt;p&gt;· Windows Server 2003 SP1 or above &lt;p&gt;· Visual Studio 2008 Pro or above &lt;p&gt;· Visual Studio Extension for SharePoint 1.3 CTP or later &lt;h3&gt;Steps:&lt;/h3&gt; &lt;h4&gt;Start Visual Studio&lt;/h4&gt; &lt;h4&gt;Create a SharePoint project using Empty template &lt;/h4&gt; &lt;p&gt;· =&amp;gt;File=&amp;gt;New=&amp;gt;Project &lt;p&gt;· Visual C#=&amp;gt;SharePoint=&amp;gt;Empty &lt;p&gt;· Type name as MyThemeFeature &lt;p&gt;· Select FullTrust(Deploy to GAC) on the Select Trust Level popup window &lt;p&gt;· =&amp;gt;OK &lt;h4&gt;Extract the Public Key token&lt;/h4&gt; &lt;p&gt;· Open Visual Studio Command Prompt &lt;p&gt;· Go to the folder \MyThemeFeature\Properties\ folder &lt;p&gt;· Run Sn –p MyTheamFeature.snk &amp;gt; publicKey.snk &lt;p&gt;· Run Sn –t publicKey.snk &amp;gt; Token.txt &lt;p&gt;· Open Token.txt &lt;p&gt;· Copy the public key token &lt;h4&gt;Create a New Feature with the event receiver&lt;/h4&gt; &lt;p&gt;· Switch to WSP view &lt;p&gt;· Click refresh button so that MyThemeFeature is showing on the root note &lt;p&gt;· Click create new feature button &lt;p&gt;· On the Feature Scope Settings popup, select Add feature receiver, =&amp;gt;OK &lt;p&gt;· Rename Feature1 to MyThemeFeature &lt;p&gt;· Open feature.xml file &lt;p&gt;· Inside feature.xml file, rename the title from feature1 to MyThemeFeature &lt;p&gt;· Add ReceiverAssembly and ReceiverClass attribute so that the feature.xml file now looks like this: (the PublicKeyToken should be from the Token.txt file you copied before.) &lt;table cellspacing="0" cellpadding="0" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="590"&gt; &lt;p&gt;&amp;lt;?xml version=”1.0” encoding=”utf-8”?&amp;gt; &lt;p&gt;&amp;lt;Feature Id="b3c387b3-5f74-4054-bb70-8b45c7549afa"  &lt;p&gt;Title="MyThemeFeature"  &lt;p&gt;Scope="Web"  &lt;p&gt;Version="1.0.0.0"  &lt;p&gt;Hidden="FALSE"  &lt;p&gt;DefaultResourceFile="core"  &lt;p&gt;xmlns="http://schemas.microsoft.com/sharepoint/" &lt;p&gt;ReceiverAssembly=" MyThemeFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" &lt;p&gt;ReceiverClass=" MyThemeFeature. FeatureReceiver1" &lt;p&gt;&amp;gt; &lt;p&gt;&amp;lt;ElementManifests /&amp;gt; &lt;p&gt;&amp;lt;/Feature&amp;gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h4&gt;Edit event receiver to use your theme&lt;/h4&gt; &lt;p&gt;· Open FeatureReceiver1.cs file &lt;p&gt;· Modify the FeatureActivated and FeatureDeactivating methods as the following: &lt;table cellspacing="0" cellpadding="0" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="577"&gt; &lt;p&gt;public override void FeatureActivated(SPFeatureReceiverProperties properties) &lt;p&gt;{ &lt;p&gt;SPWeb web = properties.Feature.Parent as SPWeb; &lt;p&gt;web.ApplyTheme("YourThemeName"); &lt;p&gt;} &lt;p&gt;public override void FeatureDeactivating(SPFeatureReceiverProperties properties) &lt;p&gt;{ &lt;p&gt;SPWeb web = properties.Feature.Parent as SPWeb; &lt;p&gt;web.ApplyTheme("none"); &lt;p&gt;}&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;· You need to replace the above “YourThemeName” with the them name you want. For example “Jet” &lt;h4&gt;Deploy and test your solution&lt;/h4&gt; &lt;p&gt;· Right click on MyThemeFeature project and select Deploy &lt;p&gt;· Browser to your site. &lt;p&gt;· You may need deactivate and activate the MyThemeFeature to see your theme applied.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9401196" width="1" height="1"&gt;</description></item><item><title>How to search Contoso Business Data Catalog (BDC) in SharePoint Guidance</title><link>http://blogs.msdn.com/hanz/archive/2009/02/05/how-to-search-contoso-business-data-catalog-bdc-in-sharepoint-guidance.aspx</link><pubDate>Thu, 05 Feb 2009 21:00:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9399344</guid><dc:creator>mshanz</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hanz/comments/9399344.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hanz/commentrss.aspx?PostID=9399344</wfw:commentRss><description>&lt;h3&gt;Pre request:&lt;/h3&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001_14.gif"&gt;&lt;img title="clip_image001" style="display: inline" height="16" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Install Visual Extension for SharePoint 1.3 CTP &lt;a href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=428&amp;amp;DownloadID=15946"&gt;https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=428&amp;amp;DownloadID=15946&lt;/a&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B1%5D.gif"&gt;&lt;img title="clip_image001[1]" style="display: inline" height="16" alt="clip_image001[1]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B1%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Install the TypeMock 5.21 or later (not required if you don’t want to run the test project)&lt;br&gt;&lt;a href="http://www.typemock.com/Downloads.php"&gt;http://www.typemock.com/Downloads.php&lt;/a&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B2%5D.gif"&gt;&lt;img title="clip_image001[2]" style="display: inline" height="16" alt="clip_image001[2]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B2%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Run on the command prompt: “C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe” –I  &lt;h3&gt;Download the Source code drop&lt;/h3&gt; &lt;p&gt;· Download SPG v2 Iteration 2 Drop from http://www.codeplex.com/spg ( &lt;a href="http://www.codeplex.com/spg/Release/ProjectReleases.aspx?ReleaseId=22570"&gt;http://www.codeplex.com/spg/Release/ProjectReleases.aspx?ReleaseId=22570&lt;/a&gt; ) &lt;p&gt;· Don’t do anything that specified the in the Download page. You will perform different steps. &lt;h3&gt;Install the Catalog and Pricing WCF service&lt;/h3&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B3%5D.gif"&gt;&lt;img title="clip_image001[3]" style="display: inline" height="16" alt="clip_image001[3]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B3%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Run C:\drop\Source\PSS\Contoso.LOB.Services\ generatecert.bat  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B4%5D.gif"&gt;&lt;img title="clip_image001[4]" style="display: inline" height="16" alt="clip_image001[4]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B4%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Start IIS Manager and create a new website with tcp port number 8585 and pointing to path c:\inetpub\wwwroot (please don’t point to the c:\drop\source\pss\contoso.lob.services folder). Execute permission is needed.  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B5%5D.gif"&gt;&lt;img title="clip_image001[5]" style="display: inline" height="16" alt="clip_image001[5]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B5%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Go to the AppPool of the above site. Make sure that the the Identity of the App Pool is a member local windows account. Do not use network service account.  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B6%5D.gif"&gt;&lt;img title="clip_image001[6]" style="display: inline" height="16" alt="clip_image001[6]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B6%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Open the C:\drop\Source\PSS\ Contoso.PSS.sln and rebuild the solution (this will create a web application under the above web site). &lt;b&gt;Don’t Deploy the solution&lt;/b&gt;. If you only have VS Pro, you may not be able to open the test project. But that is OK. If you want, you may remove all the test projects in the solution. &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image002_3.gif"&gt;&lt;img title="clip_image002" style="display: inline" height="7" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image002_thumb.gif" width="8" border="0"&gt;&lt;/a&gt; Browse to http://localhost:8585/Contoso.LOB.Services/ProductCatalog.svc and you should see the ProductCatalog Service page  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image002%5B1%5D.gif"&gt;&lt;img title="clip_image002[1]" style="display: inline" height="7" alt="clip_image002[1]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image002%5B1%5D_thumb.gif" width="8" border="0"&gt;&lt;/a&gt; Browse to http://localhost:8585/Contoso.LOB.Services/Pricing.svc and you should see the Pricing Service page  &lt;h3&gt;Import Product Catalog BDC Definition&lt;/h3&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B7%5D.gif"&gt;&lt;img title="clip_image001[7]" style="display: inline" height="16" alt="clip_image001[7]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B7%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Start =&amp;gt; Administrative Tools=&amp;gt;SharePoint 3.0 Central Administration &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B8%5D.gif"&gt;&lt;img title="clip_image001[8]" style="display: inline" height="16" alt="clip_image001[8]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B8%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; =&amp;gt;SharedServices1 &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B9%5D.gif"&gt;&lt;img title="clip_image001[9]" style="display: inline" height="16" alt="clip_image001[9]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B9%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; =&amp;gt;Import Application Definition (under Business Data Catalog) &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B10%5D.gif"&gt;&lt;img title="clip_image001[10]" style="display: inline" height="16" alt="clip_image001[10]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B10%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Browse to the C:\drop\Source\PSS\ProductCatalogDefinition.xml file, =&amp;gt;Open &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B11%5D.gif"&gt;&lt;img title="clip_image001[11]" style="display: inline" height="16" alt="clip_image001[11]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B11%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Leave the "File Type" and "Resources to import" options with default values  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B12%5D.gif"&gt;&lt;img title="clip_image001[12]" style="display: inline" height="16" alt="clip_image001[12]" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image001%5B12%5D_thumb.gif" width="6" border="0"&gt;&lt;/a&gt; Click "Import"  &lt;h3&gt;Try a Search&lt;/h3&gt; &lt;p&gt;· In the search box of a site, type “zune” and click search. You will probably not get any result. &lt;h3&gt;Set the Farm Search Service Account&lt;/h3&gt; &lt;p&gt;The search service will run using this account. Setting or changing this account affects all index and query servers in the server farm. &lt;p&gt;The farm search service account must not be a built-in account for security reasons and for it to access the database and content index. Examples of built-in accounts are Local Service and Network Service. &lt;p&gt;· Start =&amp;gt; Administrative Tools=&amp;gt;SharePoint 3.0 Central Administration &lt;p&gt;· =&amp;gt;Operations=&amp;gt;Services on server &lt;p&gt;· =&amp;gt;Office SharePoint Server Search &lt;p&gt;· On /_admin/SearchServiceInstanceSettings.aspx page, set the User name and Password for the Farm Search Service Account &lt;h3&gt;Set the Default Content Access Account&lt;/h3&gt; &lt;p&gt;Specify an account to use as the default account when crawling content. This account must have read access to the content being crawled.  &lt;p&gt;To avoid crawling unpublished versions of documents, ensure that this account is not an administrator on the target server. &lt;p&gt;· Start =&amp;gt; Administrative Tools=&amp;gt;SharePoint 3.0 Central Administration &lt;p&gt;· =&amp;gt;SharedServices1=&amp;gt;Search settings (under Search) &lt;p&gt;· =&amp;gt;Default content access account, this brings you to /ssp/admin/_layouts/contentaccessaccount.aspx page &lt;p&gt;· Type the Account and Password. &lt;h3&gt;Configure BDC search in Central Admin&lt;/h3&gt; &lt;p&gt;· Make sure that your search is configured using “Office SharePoint Server Search” so that BDC search is available. &lt;p&gt;· Start =&amp;gt; Administrative Tools=&amp;gt;SharePoint 3.0 Central Administration &lt;p&gt;· =&amp;gt;SharedServices1=&amp;gt;Search settings (under Search) &lt;p&gt;· =&amp;gt;Content sources and crawl schedules &lt;p&gt;· =&amp;gt;New Content Source, this will bring up “Add Content source” page /ssp/admin/_layouts/addcontentsource.aspx &lt;p&gt;o Under Name: type ContosoBDCSource (or a more logical name) &lt;p&gt;o Under Content Source Type: select Business Data &lt;p&gt;o Under Applications: select “Crawl selected applications” and check ContosoProductCatalogService &lt;p&gt;o Under Crawl Schedules: Full Crawl = None; Incremental Crawl=None &lt;p&gt;o Start Full Crawl: do not check “Start full crawl of this content source”. The reason for the above is that you will manually start the crawl &lt;p&gt;o Click OK &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image004_2.jpg"&gt;&lt;img title="clip_image004" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="171" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image004_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt; &lt;h3&gt;Create Search Scopes&lt;/h3&gt; &lt;p&gt;· Start =&amp;gt; Administrative Tools=&amp;gt;SharePoint 3.0 Central Administration &lt;p&gt;· =&amp;gt;SharedServices1=&amp;gt;Search settings (under Search) &lt;p&gt;· =&amp;gt;Scopes &lt;p&gt;· =&amp;gt;New Scope, call it ContosoBDCScope &lt;p&gt;· Click on "Add Rules" where it says "Empty - Add Rules" on the newly added scope, ContosoBDCScope &lt;p&gt;· Specify a Content Source from the drop down and select ContosoBDCSource, =&amp;gt;OK &lt;p&gt;· &lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image006_2.jpg"&gt;&lt;img title="clip_image006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="159" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image006_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt; &lt;p&gt;· You can either wait a few minutes or issue an update. This can be done from the main search settings page.  &lt;p&gt;· After having issue an update, you will see that the search scope ContosoBDC now has some items populated in it. You can also confirm that by refreshing the View Scopes page till Update status is ready for contosoBDCScope: &lt;p&gt;· &lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image008_2.jpg"&gt;&lt;img title="clip_image008" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="154" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image008_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt; &lt;p&gt;· Your search is now ready to use. However, it have to crawl the Source first. &lt;h3&gt;Try a Search&lt;/h3&gt; &lt;p&gt;· In the search box of a site, type “zune” and click search. You will probably not get any result. This is because you have not crawled the ContosoBDCSource &lt;h3&gt;Start Crawl the BDC Source&lt;/h3&gt; &lt;p&gt;· Start =&amp;gt; Administrative Tools=&amp;gt;SharePoint 3.0 Central Administration &lt;p&gt;· =&amp;gt;SharedServices1=&amp;gt;Search settings (under Search) &lt;p&gt;· =&amp;gt;Content sources and crawl schedules &lt;p&gt;· Select drop down on ContosBDCSource =&amp;gt; Start Full Crawl &lt;p&gt;· Wait until the status turns to Idle for ContosoBDCsource (by refreshing the page) &lt;h3&gt;Start a search&lt;/h3&gt; &lt;p&gt;· In the search box of a site, type “zune” and click search. You should see the result similar to this one: &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image010_2.jpg"&gt;&lt;img title="clip_image010" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="120" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtosearchContosoBusinessDataCatalogBDC_8CA9/clip_image010_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt; &lt;p&gt;· You will get an error if you click Product.aspx or the other link below it since this page does not actually exist. The data you see is in the ContosoBDCSource. &lt;h3&gt;References&lt;/h3&gt; &lt;p&gt;&lt;a href="http://blah.winsmarts.com/2007-4-SharePoint_2007__BDC_-_Enabling_Search_on_business_data.aspx"&gt;http://blah.winsmarts.com/2007-4-SharePoint_2007__BDC_-_Enabling_Search_on_business_data.aspx&lt;/a&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms549284.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms549284.aspx&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9399344" width="1" height="1"&gt;</description></item><item><title>How to fix the error when restarting Windows SharePoint Services Search</title><link>http://blogs.msdn.com/hanz/archive/2009/02/03/how-to-fix-the-error-when-restarting-windows-sharepoint-services-search.aspx</link><pubDate>Wed, 04 Feb 2009 01:10:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9393899</guid><dc:creator>mshanz</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hanz/comments/9393899.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hanz/commentrss.aspx?PostID=9393899</wfw:commentRss><description>&lt;h3&gt;If you stop the “Windows SharePoint Services Search” and start it again using: &lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Central Administration=&amp;gt;Operations=&amp;gt;Services on server=&amp;gt;Windows SharePoint Services Search=&amp;gt;Stop  &lt;li&gt;Central Administration=&amp;gt;Operations=&amp;gt;Services on server=&amp;gt;Windows SharePoint Services Search=&amp;gt;Start &lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;You might get the following error: &lt;/h3&gt; &lt;ul&gt; &lt;li&gt;database_name on np:\\.\pipe\MSSQL$Microsoft##SSEE\sql\query contains user-defined schema.&amp;nbsp; Databases must be empty before they can be used.&amp;nbsp; Delete all of the tables, stored procedures and other objects or use a different database. &lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;You can fix the problem by deleting the database in the SQL Server: &lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Stop the SQL Server Express Services: Start =&amp;gt; All Programs =&amp;gt; Administrative Tools =&amp;gt; Services =&amp;gt; SQL Server (SQLEXPRESS) =&amp;gt; Right click Stop  &lt;li&gt;Delete the following file &lt;br&gt;C:\Windows\SYSMSI\SSEE\MSSL.2005\MSSQL\DATA\WSS_Search_ Servername.mdf &lt;br&gt;C:\Windows\SYSMSI\SSEE\MSSL.2005\MSSQL\DATA\WSS_Search_ Servername_log.LDF  &lt;li&gt;Restart SQL Server Express Services: Start =&amp;gt; All Programs =&amp;gt; Administrative Tools =&amp;gt; Services =&amp;gt; SQL Server (SQLEXPRESS) =&amp;gt; Right click Start &lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Restart the Windows SharePoint Services Search Again:&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Restart the Windows SharePoint Services Search: Central Administration=&amp;gt;Operations=&amp;gt;Services on server=&amp;gt;Windows SharePoint Services Search=&amp;gt;Start  &lt;li&gt;In the Configure Windows SharePoint Services Search Service Settings page, In the Search Database section, type a new database name in the Database Name field. Click Start. (Note: You might get an error if you use the old database name)&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9393899" width="1" height="1"&gt;</description></item><item><title>How to Publish SharePoint Content from an Authoring Farm inside Corporate Network to a Production Farm in DMZ</title><link>http://blogs.msdn.com/hanz/archive/2009/02/02/how-to-publish-sharepoint-content-from-an-authoring-farm-inside-corporate-network-to-a-production-farm-in-dmz.aspx</link><pubDate>Mon, 02 Feb 2009 14:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9391221</guid><dc:creator>mshanz</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/hanz/comments/9391221.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hanz/commentrss.aspx?PostID=9391221</wfw:commentRss><description>&lt;h1&gt;&lt;font color="#0000ff"&gt;How to Publish SharePoint Content from an Authoring Farm Inside Corporate Network to a Production Farm in DMZ&lt;/font&gt;&lt;/h1&gt; &lt;h2&gt;&lt;font color="#0000ff"&gt;Introduction&lt;/font&gt;&lt;/h2&gt; &lt;p&gt;This article is based on my experience on development and testing Microsoft SharePoint Guidance 2.0 for Microsoft Patterns and Practice team. We are writing a reference implementation for MOSS 2007. The RI simulates a company named Contoso with two downstream partners: Partner1 and Partner2. Contoso is deploying a MOSS extranet application for Partner1 and Partner2 to use. The extranet will have a publishing site collection with two sub sites, one for Patner1 and the other for Partner2. The extranet will also have two collaboration sites, one for each partner.  &lt;p&gt;In summary, there will be three site collections in the production farm:  &lt;ol&gt; &lt;li&gt;A publishing site collection (shared by all partners, each has a sub site)  &lt;li&gt;A collaboration site collection between Contoso and Parnter1  &lt;li&gt;A collaboration site collection between Contoso and partner2&amp;nbsp; &lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;&lt;font color="#0000ff"&gt;MOSS Version Requirement&lt;/font&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;font size="2"&gt;Microsoft Office SharePoint Server 2007 Enterprise version is required for content publishing and BDC feature to work.&lt;/font&gt;  &lt;li&gt;&lt;font size="2"&gt;Authoring farm and the production farm should have the same MOSS version.&lt;/font&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=3811C371-0E83-47C8-976B-0B7F26A3B3C4&amp;amp;displaylang=en"&gt;&lt;font size="2"&gt;Infrastructure Update for Microsoft Office Servers (KB951297)&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; should be installed on both farms for the deployment to work cross machine boundary. If you don’t install the infrastructure update on the production farm, the content deployment from authoring farm to production farm may not work.&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;a name="_Toc221241319"&gt;&lt;font color="#0000ff"&gt;Farm Topology&lt;/font&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;This article assumes you have two server farms: one internal farm in your corporate intranet dedicated to your authors/editors/designers and a second farm in the Internet-facing network DMZ that hosts your production site. Your internal farm is read/write, while your production farm is read-only for the publishing site collection and read/write for the two collaboration site collections. The DMZ and intranet are separated by a fire wall such as an ISA server. The following is an example topology:  &lt;p&gt;A Simple Back-to-back Perimeter Topology with Content Publishing for MOSS  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtoPublishSharePointContentfromanAutho_A069/image_2.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="657" alt="image" src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/HowtoPublishSharePointContentfromanAutho_A069/image_thumb.png" width="905" border="0"&gt;&lt;/a&gt;  &lt;p&gt;This is a simple farm without much redundancy. You can make you DMZ farm smaller by combining Central Admin and Web Server in to one. But most probably, you may want to expand it to have the following.  &lt;ul&gt; &lt;li&gt;Add more web servers to the load balanced clustered web servers. We chose to have two web servers to demonstrate the distributed session cache. For the performance purpose, this may not be enough for you business.  &lt;li&gt;Clustered SQL servers.  &lt;li&gt;Dedicated app servers for indexing, querying, excel calculation, and etc. It is also common to add indexing or querying roles to web front end servers. If you do that, make sure that querying and indexing role are deployed in different servers.  &lt;li&gt;For the performance reason, you may have a clustered ISA servers facing the internet for redundancy and caching purpose.  &lt;li&gt;The Perimeter Network should allow data flow from Corporate Net.  &lt;li&gt;The authoring farm is usually simpler than the production farm unless you need to do performance test. Since the production farm is already very simple, the authoring farm is configured identical to the production farm.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;font color="#0000ff"&gt;Security Considerations&lt;/font&gt;&lt;/h2&gt; &lt;h5&gt;&lt;font color="#0000ff"&gt;Security by Isolation&lt;/font&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Isolate farm into different network&lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Isolate Extranet Farm in DMZ&lt;/p&gt; &lt;p&gt;Isolate authoring farm inside corpnet so outsiders can’t access it&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Isolate web collection in the different IIS application pool and different DB&lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Isolate Publishing Site collection in its own publishing application pool and its own DB  &lt;p&gt;Isolate Partner1 collaboration site collection in its own Partner1 application pool and its own DB  &lt;p&gt;Isolate collaboration site collection in its own Partner2 application pool and its own DB&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Isolate publishing content in different sub site under the publishing site collection&lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Partner1 publishing sub site for Partner1  &lt;p&gt;Partner2 publishing sub site for Partner1&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Isolate people in to different roles in the aspnet authentication provider&lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Partner1 role for employee in Partner1  &lt;p&gt;Partner2 role for employees in Partner2  &lt;p&gt;Admin role for the company employee that managing the DMZ&lt;/p&gt;&lt;/blockquote&gt; &lt;h5&gt;&lt;font color="#0000ff"&gt;Security by authentication and Access Control&lt;/font&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Control access to SharePoint content by divide web application into different zones &lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Web application in DMZ is separated into default zone and extranet zone.  &lt;p&gt;Extranet zone uses form based authentication (FBA).  &lt;p&gt;Default zone uses windows authentication.  &lt;p&gt;Both zones access the same content.  &lt;p&gt;Authoring-&amp;gt;Publishing will be between the authoring farm and the DMZ’s default zone (not the extranet zone)&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Control access to publishing sub site by only authorizing appropriate roles&lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Partner1 publishing sub site only allows roles Partner1 and Admin access  &lt;p&gt;Partner2 publishing sub site only allows roles Partner2 and Admin access&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Control Access to SQL Database &lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;User Windows authentication Mode instead of SQL Server Authentication for tighter data security. &lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Control Access to Backend Services&lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Create special groups for accessing Backend Services  &lt;p&gt;Mapping user account to backend group using SSO  &lt;p&gt;Never open backend services to public&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Control Search Access&lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Create special groups for search  &lt;p&gt;Do not use admin account for search. Admin account has too much power.  &lt;p&gt;Apply security trimming.&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;h5&gt;Block security holes &lt;/h5&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Consider block cross site, cross site collection, cross webapp query for important list.  &lt;p&gt;Consider block important content from been searched. Require credential for search important content.&lt;/p&gt;&lt;/blockquote&gt; &lt;h5&gt;&lt;font color="#0000ff"&gt;Security for the Servers&lt;/font&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Harding windows server 2003 sp1 by running the security configuration wizard.  &lt;li&gt;Shutting off Unnecessary Services in the server  &lt;li&gt;Implement File level security  &lt;li&gt;Running windows server update services  &lt;li&gt;Verify security using the Microsoft Baseline security analyzer (MBSA)&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;font color="#0000ff"&gt;Security in Transport&lt;/font&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Consider Using SSL&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;font color="#0000ff"&gt;Security Hardening SharePoint Sites&lt;/font&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Given only appropriate access the following site or site collection:&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Partner1Collaboration Site collection =&amp;gt;Partner1, Admin  &lt;p&gt;Partner2Collaboration Site collection =&amp;gt;Partner2, Admin  &lt;p&gt;Partner1 Publishing Sub Site =&amp;gt;Partner1, Admin  &lt;p&gt;Partner2 Publishing Subsite =&amp;gt;Partner2, Admin  &lt;p&gt;Central Admin =&amp;gt;Admin&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Lock down /_layouts/people.aspx page for everyone except Admins since publishing Site collection is shared by Partner1 sub site and Partner2 Sub Site. Here is how to do it: &lt;a href="http://blogs.msdn.com/hanz/archive/2009/01/24/how-to-lock-down-layouts-people-aspx-page-for-sharepoint-2007-and-microsoft-office-sharepoint-server-2007.aspx"&gt;How to lock down /_layouts/people.aspx page for SharePoint 2007 and Microsoft Office SharePoint Server 2007&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;font color="#0000ff"&gt;Setup the authoring and production farm for &lt;/font&gt;&lt;a name="_Toc221241323"&gt;&lt;font color="#0000ff"&gt;Non-publishable Components&lt;/font&gt; &lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Deployment will not deploy Programs, Assemblies, Features, Configuration information such as Web.config files. They have to be set up separately. You have to install all required WSPs, and assemblies, and features. You need to setup you configuration files correctly. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a name="_Toc221238846"&gt;Manually set up the farms&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;You often need to start from a clean server, install SharePoint, create web applications, extend web application to various zones, install SharePoint WSPs, create web collections and web sites, enable features, start work flows, populate users in local machine or in a security provider database, create SharePoint user groups and individual users, and etc. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Sometimes you need to install in various configurations such as such as Win2K3, Win2k8, 64 bit, 32bit PC, and various farm configurations. It may be too time consuming if you have to run of the setup steps manually. Fortunately, there are ways to automate some of those steps.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a name="_Toc221238846"&gt;Using STSADM and custom console app &lt;a name="_Toc221238848"&gt;to automatically setup SharePoint Site&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;STSADM tool can complete many of your setup steps. For those tasks you cannot achieve with STSADM, one solution is to write a console application. This is the method we chose. We wrote a console app to modify the web.config file in the Central admin web app and extranet web app. You can download the setup batch file and custom console app source code from &lt;a&gt;SPG v2 Iteration 2 Drop&lt;/a&gt;&amp;nbsp;&lt;a title="http://www.codeplex.com/spg/Release/ProjectReleases.aspx?ReleaseId=22570" href="http://www.codeplex.com/spg/Release/ProjectReleases.aspx?ReleaseId=22570"&gt;http://www.codeplex.com/spg/Release/ProjectReleases.aspx?ReleaseId=22570&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;&lt;a name="_Toc221238846"&gt;&lt;a name="_Toc221238850"&gt;Extending STSADM to set up SharePoint Site&lt;/a&gt; automatically&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Instead of writing your custom console application to carry out tasks that can not be done by STSADM, you can extend STSADM yourself or use third party STSADM extensions.&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;&lt;a name="_Toc221238848"&gt;Using Backup-Restore to automatically setup SharePoint Site&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;You can use STSADM backups, automated SQL Backups, integrated IISBack.vbs script to automate your restore for setup. However, you need to use other methods (including manual) to setup your farm and then create the backup. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I recommend you at least perform manually setup once in your dev/test environment. Once it comes to setup the authoring and production farm, you should automate your process.&lt;/p&gt; &lt;h2&gt;&lt;a name="_Toc221238835"&gt;Prepare Production Farm for Content Deployment&lt;/a&gt; &lt;/h2&gt; &lt;h5&gt;&lt;a name="_Toc221238834"&gt;Create Blank Site Collection by following steps&lt;/a&gt;&lt;/h5&gt; &lt;blockquote&gt; &lt;p&gt;You can only deploy to a blank site when you initially deploy to the production farm. &lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Start Central Administration in the Production Farm  &lt;li&gt;Under Application Management  &lt;li&gt;Select Create or extend Web application  &lt;li&gt;Select Create a new Web Application  &lt;li&gt;Choose an easy to remember port number  &lt;li&gt;Type in a user name and credentials to create a new app pool  &lt;li&gt;Type in a descriptive database name  &lt;li&gt;Leave all other settings at the default and click OK, then wait for the Web application to be created  &lt;li&gt;Click Create Site Collection  &lt;li&gt;Ensure that your new Web Application is selected  &lt;li&gt;Type in any name for the Title (it will be overwritten later)  &lt;li&gt;Select "Blank Site" as the template. This step is IMPORTANT, because Blank Site is the only template that you can import any other template into  &lt;li&gt;Type in the names for the site collection owners  &lt;li&gt;Click OK &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a name="_Toc221238834"&gt;Allow Incoming Content Deployment Jobs in the Production Site by following steps&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Start Central Administration in the Production Farm  &lt;li&gt;Select Operation  &lt;li&gt;Select Content deployment settings  &lt;li&gt;Select Accept incoming content deployment jobs  &lt;li&gt;Select Do not require encryption and click OK &lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;a name="_Toc221241324"&gt;&lt;/a&gt;&lt;a name="_Toc221238835"&gt;Prepare Authoring Farm for Content Deployment&lt;/a&gt; &lt;/h2&gt; &lt;h5&gt;&lt;a name="_Toc221238836"&gt;Create Content by following steps &lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Create site collections  &lt;li&gt;Create sub sites  &lt;li&gt;Create pages &lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a name="_Toc221238836"&gt;Create Content Deployment Path in the Central Admin of the Authoring Farm by following steps&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Start Central Administration in the Authoring Farm  &lt;li&gt;Select Content deployment paths and jobs  &lt;li&gt;Click New Path  &lt;li&gt;Type a descriptive name for the path. Select the web application and site collection for the staging site. Then type in the URL of the Central Administration web site of the production site.  &lt;li&gt;Click Connect  &lt;li&gt;Once you see "Connection succeeded", select the web application and site collection that you created for production. You can also choose to deploy user names and security if you want the new site to have the same users and permissions  &lt;li&gt;Click OK &lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a name="_Toc221241326"&gt;&lt;/a&gt;&lt;a name="_Toc221238837"&gt;Create Content Deployment Job in the Central Admin of the Authoring Farm by following steps&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Click New Job  &lt;li&gt;Type a name, and then select the path you created  &lt;li&gt;Keep all other default values, and click OK &lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;a name="_Toc221241327"&gt;&lt;/a&gt;&lt;a name="_Toc221238838"&gt;Run Content Deployment Job in the Authoring Farm&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;From the context menu on the job, select Run Now  &lt;li&gt;Refresh the page, and then click on the text Running  &lt;li&gt;Watch the status of the job  &lt;li&gt;When the status changes to Succeeded, you can click on the URL to the production site to verify that the content was deployed &lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;a name="_Toc221238838"&gt;Considerations when Updating Features and Installing WSP in the Production Farm&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;You need to be careful when installing a WSP, updating/activating features, changing web.config files, or running other jobs that might change the SharePoint behavior in the production farm. Immediately after installation and before the new content is deployed, your production site may be broken. For example, a feature activation might add/hide/modify a column in a list, and make the list broken before the new content gets deployed.  &lt;p&gt;It it is recommended that after making any changes to the SharePoint, you should immediately deploy you content from the authoring or staging server to assure that the contents are in synch with other non-content artifacts such as web configurations files, assemblies, activated features, the files in the 12 hive . You should keep the time interval as small as possible.  &lt;p&gt;&lt;a name="_Toc221241328"&gt;Core Concept on Content Publishing&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Path&lt;/b&gt;: A path is a connection between a source farm and a destination farm. The path contains information about which source web application and site collection you are deploying, authentication information for the destination farm, and the web application and site collection on the destination farm. In short, a path represents the mapping between your authoring and production site collections.  &lt;p&gt;&lt;b&gt;Job&lt;/b&gt;: A job is associated with a path, and it determines exactly which sites in the source site collection will be deployed and on what schedule. You can have many different jobs for a given path, each running on different schedules and deploying specific sections of your site.  &lt;p&gt;&lt;b&gt;Schedule&lt;/b&gt;: a job has a schedule and can deploy content updates regularly without the need to manually kick it off every time. For example, let’s say you have a Press Releases site that needs to be updated every hour, and an Employee Bios site that only needs to be updated every month. You would create two different jobs, one that runs every hour and deploys the Press Releases site, and another that runs monthly and deploys the Employee Bios site.  &lt;p&gt;&lt;b&gt;What will get deployed?&lt;/b&gt; By default, deployment only deploys the changes since the last successful deployment. If there aren’t any changes, the deployment will complete without redoing any unnecessary work. Deployment &lt;i&gt;automatically&lt;/i&gt; picks up the dependent page layout or images and packages them up along with the page itself – &lt;i&gt;even if the dependent resources aren’t in the same site&lt;/i&gt;. Full deployments every time can also be configured which will deploy everything even there is no change.  &lt;p&gt;Deployment copies only content such as web pages and resources used by the copied pages. When a web page is deployed, any items in the content database that the page depends on, such as images, style sheets, or layout pages, are also deployed.  &lt;p&gt;Content deployment deploys only the last major and the last minor version of each item where versioning is enabled.  &lt;p&gt;You have option to deploy the entire site collection or a selection of sets.  &lt;p&gt;&lt;b&gt;What will NOT get deployed? &lt;/b&gt;Deployment does not deploy any of the following file types:  &lt;ul&gt; &lt;li&gt;Programs  &lt;li&gt;Assemblies  &lt;li&gt;Features  &lt;li&gt;Configuration information, such as Web.config files  &lt;li&gt;In progress workflows, such as workflows designed with SharePoint Designer  &lt;li&gt;Items in the recycle bin &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;Quick Deploy&lt;/b&gt;: It is a special job called that is automatically created for every path in any site collection with the Publishing Resources feature enabled. This job, once enabled in a path, wakes up every few minutes (15 minutes, by default) and checks a special list for content that should be deployed. If the site owner has rights, he or she can deploy pages quickly to production by using the “Quick Deploy” link on the Page Editing toolbar. This adds that page to the special list, which the Quick Deploy job will check the next time it wakes up. By default, only the site owner has the Quick Deploy right. In order to give other users the same privileges, you simply add them to the Quick Deploy Users group.  &lt;h2&gt;&lt;font color="#0000ff"&gt;Best practices for publishing portals&lt;/font&gt;&lt;/h2&gt; &lt;p&gt;A technet article &lt;a href="http://technet.microsoft.com/en-us/library/cc850698.aspx"&gt;http://technet.microsoft.com/en-us/library/cc850698.aspx&lt;/a&gt; listed following 12 best practices for publishing portals: &lt;/p&gt;&lt;font size="1"&gt; &lt;ol&gt; &lt;li&gt;&lt;font size="1"&gt;Deploy at least three front-end Web servers&lt;/font&gt; &lt;/font&gt; &lt;li&gt;&lt;font size="1"&gt;Make query-driven Web Parts efficient&lt;/font&gt;  &lt;li&gt;&lt;font size="1"&gt;Make sure that lists and databases follow recommended limits to optimize query performance&lt;/font&gt;  &lt;li&gt;&lt;font size="1"&gt;Separate authoring and publishing environments&lt;/font&gt;  &lt;li&gt;&lt;font size="1"&gt;Separate your staging environment from the authoring environment&lt;/font&gt;  &lt;li&gt;&lt;font size="1"&gt;Make sure you have the latest updates installed! &lt;/font&gt; &lt;li&gt;&lt;font size="1"&gt;Do not edit the destination site directly&lt;/font&gt;  &lt;li&gt;Avoid management tasks and bulk operations in the authoring environment during peak hours  &lt;li&gt;&lt;font size="1"&gt;Use caching!&lt;/font&gt;  &lt;li&gt;&lt;font size="1"&gt;Start with a well-configured infrastructure that uses recommended hardware&lt;/font&gt;  &lt;li&gt;&lt;font size="1"&gt;Set application pool recycling settings for better availability&lt;/font&gt; &lt;font size="1"&gt; &lt;li&gt;&lt;font size="1"&gt;Monitor key counters to manage performance&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/font&gt; &lt;h2&gt;&lt;a name="_Toc221238838"&gt;Notes &lt;/a&gt;&lt;/h2&gt; &lt;p&gt;It is important to note that content deployment is a one-way process: content is copied from a source site collection to a destination site collection. The content deployment feature does not support round-trip synchronization from source to destination and back again. Therefore, any changes that are made to the destination site collection will remain on the destination site collection only until they are deleted on the destination site collection, or are overwritten by a content deployment job that is set to deploy all content, including content that was previously deployed. Because of this, you should consider restricting permissions on the destination site collection so that users cannot make changes directly to content stored within that site collection.  &lt;p&gt;One limitation in creating content deployment paths is that the source and destination path must exist in different content databases. This is because all of the GUIDs that are used to define sites, Web pages, lists, and items will be transferred with the site when it is deployed. For this reason, you cannot deploy a site to the same database as the source site.  &lt;p&gt;&lt;strong&gt;If you create a sub site in the destination collection without using the content publishing feature, it will NOT get wiped out by the deployment.&lt;/strong&gt;&amp;nbsp; If you happen to have a sub site in the authoring farm with the same path name, your deployment will fail with error “The specified name is already in user …”. The best practice is Not to create sub site directly in the production destination site.  &lt;h2&gt;&lt;a name="_Toc221241318"&gt;Background Info:&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;· &lt;a href="http://blogs.msdn.com/sharepoint/archive/2006/05/02/588140.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2006/05/02/588140.aspx&lt;/a&gt;  &lt;p&gt;· &lt;a href="http://blogs.msdn.com/jackiebo/archive/2007/02/26/content-deployment-step-by-step-tutorial.aspx"&gt;http://blogs.msdn.com/jackiebo/archive/2007/02/26/content-deployment-step-by-step-tutorial.aspx&lt;/a&gt;  &lt;p&gt;· &lt;a href="http://technet.microsoft.com/en-us/library/cc627268.aspx"&gt;http://technet.microsoft.com/en-us/library/cc627268.aspx&lt;/a&gt;  &lt;p&gt;· &lt;a href="http://blogs.msdn.com/gayanpeiris/archive/2008/03/24/content-deployment-in-wcm.aspx"&gt;http://blogs.msdn.com/gayanpeiris/archive/2008/03/24/content-deployment-in-wcm.aspx&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9391221" width="1" height="1"&gt;</description></item><item><title>How to lock down /_layouts/people.aspx page for SharePoint 2007 and Microsoft Office SharePoint Server 2007</title><link>http://blogs.msdn.com/hanz/archive/2009/01/24/how-to-lock-down-layouts-people-aspx-page-for-sharepoint-2007-and-microsoft-office-sharepoint-server-2007.aspx</link><pubDate>Sat, 24 Jan 2009 11:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9374082</guid><dc:creator>mshanz</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/hanz/comments/9374082.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hanz/commentrss.aspx?PostID=9374082</wfw:commentRss><description>&lt;P&gt;You can lock down the /_layouts/people.aspx page for all uses (except “Full Control” users) by doing the following steps: 
&lt;P&gt;1. Login on the top site (not the central admin site) of your site collection as&amp;nbsp; a site collection admin or a full control user. 
&lt;P&gt;2. Click: Actions-&amp;gt;Site Settings-&amp;gt;People and Groups 
&lt;P&gt;3. Click: All People 
&lt;P&gt;4. Click: Settings-&amp;gt;List Settings 
&lt;P&gt;5. Click: Advanced Settings 
&lt;P&gt;6. Check (see the following picture) 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * “Only their own” on Read access 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * “Only their own” on Edit access 
&lt;P&gt;You are done. 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B6%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B6%5D.jpg"&gt;&lt;IMG title=clip_image002[6] style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=538 alt=clip_image002[6] src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B6%5D_thumb.jpg" width=764 border=0 mce_src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B6%5D_thumb.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;The above security hardening will lock down the access to _layouts/people.aspx for users with permissions such as “Design”, “Manage Hierarchy”, “Approve” “Contribute” “Read” and “Restricted Read”. However, you cannot lock down the user with “Full Control”. (see the following picture) 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B9%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B9%5D.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B9%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B9%5D.jpg"&gt;&lt;IMG title=clip_image002[9] style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=581 alt=clip_image002[9] src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B9%5D_thumb.jpg" width=939 border=0 mce_src="http://blogs.msdn.com/blogfiles/hanz/WindowsLiveWriter/How.aspxpageforSharePoint2007andMicrosof_70D2/clip_image002%5B9%5D_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9374082" width="1" height="1"&gt;</description></item><item><title>Fix for the failure when running patterns &amp; practices SharePoint Guidance Integration and Build Verification Tests</title><link>http://blogs.msdn.com/hanz/archive/2008/12/04/fix-for-the-failure-when-running-patterns-practices-sharepoint-guidance-integration-and-build-verification-tests.aspx</link><pubDate>Thu, 04 Dec 2008 12:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9175828</guid><dc:creator>mshanz</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hanz/comments/9175828.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hanz/commentrss.aspx?PostID=9175828</wfw:commentRss><description>&lt;P&gt;If you failed running the test cases for BVT, do the following to fix it.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;read bvt_integration_tests_readme.txt.&lt;/LI&gt;
&lt;LI&gt;make sure that that Contoso training site is running. For example, having &lt;A href="http://localhost/training" mce_href="http://localhost/training"&gt;http://localhost/training&lt;/A&gt; running as a Contoso training site.&lt;/LI&gt;
&lt;LI&gt;Open Config.cs file under HelperClasses folder. make sure the following:&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;siteURL is the running training site you want to test&lt;/LI&gt;
&lt;LI&gt;make sure that the yor are the owner of the site and the site colleciton.&lt;/LI&gt;
&lt;LI&gt;Maker sure that spgemployee and spgmanager are created in the local PC&lt;/LI&gt;
&lt;LI&gt;make sure that spgemployee is added to the Contoso Employees group (do this in the SharePoint site)&lt;/LI&gt;
&lt;LI&gt;make sure that spgmanager is added to the Contoso Managers group (do this in the SharePoint site)&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;if the workflow related test cases fail, check the site to make sure that workflow is running correct. If not, make sure the workflow for Registrations List is enabled. To do that, click Lists-&amp;gt;Registrations-&amp;gt;Settings-&amp;gt;List Settings-&amp;gt;Workflow Settings, make sure Registration Approval v1 is under the Workflow Name and click it. Under the Change a Workflow: Registrations page, make sure the Start Options have the following tow boxes checked: “Allow this work flow to be manually started …” and “Start this worflow weh a new item is created”&lt;/LI&gt;&lt;/OL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9175828" width="1" height="1"&gt;</description></item><item><title>Hello From Hanz</title><link>http://blogs.msdn.com/hanz/archive/2008/11/20/hello-from-hanz.aspx</link><pubDate>Thu, 20 Nov 2008 23:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9130267</guid><dc:creator>mshanz</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/hanz/comments/9130267.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hanz/commentrss.aspx?PostID=9130267</wfw:commentRss><description>&lt;P&gt;My blog is up&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9130267" width="1" height="1"&gt;</description></item></channel></rss>