<?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>Vantage Point - Bob German's WebLog</title><link>http://blogs.msdn.com/bobgerman/default.aspx</link><description>Notes from the Microsoft Technology Center, where Bob is an architect specializing in Microsoft portal and collaboration software. Postings on SharePoint and related technologies, creating successful solutions, and the general vantage point of working at the MTC.</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>How To Setup SharePoint 2010 Public Beta User Profile Synchronization with Active Directory on Windows Server 2008 R2</title><link>http://blogs.msdn.com/bobgerman/archive/2009/12/01/how-to-setup-sharepoint-2010-public-beta-user-profile-synchronization-with-active-directory-on-windows-server-2008-r2.aspx</link><pubDate>Wed, 02 Dec 2009 04:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9931241</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/9931241.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=9931241</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=9931241</wfw:comment><description>&lt;P mce_keep="true"&gt;This is cross-posted from the MTC Blog... many&amp;nbsp;thanks to Ron Bokleman, and some friends from Redmond, who put this together and removed the mystery of how to get user profile synchronization to work with the SharePoint 2010 Beta!&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;This document is designed to help someone new to SharePoint 2010 Beta setup and test SharePoint Server 2010 User Profile Synchronization on Windows Server 2008 R2. &lt;/P&gt;
&lt;P&gt;The official information on the TechNet site (&lt;A href="http://technet.microsoft.com/en-us/library/ee721049(office.14).aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/ee721049(office.14).aspx"&gt;link&lt;/A&gt;) and the SharePoint team blog (&lt;A href="http://blogs.msdn.com/sharepoint/archive/2009/11/18/path-to-user-profile-synchronization-success-in-sharepoint-2010-beta.aspxhttp:/blogs.msdn.com/sharepoint/archive/2009/11/18/path-to-user-profile-synchronization-success-in-sharepoint-2010-beta.aspx" target=_blank mce_href="http://blogs.msdn.com/sharepoint/archive/2009/11/18/path-to-user-profile-synchronization-success-in-sharepoint-2010-beta.aspxhttp:/blogs.msdn.com/sharepoint/archive/2009/11/18/path-to-user-profile-synchronization-success-in-sharepoint-2010-beta.aspx"&gt;link&lt;/A&gt;) were used to develop this guidance. &lt;/P&gt;
&lt;P&gt;The lab environment is based upon two Hyper-V servers (affords you the ability to take snapshots along the way and roll back if necessary), a Domain Controller (contoso.com) and a member server to host SQL Server 2008 and SharePoint 2010 Pubic Beta software. On both servers, the Windows Firewall and IE ESC were set to off and the servers were given access to the Internet in order to download updates and software required by the SharePoint 2010 Pre-requisite installer. Please keep in mind that your domain and machine names will vary and you should substitute accordingly. &lt;/P&gt;
&lt;P&gt;If there are any updates or feedback, then please&amp;nbsp;add them to the comments.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Lab Environment&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Here are the machine names and network settings used; please substitute your own as needed.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Domain Controller&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;Hostname: DC&lt;BR&gt;Memory: 1GB&lt;BR&gt;IP Settings, Virtual Network #1: 172.16.1.100 / 255.240.0.0, DNS 127.0.0.1&lt;BR&gt;IP Settings, Virtual Network #2: DHCP&lt;BR&gt;Operating System: Windows Server 2008 R2 + All critical updates from Windows Update&lt;BR&gt;Server Role(s): Active Directory Domain Services, DNS&lt;BR&gt;Forest Root Domain: contoso.com&lt;BR&gt;Forest Functional Level: Windows Server 2008 R2&lt;BR&gt;Hyper-V Configuration: Single CPU, 127GB Disk, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Virtual Network #1 Private, Virtual Network #2 Internet &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Member Server&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;Hostname: Sharepoint&lt;BR&gt;Memory: 4096MB&lt;BR&gt;IP Settings, Virtual Network #1: 172.16.1.101/255.240.0.0, DNS 172.16.1.100&lt;BR&gt;IP Settings, Virtual Network #2: DHCP&lt;BR&gt;Operating System: Windows Server 2008 R2 + all critical updates from Windows Update&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ WCF hotfix &lt;BR&gt;Server Software: SQL Server 2008 SP1 + CumU&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Hyper-V Configuration:&lt;/P&gt;
&lt;P&gt;Two CPU's, 127GB Disk, Virtual Network #1 Private, Virtual Network #2 Internet&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Configuration Steps&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Login to dcserver.contoso.com as contoso\administrator. &lt;/P&gt;
&lt;P&gt;Create a SharePoint farm admin account named ‘spadmin'.&lt;/P&gt;
&lt;P&gt;a. Use Active Directory Users and Groups to create contoso\spadmin the account name should be ‘SharePoint Admin'.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930914/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930914/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;b. Setup a Contoso OU and add user accounts into the OU as required for your own testing.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930917/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930917/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image004_2_4E955B08.jpg" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image004_2_4E955B08.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;3. Run Delegation Control wizard to add contoso\spadmin account to "Replication Directory Changes" permissions. &lt;/P&gt;
&lt;P&gt;a. Right click domain and click "Delegate Control..."&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930926/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930926/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image001_2_4E955B08.png" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image001_2_4E955B08.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;b. Click Next.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930927/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930927/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image002_2_4E955B08.png" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image002_2_4E955B08.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;c. Add contoso\spadmin and click Next.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930930/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930930/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image003_2_4E955B08.png" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image003_2_4E955B08.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;d. Select "Create a custom task to delegate" and then click Next.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930932/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930932/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image004_2_4E955B08.png" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image004_2_4E955B08.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;e. Click Next.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930933/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930933/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image005_2_4E955B08.png" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image005_2_4E955B08.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;f. Check the "Replicating Directory Changes" in the Permissions window and then click Next.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930934/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930934/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image006_2_4E955B08.png" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image006_2_4E955B08.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;g. Click Finish to complete the Delegation of Control Wizard.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930935/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930935/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image007_2_4E955B08.png" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image007_2_4E955B08.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;4. Add the contoso\spadmin account as a local machine administrator to the SharePoint WFE (sharepoint). &lt;/P&gt;
&lt;P&gt;5. Login to sharepoint.contoso.com as contoso\spadmin to install software. &lt;/P&gt;
&lt;P&gt;&lt;U&gt;[&lt;B&gt;NOTE: This is critical! You MUST do this or likely your ‘Forefront Identity Manager Service' (although set to Automatic) will fail to start automatically after starting the SharePoint ‘User Profile Synchronization Service' successfully.&lt;/B&gt;]&lt;/U&gt; &lt;/P&gt;
&lt;P&gt;6. Run Windows Update to install all critical updates. &lt;/P&gt;
&lt;P&gt;7. Install SQL Server 2008 SP1 + CU2. &lt;/P&gt;
&lt;P&gt;a. Full install with default instance.&lt;BR&gt;b. Used contoso\spadmin as the service account for all services. &lt;/P&gt;
&lt;P&gt;[&lt;B&gt;NOTE: If you already have SQL Server 2008 SP1 installed under another identity, simply add the contoso\spadmin login to SQL Server Logins, and then grant that account SysAdmin role on the server and continue with SP1 + CU2.&lt;/B&gt;]&lt;/P&gt;
&lt;P&gt;c. Installed report server but do not configure.&lt;/P&gt;
&lt;P&gt;d. Install CU2: &lt;A href="http://support.microsoft.com/kb/970315" mce_href="http://support.microsoft.com/kb/970315"&gt;http://support.microsoft.com/kb/970315&lt;/A&gt; .&lt;/P&gt;
&lt;P&gt;8. Restart. &lt;/P&gt;
&lt;P&gt;9. Install WCF hotfix (KB976462)for Windows Server 2008 R2: &lt;A href="http://go.microsoft.com/fwlink/?LinkID=166231" mce_href="http://go.microsoft.com/fwlink/?LinkID=166231"&gt;http://go.microsoft.com/fwlink/?LinkID=166231&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;10. Restart. &lt;/P&gt;
&lt;P&gt;11. Check that server can access internet websites like &lt;A href="http://www.bing.com/" mce_href="http://www.bing.com/"&gt;http://www.bing.com/&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;12. Install ‘en_sharepoint_server_2010_beta_x64_x16-19249.exe' from MSDN, the Public Beta using the product key provided. &lt;/P&gt;
&lt;P&gt;13. Click Install software prerequisites.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930937/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930937/original.aspx"&gt;&lt;A href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image0015_7C82ADC0.png" mce_href="http://my/sites/ronbok/Blog/Lists/Posts/Attachments/18/clip_image0015_7C82ADC0.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;14. Click Next.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930939/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930939/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;15. Accept terms and click Next.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930940/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930940/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;16. When the preparation tool completes, click Finish. If not, then please look at the log file and correct internet access problem or manually download and install packages.&lt;/P&gt;
&lt;P&gt;[NOTE: You can run prerequisite tool more than once.]&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930941/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930941/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;17. Click Install SharePoint Server. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930943/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930943/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;18. Enter your product key (from MSDN) and press Continue. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930945/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930945/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;19. Accept terms and click Continue. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930946/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930946/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;20. Click Server Farm.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930947/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930947/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;21. Select Complete and then click Install Now.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930948/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930948/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;22. After installation completes, click Close to run the SharePoint Products and leave the checkbox checked to run Technologies Configuration Wizard.&lt;/P&gt;
&lt;P&gt;[NOTE: If you want to test the Office Web Applications, then uncheck running the wizard, click close and install the Office Web Applications installer en_office_web_applications_beta_x64_456141.exe from MSDN obtaining your product key. Then run the configuration wizard after the Office Web Applications install. The Wizard can be run more than once and you can always add the OWA installation later if desired.]&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930951/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930951/original.aspx"&gt;&lt;BR&gt;&lt;BR&gt;23. Click Next to start the configuration wizard. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930952/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930952/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;24. Click Yes. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930953/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930953/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;25. Select Create a new server farm and click Next.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930954/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930954/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;26. Enter the database server, username and password. Click Next.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930955/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930955/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;27. Enter your passphrase and then click Next.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930956/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930956/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;28. Click Next.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930959/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930959/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;29. Apply your configuration settings by clicking Next.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930960/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930960/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;30. After configuration completes, click Finish.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930961/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930961/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;31. Central administration will start in a browser and then click Ok.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930962/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930962/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;32. Click Next.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930963/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930963/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;33. Select contoso\spadmin for the Service Account and then click Next.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930964/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930964/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;34. Enter a Title and then click Ok to create a site collection.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930966/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930966/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;35. Farm configuration wizard completes and then click Finish.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930967/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930967/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Setting up User Profile Synchronization with Active Directory&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;1. On the Central Administration page, click Manage Service Applications.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930968/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930968/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. Highlight the User Profile Service Application by clicking the empty white-space to the right of the application title. Click Manage. Then, click Administrators. Give the farm admin account ‘SharePoint Admin' Full Control and then click Ok. [Optional: Repeat for all service applications.]&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9934386/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9934386/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[&lt;B&gt;NOTE: Type the account name ‘SharePoint Admin' and click the check name command button, don't use ‘contoso\spadmin'.&lt;/B&gt;]&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930970/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930970/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;3. Manage User Profile Service Application (by clicking the title or highlighting it and then click Manage).&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930971/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930971/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;4. Check that statistics appear on the far right column on the User Profile Service Application page.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930972/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930972/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;5. Go back to Central Administration home page by clicking Central Administration. &lt;/P&gt;
&lt;P&gt;6. Click ‘Manage services on server'.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930973/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930973/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;7. Click start on ‘Microsoft SharePoint Foundation User Code Service'. (Sandbox Solutions) &lt;/P&gt;
&lt;P&gt;8. Click Start on ‘User Profile Synchronization Service'.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930974/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930974/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;9. Click Ok to select the User Profile Application.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930975/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930975/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;10. It will take several minutes for the User Profile Synchronization Service to change from Starting to Started.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930977/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930977/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;11. When the service is started (in my lab environment took 7-8 minutes), you can refresh the services page and eventually you'll notice that the ‘User Profile Synchronization Service' status will be Started. Plus, you can start services.msc to see that the Forefront Identity Manager services are configured and started.&lt;BR&gt;View of services page:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930979/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930979/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;View of services.msc:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930980/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930980/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;12. Click Central Administration. &lt;/P&gt;
&lt;P&gt;13. Click Manage service applications. &lt;/P&gt;
&lt;P&gt;14. Click User Profile Service Application. &lt;/P&gt;
&lt;P&gt;15. Click Configure Synchronization Connections.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930981/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930981/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;16. Refresh browser or return to User Profile Service Application, click Configure Synchronization Connections and then click Create New Connection.&lt;/P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930982/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930982/original.aspx"&gt; 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;17. Enter your Active Directory information and then click Populate Container.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930984/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930984/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;18. Select OU containing your test users (Contoso) and then click Ok.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930985/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930985/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;19. Your Active Directory connection will be listed.&lt;/P&gt;
&lt;P&gt;[NOTE: If not, you didn't install the SharePoint 2010 software logged on as the contoso\spadmin account. Go back and try again. You did take snapshots, right?]&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930987/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930987/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[NOTE: You'll notice that once the Connection has been created, that you can't ‘Edit' the connection due to a scripting error on the page. This is a known issue. To work around this, hit F12, then in the debugger choose IE 7 mode, then click ‘Edit' again. You'll be able to edit the connection.]&lt;/P&gt;
&lt;P&gt;20. Navigate back to Manage Profile Service: User Profile Service Application page.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930988/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930988/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;21. Click Start a Profile Synchronization, select Start a Full Synchronization and then click Ok.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930989/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930989/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;22. Depending upon how many objects you are syncing, it may take a long time. With only 10 users, the user profile sync only took a few minutes. Refreshing the page shows that 10 User Profiles were imported.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930990/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930990/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;23. On the Manage User Profiles page, I can successfully search for "test" and the query returns all the test users.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/bobgerman/images/9930991/original.aspx" mce_src="http://blogs.msdn.com/photos/bobgerman/images/9930991/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes it works! &lt;/P&gt;
&lt;P&gt;You'll now want to start the SharePoint Foundation Search service and configure it along with installing the Office Web Applications if you already haven't done so. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9931241" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobgerman/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/bobgerman/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Resources for Developing SharePoint Solutions with Silverlight</title><link>http://blogs.msdn.com/bobgerman/archive/2009/06/21/resources-for-developing-sharepoint-solutions-with-silverlight.aspx</link><pubDate>Sun, 21 Jun 2009 20:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9795877</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/9795877.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=9795877</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=9795877</wfw:comment><description>&lt;P&gt;Many thanks to everyone who attended my talk at SPTechCon 2009 in Cambridge, MA! As promised, this posting will provide a pointer to the source code used in the demos, plus resources to help you get going with Silverlight in your SharePoint development projects.&lt;/P&gt;
&lt;P mce_keep="true"&gt;All the code is on MSDN Code Gallery at &lt;A href="http://code.msdn.com/SLParts" mce_href="http://code.msdn.com/SLParts"&gt;http://code.msdn.com/SLParts&lt;/A&gt;. This includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Minimalist samples, one of which&amp;nbsp;passes a&amp;nbsp;text message to&amp;nbsp;Silverlight for display, the other of which shows how to implement and&amp;nbsp;call a custom web service in SharePoint from Silverlight&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;An image viewer web part to display an image library as a slide show. This web part shows how to pass SharePoint data to Silverlight in a hidden form field to avoid the need to make an extra round-trip to the server.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A mini-survey web part to ask a single question and show the results when it is answered. This web part shows how to update SharePoint using a custom web service, which piggybacks the latest results for rendering in Silverlight&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A video field control that allows browsing SharePoint sites, libraries and documents to select a video in editing mode. This is an example of posting data back with the page (in a hidden form field), as is the expected behavior when editing a WCM page.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Here are some resources I found helpful in working with Silverlight and SharePoint:&lt;/P&gt;
&lt;H3&gt;Silverlight (General)&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Get Started Building Silverlight Applications - &lt;A href="http://silverlight.net/GetStarted/" mce_href="http://silverlight.net/GetStarted/"&gt;http://silverlight.net/GetStarted/&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;The Silverlight Geek Tutorials, Jesse Liberty - &lt;A href="http://silverlight.net/learn/tutorials.aspx" mce_href="http://silverlight.net/learn/tutorials.aspx"&gt;http://silverlight.net/learn/tutorials.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;.NET Framework Class Library for Silverlight, MSDN - &lt;A href="http://msdn.microsoft.com/en-us/library/cc838194(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc838194(VS.95).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc838194(VS.95).aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Silverlight Learning Resources - &lt;A href="http://silverlight.net/Learn/" mce_href="http://silverlight.net/Learn/"&gt;http://silverlight.net/Learn/&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Silverlight and SharePoint&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Professional Microsoft SharePoint Development Using Microsoft Silverlight 2, Steve Fox and Paul Stubbs - &lt;A href="http://www.amazon.com/Professional-SharePoint-Development-Silverlight-Programmer/dp/0470434007/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1245520930&amp;amp;sr=8-1" mce_href="http://www.amazon.com/Professional-SharePoint-Development-Silverlight-Programmer/dp/0470434007/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1245520930&amp;amp;sr=8-1"&gt;http://www.amazon.com/Professional-SharePoint-Development-Silverlight-Programmer/dp/0470434007/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1245520930&amp;amp;sr=8-1&lt;/A&gt; &lt;BR&gt;(This book is an excellent resource, full of all the gems you need to make SharePoint and Silverlight work together!)&lt;/LI&gt;
&lt;LI&gt;SharePoint Silverlight Demo - &lt;A href="http://www.wssdemo.com/Pages/silverlight.aspx" mce_href="http://www.wssdemo.com/Pages/silverlight.aspx"&gt;http://www.wssdemo.com/Pages/silverlight.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Silverlight Blueprint for SharePoint - &lt;A href="http://www.codeplex.com/SL4SP" mce_href="http://www.codeplex.com/SL4SP"&gt;http://www.codeplex.com/SL4SP&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Programming with LINQ&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;LINQ - .Net Language-Integrated Query, Don Box and Anders Hejlsberg - &lt;A href="http://msdn.microsoft.com/en-us/library/bb308959.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb308959.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb308959.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;LINQ to XML Samples - &lt;A href="http://msdn.microsoft.com/en-us/vbasic/bb688087.aspx" mce_href="http://msdn.microsoft.com/en-us/vbasic/bb688087.aspx"&gt;http://msdn.microsoft.com/en-us/vbasic/bb688087.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;101 Linq Samples (C#), MSDN - &lt;A href="http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx" mce_href="http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx"&gt;http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;101 Linq Samples (Visual Basic), MSDN - &lt;A href="http://msdn.microsoft.com/en-us/vbasic/bb688088.aspx" mce_href="http://msdn.microsoft.com/en-us/vbasic/bb688088.aspx"&gt;http://msdn.microsoft.com/en-us/vbasic/bb688088.aspx&lt;/A&gt;&lt;BR&gt;(NOTE: The 101 samples are different for the two languages! You may find it useful to check them both out.)&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Silverlight - HTML Bridge&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;HTML Bridge: Interaction Between HTML and Managed Code, MSDN - &lt;A href="http://msdn.microsoft.com/en-us/library/cc645076(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc645076(VS.95).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc645076(VS.95).aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Silverlight HTML Bridge FAQ, Erik Reitan - &lt;A href="http://blogs.msdn.com/erikreitan/archive/2008/12/02/silverlight-html-bridge-faq.aspx" mce_href="http://blogs.msdn.com/erikreitan/archive/2008/12/02/silverlight-html-bridge-faq.aspx"&gt;http://blogs.msdn.com/erikreitan/archive/2008/12/02/silverlight-html-bridge-faq.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Silverlight Cross-Domain Access&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Silverlight Cross-Domain Policy Helpers, Tim Heuer, &lt;A href="http://timheuer.com/blog/archive/2008/04/06/silverlight-cross-domain-policy-file-snippet-intellisense.aspx" mce_href="http://timheuer.com/blog/archive/2008/04/06/silverlight-cross-domain-policy-file-snippet-intellisense.aspx"&gt;http://timheuer.com/blog/archive/2008/04/06/silverlight-cross-domain-policy-file-snippet-intellisense.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Silverlight: Cross domain access blocked, use a server side proxy or XMLHttpRequest, Jon Galloway - &lt;A href="http://weblogs.asp.net/jgalloway/archive/2007/05/08/silverlight-cross-domain-access-blocked-use-a-server-side-proxy-or-xmlhttprequest.aspx" mce_href="http://weblogs.asp.net/jgalloway/archive/2007/05/08/silverlight-cross-domain-access-blocked-use-a-server-side-proxy-or-xmlhttprequest.aspx"&gt;http://weblogs.asp.net/jgalloway/archive/2007/05/08/silverlight-cross-domain-access-blocked-use-a-server-side-proxy-or-xmlhttprequest.aspx&lt;/A&gt;&lt;BR&gt;(NOTE: While using XMLHttpRequest will shift the issue from Silverlight to Javascript's cross-domain policy, be aware that the major browsers all disallow this by default and need their security settings to be dumbed-down, even in "trusted" mode, to make this work!)&lt;/LI&gt;
&lt;LI&gt;Solving Cross-Domain Issues with Silverlight, Leonid Sorokin, &lt;A href="http://www.codeproject.com/Articles/36119/Solving-cross-domain-issues-with-Silverlight-2.aspx" mce_href="http://www.codeproject.com/Articles/36119/Solving-cross-domain-issues-with-Silverlight-2.aspx"&gt;http://www.codeproject.com/Articles/36119/Solving-cross-domain-issues-with-Silverlight-2.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Visual Studio Extensions for Windows SharePoint Services 1.3&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Introducing VSeWSS 1.3 (Podcast series), Kirk Evans - &lt;A href="http://channel9.msdn.com/posts/kirke/SharePoint-for-Developers-Part-1-Introducing-VSeWSS-13/" mce_href="http://channel9.msdn.com/posts/kirke/SharePoint-for-Developers-Part-1-Introducing-VSeWSS-13/"&gt;http://channel9.msdn.com/posts/kirke/SharePoint-for-Developers-Part-1-Introducing-VSeWSS-13/&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Field Controls in SharePoint&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;How to: Create a Custom Field Control, MSDN - &lt;A href="http://msdn.microsoft.com/en-us/library/aa981226.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa981226.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa981226.aspx&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;How to Create a Custom SharePoint Field Control or Field Type, Clint Simon - &lt;A href="http://consulting.ascentium.com/blog/sp/Post80.aspx" mce_href="http://consulting.ascentium.com/blog/sp/Post80.aspx"&gt;http://consulting.ascentium.com/blog/sp/Post80.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Field Rendering Templates, MSDN - &lt;A href="http://msdn.microsoft.com/en-us/library/bb862055.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb862055.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb862055.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Web Services in SharePoint&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Creating a Custom Web Service for SharePoint, S. S. Ahmed, &lt;A href="http://it.toolbox.com/blogs/sharepoint-blog/creating-a-custom-web-service-for-sharepoint-13553" mce_href="http://it.toolbox.com/blogs/sharepoint-blog/creating-a-custom-web-service-for-sharepoint-13553"&gt;http://it.toolbox.com/blogs/sharepoint-blog/creating-a-custom-web-service-for-sharepoint-13553&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Walkthrough: Creating a Custom Web Service, MSDN - &lt;A href="http://msdn.microsoft.com/en-us/library/ms464040.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms464040.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms464040.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;SPDev: SharePoint Developer Utility, Mark Wagner - &lt;A href="http://www.crsw.com/spdev/Wiki%20Pages/Home.aspx" mce_href="http://www.crsw.com/spdev/Wiki%20Pages/Home.aspx"&gt;http://www.crsw.com/spdev/Wiki%20Pages/Home.aspx&lt;/A&gt; (Great command-line utility that modifies .wsdl and .disco files for easy deployment to SharePoint.)&lt;/LI&gt;
&lt;LI&gt;SharePoint 2007 Web Services, Tony Testa - &lt;A href="http://tonytestasworld.us/post/SharePoint-2007-Web-Services.aspx" mce_href="http://tonytestasworld.us/post/SharePoint-2007-Web-Services.aspx"&gt;http://tonytestasworld.us/post/SharePoint-2007-Web-Services.aspx&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9795877" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bobgerman/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/bobgerman/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>MOSS 2007 and SQL Server 2008 - Better Together</title><link>http://blogs.msdn.com/bobgerman/archive/2009/04/07/moss-2007-and-sql-server-2008-better-together.aspx</link><pubDate>Wed, 08 Apr 2009 04:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9537200</guid><dc:creator>BobGerman</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/9537200.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=9537200</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=9537200</wfw:comment><description>
&lt;STYLE&gt;H1 {
	FONT-SIZE: medium
}
&lt;/STYLE&gt;

&lt;P&gt;Many thanks to everyone who attended the MOSS 2007 and SQL 2008 "Better Together" webcast today. This blog entry will provide pointers to resources mentioned on the webcast, and will also stand on its own as an overview of the topic. Rich Crane will also post about this on his blog, and will include the slides for those who wanted them. Please check it out at &lt;A href="http://blogs.msdn.com/rich_crane"&gt;http://blogs.msdn.com/rich_crane&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Microsoft Office SharePoint Server 2007 (MOSS) and Windows SharePoint Services 3.0 (WSS) both added support for SQL Server 2008 in Service Pack 1. This same service pack allows MOSS and WSS to run on Windows Server 2008 as well. The SharePoint Team Blog has a great write-up on these, including pointers to both upgrade and slipstreamed installations, &lt;A title=here href="http://blogs.msdn.com/sharepoint/archive/2007/12/11/announcing-the-release-of-wss-3-0-sp1-and-office-sharepoint-server-2007-sp1.aspx" target=_blank mce_href="http://blogs.msdn.com/sharepoint/archive/2007/12/11/announcing-the-release-of-wss-3-0-sp1-and-office-sharepoint-server-2007-sp1.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As it turns out, there are a number of features in SQL Server 2008 that provide significant benefits to SharePoint shops. These include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Database backup compression - save significant time and storage, even with SharePoint's out of the box backup facility&lt;/LI&gt;
&lt;LI&gt;Compression in High Availability / Disaster Recovery scenarios - saves time and bandwidth when using SQL Mirroring or Log Shipping&lt;/LI&gt;
&lt;LI&gt;Failover Clustering - SQL 2008 improves the failover scenario through simplified installation and maintenance, and by removing the need for a drive letter per SQL Server instance&lt;/LI&gt;
&lt;LI&gt;Transparent Data Encryption - Allows the complete encryption of SharePoint content (or other) databases, including backups&lt;/LI&gt;
&lt;LI&gt;SQL Performance Studio - Provides rich reports for monitoring SQL usage, capacity planning and troubleshooting&lt;/LI&gt;
&lt;LI&gt;Policy Management - Facilitates policy enforcement, such as limiting the size of content databases or configuring Autogrowth as appropriate for SharePoint. This especially helpful when administration is shared by SharePoint admins and DBA's.&lt;/LI&gt;
&lt;LI&gt;Central Management - Very helpful when scaling out SQL or running multiple instances, central management allows the DBA to make changes across many databases such as setting policies or shrinking data files after removing content&lt;/LI&gt;&lt;/UL&gt;
&lt;H1&gt;Database Backup Compression&lt;/H1&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 425px; HEIGHT: 368px" title="Enabling backup compression in SQL Server Properties" alt="Enabling backup compression in SQL Server Properties" align=right src="http://blogs.msdn.com/photos/bobgerman/images/9537197/425x368.aspx" width=425 height=368 mce_src="http://blogs.msdn.com/photos/bobgerman/images/9537197/425x368.aspx"&gt;SharePoint stores all content and most configuration data in SQL Server, so a large part of backing up SharePoint is backing up the databases. SQL Server 2008 can compress those backups, saving time and storage costs.&lt;/P&gt;
&lt;P&gt;We tested this with a content database consisting of about 370,000 text documents in a document library. Without compression, using either SQL Server 2005 or 2008, the backup ran in about 30 seconds (to disk) and created a file 3.6GB in size. With SQL Server 2008 backup compression, the same backup (after a reboot to ensure we weren't using the disk cache) ran in 16 seconds and consumed only 729MB, only 20% of the original size in about half the time!&lt;/P&gt;
&lt;P&gt;This can be done as simply as adding "WITH COMPRESSION" to the SQL command, as in&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;BACKUP DATABASE [MY_CONTENT_DB]&lt;BR&gt;TO DISK = 'E:\BACKUP\MY_CONTENT_DB.bak'&lt;BR&gt;WITH COMPRESSION;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;What's more interesting, however, is that this can be used for ordinary SharePoint backups as provided in SharePoint Central Administration. To do this, go to the SQL Server 2008 instance and open the property page on the instance itself. On the "Database Settings" page, there is a checkbox labeled "Compress backup". One click later, every backup will be compressed, including the SharePoint out of the box backups (which use SQL Server's backup under the covers, but also save server and IIS settings to provide a comprehensive farm backup.)&lt;/P&gt;
&lt;P&gt;For more information on SQL Server 2008 backup compression, see &lt;A href="http://technet.microsoft.com/en-us/library/bb964719.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/bb964719.aspx"&gt;http://technet.microsoft.com/en-us/library/bb964719.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Compression in High Availability / Disaster Recovery Scenarios&lt;/H1&gt;
&lt;P&gt;Many SharePoint customers configure SQL Server to use either database mirroring or log shipping in order to provide high availability at the database level. A 2&lt;SUP&gt;nd&lt;/SUP&gt; SQL server (or servers) receives the logs or mirrors and thus becomes a hot standby in case of a failure of the primary SQL Server(s). &amp;nbsp;The redundant servers can be placed in a remote data center, providing for disaster recovery in addition to availability.&lt;/P&gt;
&lt;P&gt;For a background on these topics, from a SharePoint perspective, see:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Database Mirroring and Log Shipping - Which is Better? (Mike Watson)&lt;BR&gt;&lt;A href="http://blogs.msdn.com/mikewat/archive/2007/07/28/database-mirroring-and-log-shipping-which-is-better.aspx" target=_blank mce_href="http://blogs.msdn.com/mikewat/archive/2007/07/28/database-mirroring-and-log-shipping-which-is-better.aspx"&gt;http://blogs.msdn.com/mikewat/archive/2007/07/28/database-mirroring-and-log-shipping-which-is-better.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;SQL Server Log Shipping with SharePoint (Bill Baer)&lt;BR&gt;&lt;A href="http://blogs.technet.com/wbaer/archive/2008/03/13/sql-server-2000-2005-log-shipping-notes-with-sharepoint-products-and-technologies.aspx" target=_blank mce_href="http://blogs.technet.com/wbaer/archive/2008/03/13/sql-server-2000-2005-log-shipping-notes-with-sharepoint-products-and-technologies.aspx"&gt;http://blogs.technet.com/wbaer/archive/2008/03/13/sql-server-2000-2005-log-shipping-notes-with-sharepoint-products-and-technologies.aspx&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;SQL Server DB Mirroring with SharePoint (Bill Baer)&lt;BR&gt;&lt;A href="http://blogs.technet.com/wbaer/archive/2007/04/23/sql-server-2005-database-mirroring-and-windows-sharepoint-services-3-0-microsoft-office-sharepoint-server-2007-part-1-introduction-overview-and-basics.aspx" target=_blank mce_href="http://blogs.technet.com/wbaer/archive/2007/04/23/sql-server-2005-database-mirroring-and-windows-sharepoint-services-3-0-microsoft-office-sharepoint-server-2007-part-1-introduction-overview-and-basics.aspx"&gt;http://blogs.technet.com/wbaer/archive/2007/04/23/sql-server-2005-database-mirroring-and-windows-sharepoint-services-3-0-microsoft-office-sharepoint-server-2007-part-1-introduction-overview-and-basics.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;All these articles pre-date SQL Server 2008, however. SQL Server 2008 adds log stream compression, to save time and bandwidth, as well as bad page protection to reduce risk of hardware failures. This can reduce network utilization and reduce the failover time window. &lt;/P&gt;
&lt;P&gt;For more information on SQL Server 2008 mirroring with log stream compression, see &lt;A href="http://msdn.microsoft.com/en-us/library/cc645581.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc645581.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc645581.aspx&lt;/A&gt; and &lt;A href="http://sqlcat.com/technicalnotes/archive/2007/09/17/database-mirroring-log-compression-in-sql-server-2008-improves-throughput.aspx" target=_blank mce_href="http://sqlcat.com/technicalnotes/archive/2007/09/17/database-mirroring-log-compression-in-sql-server-2008-improves-throughput.aspx"&gt;http://sqlcat.com/technicalnotes/archive/2007/09/17/database-mirroring-log-compression-in-sql-server-2008-improves-throughput.aspx&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Failover Clustering&lt;/H1&gt;
&lt;P&gt;The other primary availability solution for SharePoint databases is clustering. This is the solution of choice for SAN users who enjoy the ability to share physical storage among servers. It is easier to install and manage than in previous versions, and it removes the need for drive letters for every SQL instance. It's also aligned with Windows Server 2008 clustering to allow heterogeneous hardware support as well as the use of IPv6 and DHCP.&lt;/P&gt;
&lt;P&gt;For more information see "Getting Started with SQL Server 2008 Failover Clustering" at &lt;A href="http://technet.microsoft.com/en-us/library/ms189134.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/ms189134.aspx"&gt;http://technet.microsoft.com/en-us/library/ms189134.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Transparent Data Encryption&lt;/H1&gt;
&lt;P&gt;Every day there are more reasons to secure enterprise data, for regulatory compliance, privacy and to stave off security threats in general. So in many cases it makes sense to encrypt SharePoint content.&lt;/P&gt;
&lt;P&gt;There are a few ways to do this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You can encrypt at the volume level using Windows Bitlocker, available in Windows Server 2008. This works well but doesn't protect data if it is moved off of the encrypted volume, as in the case of a backup or log stream.&lt;/LI&gt;
&lt;LI&gt;You can encrypt at a file level using NTFS; this has been available since Windows Server 2000. The encryption only applies to specific file(s), so again it won't protect backups, log streams or other copies of the database.&lt;/LI&gt;
&lt;LI&gt;You can encrypt at a field level using cell encryption, introduced in SQL Server 2005, however there are schema restrictions as to what can be encrypted. Since SharePoint needs to run on SQL Server 2000, its schema was not designed to take advantage of cell encryption, so it won't help us.&lt;/LI&gt;
&lt;LI&gt;SQL Server 2008 introduces Transparent Data Encryption. This encrypts at a database level with no schema restrictions or application awareness, so it's perfect for SharePoint scenarios.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Transparent Data Encryption (TDE) encrypts entire databases, including backups and transaction logs. Thus, offsite copies of confidential data (such as backups) are fully encrypted. If you move files to new storage, there's no need to remember to turn on encryption at the volume or file level because it's already encrypted by SQL Server 2008.&lt;/P&gt;
&lt;P&gt;Note that for completeness, enabling TDE on any user database also turns on encryption of TempDB. This is goodness, since it ensures complete encryption of the SharePoint content in question! However the implication is that even if only one in ten content databases are encrypted, all database activity that uses TempDB will incur the encryption overhead. For this reason, it may be advantageous to use a separate SQL Server 2008 instance for TDE databases.&lt;/P&gt;
&lt;P&gt;The most important thing to remember when setting up TDE is to BACK UP YOUR SERVICE MASTER KEY AND CERTIFICATE. See "&lt;A title="Career Limiting Move, SQL Server 2008 TDE" href="http://blogs.technet.com/andrew/archive/2008/08/26/career-limiting-move-sql-server-2008-transparent-data-encryption.aspx" target=_blank mce_href="http://blogs.technet.com/andrew/archive/2008/08/26/career-limiting-move-sql-server-2008-transparent-data-encryption.aspx"&gt;Career Limiting Move, SQL Server 2008 TDE&lt;/A&gt;" on Andrew Fryer's blog&amp;nbsp;for details.&lt;/P&gt;
&lt;P&gt;For more information on setting up TDE, see&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Database Encryption in SQL Server 2008 Enterprise Edition&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc278098.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc278098.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc278098.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Understanding Transparent Data Encryption (SQL Server 2008 Books Online)&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb934049.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb934049.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb934049.aspx&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H1&gt;&lt;IMG style="WIDTH: 261px; HEIGHT: 251px" title="Data Usage Collection" hspace=10 alt="Data Usage Collection" align=right src="http://blogs.msdn.com/photos/bobgerman/images/9537186/425x354.aspx" width=425 height=354 mce_src="http://blogs.msdn.com/photos/bobgerman/images/9537186/425x354.aspx"&gt;&lt;IMG style="WIDTH: 239px; HEIGHT: 300px" title="Server Activity History" alt="Server Activity History" vspace=10 align=right src="http://blogs.msdn.com/photos/bobgerman/images/9537185/original.aspx" width=239 height=300 mce_src="http://blogs.msdn.com/photos/bobgerman/images/9537185/original.aspx"&gt;SQL Performance Studio&lt;/H1&gt;
&lt;P&gt;SQL Server 2008 includes a great new tool for managing database performance and resource usage, called SQL Performance Studio. This is very useful for monitoring SQL Server in any application scenario, and SharePoint installations are no exception.&lt;/P&gt;
&lt;P&gt;SQL Performance Studio includes 3 out-of-the-box collection sets: Disk Usage Collection Set, Query Activity Collection Set and Server Activity Collection Set. These make it easier to monitor all aspects of database performance. For example, it's possible to monitor content database growth over time to better plan splitting of content databases. The Server Activity Collection Set retains data on CPU usage, memory, disk I/O and network utilization. This can be useful in indentifying peak usage periods, or knowing when to scale out to multiple servers. &lt;/P&gt;
&lt;P&gt;For details, see:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;SQL Server 2008 - Performance Studio (Rob Carrol)&lt;BR&gt;&lt;A href="http://blogs.technet.com/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx" target=_blank mce_href="http://blogs.technet.com/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx"&gt;http://blogs.technet.com/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;SQL Server 2008: New Performance Monitoring and Troubleshooting Using Management Studio (Podcast)&lt;BR&gt;&lt;A href="http://www.microsoft.com/events/podcasts/default.aspx?topic=Topic-202f8d31-bbff-4d7e-a3f5-c4f19f935a09&amp;amp;audience=Audience-b046181f-3333-4c19-977e-c230ed48d9c0&amp;amp;seriesID=&amp;amp;pageId=x558" target=_blank mce_href="http://www.microsoft.com/events/podcasts/default.aspx?topic=Topic-202f8d31-bbff-4d7e-a3f5-c4f19f935a09&amp;amp;audience=Audience-b046181f-3333-4c19-977e-c230ed48d9c0&amp;amp;seriesID=&amp;amp;pageId=x558"&gt;http://www.microsoft.com/events/podcasts/default.aspx?topic=Topic-202f8d31-bbff-4d7e-a3f5-c4f19f935a09&amp;amp;audience=Audience-b046181f-3333-4c19-977e-c230ed48d9c0&amp;amp;seriesID=&amp;amp;pageId=x558&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;TechNet Virtual Lab: Using Performance Studio in SQL Server 2008&lt;BR&gt;&lt;A href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032371227&amp;amp;EventCategory=3" target=_blank mce_href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032371227&amp;amp;EventCategory=3"&gt;http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032371227&amp;amp;EventCategory=3&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H1&gt;Policy Management&lt;/H1&gt;
&lt;P&gt;It's common in a large enterprise that different people or teams will be responsible for SharePoint administration and Database administration. This can lead to some challenges, as these two must work closely in concert to successfully manage a large scale SharePoint farm.&lt;/P&gt;
&lt;P&gt;A specific issue that arises is that the easiest way to set up SharePoint databases is to let SharePoint create them directly. Thus, one or more SharePoint service accounts are given securityadmin and dbcreator SQL server roles so SharePoint administrators can create, say, content databases right from SharePoint Central Administration.&lt;/P&gt;
&lt;P&gt;The other alternative is to ask DBA's to create the databases, and to let the SharePoint administrator connect to them rather than create them. This is documented in "Deploy using DBA-created Databases" (&lt;A href="http://technet.microsoft.com/en-us/library/cc262869.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262869.aspx"&gt;http://technet.microsoft.com/en-us/library/cc262869.aspx&lt;/A&gt;). While this works, it's complex, and may discourage SharePoint administrators from doing the right thing in terms of managing content databases for growth over time due to the overhead of setting them up.&lt;/P&gt;
&lt;P&gt;SQL Server 2008 brings another option to the table: Policy Management. This allows DBA's to grant SharePoint service accounts and administrators the rights to manage some or all of their own databases, while maintaining tight control over database policies. For example, a policy could be created to enforce size limits on content DB's, or to ensure the Autogrowth feature is set to a fixed size rather than a percentage, as recommended for SharePoint content databases.&lt;/P&gt;
&lt;P&gt;Policies can be run on demand, on a schedule, or when a change is made. The last of these can be set up to prevent an out-of-policy change, or to simply log it and alert an administrator.&lt;/P&gt;
&lt;P&gt;For details on Policy Management, see:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Administering Servers by Using Policy-Based Management (SQL Server 2008 Books Online)&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/bb510667.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/bb510667.aspx"&gt;http://technet.microsoft.com/en-us/library/bb510667.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;SQL Server 2008 Policy Management Blogcast (Andrew Fryer)&lt;BR&gt;&lt;A href="http://blogs.technet.com/andrew/archive/2008/04/04/sql-server-2008-policy-management-blogcast.aspx" target=_blank mce_href="http://blogs.technet.com/andrew/archive/2008/04/04/sql-server-2008-policy-management-blogcast.aspx"&gt;http://blogs.technet.com/andrew/archive/2008/04/04/sql-server-2008-policy-management-blogcast.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H1&gt;Central Management&lt;/H1&gt;
&lt;P&gt;A typical whiteboard drawing of a SharePoint farm will generally contain a single SQL Server, or a pair of SQL Servers set up for failover using clustering, SQL mirroring or log shipping. However in practice, it's possible to scale out the database layer onto multiple SQL servers or instances. For example, content databases could be distributed across multiple servers.&lt;/P&gt;
&lt;P&gt;Of course this presents a management challenge - the more SQL Servers, the more management. If only there were a way to centrally manage multiple server instances, and even work with queries or policies across these servers.&lt;/P&gt;
&lt;P&gt;This is exactly the situation addressed by SQL Server 2008 Central Management. Registered servers, or groups of servers, can be queried simultaneously. In addition, policies can be managed and checked across servers using this facility. For example, a DBA could check for policy compliance across all servers from a single screen, with a single action.&lt;/P&gt;
&lt;P&gt;For details, see:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;How to: Create a Central Management Server and Server Group (SQL Server Management Studio)&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb934126.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb934126.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb934126.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Administering Multiple Servers Using Central Management Servers&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/bb895144.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/bb895144.aspx"&gt;http://technet.microsoft.com/en-us/library/bb895144.aspx&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H1&gt;Resources&lt;/H1&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;General SharePoint/DB Resources&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;MOSS and WSS SP1&lt;BR&gt;&lt;A href="http://blogs.msdn.com/sharepoint/archive/2007/12/11/announcing-the-release-of-wss-3-0-sp1-and-office-sharepoint-server-2007-sp1.aspx" target=_blank mce_href="http://blogs.msdn.com/sharepoint/archive/2007/12/11/announcing-the-release-of-wss-3-0-sp1-and-office-sharepoint-server-2007-sp1.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2007/12/11/announcing-the-release-of-wss-3-0-sp1-and-office-sharepoint-server-2007-sp1.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Database Maintenance for Office SharePoint Server 2008&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc262731.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262731.aspx"&gt;http://technet.microsoft.com/en-us/library/cc262731.aspx&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;Planning and Monitoring SQL Server Storage for Office SharePoint Server&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc263261.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc263261.aspx"&gt;http://technet.microsoft.com/en-us/library/cc263261.aspx&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;Office SharePoint Server Database Types and Descriptions&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc678868.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc678868.aspx"&gt;http://technet.microsoft.com/en-us/library/cc678868.aspx&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Other takes on SharePoint with SQL Server 2008&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Improving SharePoint with SQL Server 2008 (Mike Watson): &lt;A href="http://blogs.msdn.com/mikewat/archive/2008/08/19/improving-sharepoint-with-sql-server-2008.aspx" target=_blank mce_href="http://blogs.msdn.com/mikewat/archive/2008/08/19/improving-sharepoint-with-sql-server-2008.aspx"&gt;http://blogs.msdn.com/mikewat/archive/2008/08/19/improving-sharepoint-with-sql-server-2008.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Integration of SQL Server 2008 and Office SharePoint Server 2008 (TechNet):&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc990273.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc990273.aspx"&gt;http://technet.microsoft.com/en-us/library/cc990273.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;SQL Server 2008 Availability Topics&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Database Mirroring and Log Shipping - Which is Better? (Mike Watson)&lt;BR&gt;&lt;A href="http://blogs.msdn.com/mikewat/archive/2007/07/28/database-mirroring-and-log-shipping-which-is-better.aspx" target=_blank mce_href="http://blogs.msdn.com/mikewat/archive/2007/07/28/database-mirroring-and-log-shipping-which-is-better.aspx"&gt;http://blogs.msdn.com/mikewat/archive/2007/07/28/database-mirroring-and-log-shipping-which-is-better.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;SQL Server Log Shipping with SharePoint (Bill Baer)&lt;BR&gt;&lt;A href="http://blogs.technet.com/wbaer/archive/2008/03/13/sql-server-2000-2005-log-shipping-notes-with-sharepoint-products-and-technologies.aspx" target=_blank mce_href="http://blogs.technet.com/wbaer/archive/2008/03/13/sql-server-2000-2005-log-shipping-notes-with-sharepoint-products-and-technologies.aspx"&gt;http://blogs.technet.com/wbaer/archive/2008/03/13/sql-server-2000-2005-log-shipping-notes-with-sharepoint-products-and-technologies.aspx&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;SQL Server DB Mirroring with SharePoint (Bill Baer)&lt;BR&gt;&lt;A href="http://blogs.technet.com/wbaer/archive/2007/04/23/sql-server-2005-database-mirroring-and-windows-sharepoint-services-3-0-microsoft-office-sharepoint-server-2007-part-1-introduction-overview-and-basics.aspx" target=_blank mce_href="http://blogs.technet.com/wbaer/archive/2007/04/23/sql-server-2005-database-mirroring-and-windows-sharepoint-services-3-0-microsoft-office-sharepoint-server-2007-part-1-introduction-overview-and-basics.aspx"&gt;http://blogs.technet.com/wbaer/archive/2007/04/23/sql-server-2005-database-mirroring-and-windows-sharepoint-services-3-0-microsoft-office-sharepoint-server-2007-part-1-introduction-overview-and-basics.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Database Mirroring and Log Shipping&lt;BR&gt;&lt;A href="http://sqlcat.com/technicalnotes/archive/2007/09/17/database-mirroring-log-compression-in-sql-server-2008-improves-throughput.aspx" target=_blank mce_href="http://sqlcat.com/technicalnotes/archive/2007/09/17/database-mirroring-log-compression-in-sql-server-2008-improves-throughput.aspx"&gt;http://sqlcat.com/technicalnotes/archive/2007/09/17/database-mirroring-log-compression-in-sql-server-2008-improves-throughput.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Availability Enhancements in SQL Server 2008 (SQL Server 2008 Books Online)&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc645581.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc645581.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc645581.aspx&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;Getting Started with SQL Server 2008 Failover Clustering (TechNet)&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/ms189134.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/ms189134.aspx"&gt;http://technet.microsoft.com/en-us/library/ms189134.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Transparent Data Encryption&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Database Encryption in SQL Server 2008 Enterprise Edition&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc278098.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc278098.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc278098.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Understanding Transparent Data Encryption (SQL Server 2008 Books Online)&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb934049.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb934049.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb934049.aspx&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;SQL Performance Studio&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;SQL Server 2008 - Performance Studio (Rob Carrol)&lt;BR&gt;&lt;A href="http://blogs.technet.com/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx" target=_blank mce_href="http://blogs.technet.com/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx"&gt;http://blogs.technet.com/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;SQL Server 2008: New Performance Monitoring and Troubleshooting Using Management Studio (Podcast)&lt;BR&gt;&lt;A href="http://www.microsoft.com/events/podcasts/default.aspx?topic=Topic-202f8d31-bbff-4d7e-a3f5-c4f19f935a09&amp;amp;audience=Audience-b046181f-3333-4c19-977e-c230ed48d9c0&amp;amp;seriesID=&amp;amp;pageId=x558" target=_blank mce_href="http://www.microsoft.com/events/podcasts/default.aspx?topic=Topic-202f8d31-bbff-4d7e-a3f5-c4f19f935a09&amp;amp;audience=Audience-b046181f-3333-4c19-977e-c230ed48d9c0&amp;amp;seriesID=&amp;amp;pageId=x558"&gt;http://www.microsoft.com/events/podcasts/default.aspx?topic=Topic-202f8d31-bbff-4d7e-a3f5-c4f19f935a09&amp;amp;audience=Audience-b046181f-3333-4c19-977e-c230ed48d9c0&amp;amp;seriesID=&amp;amp;pageId=x558&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;TechNet Virtual Lab: Using Performance Studio in SQL Server 2008&lt;BR&gt;&lt;A href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032371227&amp;amp;EventCategory=3" target=_blank mce_href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032371227&amp;amp;EventCategory=3"&gt;http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032371227&amp;amp;EventCategory=3&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;SQL Server Central Management&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;How to: Create a Central Management Server and Server Group (SQL Server Management Studio)&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb934126.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb934126.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb934126.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Administering Multiple Servers Using Central Management Servers&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/bb895144.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/bb895144.aspx"&gt;http://technet.microsoft.com/en-us/library/bb895144.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;(Cross-posted to the &lt;A title="MTC Blog" href="http://blogs.msdn.com/mtc/" mce_href="http://blogs.msdn.com/mtc/"&gt;MTC Blog&lt;/A&gt;)&lt;/EM&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;EM&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 7.5pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN" lang=EN&gt;This posting is provided "AS IS" with no warranties, and confers no rights. Thank you for reading it!&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9537200" width="1" height="1"&gt;</description></item><item><title>Microsoft Dynamics CRM Incubation Event - Take 2!</title><link>http://blogs.msdn.com/bobgerman/archive/2009/03/31/microsoft-dynamics-crm-incubation-event-take-2.aspx</link><pubDate>Wed, 01 Apr 2009 00:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9524110</guid><dc:creator>BobGerman</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/9524110.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=9524110</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=9524110</wfw:comment><description>&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;I just wanted to let you know about a cool event coming up at the Boston MTC…&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Following a very successful first round, the MTC is hosting a 2&lt;SUP&gt;nd&lt;/SUP&gt; Microsoft Dynamics CRM Incubation Week. If you or your company is interested in integrating your software with Microsoft Dynamics CRM, this is a great opportunity! &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The selected teams will spend a whole week (April 20-24) at the MTC in Waltham, MA. The first ½ day will be spent in CRM training, and then each team will be provided with servers and one of our MTC development suites for 3½ days of hands-on development with the assistance of our CRM and .NET experts. The final day will be dedicated to packaging up each team’s solution (so they can keep and build on it), plus demonstrating solutions to a panel of judges for various prizes.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;All in all this promises to be a great week and an opportunity to extend your product’s reach by integrating with Microsoft Dynamics CRM. For details, please see &lt;A title="Sanjay Jain's blog" href="http://blogs.msdn.com/sanjayjain/archive/2009/02/25/startups-announcing-2nd-microsoft-dynamics-crm-incubation-week.aspx" target=_blank mce_href="http://blogs.msdn.com/sanjayjain/archive/2009/02/25/startups-announcing-2nd-microsoft-dynamics-crm-incubation-week.aspx"&gt;Sanjay Jain’s blog&lt;/A&gt;&lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Thanks!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9524110" width="1" height="1"&gt;</description></item><item><title>SharePoint Saturday in Boston ... and Beyond!</title><link>http://blogs.msdn.com/bobgerman/archive/2009/03/06/sharepoint-saturday-in-boston-and-beyond.aspx</link><pubDate>Fri, 06 Mar 2009 18:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9462799</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/9462799.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=9462799</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=9462799</wfw:comment><description>&lt;P&gt;If you're interested in SharePoint and are in the Boston area (or would like to visit!) then you'll definitely want to know about SharePoint Saturday (&lt;A href="http://www.sharepointsaturday.org/boston/"&gt;http://www.sharepointsaturday.org/boston/&lt;/A&gt;). &amp;nbsp;There is a great line-up of speakers and sessions and you can't beat the price (free)! &lt;/P&gt;
&lt;P&gt;I'll be speaking on Enterprise Search, and providing the low-down on our new FAST Enterprise Search Platform and the search roadmap that was revealed last month at FastForward 2009. I'd love to see you there ... and of course there are dozens of other great sessions, all listed on the web site.&lt;/P&gt;
&lt;P&gt;If you're not in Boston, SharePoint Saturday events are popping up everywhere! They're coming soon to Tulsa and Atlanta, and I've heard talk of other cities as well. Check out &lt;A href="http://www.sharepointsaturday.org/"&gt;http://www.sharepointsaturday.org/&lt;/A&gt; for the latest events and dates.&lt;/P&gt;
&lt;P&gt;Thanks and I hope to see you at SharePoint Saturday!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9462799" width="1" height="1"&gt;</description></item><item><title>AJAX-Enabling your Zone Tabs Web Part</title><link>http://blogs.msdn.com/bobgerman/archive/2009/02/25/ajax-enabling-your-zone-tabs-web-part.aspx</link><pubDate>Wed, 25 Feb 2009 17:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9444164</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/9444164.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=9444164</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=9444164</wfw:comment><description>&lt;P&gt;If you've been reading for a while you may remember I wrote a web part called &lt;A title='"Zone Tabs"' href="http://code.msdn.com/ZoneTabs" mce_href="http://code.msdn.com/ZoneTabs"&gt;"Zone Tabs"&lt;/A&gt; whose job in life is to control other web parts in its "Zone." Thus you can put different web parts on various tabs, and allow users to select what they want to see with less scrolling. This has been extremely popular, yet people are left wanting more. By far and away, the #1 request has been to avoid the postback that refreshes the whole screen when a tab is selected.&lt;/P&gt;
&lt;P&gt;Well I'm happy to announce that Mehul Bhuva has solved that problem and has a full explaination on his blog at &lt;A href="http://mehulbhuva.blogspot.com/2009/02/ajaxify-zone-tabs-web-part-in.html"&gt;http://mehulbhuva.blogspot.com/2009/02/ajaxify-zone-tabs-web-part-in.html&lt;/A&gt;! His approach is to use the ASP.NET AJAX UpdatePanel control. Since the tabs and other web parts in a "Zone" need to be refreshed together - without re-painting the rest of the page - his approach is to insert the UpdatePanel right into the page around the WebPartZone control using SharePoint Designer.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Many thanks and kudos to you Mehul - many people requested this and you did something about it which we all appreciate!!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9444164" width="1" height="1"&gt;</description></item><item><title>The MTC’s and the Build-Buy Continuum</title><link>http://blogs.msdn.com/bobgerman/archive/2008/09/30/the-mtc-s-and-the-build-buy-continuum.aspx</link><pubDate>Wed, 01 Oct 2008 01:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8970806</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/8970806.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=8970806</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=8970806</wfw:comment><description>&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The phrase “Build vs. Buy” has become so widely used that it has become a part of our industry’s lexicon. In general, it refers to the decision whether to build a new application, or buy one “off the shelf.” However there is an implied “either/or” approach to the decision which can be very self-limiting.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;First of all, consider this idea of building or buying. In a pure “build” approach, we would have to start by writing an operating system and then work our way up. Or perhaps we should design our own CPU chips? Of course this is silly! How about a pure “buy” approach? Well if an application is very general in nature – such as a word processor – then sure, it’s likely that a pure “buy” solution is out there in a shrink-wrapped box somewhere. But for a complex enterprise solution, at the very least some kind of configuration or customization is going to be needed to fit an organization’s needs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;So from the start we can see that pure “build” isn’t going to happen, and while “buy” may make sense for a general-purpose desktop application, it’s likely that a more complex application is going to require at least some configuration or customization! In reality we are dealing with a continuum of approaches ranging from “build” to “buy”; there may be multiple points along that scale that would work technically but present different trade-offs from a business and engineering perspective.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;At the Microsoft Technology Centers, it’s our job to help our customers select the right solution, given of course that it’s based on Microsoft technology. These customers have a lot to think about! They have to navigate user requirements, technical constraints and multiple vendors to make their choice. That “build vs. buy” decision, even within a single vendor’s platform, is just one more wrinkle they need to sort out. For example, is a particular solution better suited to SharePoint, or a custom web application? Should that invoicing application be custom, or could it be built on top of Microsoft Word or Excel as an Office Business Application (OBA)? Should those reports be driven by Performance Point, SQL Reporting Services or by writing an application with WPF or SilverLight? The answer is different for every customer, yet each of these represents a different point along the build-buy continuum.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Each time we use a vendor’s technology – whether it’s “middleware” on a server or a customizable desktop application – we are moving the needle away from “build” and over towards “buy”. If we look at the spectrum, it might look something like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;BUILD&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l2 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Custom application from “the ground up”&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l2 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Custom application on a rich framework (e.g. .NET Framework)&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l2 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Custom application on one or more vendor products (e.g. Commerce Server application)&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l2 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Multiple vendor applications with custom integration, or integration with a smaller custom application&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l2 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Vendor application with customizations (e.g. a SharePoint portal with custom developed web parts and workflows)&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l2 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Vendor application with configuration (e.g. a SharePoint portal configured with the customer’s logo and desired information structure)&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l2 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Vendor application “out of the box”&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;BUY&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Of course, these are fuzzy and may overlap, and there are often hybrid approaches. Making this decision requires deep knowledge of the candidate technologies!&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;THE CASE FOR MOVING TOWARDS “BUY”&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;I would say that most of the customers I’ve worked with want to buy and not build. While there are some good reasons for this, it makes sense to think them through. Here are some typical ones:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 37.8pt; mso-list: l3 level1 lfo2" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Cost: This needs to be analyzed for each case. If a vendor’s product does only 20% of what’s needed, and the rest is all custom, then it’s probably a waste of money. On the other hand if the product removes a significant amount of the build cost, then it may well be worth it. Vendors have the ability to spread their development costs across many customers, so they &lt;I&gt;should&lt;/I&gt; be passing that economy of scale to their customers!&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 37.8pt; mso-list: l3 level1 lfo2" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Delivery time: Again, if the vendor’s product removes a significant amount of building, it will usually save time. On the other hand, if a vendor’s product is a bad fit, it may cost time (and money) working around the issues.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 37.8pt; mso-list: l3 level1 lfo2" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Support: The vendor supports and updates the product over time. This needs to factor into the cost equation, but it also has implications on reliability and security, assuming your vendor issues periodic fixes to their product and has a good support offering&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 37.8pt; mso-list: l3 level1 lfo2" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Features: Any project is going to have a features list that is too long, and project managers always draw a “cut” line somewhere. A vendor’s product may have some of these lower priority features included, so they are more or less “free” if the cost of the product is justified by the high priority factors.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 37.8pt; mso-list: l3 level1 lfo2" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Agility: If it’s well designed, a vendor’s product or platform can provide more agility in the form of allowing quick changes through configuration, for example. It may remove some agility as well, however; if users don’t want to do things the way the product was designed to do them, then excessive customization or disgruntled business users may be the result.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;THE CASE FOR MOVING TOWARDS “BUILD”&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The same factors come into play in building more of the solution…&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo3" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Cost: If the vendor’s product is only a marginally good fit, the cost to purchase, learn, customize and deploy it may be more than the cost to build it all. Or if the product cost is excessive compared to the work it saves, again it’s time to pull out the coding pencils.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo3" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Delivery Time: In general, buying something that works should save time over building a new one, but don’t forget the time needed to learn the new technology! If an application is simple, and developers are ready and trained with the technology to write it, it might be quicker than learning a vendor product. But this applies only in the simplest of applications, and these projects have a way of being harder than they first appear! Analyze all the use cases, for current and future needs, before shying away due to a learning curve.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo3" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Support: Vendor support isn’t usually fun, and there’s a certain satisfaction to having the ability to fix it yourself! However you need to ask who has the time and skills to do the support. And what if they get hit by the proverbial bus? How hard would it be for a new person to pick it up? The larger and more complex the solution, the harder it will be to support all aspects of it yourself.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo3" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Features: If there is no available product that satisfies most of the high-priority requirements, then “build” is the only option. Sometimes the only way to get the desired feature set is to build them.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo3" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Agility: If you can think it, you could build it … given infinite resources of course. If you don’t want to compromise at all, then build the parts that need to be “just so”. But be aware that you’ll only be as agile as your ability to hire developers to make a change, and that they will need time to make it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.25in" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Making these tradeoffs isn’t easy, and requires a deep understanding of the business requirements, the customer’s organization, and the technologies in question. This is part of what happens at an MTC, usually during an “Architecture Design Session,” with the customer, partners and MTC architects all working together as a team to find the best solution among the alternatives.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.25in" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;COMMON FALLACIES:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.25in" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Here are some common misconceptions about build vs. buy, in addition to the idea that it’s an either/or decision:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 0.75in; mso-list: l1 level1 lfo4" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;“You can’t be innovative unless you build it yourself”&lt;BR&gt;The range of possibilities using configuration and customization are surprising! Even the way an application is used can be unique to a situation. It’s worth considering moving towards the “buy” side even if you think nobody has done something before.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 0.75in; mso-list: l1 level1 lfo4" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;“Not Invented Here”&lt;BR&gt;People who have built something, or who want to, are likely to defend more of a “build” solution. Do the analysis and make a business decision.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 0.75in; mso-list: l1 level1 lfo4" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;“We’d only be using a small part of the product’s capabilities, so it’s a bad fit.”&lt;BR&gt;If a product provides a lot of value for the solution, it’s worth considering even if there are other parts of the product that won’t be needed. Do the math. If using the product saves build and support costs, then it may be a good value even if you’re paying for some features you’ll never use.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.75in; mso-list: l1 level1 lfo4" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;“If I Had a Hammer”&lt;BR&gt;If the team uses hammers all the time, every solution will look more like a nail. There is some value to staying within a team’s comfort zone, but it is limited. Does the vendor’s product add enough value to justify the learning curve?&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;A SHORT STORY&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;I’d like to close with a short story of a customer who ran headlong into the build-buy continuum, and nearly had to suffer the worst of both worlds: a large complex application with a lot of “building” and a lot of code to support, which still required a significant vendor product. I’ll change all the names to protect my customer – and myself I suppose!&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Woodgrove Bank wanted a new executive portal for their Intranet. The solution involved a lot of financial “dashboards” combined with documents and collaboration information such as tasks and calendars. I led a briefing and Architecture Design Session for Woodgrove at the MTC, and they ended up choosing a solution based on SharePoint technology. They also chose another software package from Fabrikam Software, and a system integrator, Contoso Services, to put it all together.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;About six months later, the customer called, somewhat upset about the project. It seemed that many of the things that I told them would be “out of the box” with SharePoint ended up requiring custom development, and the software from Fabrikam was nearly useless, according to the folks at Contoso Services. As a result, his implementation cost was skyrocketing as Contoso built more and more of the solution from scratch – on top of SharePoint. The customer was starting to feel like the software he purchased was a waste of money.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;We agreed to hold another Architecture Design Session to review the architecture and determine what had happened. We had everyone there: stake-holders from Woodgrove, Fabrikam and Contoso were in attendance as well as me and others from Microsoft.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The meeting quickly became awkward as Contoso spelled out the reasons that, feature after feature, SharePoint’s way of doing something wouldn’t work for the Woodgrove executive portal. For example, they had asked users if they wanted the search box on the right or left; the users said “Left” and SharePoint had it on the right, so that was custom work! (The product was SharePoint Portal Server 2003; many of their customizations would have been easier in the 2007 equivalent.) The Fabrikam product features met a similar fate – they were close but didn’t exactly meet the needs, which were all taken literally with no cost-benefit tradeoffs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The Woodgrove project lead started squirming in his seat. Contoso had an elaborate data model that caused a huge amount of extra work, and had a theoretical technical justification over just using the SharePoint API. One by one, the Contoso consultants justified their customizations based on business requirements or technical arguments, but there had been no cost-benefit analysis. By the end of the day, the customer was fuming, and fortunately not at me! If only they had asked, he would have been glad to relax the requirements in a way that got the job done using the provided software components. A couple of weeks later, Fabrikam sent one of their consultants over to Woodgrove Bank and they were able to replace a lot more of the custom work with their built-in functionality.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Woodgrove had no technical staff on the project: they had a strong business sponsor but no knowledge of the technology on their own. And as it turned out, Contoso only made money by billing for services, and they took advantage of the situation. This is unusual, by the way – the vast majority of systems integrators I’ve worked with would take the high road in such cases – but still there is the tendency for them to stay in their own comfort zone, and if that’s writing code, you can expect to end up with a lot of it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Lessons learned? I’d say to any customer, if you don’t have your own technical staff to watch over a project, then hire another consultant to do it. I see this often. One consultant is hired to oversee the technical decisions and architecture, and is &lt;I&gt;not&lt;/I&gt; considered for the implementation project. That way they can watch out for the customer while allowing the customer to hire an implementation specialist in whatever technology they end up choosing. Better yet, involve the software vendor's consulting services in an architectural and QA role; Microsoft Consulting Services often provides this kind of engagement.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This certainly would have paid for itself at Woodgrove! All those small build-buy decisions pushed them back towards “build” after they already had decided to mostly “buy”, so in effect many features were purchased twice: once in a product and once for the custom code version that Contoso Services wrote.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;SUMMARY&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;As our industry gets better and better at reusing code, whether it’s in class libraries or whole application suites that allow customization, there will be more and more opportunities to fine tune the build-buy decision. Realize that it’s a continuum and keep an open mind as you consider the options along that spectrum.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;I&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;This posting is provided “AS IS” with no warranties, and confers no rights. Thank you for reading it!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;(cross-posted to the new &lt;A title="MTC Blog" href="http://blogs.msdn.com/mtc/" target=_blank mce_href="http://blogs.msdn.com/mtc/"&gt;MTC Blog&lt;/A&gt; - check it out to see what the rest of the MTC community have to say!)&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8970806" width="1" height="1"&gt;</description></item><item><title>The Compleat Windows Server 2008 Laptop</title><link>http://blogs.msdn.com/bobgerman/archive/2008/09/17/the-compleat-windows-server-2008-laptop.aspx</link><pubDate>Wed, 17 Sep 2008 07:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8954815</guid><dc:creator>BobGerman</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/8954815.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=8954815</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=8954815</wfw:comment><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;I just did something I’ve been meaning to do for a long while: re-tooled my laptop with Windows Server 2008 and Hyper-V virtualization. I really appreciate the Hyper-V performance, as well as the modularity of the operating system: it’s easy to turn pieces on and off so you only run what you need. This is a great setup for a developer or IT Pro who needs to run server software on the go. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;A few friends asked how I set it up, so I thought I’d put it on my blog for anyone else who’s interested and hasn’t already tried it. There are plenty of great resources already on the web, but I didn’t find any single resource that showed how to get all my desired laptop features working. So here is my list of links to the various steps for transforming the Windows Server 2008 install into a mobile workstation with the Vista UI, search, wireless, Bluetooth, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;Note that Hyper-V requires hardware and BIOS support in order to work, so it’s generally available only on relatively new machines made in the last year or so. Also, when you enable Hyper-V, the operating system shuts off the sleep (S3) and hibernation (S4) features because supporting these states in a hypervisor is an “incredibly complicated problem”, according to &lt;A class="" title="Virtual PC Guy" href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/02/27/hyper-v-and-power-management.aspx" target=_blank mce_href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/02/27/hyper-v-and-power-management.aspx"&gt;Virtual PC Guy&lt;/A&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;. I can only imagine...&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Anyway, here are the sites that got me through the process, in more or less the order I did them:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in" cellSpacing=0 cellPadding=0 border=0 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #9bbb59; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; COLOR: white; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Topic&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #9bbb59; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; COLOR: white; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Link&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Install the OS&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Just install the OS to start; I chose x64 of course so I could get to all 4GB of memory on my laptop. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Wireless&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;In Server Manager, enable the “Wireless LAN Service” feature to install Wifi handling. Several people recommended doing this before installing the Wifi drivers; I did it in the other order and it worked anyway.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 66.05pt; mso-yfti-irow: 3"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; HEIGHT: 66.05pt; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Drivers&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; HEIGHT: 66.05pt; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Install drivers for your laptop. Vista drivers generally work fine; I had no problems with any of them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;NOTE: I had a few unknown devices even after installing the obvious drivers, but they all got taken care of when the Bluetooth stack was added later on.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Enable the Vista UI and Desktop Search&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A class="" title=http://blogs.msdn.com/vijaysk/archive/2008/02/11/using-windows-server-2008-as-a-super-desktop-os.aspx href="http://blogs.msdn.com/vijaysk/archive/2008/02/11/using-windows-server-2008-as-a-super-desktop-os.aspx" target=_blank mce_href="http://blogs.msdn.com/vijaysk/archive/2008/02/11/using-windows-server-2008-as-a-super-desktop-os.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://blogs.msdn.com/vijaysk/archive/2008/02/11/using-windows-server-2008-as-a-super-desktop-os.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;UPDATE: Step #6 is missing a part ... go into Group Policy Editor as it says, or by typing "gpedit.msc" into the Start/Run box. Then navigate the tree to Computer Configuration &amp;gt; Administrative Templates &amp;gt; System and find the "Display Shut Down Event Tracker". Disable this policy&amp;nbsp;and&amp;nbsp;the shutdown event prompt will&amp;nbsp;go away.&amp;nbsp;Thanks, Barry!&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;NOTE: I skipped step #8, enabling the Superfetch service. Do a web search for Superfetch and decide if you want this thing anticipating your application usage and pre-fetching the apps in the background. Seems faster to me without it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Disable Internet Explorer Enhanced Security mode&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;We all want to be secure, but this is a workstation... &lt;/FONT&gt;&lt;A class="" title=http://blogs.technet.com/yungchou/archive/2008/06/25/adding-vista-sidebar-and-aero-to-windows-server-2008-desktop.aspx href="http://blogs.techrepublic.com.com/datacenter/?p=255" target=_blank mce_href="http://blogs.techrepublic.com.com/datacenter/?p=255"&gt;&lt;FONT face=Calibri size=3&gt;http://blogs.techrepublic.com.com/datacenter/?p=255&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 6"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Adding the Vista Sidebar&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A class="" title=http://blogs.technet.com/yungchou/archive/2008/06/25/adding-vista-sidebar-and-aero-to-windows-server-2008-desktop.aspx href="http://blogs.technet.com/yungchou/archive/2008/06/25/adding-vista-sidebar-and-aero-to-windows-server-2008-desktop.aspx" target=_blank mce_href="http://blogs.technet.com/yungchou/archive/2008/06/25/adding-vista-sidebar-and-aero-to-windows-server-2008-desktop.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://blogs.technet.com/yungchou/archive/2008/06/25/adding-vista-sidebar-and-aero-to-windows-server-2008-desktop.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 7"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 8"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Bluetooth – the hard careful way&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A class="" title=http://www.microsoft.com/downloads/details.aspx?familyid=4F68EB56-7825-43B2-AC89-2030ED98ED95&amp;amp;displaylang=en href="http://www.gilkirkpatrick.com/Blog/post/Installing-the-Microsoft-Bluetooth-Stack-on-Windows-Server-2008.aspx" target=_blank mce_href="http://www.gilkirkpatrick.com/Blog/post/Installing-the-Microsoft-Bluetooth-Stack-on-Windows-Server-2008.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://www.gilkirkpatrick.com/Blog/post/Installing-the-Microsoft-Bluetooth-Stack-on-Windows-Server-2008.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 9"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Bluetooth – the easy way (thanks to Spence’s download – worked great for me!)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A class="" title=http://www.microsoft.com/downloads/details.aspx?familyid=4F68EB56-7825-43B2-AC89-2030ED98ED95&amp;amp;displaylang=en href="http://harbar.net/archive/2008/06/13/Enabling-Bluetooth-on-MacBook-Pro-and-Windows-Server-2008-x64.aspx" target=_blank mce_href="http://harbar.net/archive/2008/06/13/Enabling-Bluetooth-on-MacBook-Pro-and-Windows-Server-2008-x64.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://harbar.net/archive/2008/06/13/Enabling-Bluetooth-on-MacBook-Pro-and-Windows-Server-2008-x64.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;(Spence happens to have a&amp;nbsp;MacBook-Pro,&amp;nbsp;but AFAIK it’s the same for any laptop.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 10"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Windows Mobile Device Center (to sync your phone)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A class="" title=http://www.microsoft.com/downloads/details.aspx?familyid=4F68EB56-7825-43B2-AC89-2030ED98ED95&amp;amp;displaylang=en href="http://www.microsoft.com/downloads/details.aspx?familyid=4F68EB56-7825-43B2-AC89-2030ED98ED95&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=4F68EB56-7825-43B2-AC89-2030ED98ED95&amp;amp;displaylang=en"&gt;&lt;FONT face=Calibri size=3&gt;http://www.microsoft.com/downloads/details.aspx?familyid=4F68EB56-7825-43B2-AC89-2030ED98ED95&amp;amp;displaylang=en&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;(You may want to&amp;nbsp;check for the most recent version)&lt;/P&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 11"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Hyper-V Setup&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A class="" title=http://technet.microsoft.com/en-us/library/cc732470.aspx href="http://technet.microsoft.com/en-us/library/cc732470.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc732470.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://technet.microsoft.com/en-us/library/cc732470.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 12"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Migrating VPC’s to Hyper-V&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A class="" title="http://www.groovypost.com/howto/microsoft/windows-server/migrate-microsoft-virtual-server-2005-r2-vm-to-windows-server-2008-hyper-v/ " href="http://www.groovypost.com/howto/microsoft/windows-server/migrate-microsoft-virtual-server-2005-r2-vm-to-windows-server-2008-hyper-v/" target=_blank mce_href="http://www.groovypost.com/howto/microsoft/windows-server/migrate-microsoft-virtual-server-2005-r2-vm-to-windows-server-2008-hyper-v/ "&gt;&lt;FONT face=Calibri size=3&gt;http://www.groovypost.com/howto/microsoft/windows-server/migrate-microsoft-virtual-server-2005-r2-vm-to-windows-server-2008-hyper-v/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 13; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.35in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top width=162&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Great Hyper-V Blog&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 336.15pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top width=560&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A class="" title=http://blogs.msdn.com/virtual_pc_guy/default.aspx href="http://blogs.msdn.com/virtual_pc_guy/default.aspx" target=_blank mce_href="http://blogs.msdn.com/virtual_pc_guy/default.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://blogs.msdn.com/virtual_pc_guy/default.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: #1f497d"&gt;I hope this is helpful … Have fun!&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="FONT-SIZE: 8pt; MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;EM&gt;Thanks for reading my blog. This posting is provided "AS IS" with no warranties, and confers no rights. I welcome your comments and feedback.&lt;/EM&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8954815" width="1" height="1"&gt;</description></item><item><title>Check Out World Wide Telescope</title><link>http://blogs.msdn.com/bobgerman/archive/2008/05/17/check-out-world-wide-telescope.aspx</link><pubDate>Sat, 17 May 2008 22:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8517674</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/8517674.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=8517674</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=8517674</wfw:comment><description>&lt;P mce_keep="true"&gt;The World Wide Telescope public beta was launched earlier in this week, and it's amazing! Imagine being able to zip around the universe, exploring planets and distant galaxies using the amassed images from the world's greatest telescopes. It really changes your perspective! There are also guided tours, views of the planets and much more to see.&lt;/P&gt;
&lt;P mce_keep="true"&gt;It's also a hint at the potential of "Software + Services" ... the incredibly rich UI takes full advantage of client software, yet the image data is so vast it's only practical as a hosted service. Contratulations to &lt;A class="" href="http://virtualearth.spaces.live.com/blog/cns!2BBC66E99FDCDB98!11978.entry?wa=wsignin1.0" target=_blank mce_href="http://virtualearth.spaces.live.com/blog/cns!2BBC66E99FDCDB98!11978.entry?wa=wsignin1.0"&gt;Curtis Wong and Jonathan Fay&lt;/A&gt; for creating this ground-breaking application.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Check it out at&amp;nbsp;&lt;A href="http://www.worldwidetelescope.org/" mce_href="http://www.worldwidetelescope.org/"&gt;http://www.worldwidetelescope.org/&lt;/A&gt;; also there's a good article at &lt;A href="http://www.nytimes.com/2008/05/13/science/13astr.html?ref=science" mce_href="http://www.nytimes.com/2008/05/13/science/13astr.html?ref=science"&gt;http://www.nytimes.com/2008/05/13/science/13astr.html?ref=science&lt;/A&gt;!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8517674" width="1" height="1"&gt;</description></item><item><title>Choosing a Workflow Option for your MOSS 2007 Solution</title><link>http://blogs.msdn.com/bobgerman/archive/2008/05/08/choosing-a-workflow-option-for-your-moss-2007-solution.aspx</link><pubDate>Thu, 08 May 2008 23:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8474194</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/8474194.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=8474194</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=8474194</wfw:comment><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Last week a customer asked me a question that many others have asked before: “When should I create my workflow in Visual Studio vs. SharePoint Designer?” This question has puzzled so many of my clients that I decided it was time to write a blog posting on the subject.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;To review, there are actually four options for workflow in SharePoint technologies:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;SharePoint Designer can be used to create workflows through a wizard user interface that resembles the rules editor in Microsoft Outlook. Workflows can be created and edited by an analyst or savvy user. The list of conditions and actions in the wizard can be extended by a developer using Visual Studio. (for more details please see the &lt;A class="" title=posting href="http://blogs.msdn.com/bobgerman/Default.aspx#spdworkflow" target=_blank mce_href="http://blogs.msdn.com/bobgerman/Default.aspx#spdworkflow"&gt;previous posting&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;).&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Visual Studio can be used to create workflows. It’s easy to add .NET code, so developers have a lot of flexibility in what they can do, but it’s definitely a developer activity. Creating these workflows is much easier with Forms Services (available in MOSS Enterprise Edition and SharePoint Forms Server) than if each form must be developed as a discrete .aspx web form.&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;MOSS 2007 includes several &lt;A class="" title="built-in workflows" href="http://office.microsoft.com/en-us/sharepointserver/HA101544241033.aspx?pid=CH101782961033" target=_blank mce_href="http://office.microsoft.com/en-us/sharepointserver/HA101544241033.aspx?pid=CH101782961033"&gt;built-in workflows&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;: Approval, Collect Feedback, Collect Signatures, Disposition Approval , Three-State and Translation Management. These allow extensive configuration by site administrators. Ed Hild has pointed out that the built-in “approval” workflow can be extended by adding an event handler to the “approved” event on a forms library (&lt;/FONT&gt;&lt;A class="" href="http://blogs.msdn.com/edhild/pages/using-oob-workflows-to-provision-sites.aspx" target=_blank mce_href="http://blogs.msdn.com/edhild/pages/using-oob-workflows-to-provision-sites.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://blogs.msdn.com/edhild/pages/using-oob-workflows-to-provision-sites.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;) … the form holds a request, the built-in workflow mediates the approval of the request, and if the form is approved, the request is carried out by the event handler. Very clever!&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;A number of 3&lt;SUP&gt;rd&lt;/SUP&gt; party workflow products are available such as &lt;A class="" title=K2.Net href="http://www.k2.com/" target=_blank mce_href="http://www.k2.com/"&gt;K2.Net&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;, &lt;A class="" title=Skelta href="http://www.skelta.com/" target=_blank mce_href="http://www.skelta.com/"&gt;Skelta&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;, &lt;A class="" title=Captaris href="http://www.captaris.com/workflow/index.html" target=_blank mce_href="http://www.captaris.com/workflow/index.html"&gt;Captaris&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;, &lt;A class="" title=Ultimus href="http://www.ultimus.com/" target=_blank mce_href="http://www.ultimus.com/"&gt;Ultimus&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt; and I’m sure many others. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Many of these products are more mature than the workflow offerings provided by SharePoint technologies, and have built-in provisions for escalating work in an organization, advanced tracking and reporting, etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Everybody likes to have choices, but sometimes having so many options can be confusing, and this post will try to help.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;First stop is the “out of the box” workflows. They’re really quite powerful and configurable. Why build a custom workflow at all if you don’t have to?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;A commonly overlooked “out of the box” workflow is the Three-State Workflow. No, this is not a workflow for use when you’re in a place like Port Jervis (which&amp;nbsp;straddles New Jersey, New York and Pennsylvania)! It’s really a two-stage approval workflow, and thus it can be in any of three states, such as&amp;nbsp;waiting for first approval, waiting for second approval or completed. It requires a “choice” field in the content with at least three choice values to correspond to the three states. The three-state workflow is often overlooked because its feature is not enabled by default … to use it, go to Site Collection Features and enable the “Three-State Workflow” feature. It’s worth a try, as it’s pretty flexible!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;If the “out of the box” workflows don’t have what you need, then by definition we’re looking at a custom workflow. Personally I like SharePoint Designer workflows because they are the easiest to set up and modify, however there are some limitations you need to be aware of. First of all, they are edited live on a SharePoint site; there is no easy way to have a software lifecycle with controlled releases going through a build and test environment. Second, they are set up on a library by library basis, so there’s no easy way to distribute and manage the workflow across many document or forms libraries, or to connect them to content types. Finally, they are always &lt;I style="mso-bidi-font-style: normal"&gt;sequential &lt;/I&gt;workflows, meaning they run from start to completion (as compared with &lt;I style="mso-bidi-font-style: normal"&gt;state machine&lt;/I&gt; workflows which are best for modeling ongoing processes where work moves among a known set of states). In practice, most workflows are sequential, so that’s not a big deal. The net of it is if a workflow is a “one-off” and business users own the process, let them manage it themselves with SharePoint Designer workflows. Empowerment is good. This provides the business with more flexibility and agility.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;If the workflow needs to be associated with many libraries or a content type, then it will need to be created by a developer. In addition, many organizations will prefer a formal development process, especially for business processes that have financial or regulatory impact.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;If the desired workflow resembles one of the built-in workflows followed by some additional actions, consider Ed’s event handler idea.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Otherwise, it’s time to go into Visual Studio and create a workflow using the workflow templates in the &lt;A class="" title="SharePoint SDK" href="http://www.microsoft.com/downloads/details.aspx?familyid=6d94e307-67d9-41ac-b2d6-0074d6286fa9&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=6d94e307-67d9-41ac-b2d6-0074d6286fa9&amp;amp;displaylang=en"&gt;SharePoint SDK&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;. This allows developers to take advantage of the full power of .NET in a full software lifecycle; it also allows state machine workflows. There are a number of resources including videos and webcasts in the &lt;A class="" title="Workflow Resource Center" href="http://msdn2.microsoft.com/en-us/office/bb421687.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/office/bb421687.aspx"&gt;Workflow Resource Center&lt;/A&gt; on MSDN&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Finally, if the solution needs to have additional workflow features that would be expensive to develop, such as escalations, vacation schedules and advanced reporting, then consider a 3&lt;SUP&gt;rd&lt;/SUP&gt; party workflow. A marketplace of options evolved during the 2003 versions of SharePoint, which lacked its own workflow, thus encouraging our partners to invest in this area; now these 3&lt;SUP&gt;rd&lt;/SUP&gt; party products can offer higher-end workflow for customers who need it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I hope this has been helpful in selecting a workflow option for your MOSS 2007 solution!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;EM&gt;&lt;SPAN lang=EN style="FONT-SIZE: 7.5pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN"&gt;This posting is provided "AS IS" with no warranties, and confers no rights. Thank you for reading it!&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8474194" width="1" height="1"&gt;</description></item><item><title>Design Patterns for Collaborative Apps - Recap of my session at the SharePoint Conference 2008</title><link>http://blogs.msdn.com/bobgerman/archive/2008/03/06/design-patterns-for-collaborative-apps-recap-of-my-session-at-the-sharepoint-conference-2008.aspx</link><pubDate>Fri, 07 Mar 2008 02:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8081538</guid><dc:creator>BobGerman</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/8081538.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=8081538</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=8081538</wfw:comment><description>&lt;P&gt;I'm writing this from my hotel room in Seattle, where I've just attended the SharePoint Conference 2008. The conference was great, and it was an excellent opportunity to meet up with SharePoint friends old and new.&lt;/P&gt;
&lt;P&gt;I did a session called "Design Patterns for Collaborative Applications", and at the session I promised a recap with all the links from the talk, so here it is!&lt;/P&gt;
&lt;P&gt;The idea for the talk came from working with many customers over the last few years, and noticing patterns in the solutions I worked on with them. The talk focuses specifically on collaborative applications ... that is, extending SharePoint's collaboration features to provide more integration with business processes. I showed four "patterns", each of which I've seen in multiple customers. In this post, I'll summarize each of the patterns and provide the links to the resources mentioned in the talk.&lt;/P&gt;
&lt;P mce_keep="true"&gt;1. Business Entity Workspace&lt;/P&gt;
&lt;P mce_keep="true"&gt;The idea here is to combine dashboards with team sites, so users can access all the information about a business entity, including both structured (LOB and external) and unstructured (documents, events, contacts etc.) information in a single user interface. Some real-world uses include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The MTC where I work has a site for each engagement that also surfaces our CRM system and other tools, so everything is in one place&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A property management company wants all the information about a property in one place, including maps and financial reports as well as leases, contracts, etc.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;An company wants all the information about its customers in one place, including contacts, documents and financial data&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Another company wants its product information in one place, including sales performance, documentation, etc.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;I showed two ways to do this: one had a pair of web pages (a selector and a detail page), with the selector passing an entity ID to the detail page much as the Business Data Catalog profile page gets its entity ID from a query string parameter. The other had a hierarchy of sites, with a child site for each entity. The core of the solution is using Filter web part connections to select the right data to show; an advantage is that most of the built-in SharePoint web parts can consume a filter connection.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I demonstrated a new web part I wrote called the "BDC Multifilter" which, rather than just providing a single filter with the entity's ID, can provide up to four additional filters with various attributes of a BDC entity. You can even combine multiple attributes, to make a street address out of address, city, state, country etc. for passing to a mapping web part. The BDC Multifilter, along with a Virtual Earth web part (that consumes an address as a gilter) and a search web part (that consumes a query as a filter) are all available for download now at &lt;A href="http://code.msdn.com/FilterParts" mce_href="http://code.msdn.com/FilterParts"&gt;http://code.msdn.com/FilterParts&lt;/A&gt;. I also acknowledged that&amp;nbsp;I saved many&amp;nbsp;hours&amp;nbsp;building the demo by using&amp;nbsp;the BDC Metaman tool, available at &lt;A href="http://www.bdcmetaman.com/" mce_href="http://www.bdcmetaman.com/"&gt;http://www.bdcmetaman.com/&lt;/A&gt;, which I can recommend after the experience.&lt;/P&gt;&lt;A class="" title=spdworkflow name=spdworkflow&gt;&lt;/A&gt;
&lt;P mce_keep="true"&gt;2. User Self-Service&lt;/P&gt;
&lt;P mce_keep="true"&gt;This is a very common scenario: a user fills in a form, and a workflow runs to coordinate a business process which ultimately updates a line-of-business system. Some examples include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;An expense reporting application&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Legal services, such as requesting a legal review or contract&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Requesting a new job requisition to hire an employee&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Taking on a new customer or engagement that requires approval and updating a CRM system&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;The tricky part is making it secure while providing flexibility to the business. I showed how to create custom activities in SharePoint designer - that provides the flexibility. A great and usable sample is available on Codeplex at &lt;A href="http://www.codeplex.com/SPDActivities"&gt;http://www.codeplex.com/SPDActivities&lt;/A&gt;&amp;nbsp;- the sample provides a number of new activities that work within SharePoint, but of course you can write your own to do something else. The process for writing a custom activity for SharePoint Designer is located at &lt;A href="http://msdn2.microsoft.com/en-us/library/bb629922.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb629922.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The security issue is that someone could write their own workflow to skip the business process and approvals, and just update the LOB system. The .ACTIONS file that defines the custom workflow activties is global, so even if you lock down security on the site that you expect people to use to, say, file an expense report, someone with admin rights to some other site might be able to invoke the "reimburse employee" action without the fuss and muss of having any real expenses. In addition, it's important to lock down the form ... imagine that someone alters the form to show one total to the approving manager, and hides a much larger total in the XML that controls the reimbursement.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The fix for this is to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Dedicate a web application to the self-service scenario&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Deploy your custom action code to the /bin directory of that web applciation ONLY&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Lock down any and all sites/site collections that run in that web application so only trusted users can control the form and workflow&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Another approach is to create a custom workflow in Visual Studio that includes the business process and forms along with the LOB access. This doesn't allow business users to change the workflow, however ... you decide if that's desirable or not. Yet another is to use BizTalk to manage the LOB update, and to enforce the business rules in the BizTalk orchestration. And, before someone points out the omission, there is are a variety of 3rd party workflow solutions out there that could be used.&lt;/P&gt;
&lt;P mce_keep="true"&gt;3. Team Knowledge Base&lt;/P&gt;
&lt;P mce_keep="true"&gt;The idea here is to provide team feedback about shared knowledge, be it a collection of documents or, as I showed in the demonstration, a wiki site. This comes up a lot in services organizations (Microsoft Consulting Services has a custom SharePoint solution called ICE that does this), and often for use by customer service reps who have to quickly answer questions on the phone. I demonstrated another internal tool that was developed by a local partner, Burntsand,&amp;nbsp;that provides ratings and comments on a SharePoint Wiki. Since this isn't publicly available, I pointed attendees at another Codeplex gem, the Knowledge Base Web Part, available at &amp;nbsp;&lt;A href="http://www.codeplex.com/spkb"&gt;http://www.codeplex.com/spkb&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Part of the discussion was about where to store the ratings. Unless you want users to be able to "stuff the ballot box" by rating an item repeatedly, you need to keep track of individual users' ratings so they can change their rating but still only get one "vote." In the application I showed, this is stored in a set of SharePoint lists (one per Wiki page). When a user rates a page, the average is recalculated and stored right in the page for speedy access. This works well to a point, but with more than a couple thousand users (or rated objects) it's likely to slow down; in that case I'd recommend storing the individual ratings in a cusotm SQL Server database.&lt;/P&gt;
&lt;P mce_keep="true"&gt;4. Team Tracking Workspace&lt;/P&gt;
&lt;P mce_keep="true"&gt;The scenario here is that a team of people are working on a coordinated release of documents. Typical business scenarios include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Proposal development&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Ad campaign development&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Books, magazines, and other publications&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Business case development - for a new product or service&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;If the deliverable was code, Team Foundation Server would be a logical tool. If the deliverable is documents, SharePoint workspaces are a natural fit ... if equipped with a tracking mechanism.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The solution I showed stores document status in a SQL Server database, but I'm working on getting it to stay in SharePoint for easier re-use. Item status can be shown across all projects (each project in a child site), sections of a project (each section a document library), folders, and documents. The status is based on the approval and versioning information in the document, but in some cases more status values are needed, for a multi-level approval scenario or other multi-stage business process. SharePoint event handlers run whenever a document is added, changed or removed, and update the database accordingly.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I'm working to package this up in a general purpose way, but it may take a while since this is a "nights and weekends" type activity and I'm not sure when I'll get to it. In the meantime, if you really need it, you could develop something similar or, if you engage Microsoft Consulting Services and send the consultant to me, I can share the code through the consultant. It's a combination of it not being packaged very well, and some legal aspects which would be covered by the MCS work order.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Another, complimentary solution I showed was&amp;nbsp;a very cool&amp;nbsp;"Document Splitter" that breaks a Word document down into multiple section documents, and then stitches them back together, much as a slide library does for PowerPoint presentations. This is Chapter 8 in my friend Ed Hild's APress book,&amp;nbsp;&amp;nbsp;&lt;EM&gt;&lt;A class="" href="http://www.amazon.com/s?ie=UTF8&amp;amp;keywords=ed%20hild&amp;amp;index=blended" mce_href="http://www.amazon.com/s?ie=UTF8&amp;amp;keywords=ed%20hild&amp;amp;index=blended"&gt;Pro SharePoint Solution Development: Combining .NET, SharePoint and Office 2007&lt;/A&gt;&lt;/EM&gt;. I highly recommend&amp;nbsp;this book; each chapter&amp;nbsp;presents a very useful&amp;nbsp;Office Business Application (OBA) solution that incorporates the Office 2007 client and Office SharePoint Server 2007, and with the book comes the code I showed. (I also recommend Ed's blog, &lt;A href="http://blogs.msdn.com/EdHild"&gt;http://blogs.msdn.com/EdHild&lt;/A&gt;). I was pleased that the two solutions worked so well together, with just a bit of tweaking to get Ed's custom actions (split and merge menu items) to work with my "tracked document" content type it all came together in about half an hour's work. The result was an ability to have a team concurrently developing various sections of a single document, and tracking their progress throughout.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I hope the session was valuable, and offer my thanks to those who attended!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;EM&gt;&lt;FONT size=1&gt;This posting is provided "AS IS" with no warranties, and confers no rights. Thank you for reading it!&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8081538" width="1" height="1"&gt;</description></item><item><title>Back in the Zone with ZoneTabs</title><link>http://blogs.msdn.com/bobgerman/archive/2008/02/19/back-in-the-zone-with-zonetabs.aspx</link><pubDate>Tue, 19 Feb 2008 10:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7788579</guid><dc:creator>BobGerman</dc:creator><slash:comments>21</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/7788579.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=7788579</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=7788579</wfw:comment><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I’m back after a long break from posting to announce the availability of a new web part that you may find helpful.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Zone Tabs 2.0 is a new version of a tab web part I previously released on GotDotNet that helps reduce clutter on a web part page by allowing you to attach the other web parts in a zone to tabs. (A web part zone is one of those rectangular areas where you can drop your web parts on a page.) For example, a web part zone might contain 10 web parts, but instead of scrolling to see them all, the user clicks different tabs to show a subset of related web parts at any one time.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;IMG title="Screen shot" style="WIDTH: 609px; HEIGHT: 515px" height=515 alt="Screen shot" hspace=2 src="http://blogs.msdn.com/photos/bobgerman/images/7782911/original.aspx" width=609 align=left vspace=2 mce_src="http://blogs.msdn.com/photos/bobgerman/images/7782911/original.aspx"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;As you can see in the screen shot, it’s possible to use more than one set of Zone Tabs on a page so long as they’re each in their own zone. In addition, Zone Tabs can be set up to pivot the web part zone between horizontal and vertical views, a function that is generally performed by developing a new page in Visual Studio or customizing a page in SharePoint Designer 2007. The new version of Zone Tabs requires Microsoft Office SharePoint Server 2007 or Windows SharePoint Server 3.0 to work.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;To download the web part as a WSS Solution Package as well as full source code, please visit the new MSDN Code Gallery at &lt;/FONT&gt;&lt;A href="http://code.msdn.com/ZoneTabs" mce_href="http://code.msdn.com/ZoneTabs"&gt;&lt;FONT face=Calibri size=3&gt;http://code.msdn.com/ZoneTabs&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;. The Read Me file explains how to install and set up the web part. This posting will go into a little more information about how I wrote it, and some cool things I learned along the way.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;STRONG&gt;Creating Tabs with CSS&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;IMG title="Horizontal Tabs" style="WIDTH: 425px; HEIGHT: 37px" height=37 alt="Horizontal Tabs" hspace=2 src="http://blogs.msdn.com/photos/bobgerman/images/7782936/425x37.aspx" width=425 align=right vspace=2 mce_src="http://blogs.msdn.com/photos/bobgerman/images/7782936/425x37.aspx"&gt;The first thing I wanted to do was to make the tabs look better than they did previously. ZoneTabs 1.0 rendered itself as a table, and used some of the built-in WSS styles; for some reason they didn’t look as good in the new version of SharePoint products, even though the overall SharePoint UI was greatly improved. So I set out to make the tabs look better. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I found a number of blog articles on various ways to create tabs in HTML, and wanted something that was easy and attractive, while also easily adapting themselves to varying lengths of text. I decided on a technique called “sliding doors” which was described on several sites. Basically, the idea is to render the tabs as a bunch of anchor elements within unnumbered list items, such as:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;&amp;lt;ul&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;li&amp;gt;&amp;lt;a href=”#”&amp;gt;Tab1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;li&amp;gt;&amp;lt;a href=”#”&amp;gt;Tab2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&amp;lt;/ul&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;BR&gt;&lt;FONT face=Calibri size=3&gt;When I first saw this I was pretty surprised that list items were being used, but it turns out that it’s possible to override the usual bulleted list using style sheets. The CSS sets the &amp;lt;li&amp;gt; tags to show most of the tab, including the top and one of the sides, and the &amp;lt;a&amp;gt; tag to show the other side. The &amp;lt;li&amp;gt;’s image is as big as a tab could ever be. This is the clever part: since the &amp;lt;a&amp;gt; tag is on top of the &amp;lt;li&amp;gt; tag, the tab edge in the &amp;lt;a&amp;gt; tab overlaps the big image in the &amp;lt;li&amp;gt; tab and thus trims it perfectly to size. For a detailed drill-down, check out David Bowman’s article at &lt;/FONT&gt;&lt;A href="http://www.alistapart.com/articles/slidingdoors/" mce_href="http://www.alistapart.com/articles/slidingdoors/"&gt;&lt;FONT face=Calibri size=3&gt;http://www.alistapart.com/articles/slidingdoors/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;; this has one of the clearest explanations.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For ZoneTabs, I re-wrote the CSS to my own needs and generated the tab images myself from scratch. I used a vector graphics program to make these GIANT tabs, including some blended highlights for a 3-D effect, which I converted to bitmaps (.gif files) that were much smaller and anti-aliased. Then I sliced off the edge to make two images, each of which I extended until they were big enough to handle an 800x800 pixel tab. Eventually I had an HTML page with nice extensible tabs on it, in four color sets (light and dark in blue, black, gray and gold). This was pretty tedious, I have to admit.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;STRONG&gt;Making the Tabs into a WebControl&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The next step was to take the HTML tabs and make them into a control suitable for use in a web part. I realized that tabs were a list of items, so I decided to jump right in and subclass the ListControl base class. For the hyperlinks, I used LinkButton controls:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;int i = 0;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;foreach (ListItem li in this.Items)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LinkButton lb = new LinkButton();&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;// Elsewhere in this class, the code expects the ID to be a&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// string representation of the tab's item index&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;lb.ID = i++.ToString();&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;lb.Text = li.Text;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;lb.Font.Size = FontUnit.Point(_fontSize);&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;lb.Font.Bold = _bold;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;lb.Click += new EventHandler(tab_Click);&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.Controls.Add(lb);&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The best part is that the ListControl base dealt with the ListItems for me … whether they are data bound or added using the Add() method, by the time my code ran (in CreateChildControls() or the OnDataBound event), the ListItems were ready and waiting so I could create a LinkButton for each one.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The next bit of magic is in the Render() method, and it’s as simple as emitting everything except the anchor tags around the LinkButton controls as they render.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;foreach (Control c in this.Controls)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (c is LinkButton)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// We know the control's ID is the item index,&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // so check to see if we're rendering the &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// selected index and decorate the control accordingly&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int controlIndex = Convert.ToInt32(c.ID);&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (controlIndex == this.SelectedIndex)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;writer.Write("&amp;lt;li class=\"selected\"&amp;gt;");&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;else&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;writer.Write("&amp;lt;li&amp;gt;");&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;c.RenderControl(writer);&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;writer.Write("&amp;lt;/li&amp;gt;");&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The last piece is the event handler that handles clicking on the LinkButton controls, and adjusts the selected list item accordingly. It also fires the OnSelectedIndexChanged() event if the selected index has changed.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;private void tab_Click(object sender, EventArgs e)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;if (sender is LinkButton)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;LinkButton lb = sender as LinkButton;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int oldIndex = this.SelectedIndex;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int newIndex = Convert.ToInt32(lb.ID);&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;o:p&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// If the user clicked a new index, then &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// update the selected item&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// and fire our SelectedIndexChanged event&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (oldIndex != newIndex)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (oldIndex &amp;gt;= 0)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.Items[oldIndex].Selected = false;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;this.Items[newIndex].Selected = true;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;o:p&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;OnSelectedIndexChanged(e);&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;STRONG&gt;Making it into a Web Part&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Remember that ZoneTabs was an update from an old-style WSS web part. The first step was to change the base class to System.Web.UI.WebControls.WebParts.WebPart, and to change the ToolPart (the fly-out used to configure the web part) to an EditorPart. I didn’t change the EditorPart much at all, though I do have some ideas on how to make it better … as they say “shipping is a feature” so I decided to make some minor cosmetic changes such as allowing users to change the tab colors, and to leave the main logic alone.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The EditorPart is just a brute force composite control, with lots of text boxes, check boxes and drop-downs to capture all the information. The tricky part is the ability to select which of the other web parts in a zone should be shown when each tab is selected. As in the original version, this is stored in a web part property in the form of an XML string.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&lt;STRONG&gt;&amp;lt;tabs&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;tab name=”First Tab”&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;webPart title=”Part1” visible=”false /&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;…&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6"&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/tab&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=Code style="MARGIN: 0in 0.5in 0pt"&gt;&lt;STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #e6e6e6" face="Courier New"&gt;&amp;lt;/tabs&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I can think of more elegant ways to do this, and to let the .NET framework do the serialization for me, but I decided to preserve the code on both the EditorPart and WebPart ends and to create and query the XML using the XML DOM and XPath queries. The trick to storing the tabs is that I store only the web parts that I want to &lt;I style="mso-bidi-font-style: normal"&gt;hide&lt;/I&gt; and ignore the ones I want to show under each tab. When ZoneTabs runs, it loops through the web parts in its zone and checks each one to see if it should be hidden. This works best for a couple of reasons – first of all, if someone adds a web part after the tabs are in place, it will be ignored (and always shown). Secondly, if a web part is hidden due to audiences or personalization, the built-in logic won’t be affected. Thus ZoneTabs play nice with audiences and personalization.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Actually hiding a web part is very simple … I set its Hidden property to true. If I can’t find a reason to hide it, I clear the Hidden property by setting it to false.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;STRONG&gt;Flipping on its side&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;IMG style="WIDTH: 425px; HEIGHT: 196px" height=196 hspace=2 src="http://blogs.msdn.com/photos/bobgerman/images/7782955/425x196.aspx" width=425 align=left vspace=2 mce_src="http://blogs.msdn.com/photos/bobgerman/images/7782955/425x196.aspx"&gt;Then I had an idea … why not try pivoting the web part zone on its side using the API? Sure enough, it worked just fine by simply changing this.Zone.LayoutOrientation. Most of the work was in adapting the CSS and images so the tabs would show up sideways as well, and this threw me back into tedious image manipulation for a little while. It’s ironic that when the zone is vertical the tabs are horizontal and vice-versa, but it makes sense if you think of it, so the tab orientation also needs to be flipped based on the web part settings.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;STRONG&gt;Check it Out&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Please go download the web part and leave a comment either here or on the MSDN Code Gallery and let me know what you think! For now it’s still released as a “Beta”; a few loyal Tab Part users from the old version have had success using them, but I’d like a little more feedback before I mark it as released.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Thanks!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;EM&gt;&lt;FONT size=1&gt;This posting is provided "AS IS" with no warranties, and confers no rights. Thank you for reading it!&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7788579" width="1" height="1"&gt;</description></item><item><title>Tag, I’m “It”: Five things you may not know about me…</title><link>http://blogs.msdn.com/bobgerman/archive/2007/01/07/tag-i-m-it-five-things-you-may-not-know-about-me.aspx</link><pubDate>Mon, 08 Jan 2007 06:02:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1432372</guid><dc:creator>BobGerman</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/1432372.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=1432372</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=1432372</wfw:comment><description>&lt;p&gt;Well I just got tagged by my friend &lt;a href="http://blogs.msdn.com/arpans/"&gt;Arpan Shah&lt;/a&gt; in what seems to be a blogging pyramid scheme, where the recipient has to reveal five things most readers wouldn't know about them (and then tags 5 other bloggers). While I normally resist the chain letter thing, this IS a good excuse to get back to blogging after a long hiatus! So here are five things about me… I'd mention my love of music but I already said that in my opening post, so here goes!
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;OK, I'll expand on the love of music thing – in college I managed the campus radio station and hosted two shows… "Jazz Spectrums", which covered everything from Dixieland to Fusion, and "The Jungle Bob Show" which was all rock and roll. I bet you can guess what my college nickname was?
&lt;/li&gt;&lt;li&gt;Part of the nickname story was because I grew up way out in the country, in the Berkshire mountains in a little town called Cheshire. It's beautiful country; I still go there to visit my family, and the dairy cows still outnumber the people.
&lt;/li&gt;&lt;li&gt;My wife, Kate, and I have a great garden in our small back yard, which we inherited when we bought our house several years ago, and since have taken to another level. In fact, we had greens out of the garden tonight for dinner. This is unusual because it is January and I live near Boston, MA, so it should be a frozen landscape! Yesterday it was 70F (21C), and the pac choi I cut down in October had all grown back. Go figure!
&lt;/li&gt;&lt;li&gt;For many years early in my career, I worked mainly in assembly language developing device drivers and protocols to run in front-end processors. It was a lot of fun hand-compiling the code and debugging with a logic analyzer, and I learned a lot about performance and concurrency. I sometimes feel spoiled to have .NET and Visual Studio to work in!
&lt;/li&gt;&lt;li&gt;I grew up in a house of writers; my parents wrote or co-wrote over 40 books plus regular newsletters and magazine articles about banking and personal finance. I've always liked to write – you'd think that I would blog more often! ;-)
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; As I said, I usually don't go for these chain letter things, and was debating if I should continue it, but I can't resist --  I tag  &lt;a href="http://blogs.msdn.com/rich_crane/"&gt;Rich Crane&lt;/a&gt;, &lt;a href="http://photo.goodnaturepix.com/"&gt;Bob Goodearl&lt;/a&gt;, &lt;a href="http://www.partnerpoint.com/Default.aspx?tabid=389"&gt;Ed Hild&lt;/a&gt;, &lt;a href="http://www.scottjamison.com/blog/"&gt;Scott Jamison&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/jpelak/"&gt;John Pelak&lt;/a&gt;!
&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1432372" width="1" height="1"&gt;</description></item><item><title>A Grand Tour</title><link>http://blogs.msdn.com/bobgerman/archive/2006/05/17/600570.aspx</link><pubDate>Thu, 18 May 2006 06:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:600570</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/600570.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=600570</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=600570</wfw:comment><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Today was day #3 of the SharePoint Conference. It's about 7:00 in the &lt;/FONT&gt;&lt;FONT face=Calibri&gt;evening, and I'm in the "hands-on labs" with about 200 computers and a &lt;/FONT&gt;&lt;FONT face=Calibri&gt;handful of eager attendees who stayed late to work on SharePoint and Office &lt;/FONT&gt;&lt;FONT face=Calibri&gt;labs. I earned my way to the conference, you see, by volunteering as a lab &lt;/FONT&gt;&lt;FONT face=Calibri&gt;proctor, which is a pretty good deal if you think about it!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;In addition to the content, it's been very cool to run into a number of my &lt;/FONT&gt;&lt;FONT face=Calibri&gt;clients here. One of them very aptly compared the conference to a &lt;/FONT&gt;&lt;FONT face=Calibri&gt;double-decker tour bus, where you get to see the sights in just enough detail &lt;/FONT&gt;&lt;FONT face=Calibri&gt;to know which attractions to go back and visit later.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;When I came here, I thought I was really starting to get the hang of all this &lt;/FONT&gt;&lt;FONT face=Calibri&gt;new technology, but every session I attend makes me realize how much I still &lt;/FONT&gt;&lt;FONT face=Calibri&gt;have to learn. "Office System 2007" - the combination of the new client and &lt;/FONT&gt;&lt;FONT face=Calibri&gt;server - are truly vast. It's like the tour bus is covering the whole United &lt;/FONT&gt;&lt;FONT face=Calibri&gt;States, and I have dozens and dozens of attractions to visit in depth.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;So here are a few of the highlights...&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;===============&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;I knew that the new Business Data Catalog (BDC) allowed you to declaratively &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;connect line-of-business systems into SharePoint, but I didn’t know the full extent of it. Instead of developing custom code to connect&amp;nbsp;SharePoint&amp;nbsp;to business applications, a single XML configuration links business data in a number of useful ways which are pervasive within the SharePoint environment, including:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;- each BDC “entity” – a customer, product, order, or whatever – gets its own profile page, which displays the details, in a similar way to a user profile page&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;- SharePoint search can return business data along with documents, people and other information&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;- the entity becomes a data type which can be used in lists and document metadata&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;- the entity can be included in user profiles, so you can connect people with their accounts, products, etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;- built-in web parts can be used to browse the business data from any site&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;===============&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The old SharePoint scaled really well; the new one will scale even more both in terms of both server and storage capacity. We got a sneak preview of the new scalability test results, which will eventually be publicly available as a white paper.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;===============&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Publishing forms to the web, or even to Outlook, with the new InfoPath client is much easier than I thought. I’m looking forward to digging into the new forms server!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;===============&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The “My Site” feature – a site for every user – is expanded in 2007… and it’s also possible to create additional “My” sites, such as “My HR”, or “My xxxx” where you can fill in the blank and create personalized sites on topics of your choice for every user.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;These are just a few of the things I discovered here… and the tour bus is just getting warmed up!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana size=1&gt;&lt;EM&gt;This posting is provided "AS IS" with no warranties, and confers no rights. Thank you for reading it!&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=600570" width="1" height="1"&gt;</description></item><item><title>Greetings from the SharePoint conference!</title><link>http://blogs.msdn.com/bobgerman/archive/2006/05/16/598687.aspx</link><pubDate>Tue, 16 May 2006 15:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:598687</guid><dc:creator>BobGerman</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bobgerman/comments/598687.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bobgerman/commentrss.aspx?PostID=598687</wfw:commentRss><wfw:comment>http://blogs.msdn.com/bobgerman/rsscomments.aspx?PostID=598687</wfw:comment><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;Today was the first day of the SharePoint conference in Bellvue, WA. Certainly the highlight of the day was a keynote by none other than Bill Gates. I’ve heard Mr. Gates speak any number of times, usually on very futuristic and visionary topics. This time was unique for me because he spoke on a topic I know well – and I was very impressed by his insights.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;He said that the focus of Office 2007 is bridging the barrier between structured and unstructured information. Just as the Office client applications integrate functions such as word processing and spreadsheets, SharePoint integrates previously separate islands: search, document management, web management, business intelligence and more. He’s right – all these islands are available separately from different vendors, and I think the SharePoint team has done a great job bringing them into an integrated whole.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;He also discussed SharePoint as a platform for developers. Line of business applications can inherit SharePoint’s features by developing on top of the SharePoint API’s. The result is not only reduced development costs (compared with re-implementing parts of SharePoint) – it also results in more consistent, easier to use applications for end users. This is something I’ve done a lot of at the MTC, integrating everything from risk management to property management onto the platform where SharePoint can handle the unstructured data in the context of a line of business application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;Another boundary Bill discussed is the boundary with partners and customers. The new version of SharePoint provides a single infrastructure for Internet, intranet and extranet applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;Bill listed his Top 5 favorite parts of SharePoint, which I report here with explanations in my own words:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;5. Community (Wikis, Blogs, RSS): These technologies leverage peoples’ ideas and help them to realize their potential. In SharePoint 2007, everything from a page or document library to search results can be an RSS feed. Blog and Wiki templates are available out of the box.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;4. Excel Services: Why download a large spreadsheet and crunch numbers on a client PC, only to look at a chart or small result set? It makes more sense to run certain spreadsheets right on the server, and to display them as plain old HTML. Excel services provide exactly this. There are a lot of Excel gurus out there who are business and financial experts; now they can work with a familiar tool and share the fruits of their labor via a simple web interface.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;3. Client Integration: The Office client integration in 2007 is better than ever. Bi-directional synchronization with Outlook, integrated metadata management, and direct access to document management features all add to the experience, and eliminate the need for users to bounce between client software and web sites to do routine information tasks.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;2. Search and the Business Data Catalog: The SharePoint search engine is better than ever, with improved relevancy ranking, more flexible administration and the ability to search for people as well as data. But it really shines when combined with the new Business Data Catalog (BDC), which provides access to structured information in line of business applications. Already on our own intranet, we have a “customer” search feature, which can instantly locate customer information from our CRM system. The potential of Search and the BDC is to provide a single, simple way to locate any information, structured or unstructured, in an enterprise.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;1. SharePoint for Composite Applications: SharePoint has been a great platform for a while now, but now with the BDC, improved connections to page context, and deeper .NET integration, it’s better than ever. The ability to surround structured application data with contextually relevant unstructured SharePoint content is extremely powerful.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;In addition to Mr. Gates’ keynote, a number of other great sessions were offered. I&amp;nbsp;enjoyed sessions on Web Content Management and Search. Web Content Management is especially relevant to me, since I’ve done a lot of work in this area, and will be co-presenting the topic at the upcoming TechEd conference in Boston.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;Watch this space for more information on the SharePoint conference!&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana size=1&gt;&lt;EM&gt;This posting is provided "AS IS" with no warranties, and confers no rights. Thank you for reading it!&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=598687" width="1" height="1"&gt;</description></item></channel></rss>