<?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>Todd's Blog</title><link>http://blogs.msdn.com/toddca/default.aspx</link><description>My contribution to the SharePoint community</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>On Twitter Now</title><link>http://blogs.msdn.com/toddca/archive/2009/05/02/on-twitter-now.aspx</link><pubDate>Sat, 02 May 2009 18:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9583749</guid><dc:creator>Toddca</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/toddca/comments/9583749.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=9583749</wfw:commentRss><description>&lt;P&gt;After being push and prodded by my friends I have decided to join the Twitter community &lt;A title=@toddca href="http://twitter.com/toddca" target=_blank mce_href="http://twitter.com/toddca"&gt;@Toddca&lt;/A&gt;. I am still a bit confused on how to follow a thread/conversation but I am sure that is just me. :-)&lt;/P&gt;
&lt;P&gt;Now lets see how dumb I can make myself look in 140 characters or less!&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9583749" width="1" height="1"&gt;</description></item><item><title>SharePoint Session State; The Guest That Just Won’t Leave</title><link>http://blogs.msdn.com/toddca/archive/2009/03/17/sharepoint-session-state-the-guest-that-just-won-t-leave.aspx</link><pubDate>Wed, 18 Mar 2009 04:01:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9485381</guid><dc:creator>Toddca</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/toddca/comments/9485381.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=9485381</wfw:commentRss><description>&lt;p&gt;MOSS uses ASP.Net session state for Forms Services, Project Server, etc. SharePoint installs a PartitionResolver which redirects the ASP.NET session state module to look to the SSP DB for its stored procedures and tables for storage of session state. Within CA there is an option to turn off Session State (its on by default) however if you try to start an OOTB workflow we attempt to load an InfoPath form via forms services and you will get probably one of the most clear and understandable errors in SharePoint (I won’t spoil the surprise here, you will either have to try it out or trust me :-)) ASP.net session state is a binary serialized representation of the client’s session state along with metadata such as the expiry and created date/time. When session state enabled sessions are inserted into the table ASPStateTempSessions within the SSP DB for each SSP.&lt;/p&gt;  &lt;p&gt;So what’s the problem? ASP.Net Session state uses a sliding expiry which by default should expire the session state object after 60 min of not hearing from the client for which the session was created. So while this all works fine the issue is that SharePoint never cleans up these session state records out of the ASPStateTempSessions table. The result is your SSP DB(s) may continue to grow in size.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Fix&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Fortunately the fix is trivial however does involve a few manual steps which I will outline here. The goal is to create a SQL Agent timer job which will run once a minute and clean up expired sessions by executing the stored procedure ‘DeleteExpiredSessions’&lt;/p&gt;  &lt;p&gt;1. Ensure the SQL Server Agent (SQLSERVERAGENT) service is started and set to startup when the machine starts. At a minimum this service needs to run on all SQL servers/instances which host an SSP DB.&lt;/p&gt;  &lt;p&gt;2. Change to the .net Framework directory where ASP.Net is located, eg %windir%\Microsoft.Net\Framework[64]\v2.0.50727. &lt;/p&gt;  &lt;p&gt;3. From the framework director run the following command replacing [YOUR SSP DB NAME] with the name of your SSP DB: aspnet_regsql -sstype c –d [YOUR SSP DB NAME] -sqlexportonly fix.sql –ssadd&lt;/p&gt;  &lt;p&gt;4. The command from step 3 instructs the aspnet_regsql utility to generate a sql script named ‘fix.sql’ which can be used to install the ASP.Net session state stored procedures, tables, and jobs. Since everything we need for ASP.net session state is already in the SSP DB and we don’t want to edit that DB directly or risk entering into the land of “Unsupported” we only need to execute a portion of this file. Open fix.sql into SQL management studio and locate the line which has the following text:&amp;#160; /* Create the job to delete expired sessions */&amp;#160; Highlight everything below this line to the end of the file. With this text highlighted execute the query (hit F5).&lt;/p&gt;  &lt;p&gt;5. At this point you should be able to navigate to the SQL Agent service and see the job: [YOUR SSP DB NAME]_Job_DeleteExpiredSessions. As I mentioned previously this job will execute every one min and clean up expired sessions.&lt;/p&gt;  &lt;p&gt;6. Repeat for each additional SSPs in the farm.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9485381" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Run (As Your AppPool Account) Forrest</title><link>http://blogs.msdn.com/toddca/archive/2009/02/11/run-as-your-apppool-account-forrest.aspx</link><pubDate>Thu, 12 Feb 2009 06:58:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9414003</guid><dc:creator>Toddca</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/toddca/comments/9414003.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=9414003</wfw:commentRss><description>&lt;p&gt;When running within a website that uses impersonation you find it necessary sometimes to have your code stop impersonating for a period of time while you run some code. For example if you need to get off the box (not using Kerberos) and connect to another resource you will need to fall back and run as the AppPool account or logon another user and use those credentials to hit the remote resource. For the former I have written a small utility class that makes this possible. There are other samples out there however some use PINVOKE and I wanted something really simple and easy to use.
&lt;/p&gt;&lt;p&gt;To use the code you will do something like:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;new&lt;/span&gt; AppPoolImpersonator())
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:green; font-family:Courier New; font-size:10pt"&gt;  //unimpresonated code here
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;The class looks like so:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;   public&lt;/span&gt;
			&lt;span style="color:blue"&gt;class&lt;/span&gt; AppPoolImpersonator : &lt;span style="color:#2b91af"&gt;IDisposable
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;   {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;
			&lt;span style="color:#2b91af"&gt;WindowsImpersonationContext&lt;/span&gt; _windowsImpersonationContext;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;
			&lt;span style="color:blue"&gt;public&lt;/span&gt; AppPoolImpersonator()
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;       {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_windowsImpersonationContext == &lt;span style="color:blue"&gt;null&lt;/span&gt; &amp;amp;&amp;amp;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;               !&lt;span style="color:#2b91af"&gt;WindowsIdentity&lt;/span&gt;.GetCurrent().IsSystem)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;           {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;               _windowsImpersonationContext = &lt;span style="color:#2b91af"&gt;WindowsIdentity&lt;/span&gt;.Impersonate(System.&lt;span style="color:#2b91af"&gt;IntPtr&lt;/span&gt;.Zero);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;           }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;       }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;
			&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;void&lt;/span&gt; Dispose()
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;       {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;           Undo();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;
			&lt;span style="color:#2b91af"&gt;GC&lt;/span&gt;.SuppressFinalize(&lt;span style="color:blue"&gt;this&lt;/span&gt;);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;       }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;       
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;
			&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;void&lt;/span&gt; Undo()
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;       {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_windowsImpersonationContext != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;           {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;               _windowsImpersonationContext.Undo();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;               _windowsImpersonationContext = &lt;span style="color:blue"&gt;null&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;           }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;       }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    }&lt;/span&gt;
	&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9414003" width="1" height="1"&gt;</description></item><item><title>PrepareToMove Away From Running This Command</title><link>http://blogs.msdn.com/toddca/archive/2009/01/30/preparetomove-away-from-running-this-command.aspx</link><pubDate>Fri, 30 Jan 2009 18:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9384824</guid><dc:creator>Toddca</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/toddca/comments/9384824.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=9384824</wfw:commentRss><description>&lt;P&gt;If you are a SharePoint Admin that is still running stsadm –o PrepareToMove before detaching a content DB AND your farm is running at least the Infrastructure Update (IU) then stop! Stop running the command, its not necessary and it is causing you problems and you probably don't even realize it. &lt;/P&gt;
&lt;P&gt;If prepareToMove is run within a SharePoint farm that has at least the IU that Content DB will no longer participlate in profile syncronization; even if you remove and reattach the content DB to the same farm. The issue is due to a change in behavior that we introduced in the Infrastructure Update (IU). Before the IU when a content DB was removed and reintroduced back into a SharePoint farm the DB ID would change/regenerate. This had the side effect of causing all content within those DBs to undergo a Full Crawl by search. As you can imagine this a huge overheard so in the IU we ensured that the Content DBs never had to change IDs when reintroduced into a Farm. The PrepareToRemove was originally needed to ensure we did not have to redo a full sync when the same content DB with a new ID was reintroduced. Since this ID now does not change this is no longer needed when running within a farm that has at least the IU installed. &lt;/P&gt;
&lt;P&gt;PrepareToMove sets 'Moving' to True in the SiteSynch table of the SSP DB which signals to the profile sync job to ignore the DB which has the effect of not allowing profile syncs to occur for this DB. After attaching a Content DB back into the IU farm 'Moving' is still set to True. Even after the sync timer job fires and the stored procedure profilesynch_RegisterSiteToSynch is executed this content DB will still have its 'Moving' set to True. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 628px; HEIGHT: 131px" height=131 src="http://blogs.msdn.com/photos/toddca/images/9384828/original.aspx" width=628 mce_src="http://blogs.msdn.com/photos/toddca/images/9384828/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;The fix/resolution is to run PrepareToMove again (ok so I lied there is a case where you want to run it with the IU) but this time with the –undo option. The -undo command is harmless and it will set 'Moving' back to False and allow profile syncs to this content DB to start running again. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Be on the lookout for new TechNet and KB guidance around this command. &lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9384824" width="1" height="1"&gt;</description></item><item><title>High Memory is Relative</title><link>http://blogs.msdn.com/toddca/archive/2009/01/23/high-memory-is-relative.aspx</link><pubDate>Sat, 24 Jan 2009 04:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9373488</guid><dc:creator>Toddca</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/toddca/comments/9373488.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=9373488</wfw:commentRss><description>&lt;P&gt;Like most folks I customize my computer to fit my needs. I apply a myriad of registry settings, applications, utilities, and adjustments to my machine to get the environment just the way I like. One item I always seem to change is the buffer height of my command prompt. I find it is useful to increase this buffer when I am running commands that have a ton of output or when I am debugging an application with a command line debugger. Rather than have the text just flow off the buffer I typically increase te Height buffer to the max, 9999. When doing so you may run across one of the most useless messages you may come across in Windows. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: red"&gt;WARNING: Screen buffer size will require 1 MB of memory per window. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Obviously the guy or gal that wrote this message has not&amp;nbsp;looked at the memory consumption of&amp;nbsp;Outlook 2007.:-) The message actually goes way back. I remember filing a bug, which was subsequently rejected, on this dialog when Windows 2000 was still in Beta. As far as I can tell it is a holdover from the days when the premier operating system around was known simply as NT. As best as I can figure it was put into the OS around the NT 3.x days however if anyone is still running those version and can confirm or deny I would love to know. But here it is in Windows Vista still alive and kickin.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/toddca/images/9373489/407x475.aspx" mce_src="http://blogs.msdn.com/photos/toddca/images/9373489/407x475.aspx"&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9373488" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Customizing the Rendering of a Custom SPField</title><link>http://blogs.msdn.com/toddca/archive/2009/01/23/customizing-the-rendering-of-a-custom-spfield.aspx</link><pubDate>Fri, 23 Jan 2009 23:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9373141</guid><dc:creator>Toddca</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/toddca/comments/9373141.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=9373141</wfw:commentRss><description>&lt;P&gt;I was recently asked by a customer how to use a PropertySchema field value within a RenderPatten's CAML to control how a field is rendered. The idea is to create a new instance of the field and have some method to control how that field will be rendered at the time the column is instantiated. Unfortunately field values from the PropertySchema are not available via a &amp;lt;Property Select='myValue'/&amp;gt; within a ReanderPattern's CAML and nor is it possible to call a custom getter off the SPField derived class of your custom SPField. In most cases when a field is rendered it is done so within native (non-managed) code so the getter on your .net assembly will not get called. The field schema stored in the DB is what gets read to help generate the rendered output. Fortunately this schema can be accessed by SPFIeld.SchemaXml. Adding properties or attributes to the root element of this XML will allow the RenderPattern CAML access. &lt;/P&gt;
&lt;P&gt;So let's take a look at a sample. For my scenario I want URL field however I want to control how that field is rendered. By default a URL field just renders the URL without wrapping that URL in an &amp;lt;a&amp;gt; tag. In our example we want to create a true hyperlink so we are going to generate a RenderingPattern which will wrap an &amp;lt;a&amp;gt; tag around the field value. In addition we want the creator of the field to choose what happens when that link is selected by the user. That is, will the navigation happen within the same window or will the browser open the URL in a new window. I call these options "Self" and "New" respectively. &lt;/P&gt;
&lt;P&gt;Now that we have our scenario let's take a look at what it will take to wire up the new field. First I need to define our field via fldTypes XML. &lt;STRONG&gt;Code 1&lt;/STRONG&gt; shows what this looks like. As you can see the Parent is "URL" because we want to use the same storage and rendering of the built-in URL however we are going to tweak it a bit. The FieldTypeClass will be outlined in &lt;STRONG&gt;Code 2&lt;/STRONG&gt;. The PropertySchema field is used to collect the user's intent on how the URL will behave within the client's browser and finally we have RenderingPattern CAML which will control how the field will be rendered within the browser. Note I have a FieldSwitch on a Property called 'HowOpenUrl', this value will not be chosen from the PropertySchema's HowOpenUrl directly however once you take a look at Code 2 you will see how this is done. The reminder of the RenderPattern uses the FieldSwitch to determine how to render the URL. The default rendering is an &amp;lt;a&amp;gt; tag with the target set to _self so the URL will be navigated to within the same window. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Code 1 – fldtypes_sample.xml &lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE class="" style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 1141px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: black 0.5pt solid; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;version&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;utf-8&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; ?&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;FieldTypes&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;FieldType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TypeName&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;ConfigurableURL&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;ParentType&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;URL&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TypeDisplayName&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;Configurable URL&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TypeShortDescription&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;Configurable URL&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;UserCreatable&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;TRUE&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;ShowInListCreate&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;TRUE&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;ShowInSurveyCreate&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;TRUE&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;ShowInDocumentLibraryCreate&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;TRUE&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;ShowInColumnTemplateCreate&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;TRUE&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;FieldTypeClass&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;SampleConfigurableField.ConfigurableUrlField, SampleConfigurableField, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3de2414d286dff3d&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;PropertySchema&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Fields&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;HowOpenUrl&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;DisplayName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Choose how to open the URL ('Self' = within same window, 'New' = New Window&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Text&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Default&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;Self&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Default&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Fields&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;PropertySchema&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;RenderPattern&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;DisplayPattern&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;FieldSwitch&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Expr&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Property&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Select&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;'&lt;SPAN style="COLOR: blue"&gt;HowOpenUrl&lt;/SPAN&gt;'&lt;SPAN style="COLOR: blue"&gt;/&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Expr&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Case&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Self&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;![CDATA[&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;a target="_self" href="&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;]]&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Column&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;HTMLEncode&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TRUE&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;![CDATA[&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;]]&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Column&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;HTMLEncode&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TRUE&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;![CDATA[&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/a&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;]]&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Case&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Case&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;![CDATA[&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;a target="_blank" href="&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;]]&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Column&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;HTMLEncode&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TRUE&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;![CDATA[&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;]]&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Column&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;HTMLEncode&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TRUE&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;![CDATA[&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&amp;lt;/a&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;]]&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Case&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Default&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Column&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;HTMLEncode&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TRUE&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Default&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;FieldSwitch&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;RenderPattern&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;FieldType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;FieldTypes&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;After creating a Class Library project and adding the proper reference to Microsoft.SharePoint I added the following code to define my ConfigurableUrlField. This field derives from the SPFieldURL class which is important because we defined in Code 1 that our ParentType is "URL". Like all custom fields we need to create the two proper constructors which not only allow our type to be constructed but properly instantiates the base type. Next we need to override the OnAdded() and OnUpdated() methods which each get called whenever this field definition is added to a new site column or when the site column definition is updated, for example when someone wants to change from a rendering of this field from "Self" to "New". The magic all happens in ConfigureSchemaXml(), this is where we access the base.SchemaXml and update it with our custom property's value as configured by the user. This is the only chance we get to manipulate the schema before being stored in the DB and used to render the field. Note the name of the attribute being added/updated needs to match the name being used within the FieldSwitch: &lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Property&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Select&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;'&lt;SPAN style="COLOR: blue"&gt;HowOpenUrl&lt;/SPAN&gt;'&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Code 2 – ConfigurableUrlField.cs &lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE class="" style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 1141px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: black 0.5pt solid; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; SampleConfigurableField &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Microsoft.SharePoint; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Microsoft.SharePoint.WebControls; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Xml; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ConfigurableUrlField&lt;/SPAN&gt; : &lt;SPAN style="COLOR: #2b91af"&gt;SPFieldUrl &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; _updating = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; ConfigurableUrlField(&lt;SPAN style="COLOR: #2b91af"&gt;SPFieldCollection&lt;/SPAN&gt; fields, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; fieldName) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;: &lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;(fields, fieldName) { } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; ConfigurableUrlField(&lt;SPAN style="COLOR: #2b91af"&gt;SPFieldCollection&lt;/SPAN&gt; fields, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; typeName, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; displayName) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;: &lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;(fields, typeName, displayName) { } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; OnUpdated() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: green"&gt;//ConfigureSchemaXml() will cause the OnUpdated event to be raised, &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: green"&gt;//to keep out of a stack overflow condition we bail early when updating &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (_updating) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;_updating = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.OnUpdated(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;ConfigureSchemaXml(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;_updating = &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; OnAdded(&lt;SPAN style="COLOR: #2b91af"&gt;SPAddFieldOptions&lt;/SPAN&gt; op) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.OnAdded(op); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;ConfigureSchemaXml(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; ConfigureSchemaXml() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; howOpenUrl = (&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;)&lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.GetCustomProperty(&lt;SPAN style="COLOR: #a31515"&gt;"HowOpenUrl"&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;howOpenUrl = AreStringsEqual(&lt;SPAN style="COLOR: #a31515"&gt;"New"&lt;/SPAN&gt;, howOpenUrl) ? &lt;SPAN style="COLOR: #a31515"&gt;"New"&lt;/SPAN&gt; : &lt;SPAN style="COLOR: #a31515"&gt;"Self"&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlDocument&lt;/SPAN&gt; doc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;XmlDocument&lt;/SPAN&gt;(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;doc.LoadXml(&lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.SchemaXml); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (doc.FirstChild.Attributes[&lt;SPAN style="COLOR: #a31515"&gt;"HowOpenUrl"&lt;/SPAN&gt;] == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;XmlAttribute&lt;/SPAN&gt; attrib = doc.CreateAttribute(&lt;SPAN style="COLOR: #a31515"&gt;"HowOpenUrl"&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;attrib.Value = howOpenUrl; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;doc.FirstChild.Attributes.Append(attrib); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;else &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;doc.FirstChild.Attributes[&lt;SPAN style="COLOR: #a31515"&gt;"HowOpenUrl"&lt;/SPAN&gt;].Value = howOpenUrl; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.SchemaXml = doc.OuterXml; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; AreStringsEqual(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; s1, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; s2) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;.Compare(s1, s2, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;) == 0); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;BaseFieldControl&lt;/SPAN&gt; FieldRenderingControl &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;get &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;BaseFieldControl&lt;/SPAN&gt; fldControl = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;UrlField&lt;/SPAN&gt;(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;fldControl.FieldName = InternalName; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; fldControl; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;For completeness I have included the manifest.xml used for deployment of the solution. I will not go over that here since the concept is covered in so many other places. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Code 3 – manifest.xml &lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE class="" style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 1141px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: black 0.5pt solid; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;version&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;utf-8&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; ?&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Solution&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.microsoft.com/sharepoint/&lt;/SPAN&gt;" &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;SolutionId&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;733641DA-95D9-446E-812E-6070947171B2&lt;/SPAN&gt;" &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;DeploymentServerType&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;WebFrontEnd&lt;/SPAN&gt;" &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ResetWebServer&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;TRUE&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Assemblies&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Assembly&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;DeploymentTarget&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GlobalAssemblyCache&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Location&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;SampleConfigurableField.dll&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;SafeControls&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;SafeControl&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;SampleConfigurableField&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;TypeName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;*&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Safe&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&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;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;SafeControls&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Assembly&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Assemblies&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;TemplateFiles&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;TemplateFile&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Location&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;XML\fldtypes_Sample.xml&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;TemplateFiles&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Solution&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;Once we have our solution added and deployed within our farm it is time to use the field. I created a test list and added a new column based on the Configurable URL field I just deployed. Note the open to set how the URL will open within the browser. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG style="WIDTH: 672px; HEIGHT: 443px" height=345 src="http://blogs.msdn.com/photos/toddca/images/9373123/500x316.aspx" width=531 mce_src="http://blogs.msdn.com/photos/toddca/images/9373123/500x316.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Now back at my list I create a new list item – note that we did not create a custom field control but rather are using the SPFieldUrl's field control for editing of this field. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/toddca/images/9373150/500x146.aspx" mce_src="http://blogs.msdn.com/photos/toddca/images/9373150/500x146.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Finally we can see the URL in action. Obviously an image does not do it justice but if I look at the HTML source I can find what actually got rendered: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;lt;a target="_self" href="http://www.msn.com" href="http://www.msn.com"&amp;gt;http://www.msn.com&amp;lt;/a&amp;gt; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/toddca/images/9373131/500x119.aspx" mce_src="http://blogs.msdn.com/photos/toddca/images/9373131/500x119.aspx"&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9373141" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>The Zero Downtime SharePoint Patching Myth</title><link>http://blogs.msdn.com/toddca/archive/2008/08/02/the-zero-downtime-sharepoint-patching-myth.aspx</link><pubDate>Sat, 02 Aug 2008 23:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8807980</guid><dc:creator>Toddca</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/toddca/comments/8807980.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=8807980</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Unfortunately it is not possible to update/patch SharePoint without occurring some amount downtime. So the only options available to us are to &lt;EM&gt;minimize&lt;/EM&gt; downtime. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;I think of downtime in two ways, 'not available' and 'reduced functionality'. The second obviously is more closely aligned to zero downtime however for a large farm it is difficult logistically to achieve. &amp;nbsp;Reduced functionality is providing your users with a read only farm during the time in which the patching of the primary farm is occurring. This requires the entire primary farm to be swung to another farm with its content DBs set to read only mode. Once patching on the primary farm is complete traffic is redirected back to the primary farm.&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Since we want to always keep our downtime window as small as possible we should always follow a good and well tested practice of upgrading a farm to ensure there are no surprises along the way that will impact our downtime. There are two phases of upgrade, laying down updated binaries and running psconfig. The second phase, running psconfig, is the one that is going to take the majority of the time and the time taken is directly proportional to the amount of site collections within the farm. Psconfig upgrades each content DB schema and in many installations this can take &lt;EM&gt;many&lt;/EM&gt; hours to complete. We have found in our testing in many real world deployments that detaching all content DBs other than the CA content DB, running psconfig, and then attaching content DBs back can help reduce the amount of downtime needed when patching SharePoint. One myth that needs to be dispelled now; the reduction in downtime is not achieved because psconfig runs faster or gets better throughput when upgrading the Content DB. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;As with most things in SharePoint there are rules around the DB Attach process:&lt;BR&gt;1. Only one Content DB can be attached to a farm at any one time.&lt;BR&gt;2. Once a Content DB has been attached to a farm all of its content is marked as updated and therefore will incur what is effectively a full crawl the first time search crawls this DB. &lt;EM&gt;More on this later.&lt;/EM&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;SPAN style="COLOR: #1f497d"&gt;So taking into account rule #1 there are two ways we can optimize this process to reduce downtime, 1) Prioritize, attach content DBs that belong to Web Applications that are highly sensitive to downtime first and make them available, &amp;nbsp;and 2)Use surrogates, build out additional worker farms which are used as surrogates to host attaching content DBs. &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;SPAN style="COLOR: #1f497d"&gt;The process of using surrogate farms includes building one or more single server, throw away, farms that are running the same patch level you are upgrading your primary farm to. This process has been well documented &lt;A class="" href="http://blogs.technet.com/corybu/archive/2007/08/02/high-performance-upgrades-for-moss-2007-wss-3-0-database-migration-methods.aspx" mce_href="http://blogs.technet.com/corybu/archive/2007/08/02/high-performance-upgrades-for-moss-2007-wss-3-0-database-migration-methods.aspx"&gt;here&lt;/A&gt;. This approach however has downsides such as the need for additional hardware, the additional time and effort to build out these farms, and the need for your SQL server to be able to handle the additional load. &amp;nbsp;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;SPAN style="COLOR: #1f497d"&gt;Let's take a look at the steps of a typical upgrade with DB prioritization:&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;0. Announce and coordinate downtime with IT, users, etc.&lt;BR&gt;1. Take farm offline, typically you are pulling the WFEs out of a load balancer or for the case of reduced functionality, swinging DNS settings to another read only farm replica.&lt;BR&gt;2. Detach all content DBs from the farm.&lt;BR&gt;3. Run WSS and if applicable MOSS upgrade patches on each server and choosing &amp;nbsp;to &lt;STRONG&gt;not&lt;/STRONG&gt; run psconfig. You are only going to run psconfig once, &lt;STRONG&gt;not&lt;/STRONG&gt; once for each upgrade package.&lt;BR&gt;4. After all servers have been patched run psconfig on the CA machine. The execution of psconfig will not take near as long because all the content DBs are detached.&lt;BR&gt;5. For each additional machine in the farm and one at a time run psconfig.&lt;BR&gt;6. At this point your farm, without any content DBs, is upgraded and only the content DBs require upgrade.&lt;BR&gt;7. Starting with the web application that is most critical to get back into production start attaching its content DB(s). Once complete put this Web Application back in the load balancer and notify everyone it is back online.&lt;BR&gt;8.Continue running through each additional Content DB until each is attached back into the farm.&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;I have a tool that I will be releasing soon named CDBManager that will help with the DB prioritization method of upgrade, specifically it allows you to:&lt;/SPAN&gt; &lt;/P&gt;
&lt;UL style="MARGIN-LEFT: 38pt"&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Mass DB detach all the content DBs in a farm&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Reorder content DBs by priority&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Automate the attaching of content DBs and provides ETA of when each DB will be complete (important because there is not a progress indicator otherwise)&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Manages the upgrade.log file by creating an upgrade.log file for each content DB attached. As you may know each time a Content DB is attached to a farm and upgraded a new upgrade log is either created or if one already exists it is appended too. The problem with this approach is that all your upgrade logging is in a single file and not split out by Content DB. CDBManager renames the upgrade.log file after each Content DB has completed attaching with the name of the Content DB. This makes it much easier to go back through each log and analyze what might have gone wrong within a certain Content DB on upgrade.&lt;/SPAN&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;I have a couple of large enterprise customers that are testing the tool now. Once we get past any breaking issues I publish the bits. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;One additional point about the prioritization upgrade approach; should a content DB fail to attach along the way for whatever reason you should continue to DB Attach the remaining content DBs. While the upgrade is progressing along you now have the opportunity to investigate and mitigate the issues with the failed content DB in parallel to the upgrade and once ready retry the DB attach operation.&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;SPAN style="COLOR: #1f497d"&gt;So time to revisit DB Attach rule #2. When a content DB is attached into a farm its ID is changed. This has the side effect of effectively marking each object within the content DB as changed. This means that when the crawler service hits this content DB, weather doing an incremental or a full crawl, it will effectively do a full crawl as it believes all the content has changed. The Infrastructure Update (IU) changes all of this and effectively takes this rule out of play. After installing the IU the Content DB is not longer changed. This means an incremental crawl after re-attaching a Content DB is really an incremental crawl. No more full crawls after detaching and attaching content DBs, yea! &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;The Infrastructure Update (IU) &lt;/SPAN&gt;&lt;A class="" href="http://support.microsoft.com/kb/953749/" mce_href="http://support.microsoft.com/kb/953749/"&gt;KB article&lt;/A&gt;&lt;SPAN style="COLOR: #1f497d"&gt; also has this blurb:&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Verdana"&gt;Improvements to the time that is required to update and upgrade Windows SharePoint Services sites.&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;So what does this mean? Any fix before the IU psconfig updates each site collection in the farm by updating its build version to reflect the most recent value. After installing the IU we only hit site collections to update them if a schema object of the site collection needs to be updated, such as an update to the template schema. This type of update is far less frequently since hotfixes rarely do site collection schema updates (IU however does to support the new search features). The end result is that if a fix does not require a schema update psconfig does not go through each site collection and update the build number, so this will drastically reduce the amount of time necessary to perform the upgrade. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;So there you have it, while we cannot upgrade a live farm we do have processes and available fixes that will move us closer to the nirvana of a zero downtime upgrade. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Happy upgrading!&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8807980" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Where Did That AppPool Go?</title><link>http://blogs.msdn.com/toddca/archive/2008/06/05/where-did-that-apppool-go.aspx</link><pubDate>Thu, 05 Jun 2008 21:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8575992</guid><dc:creator>Toddca</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/toddca/comments/8575992.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=8575992</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi"&gt;&lt;FONT color=#000000&gt;I am a big fan of anything that gives me more insight as to what is happening on my system. One such IIS 6 tweak which I find is greatly overlooked is the additional AppPool logging you can get out of IIS 6. It blows me away that this was not "on" by default -- but that is another blog entry.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi"&gt;&lt;FONT color=#000000&gt;The tweek involves modifying the metabase per &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://support.microsoft.com/kb/332088" mce_href="http://support.microsoft.com/kb/332088"&gt;http://support.microsoft.com/kb/332088&lt;/A&gt;&amp;nbsp;&lt;FONT color=#000000&gt;to turn on this additional logging at the AppPool. This KB has a command:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;
&lt;P class=list4 style="MARGIN: 0in 3.75pt 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"&gt;cscript adsutil.vbs Set w3svc/AppPools/&lt;B&gt;DefaultAppPool&lt;/B&gt;/LogEventOnRecycle 255&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;FONT color=#000000&gt;This turns the logging on for the DefaultAppPool however a more global approach, and one that would be useful esp.&amp;nbsp;when you have more than one AppPool like us SharePoint guys is:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;
&lt;P class=list4 style="MARGIN: 0in 3.75pt 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"&gt;cscript adsutil.vbs Set w3svc/AppPools/LogEventOnRecycle 255&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;FONT color=#000000&gt;It goes without saying but after you set this you want to do some kind of monitoring for these events to get a since as to what is going on with your AppPools throughout the day.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8575992" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/ASP.NET+General+Information/default.aspx">ASP.NET General Information</category><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/toddca/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Database Disconnect Issues with SharePoint</title><link>http://blogs.msdn.com/toddca/archive/2008/03/23/database-disconnect-issues-with-sharepoint.aspx</link><pubDate>Mon, 24 Mar 2008 04:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8332831</guid><dc:creator>Toddca</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/toddca/comments/8332831.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=8332831</wfw:commentRss><description>I have spent a good deal of time lately working with one of my MOSS 2007 customers on a database disconnect issue that has been plaguing them since SPS 2003. The following blog entry are the steps I went through to track down this issue. It was not without the help of some of my co-workers that made this journey successful. I also need to mention that the customer made an incredible contribution of time and effort on this as well. In many cases most customers would have bailed and just resigned to the fact this issue would not be resolved but this one was different. They stuck it out and in the end we nailed the issue. &lt;BR&gt;&lt;BR&gt;The diagnostic tools used during the investigation included: 
&lt;UL&gt;
&lt;LI&gt;ULS Logs&lt;/LI&gt;
&lt;LI&gt;Netmon&lt;/LI&gt;
&lt;LI&gt;ADO.Net Tracing&lt;/LI&gt;
&lt;LI&gt;Netstat&lt;/LI&gt;
&lt;LI&gt;DbgView&lt;/LI&gt;
&lt;LI&gt;TDIMon&lt;/LI&gt;
&lt;LI&gt;NT Event Log&lt;/LI&gt;
&lt;LI&gt;WinDBG (Debugger)&lt;/LI&gt;
&lt;LI&gt;LogParser&lt;/LI&gt;
&lt;LI&gt;netdiag&lt;/LI&gt;&lt;/UL&gt;&lt;BR&gt;&lt;BR&gt;This issue occurred in every single environment they had, Production, QA, Dev, POC and was prevalent in that it occurred several dozen times a day on each server. The issues presented as multiple event log entries in the event log, specifically there were many event 7888 and 6483 events littered about in the Application Event Log.Looking at the ULS logs we could confirm the same error being logged there. &lt;BR&gt;&lt;BR&gt;What was most interesting about these events where that each where logged as a timeout expired operation and the operation being performed was an initial connection. You can tell this by looking at the various method names such as TdsParser.Connect() (on an already existing connection we would be running TdsParser.Parse), AttemptOneLogin, CreateConnection(), etc would all seem to indicate we were not using a pooled connection. The timeout message really bothered me too; I knew the connection strings being used where managed by SharePoint and typically the TIMEOUT parameter is not set in the connection string explicitly so this was probably not the result of a low TIMEOUT value being set by a rouge configuration setting. &lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 200px"&gt;Event Type: Error&lt;BR&gt;Event Source: Office SharePoint Server&lt;BR&gt;Event Category: Office Server General Event ID: 7888&lt;BR&gt;Date: 9/6/2007&lt;BR&gt;Time: 7:24:10 AM&lt;BR&gt;User: N/A&lt;BR&gt;Computer: XXX-XXXXX&lt;BR&gt;Description: A runtime exception was detected. Details follow.&lt;BR&gt;Message: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.&lt;BR&gt;Techinal Details:&lt;BR&gt;System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)&lt;BR&gt;at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)&lt;BR&gt;at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)&lt;BR&gt;at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)&lt;BR&gt;at System.Data.SqlClient.TdsParserStateObject.ReadPacket(Int32 bytesExpected)&lt;BR&gt;at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean&amp;amp; marsCapable)&lt;BR&gt;at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)&lt;BR&gt;at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)&lt;BR&gt;at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)&lt;BR&gt;at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)&lt;BR&gt;at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)&lt;BR&gt;at System.Data.SqlClient.SqlConnection.Open()&lt;BR&gt;at Microsoft.Office.Server.Data.SqlSession.OpenConnection()&lt;BR&gt;at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)&lt;BR&gt;at Microsoft.Office.Server.Data.SqlDatabaseManager.HasAccess(String user)&lt;BR&gt;at Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeConfigurationDatabaseAccess(SharedComponentSecurity security)&lt;BR&gt;at Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeAccessControl(SharedComponentSecurity sharedApplicationSecurity)&lt;BR&gt;at Microsoft.Office.Server.Administration.SharedResourceProvider.Microsoft.Office.Server.Administration.ISharedComponent.Synchronize()&lt;BR&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;PRE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 200px"&gt;Event Type: Error&lt;BR&gt;Event Source: Office SharePoint Server&lt;BR&gt;Event Category: Office Server Shared Services &lt;BR&gt;Event ID: 6483&lt;BR&gt;Date: 9/26/2007&lt;BR&gt;Time: 6:55:10 AM&lt;BR&gt;User: N/A&lt;BR&gt;Computer: XXX-XXXXX&lt;BR&gt;Description:&lt;BR&gt;Application synchronization failed for Microsoft.Office.Server.Search.Administration.SearchService.&lt;BR&gt;&lt;BR&gt;Reason: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.&lt;BR&gt;&lt;BR&gt;Techinal Support Details:&lt;BR&gt;System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)&lt;BR&gt;at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)&lt;BR&gt;at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)&lt;BR&gt;at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)&lt;BR&gt;at System.Data.SqlClient.TdsParserStateObject.ReadPacket(Int32 bytesExpected)&lt;BR&gt;at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean&amp;amp; marsCapable)&lt;BR&gt;at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)&lt;BR&gt;at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)&lt;BR&gt;at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)&lt;BR&gt;at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)&lt;BR&gt;at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)&lt;BR&gt;at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)&lt;BR&gt;at System.Data.SqlClient.SqlConnection.Open()&lt;BR&gt;at Microsoft.Office.Server.Data.SqlSession.OpenConnection()&lt;BR&gt;at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)&lt;BR&gt;at Microsoft.Office.Server.Data.SqlDatabaseManager.HasAccess(String user)&lt;BR&gt;at Microsoft.Office.Server.Administration.SharedDatabase.Microsoft.Office.Server.Administration.ISharedAccessControl.&lt;BR&gt;SetAccessControl(SharedComponentSecurity security)&lt;BR&gt;at Microsoft.Office.Server.Search.Administration.SearchSharedApplication.SynchronizeDatabase()&lt;BR&gt;at Microsoft.Office.Server.Search.Administration.SearchSharedApplication.Synchronize()&lt;BR&gt;at Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeApplications(SharedComponentSecurity sharedApplicationSecurity)&lt;BR&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;PRE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;Looking down at the bottom of the stack I could see the method that started this entire mess was one that runs within the OWSTimer. This was important because we knew this was not as a result of a user making a connection to the DB in the process of doing some kind of SharePoint operation on the Web Front End (WFE). This meant this error was not impacting their experience as well as when a job in the OWSTimer fails the operation will be retried at the next interval for the job.&lt;BR&gt;&lt;BR&gt;As typically with many issues that present as a problem with networking we captured several network sniffs at the time of the events. We could see that the server was responding fine and there appeared to be no errors on the network, very fast responses basically all the time. In fact during the period in which the events were being thrown every attempted SQL connection from the time of the event and back 30 seconds succeeded. &lt;BR&gt;&lt;BR&gt;Next I started looking into the ADO.NET source code and soon I developed a theory. So the theory was that we are inside of the ADO.NET ReadSync() method and we are getting a very small timeout value (possibly zero) passed in which caused us to not do the proper WaitForSingleObject() on the socket, basically passing 0 for the TIMEOUT which does not allow enough time for the response from the server. A TIMEOUT of zero basically causes the thread to release the remainder of its quantum and then immediately go back into a ready state to be scheduled back on the processor. So what would cause such a condition? ADO.NET calculates the timeout time by using the timeout passed in from the user code and calculates a time in the future with which to expire the connection. As the code progresses it compares the current time with this expiry time to get the number of milliseconds remaining and then uses that as the basis for the TIMEOUT on the WaitFor… methods. The problem with this approach is that it is susceptible to clock skews and corrections. So assume a 15 sec timeout and the connection attempt started at 12:00:00, the timeout would be at 12:00:15, now the timer service has figured out the clock time for the system is a bit slow and needs to be adjusted to 12:00:20, we just blew our timeout period. At this point you are probably saying to yourself this guy must be on crack if he really thinks this is what is going on. Well I am not on crack and you are correct this is &lt;STRONG&gt;not&lt;/STRONG&gt; what was going on. If you think about it there is a really small window of opportunity for this to occur and to occur at the frequency we were seeing was very unlikely. What made this more unlikely was that we did not have the issue on just one server but rather dozens in various isolated environments.&lt;BR&gt;&lt;BR&gt;The next step was to enable ADO.NET tracing to get a peek into what ADO.NET is really doing and try to ascertain why we are getting this timeout. Setting up ADO.NET tracing is trivial once you know how to do it. Below are the following files that I used.&lt;BR&gt;&lt;BR&gt;
&lt;UL&gt;&lt;/UL&gt;
&lt;LI&gt;Setup.cmd -- is what you run to install the necessary settings to perform the tracing. &lt;/LI&gt;
&lt;LI&gt;Setup_trace.reg -- is the registry file that is imported. &lt;/LI&gt;
&lt;LI&gt;ADO_NET.mof -- is the mof file that is compiled to enable the tracing.&lt;/LI&gt;
&lt;LI&gt;_startTrace.cmd -- is the file you run when you are ready to start the tracing&lt;/LI&gt;
&lt;LI&gt;Ctrl.guid.todd -- is the file that contains the IDs of the tracing handlers&lt;/LI&gt;
&lt;LI&gt;_stopTrace.cmd -- is the file you run when you want to stop the tracing.&lt;/LI&gt;
&lt;UL&gt;&lt;/UL&gt;
&lt;H4&gt;Setup.cmd&lt;/H4&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 100px"&gt;Regedit /s setup_trace.reg&lt;BR&gt;Mofcomp ADO_NET.mof&lt;BR&gt;&lt;/DIV&gt;
&lt;H4&gt;Setup_trace.reg&lt;/H4&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 100px"&gt;Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BidInterface\Loader]&lt;BR&gt;":Path"="c:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\ADONETDiag.dll"&lt;BR&gt;&lt;/DIV&gt;
&lt;H4&gt;ADO_NET.mof&lt;/H4&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 200px"&gt;#pragma classflags("forceupdate")&lt;BR&gt;#pragma namespace ("\\\\.\\Root\\WMI")&lt;BR&gt;&lt;BR&gt;/////////////////////////////////////////////////////////////////////////////&lt;BR&gt;//&lt;BR&gt;// ADONETDIAG.ETW&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("ADONETDIAG.ETW"),&lt;BR&gt;Guid("{7ACDCAC8-8947-F88A-E51A-24018F5129EF}"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_ADONETDIAG_ETW : EventTrace&lt;BR&gt;{&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("ADONETDIAG.ETW"),&lt;BR&gt;Guid("{7ACDCAC9-8947-F88A-E51A-24018F5129EF}"),&lt;BR&gt;DisplayName("AdoNetDiag"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_ADONETDIAG_ETW_Trace : Bid2Etw_ADONETDIAG_ETW&lt;BR&gt;{&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("ADONETDIAG.ETW formatted output (A)"),&lt;BR&gt;EventType(17),&lt;BR&gt;EventTypeName("TextA"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_ADONETDIAG_ETW_Trace_TextA : Bid2Etw_ADONETDIAG_ETW_Trace&lt;BR&gt;{&lt;BR&gt;[&lt;BR&gt;WmiDataId(1),&lt;BR&gt;Description("Module ID"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;uint32 ModID;&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;WmiDataId(2),&lt;BR&gt;Description("Text StringA"),&lt;BR&gt;extension("RString"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;object msgStr;&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("ADONETDIAG.ETW formatted output (W)"),&lt;BR&gt;EventType(18),&lt;BR&gt;EventTypeName("TextW"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_ADONETDIAG_ETW_Trace_TextW : Bid2Etw_ADONETDIAG_ETW_Trace&lt;BR&gt;{&lt;BR&gt;[&lt;BR&gt;WmiDataId(1),&lt;BR&gt;Description("Module ID"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;uint32 ModID;&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;WmiDataId(2),&lt;BR&gt;Description("Text StringW"),&lt;BR&gt;extension("RWString"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;object msgStr;&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;/////////////////////////////////////////////////////////////////////////////&lt;BR&gt;//&lt;BR&gt;// System.Data.1&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.1"),&lt;BR&gt;Guid("{914ABDE2-171E-C600-3348-C514171DE148}"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_1 : EventTrace&lt;BR&gt;{&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.1"),&lt;BR&gt;Guid("{914ABDE3-171E-C600-3348-C514171DE148}"),&lt;BR&gt;DisplayName("System.Data"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_1_Trace : Bid2Etw_System_Data_1&lt;BR&gt;{&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.1 formatted output (A)"),&lt;BR&gt;EventType(17),&lt;BR&gt;EventTypeName("TextA"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_1_Trace_TextA : Bid2Etw_System_Data_1_Trace&lt;BR&gt;{&lt;BR&gt;[&lt;BR&gt;WmiDataId(1),&lt;BR&gt;Description("Module ID"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;uint32 ModID;&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;WmiDataId(2),&lt;BR&gt;Description("Text StringA"),&lt;BR&gt;extension("RString"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;object msgStr;&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.1 formatted output (W)"),&lt;BR&gt;EventType(18),&lt;BR&gt;EventTypeName("TextW"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_1_Trace_TextW : Bid2Etw_System_Data_1_Trace&lt;BR&gt;{&lt;BR&gt;[&lt;BR&gt;WmiDataId(1),&lt;BR&gt;Description("Module ID"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;uint32 ModID;&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;WmiDataId(2),&lt;BR&gt;Description("Text StringW"),&lt;BR&gt;extension("RWString"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;object msgStr;&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;/////////////////////////////////////////////////////////////////////////////&lt;BR&gt;//&lt;BR&gt;// System.Data.SNI.1&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.SNI.1"),&lt;BR&gt;Guid("{C9996FA5-C06F-F20C-8A20-69B3BA392315}"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_SNI_1 : EventTrace&lt;BR&gt;{&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.SNI.1"),&lt;BR&gt;Guid("{C9996FA6-C06F-F20C-8A20-69B3BA392315}"),&lt;BR&gt;DisplayName("System.Data.SNI"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_SNI_1_Trace : Bid2Etw_System_Data_SNI_1&lt;BR&gt;{&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.SNI.1 formatted output (A)"),&lt;BR&gt;EventType(17),&lt;BR&gt;EventTypeName("TextA"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_SNI_1_Trace_TextA : Bid2Etw_System_Data_SNI_1_Trace&lt;BR&gt;{&lt;BR&gt;[&lt;BR&gt;WmiDataId(1),&lt;BR&gt;Description("Module ID"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;uint32 ModID;&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;WmiDataId(2),&lt;BR&gt;Description("Text StringA"),&lt;BR&gt;extension("RString"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;object msgStr;&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.SNI.1 formatted output (W)"),&lt;BR&gt;EventType(18),&lt;BR&gt;EventTypeName("TextW"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_SNI_1_Trace_TextW : Bid2Etw_System_Data_SNI_1_Trace&lt;BR&gt;{&lt;BR&gt;[&lt;BR&gt;WmiDataId(1),&lt;BR&gt;Description("Module ID"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;uint32 ModID;&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;WmiDataId(2),&lt;BR&gt;Description("Text StringW"),&lt;BR&gt;extension("RWString"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;object msgStr;&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;/////////////////////////////////////////////////////////////////////////////&lt;BR&gt;//&lt;BR&gt;// System.Data.OracleClient.1&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.OracleClient.1"),&lt;BR&gt;Guid("{DCD90923-4953-20C2-8708-01976FB15287}"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_OracleClient_1 : EventTrace&lt;BR&gt;{&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.OracleClient.1"),&lt;BR&gt;Guid("{DCD90924-4953-20C2-8708-01976FB15287}"),&lt;BR&gt;DisplayName("System.Data.OracleClient"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_OracleClient_1_Trace : Bid2Etw_System_Data_OracleClient_1&lt;BR&gt;{&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.OracleClient.1 formatted output (A)"),&lt;BR&gt;EventType(17),&lt;BR&gt;EventTypeName("TextA"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_OracleClient_1_Trace_TextA : Bid2Etw_System_Data_OracleClient_1_Trace&lt;BR&gt;{&lt;BR&gt;[&lt;BR&gt;WmiDataId(1),&lt;BR&gt;Description("Module ID"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;uint32 ModID;&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;WmiDataId(2),&lt;BR&gt;Description("Text StringA"),&lt;BR&gt;extension("RString"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;object msgStr;&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;dynamic: ToInstance,&lt;BR&gt;Description("System.Data.OracleClient.1 formatted output (W)"),&lt;BR&gt;EventType(18),&lt;BR&gt;EventTypeName("TextW"),&lt;BR&gt;locale("MS\\0x409")&lt;BR&gt;]&lt;BR&gt;class Bid2Etw_System_Data_OracleClient_1_Trace_TextW : Bid2Etw_System_Data_OracleClient_1_Trace&lt;BR&gt;{&lt;BR&gt;[&lt;BR&gt;WmiDataId(1),&lt;BR&gt;Description("Module ID"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;uint32 ModID;&lt;BR&gt;&lt;BR&gt;[&lt;BR&gt;WmiDataId(2),&lt;BR&gt;Description("Text StringW"),&lt;BR&gt;extension("RWString"),&lt;BR&gt;read&lt;BR&gt;]&lt;BR&gt;object msgStr;&lt;BR&gt;};&lt;/DIV&gt;
&lt;H4&gt;_startTrace.cmd&lt;/H4&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 100px"&gt;@Logman start MyTrace -pf ctrl.guid.todd -ct perf -o Output.etl -ets&lt;BR&gt;&lt;/DIV&gt;
&lt;H4&gt;Ctrl.guid.todd&lt;/H4&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 100px"&gt;{7ACDCAC8-8947-F88A-E51A-24018F5129EF} 0x00000000 ADONETDIAG.ETW&lt;BR&gt;{C9996FA5-C06F-F20C-8A20-69B3BA392315} 0xFFFFFFFF System.Data.SNI.1&lt;BR&gt;&lt;/DIV&gt;
&lt;H4&gt;_stopTrace.cmd&lt;/H4&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 100px"&gt;@Logman stop MyTrace -ets&lt;BR&gt;&lt;/DIV&gt;&lt;!--
&lt;div style="padding: 2px 2px 2px 2px; overflow: auto; height: 200px; width:900px; background: #C0C0C0; border: thin inset;"&gt;
--&gt;&lt;BR&gt;&lt;BR&gt;Once the trace is complete you end up with a potentially huge Output.etl file. So once I opened the file in my favorite text editor (UltraEdit) I needed to find the error. So I began hunting around for the string “{WINERR}” with the actually error number preceding this string. The only errors I could find were 258 (WAIT_TIMEOUT) and 10065 (WSAEHOSTUNREACH). Both seemed relevant and both occurred on the same thread. Using LogParser I was able to break out the huge file into something more manageable. One of the columns you can use to do this is the ThreadID. My errors occurred on threaded 3136 so I used this command to break out the file:&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 100px"&gt;LogParser.exe "SELECT EventNumber,Timestamp,EventDescription,ThreadID,msgStr INTO bid_3136.csv FROM Output.etl WHERE ThreadID=3136" -oTsFormat:"yyyy-MM-dd:hh:mm:ss.llnn" -fMode Full &lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;I narrowed my search even further and finally I was able to figure out what was going on. Using EventNumbers we can see at 62463 we attempted to connect a socket, and at 62515 (the next trace item on this thread) we can see this event occurred 21 seconds later with our destination unreachable error. We then retry the connection, but remember our connection timeout of 15 seconds is already past, so in 62647 we have a timeout of 0, we send on the stocket and then attempt to wait on it and get the error in 62651 which is our WAIT_TIMEOUT which is the result of calling WaitForSingleObject on the socket handle with a TIMEOUT of 0. This is the error that is logged in the event log however it is not the real reason we failed to connect. Rather it was the first error we needed to focus on.&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 200px"&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class=""&gt;EventNumber&lt;/TH&gt;
&lt;TH class=""&gt;Timestamp&lt;/TH&gt;
&lt;TH class=""&gt;EventDescription&lt;/TH&gt;
&lt;TH class=""&gt;ThreadID&lt;/TH&gt;
&lt;TH class=""&gt;msgStr&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62463&lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:28.367774700 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;enter_06 &amp;lt;Tcp::SocketOpenSync|API|SNI&amp;gt; AI: 000000001D52EE00{ADDRINFO*}, ai_family: 2, event: FFFFFFFFFFFFFFFF{HANDLE}, timeout: -1 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62515 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.344609000 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;&amp;lt;Tcp::SocketOpenSync|RET|SNI&amp;gt; 10065{WINERR} &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62517 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.344618700 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;&amp;lt;Tcp::Open|ERR|SNI&amp;gt; ProviderNum: 7{ProviderNum}, SNIError: 0{SNIError}, NativeError: 10065{WINERR} &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62519 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.344631800 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;&amp;lt;Tcp::Open|RET|SNI&amp;gt; 10065{WINERR} &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62646 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.348822900 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;enter_01 &amp;lt;SNIReadSync|API|SNI&amp;gt; 311#{SNI_Conn}, pConn: 00000000008BF2F0{SNI_Conn*}, ppNewPacket: 000000002380DB18{SNI_Packet**}, timeout: 0 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62647 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.348827800 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;enter_02 &amp;lt;Tcp::ReadSync|API|SNI&amp;gt; 312#, ppNewPacket: 000000002380DB18{SNI_Packet**}, timeout: 0 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62648 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.348832000 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;&amp;lt;SNI_Packet::SNIPacketAllocate|API|SNI&amp;gt; pConn: 00000000008BF2F0{SNI_Conn*}, IOType: 0 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62649 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.348836000 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;&amp;lt;SNI_Packet::SNIPacketAllocate|SNI&amp;gt; 4#{SNI_Packet} from pool for 311#{SNI_Conn} &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62650 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.348839400 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;&amp;lt;SNI_Packet::SNIPacketAllocate|RET|SNI&amp;gt; 0000000000875740{SNI_Packet*} &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;62651 &lt;/TD&gt;
&lt;TD class=""&gt;2007-11-16:14:33:49.348893400 &lt;/TD&gt;
&lt;TD class=""&gt;System.Data.SNI.1 &lt;/TD&gt;
&lt;TD class=""&gt;3136 &lt;/TD&gt;
&lt;TD class=""&gt;&amp;lt;Tcp::ReadSync|ERR|SNI&amp;gt; ProviderNum: 7{ProviderNum}, SNIError: 11{SNIError}, NativeError: 258{WINERR} &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;We then went through a battery of config changes to see if we could knock this one out, we checked the IP settings and routing tables to confirm everything was correct. We checked GPO IPSec policies and none were being applied. We disabled or removed additional NICs that were not being used. We removed load balancers, AV software, etc but nothing helped. &lt;BR&gt;&lt;BR&gt;We also performed a TDIMon trace and this confirmed exactly what we found in the ADO.NET logs. &lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 100px"&gt;1469&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4:18:34 PM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w3wp.exe:3820&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; 88F44518&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TDI_CONNECT&amp;nbsp;&amp;nbsp; TCP:0.0.0.0:2283&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; 40.1.221.120:80&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 style="COLOR: red"&gt;HOST_UNREACHABLE-1792&lt;/SPAN&gt; &lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;Next I attempted to use a Debugger however the logistics to make this reality were very difficult and once attached I had limited time to try to reproduce the issue. We seemed to run clean with the debugger which typically means we have some sort of timing issue or race condition (not the case here however).&lt;BR&gt;&lt;BR&gt;Next I attempted to use iDNA which is a really cool technology developed by MSResearch which can trace every operation the machine performs. You can then load the log into the debugger and step forward or back in time, aka time traveling. Unfortunately there are some limitations, it does not work on x64 and it does not work within a VMWare VM. Our test environment was both.&lt;BR&gt;&lt;BR&gt;The customer was on SP1 of Windows 2003 and we upgraded to SP2, while we did see some improvement it was only marginal. &lt;BR&gt;&lt;BR&gt;Knowing this was something within the customer’s environment it must be something that applies to all machines so I received a copy of their build documents and attempted to build an identical machine using their process however this did not prove helpful.&lt;BR&gt;&lt;BR&gt;Finally we decided to use a special build of tcp.sys that dumped a message to a DebugDiag window when a Destination Unreachable error occurred. Fortunately there are only a few places within tcp.sys where this error is returned. Once we received the log we could see were the message was being returned and looking at the code we saw the code path necessary to get us to that place meant IPSec was enabled. BUT we checked IPSec right. Wrong, we did not check to see what policies were being applied at the local registry. To determine whether IPSec policies are being applied from either the local registry or through a Group Policy object (GPO) we followed these steps:&lt;BR&gt;
&lt;OL&gt;
&lt;LI&gt;We Installed Netdiag.exe from the Windows Server 2003 CD by running Suptools.msi from the Support\Tools folder.&lt;/LI&gt;
&lt;LI&gt;Opened a command prompt and changed directories to %ProgramFiles%\Support Tools. (Assumes you chose the default install path).&lt;/LI&gt;
&lt;LI&gt;Ran the following command to verify that there is not an existing IPSec policy assigned to the computer: netdiag /test:ipsec. &lt;/LI&gt;&lt;/OL&gt;&lt;BR&gt;Now if there was no policy we would have expected to see a message similar to “IP Security test…….:Passed IPSec policy service is active, but no policy is assigned” &lt;I&gt;however&lt;/I&gt; what we found was that although there was no Group Policy IPSec policy being applied someone (namely the security team) had gone in and applied IPSec policy directly to the machine. In my experience this is typically not done just because this practice is an administrative headache and is riddled with problems. What happens when you update your policy? What about if you miss applying a policy to one machine? What if you apply an outdated policy to a machine? You get the point…&lt;BR&gt;&lt;BR&gt;Here is one of the entries from the IPSec log, note we are blocking TCP source port 2283.&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 100px"&gt;Filter name: 2&lt;BR&gt;Connection Type: ALL &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;Weight &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; : 34603266&lt;BR&gt;Source Address &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : xx.x.xxx.xx &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (255.255.255.255)&lt;BR&gt;Destination Address &amp;nbsp;&amp;nbsp;&amp;nbsp; : &amp;lt;Any IP Address&amp;gt; &amp;nbsp; (0.0.0.0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;BR&gt;Protocol &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; : TCP &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Src Port: 2283 &amp;nbsp;&amp;nbsp; Dest Port: 0 &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;Mirrored &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; : no&lt;BR&gt;Outbound Action &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Blocking&lt;PRE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;There were some 30+ blacklisted ports the next table gives the full list.&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: thin inset; PADDING-RIGHT: 2px; BORDER-TOP: thin inset; PADDING-LEFT: 2px; BACKGROUND: #c0c0c0; PADDING-BOTTOM: 2px; OVERFLOW: auto; BORDER-LEFT: thin inset; WIDTH: 900px; PADDING-TOP: 2px; BORDER-BOTTOM: thin inset; HEIGHT: 200px"&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 1080&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 1080&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 2283&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 2283&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 2535&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 2535&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 2745&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 2745&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 3127&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 3127&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 3128&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 3128&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 3410&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 3410&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 5554&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 5554&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 8866&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 8866&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 9898&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 9898&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 10000&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 10000&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 10080&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 10080&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 12345&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 12345&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 17300&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 17300&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 27374&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 27374&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UDP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 65506&lt;/SPAN&gt;&lt;/TT&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;TT&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCP &amp;nbsp; &amp;nbsp; Src &amp;nbsp; &amp;nbsp; Port: &amp;nbsp; 65506&lt;/SPAN&gt;&lt;/TT&gt; &lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;So what was it able this IPSec policy that was a deal breaker? Several of these blocked ports fell within the ephemeral port range and when we attempted to use one of these ports we would fail. &lt;BR&gt;&lt;BR&gt;So how do you fix this issue? According to all documentation the fix is to set the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ReservedPorts to exclude a range of ports so that TCP did not attempt to use them. This makes since, knowing they are blocked to remove them from the ephemeral pool of possible ports. The &lt;A href="http://support.microsoft.com/kb/812873/en-us" mce_href="http://support.microsoft.com/kb/812873/en-us"&gt;KB article&lt;/A&gt; that documents this key however does not mention that multiple ranges can be included. By adding ranges such as 1080-1080 and 2282-2283 one can exclude these ports from the ephemeral pool. There is however an open question on whether this actually works or not. The customer chose to use another workaround mainly the built in firewall in Windows 2003 Server. &lt;BR&gt;&lt;BR&gt;So why are these ports being blocked? It seems the security folks connect to each server and make the IPSec changes to block ports that have known vulnerabilities however they failed to tell anyone that they actually do this so this is likely why it did not make it into their build documents. &lt;BR&gt;&lt;BR&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8332831" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>.Net Framework Version Overview</title><link>http://blogs.msdn.com/toddca/archive/2007/08/08/net-framework-version-overview.aspx</link><pubDate>Wed, 08 Aug 2007 14:03:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4291873</guid><dc:creator>Toddca</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/toddca/comments/4291873.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=4291873</wfw:commentRss><description>&lt;p&gt;I am frequently asked about the various .Net framework versions floating around. As the .Net framework continues to go through its various revs the waters will only become muddier. Here is a quick overview of each version we have to date…
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;.Net 1.0&lt;/strong&gt; – This was the initial release of the framework which as of today only .Net 1.0 SP3 is currently supported by PSS. This only shipped as x86.
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;.Net 1.1&lt;/strong&gt; – This is a side-by-side release of the framework in which no dependencies on 1.0 exist. Hotfixes and Service packs for this version do not affect other framework versions. This only shipped as x86 and the latest Service Pack is SP1. This version also shipped inside the OS on Windows 2003 RTM but only in the x86 SKU. For x64 and IA64 versions of Windows 2003 there is no .Net framework installed by default. The x86 SP1 for Windows 2003 updates the 1.1 framework however it is SP1+ in that it does not have the same binaries as let's say a Windows 2000 machine with .Net 1.1 SP1 installed.
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;.Net 2.0&lt;/strong&gt; – This is a side-by-side release just as .Net 1.1. This version ships as x86, x64, and IA64. Windows 2003 R2 ships this version but does not install it by default. Using add/remove programs on any SKU will allow for installation. There currently is no service pack for this version. The x86 and x64 redist packages can each be installed side-by-side on a single x64 system. 
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;.Net 3.0&lt;/strong&gt; – This is the first add-on framework. It adds functionality in the form of WPF, WCF, and WF, plus upgrades the 2.0 binaries by adding a few necessary fixes to make the new components function properly. This version shipped with all SKUs of Vista and has a redistributable package as well. The 3.0 redist package will install the 2.0 framework should it not be present or will upgrade an existing 2.0 installation. The x86 and x64 redist packages can each be installed side-by-side on a single x64 system. Currently there is no Service pack available. 
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;.Net 3.5&lt;/strong&gt; – This is another side-by-side for 2.0 and 3.0 which adds functionality and updates the binaries of the previous two frameworks. This version has not been released and not much about it is public at this point but you can assume an x86, x64 and an IA64 version will continue to be available. You can probably also assume this will debut with Windows 2008.
&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4291873" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/General+.Net+Framework/default.aspx">General .Net Framework</category></item><item><title>Windows SharePoint Services 3.0 Remote Blob Storage API</title><link>http://blogs.msdn.com/toddca/archive/2007/08/06/windows-sharepoint-services-3-0-remote-blob-storage-api.aspx</link><pubDate>Tue, 07 Aug 2007 02:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4267882</guid><dc:creator>Toddca</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/toddca/comments/4267882.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=4267882</wfw:commentRss><description>&lt;P&gt;Probably one of the &lt;A href="http://support.microsoft.com/kb/938499/" mce_href="http://support.microsoft.com/kb/938499/"&gt;worst KB articles&lt;/A&gt; I have seen lately introduces, what has the potential to be a really exciting new feature of WSS 3.0/4.0 – Remote Blob Storage (RBS). This interface allows the storage of "blobs" outside of SQL server in a kind of BlobBank (I call dibs on this name. &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt;). Blobs are the stream of content, a byte[] for those dev heads, which represent files within SharePoint. They are stored alongside their metadata in SQL. Having the ability to move these blogs to external storage systems is a huge win for some whom have TB of SQL storage and whom want to reduce the dependency on SQL for this type of storage. &lt;/P&gt;
&lt;P&gt;Simon Skaria plans on &lt;A href="http://blogs.msdn.com/sharepoint/" mce_href="http://blogs.msdn.com/sharepoint/"&gt;blogging&lt;/A&gt; about the interface so I will not go into that here however what I did want to cover were some of the pros and cons or as some would say "considerations" when evaluating the Remote Blob Storage API. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 16pt"&gt;&lt;STRONG&gt;Pros &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Ability to use storage other than SQL Server for blobs. &lt;/LI&gt;
&lt;LI&gt;Ability to leverage a lower TCO storage solution for blobs. This point should be scrutinized for each enviroment especially when you consider some of the Cons pointed out below.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 16pt"&gt;&lt;STRONG&gt;Cons &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Without ISV involvement there is no mechanism to ensure Backup and Restore is consistent between SQL and external storage solution. Since part of the blob, the ID is still stored in SQL and the blob itself is stored elsewhere these items must remain in a consistent state. So bottom line here is you must be careful when planning your backup and disaster recovery strategies. &lt;/LI&gt;
&lt;LI&gt;Lack of documentation. &lt;/LI&gt;
&lt;LI&gt;Depending on the external solution chosen it may be slower than SQL which would have obvious impact to the performance. &lt;/LI&gt;
&lt;LI&gt;The provider works at the farm level only. &lt;/LI&gt;
&lt;LI&gt;Removing the provider once deployed is going to be a huge problem should one need to back out. &lt;/LI&gt;
&lt;LI&gt;This is custom code that runs all the time within SharePoint; if there is a performance problem, memory leak, etc it will impact SharePoint stability greatly. &lt;/LI&gt;
&lt;LI&gt;The O12 implementation is not fully baked and will very likely change for O14. So the likelihood that an O12 provider will need to be rewritten for O14 is very probable. &lt;/LI&gt;
&lt;LI&gt;There is no migration path for the provider in an existing SharePoint deployment. New blobs will be stored with your provider while existing blogs will remain in SQL. You may touch the blogs and cause them to be migrated however that has a whole set of other problems. &lt;/LI&gt;
&lt;LI&gt;To date there is very little experience rolling out this API. So the real world knowledge is very tribal deep within MSFT and not likely to make it into the public domain in any quick manner. &lt;/LI&gt;
&lt;LI&gt;While the API will be supported however it is highly unlikely the support teams will have training or knowledge about its proper use. &lt;/LI&gt;
&lt;LI&gt;It is very unclear what the experience will look like while upgrading an O12 using this solution to O14. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;BTW if anyone writes a provider I would love to hear about it! &lt;/P&gt;
&lt;P&gt;Thanks&lt;BR&gt;Todd&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4267882" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Download your Hotfixes!</title><link>http://blogs.msdn.com/toddca/archive/2007/07/27/download-your-hotfixes.aspx</link><pubDate>Fri, 27 Jul 2007 15:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4080011</guid><dc:creator>Toddca</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/toddca/comments/4080011.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=4080011</wfw:commentRss><description>&lt;P&gt;Up to this point Microsoft has always required customers to make a phone call into Microsoft Product Support to receive a hotfix. Today we have made available a &lt;A href="https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&amp;amp;WS=hotfix" mce_href="https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&amp;amp;WS=hotfix"&gt;web application&lt;/A&gt; that allows customers to fill out a simple web form and receive the hotfix by email. &lt;/P&gt;
&lt;P&gt;Here is how it works: T&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;he form on the site has field entries for the following information:&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Country/Region &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Pulldown menu)&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;KB article number &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Text entry)&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Platform &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; (Pulldown menu)&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Product Language&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Pulldown menu)&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;E-mail address&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Text entry)&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;You enter the data listed above and select the "Submit" button .&amp;nbsp; You are then taken to a submission confirmation webpage.&amp;nbsp; This webpage lets you know that you should receive a response from a Microsoft Professional within 8 business hours.&amp;nbsp; The e-mail response that you receive looks like the automated hotfix e-mail that you may have seen should you have ever used the previous call in method. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Happy Hotfixin'. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Todd&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4080011" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/ASP.NET+General+Information/default.aspx">ASP.NET General Information</category><category domain="http://blogs.msdn.com/toddca/archive/tags/General+.Net+Framework/default.aspx">General .Net Framework</category><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Moss &amp; SharePoint Related MCTS Certification Information</title><link>http://blogs.msdn.com/toddca/archive/2007/06/14/moss-sharepoint-related-mcts-certification-information.aspx</link><pubDate>Thu, 14 Jun 2007 18:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3292127</guid><dc:creator>Toddca</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/toddca/comments/3292127.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=3292127</wfw:commentRss><description>&lt;P&gt;Recently I have been looking into MOSS related certifications and ran across the MCTS certifications. I have narrowed the huge list of certifications and exams down to just those that are MOSS 2007 and WSS V3 specific and have provided links below. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/learning/mcp/mcts/default.mspx" mce_href="http://www.microsoft.com/learning/mcp/mcts/default.mspx"&gt;
&lt;H1&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;MCTS Certification&lt;/SPAN&gt;&lt;/H1&gt;&lt;/A&gt;
&lt;H1&gt;&lt;/H1&gt;
&lt;H2&gt;Configuration &lt;/H2&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/learning/mcp/mcts/spservices/config/default.mspx" mce_href="http://www.microsoft.com/learning/mcp/mcts/spservices/config/default.mspx"&gt;Windows SharePoint Services 3.0, Configuration&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Exam:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;A href="http://www.microsoft.com/learning/exams/70-631.mspx" mce_href="http://www.microsoft.com/learning/exams/70-631.mspx"&gt;70-631: Configuring Windows SharePoint Services 3.0&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Related Course(s) : 5060, 5244, 5245, 5246, 5247, 5248, 5249, 5403, 5942, 5943 &lt;/P&gt;
&lt;P&gt;E-Learning: &lt;A href="http://www.microsoft.com/learning/elearning/course/5403.mspx" mce_href="http://www.microsoft.com/learning/elearning/course/5403.mspx"&gt;Collection 5403: Implementing Microsoft Windows SharePoint Services 3.0&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/learning/mcp/mcts/spserver/config/default.mspx" mce_href="http://www.microsoft.com/learning/mcp/mcts/spserver/config/default.mspx"&gt;Microsoft Office SharePoint Server 2007, Configuration&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Exam: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;A href="http://www.microsoft.com/learning/exams/70-630.mspx" mce_href="http://www.microsoft.com/learning/exams/70-630.mspx"&gt;70-630: TS: Configuring Microsoft Office SharePoint Server 2007&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Related Course(s): 5061, 5250, 5251, 5252, 5253, 5254, 5255, 5404 &lt;/P&gt;
&lt;P&gt;E-Learning: &lt;A href="http://www.microsoft.com/learning/elearning/course/5404.mspx" mce_href="http://www.microsoft.com/learning/elearning/course/5404.mspx"&gt;Collection 5404: Implementing Microsoft Office SharePoint Server 2007&lt;/A&gt; &lt;/P&gt;
&lt;H2&gt;Application Development &lt;/H2&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/learning/mcp/mcts/spservices/appdev/default.mspx" mce_href="http://www.microsoft.com/learning/mcp/mcts/spservices/appdev/default.mspx"&gt;Microsoft Windows SharePoint Services 3.0, Application Development&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Exam:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;A href="http://www.microsoft.com/learning/exams/70-541.mspx" mce_href="http://www.microsoft.com/learning/exams/70-541.mspx"&gt;70-541: TS: Microsoft Windows SharePoint Services 3.0 - Application Development&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Related Course(s): 999, 5385, 5386, 5387, 5388, 5389, 5390, 5391, 5392, 5393, 5394, 5395, 5396, 5397, 5398 &lt;/P&gt;
&lt;P&gt;E-Learning: &lt;A href="http://www.microsoft.com/learning/elearning/course/5385.mspx" mce_href="http://www.microsoft.com/learning/elearning/course/5385.mspx"&gt;Collection 5385: Developing Solutions with Microsoft Windows SharePoint Services 3.0 and Visual Studio 2005&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/learning/mcp/mcts/spserver/appdev/default.mspx" mce_href="http://www.microsoft.com/learning/mcp/mcts/spserver/appdev/default.mspx"&gt;Technology Specialist: Microsoft Office SharePoint Server 2007, Application Development&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Exam: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;A href="http://www.microsoft.com/learning/exams/70-542.mspx" mce_href="http://www.microsoft.com/learning/exams/70-542.mspx"&gt;70-542: TS: Microsoft Office SharePoint Server 2007, Application Development&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Related Course(s): None &lt;/P&gt;
&lt;P&gt;E-Learning: None&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3292127" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Moving To SharePoint</title><link>http://blogs.msdn.com/toddca/archive/2007/05/28/moving-to-sharepoint.aspx</link><pubDate>Tue, 29 May 2007 00:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2952338</guid><dc:creator>Toddca</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/toddca/comments/2952338.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=2952338</wfw:commentRss><description>&lt;P&gt;Since coming to Developer Support in 2003 I have been working with ASP.NET and IIS. 4 years in any group at Microsoft is a good stint and it was time that I moved on. Because I love working with .Net and web technologies SharePoint seemed like a likely choice. Given SharePoint's huge popularity I felt this provided me with an opportunity to learn a technology that was here to stay and which would only get larger. As a platform there is just a ton that you can do with SharePoint and since it is built on top of ASP.NET I am not totally in the woods when it comes to learning this new product. &lt;/P&gt;
&lt;P&gt;So going forward my blogs will be more SharePointy in focus and hopefully (fingers crossed) more frequent and (again fingers crossed) as technically accurate and spelling and grammar error free as possible.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2952338" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/Personal/default.aspx">Personal</category></item><item><title>WSS 3.0 32bit on x64</title><link>http://blogs.msdn.com/toddca/archive/2007/05/15/wss-32bit-on-x64.aspx</link><pubDate>Wed, 16 May 2007 00:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2657321</guid><dc:creator>Toddca</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/toddca/comments/2657321.aspx</comments><wfw:commentRss>http://blogs.msdn.com/toddca/commentrss.aspx?PostID=2657321</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;Question: &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;So what happens when you have an x64 development box running Windows 2003 R2 x64 Enterprise with IIS6 in WOW64mode and you want to install the 32bit version of WSS 3.0? &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Answer: &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;--------------------------- &lt;/P&gt;
&lt;P&gt;Setup Errors &lt;/P&gt;
&lt;P&gt;--------------------------- &lt;/P&gt;
&lt;P&gt;Setup is unable to proceed due to the following error(s): &lt;/P&gt;
&lt;P&gt;- This 32-bit product must be run on a 32-bit Operating System. For 64-bit support, please install the 64-bit version of this product. &lt;/P&gt;
&lt;P&gt;- Internet Information Services is running in 32-bit emulation mode. &lt;/P&gt;
&lt;P&gt;Correct the issue(s) listed above and re-run setup. &lt;/P&gt;
&lt;P&gt;--------------------------- &lt;/P&gt;
&lt;P&gt;OK &lt;/P&gt;
&lt;P&gt;---------------------------&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2657321" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/toddca/archive/tags/SharePoint/default.aspx">SharePoint</category></item></channel></rss>