<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://imason.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/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>imason</title><link>http://imason.com/b/</link><description>Founded in 1999, imason is a privately held IT consulting firm with Microsoft Gold Partner status based in Toronto, Canada.</description><dc:language>en-US</dc:language><generator>Telligent Evolution 5.0 (Build: 40623.6204)</generator><item><title>Enterprise Search: Ask for help after you have a starting point</title><link>http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/2010/02/11/enterprise-search-ask-for-help-after-you-have-a-starting-point.aspx</link><pubDate>Thu, 11 Feb 2010 20:28:14 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:2228</guid><dc:creator>Jeff Dunmall</dc:creator><slash:comments>0</slash:comments><description>Your employees can&amp;#39;t remember all of the information sources inside your company, much less keep track of the search interfaces that exist. Each of the following system likely has its own search interface: SAP for customer data, Ariba for expense data, Siebel for contracts, the E: drive for sales related information, http://www.yourintranet.com to look up product info, unless it is related to the US division, in which case you should visit http://www.us-yourintranet.com. Information about Project...(&lt;a href="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/2010/02/11/enterprise-search-ask-for-help-after-you-have-a-starting-point.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://imason.com/aggbug.aspx?PostID=2228" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Microsoft+FAST+Search/default.aspx">Microsoft FAST Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Employee+Solution/default.aspx">Employee Solution</category></item><item><title>Options for a SharePoint 2010 Development Environment</title><link>http://imason.com/imason_Blogs/b/peterg/archive/2010/02/06/options-for-a-sharepoint-2010-development-environment.aspx</link><pubDate>Sat, 06 Feb 2010 05:41:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:2227</guid><dc:creator>Peter Grigoriou</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;One of the first things you will probably ask yourself when you start embarking on SharePoint 2010 development is&amp;nbsp;where do you set up your development environment.&amp;nbsp; As I started investigating this, I realized there are a number of various options each with their own implications.&amp;nbsp; Below is listing of each option I found and some of my personal thoughts on each of them:&lt;/p&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Option&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee554869(office.14).aspx"&gt;Install SharePoint 2010 directly on our&lt;br /&gt;Windows 7 / Vista workstation/laptop&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;#39;s nice to have SharePoint available to you at any time.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;I don&amp;#39;t like the &amp;quot;clutter&amp;quot; it adds to my laptop as I like to keep it fairly &lt;br /&gt;clean in terms of what&amp;#39;s installed.&lt;/li&gt;
&lt;li&gt;Pretty manual install&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://blogs.technet.com/aviraj/archive/2009/01/17/windows-7-boot-from-vhd-first-impression-part-1.aspx"&gt;Create a bootable Hyper-V image&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Keeps your development environment clean and partitioned from &lt;br /&gt;your business applications&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;If I have to boot to that image, I don&amp;#39;t have access to my other application &lt;br /&gt;such as Office unless I decide to install all of that on the image which&lt;br /&gt; I don&amp;#39;t think is very practical.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Create a Hyper-V image on a centrally &lt;br /&gt;located Hyper-V Server&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Similar to bootable option except you can usually take advantage of better hardware&lt;br /&gt;which usually mean better image performance&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;If you are offline and can&amp;#39;t connect to the image there&amp;#39;s not much&lt;br /&gt;you can do.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run VMWare Workstation&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;It supports 64-bit OS&amp;#39;s which means you can run it&amp;nbsp;on your&amp;nbsp;Windows 7 &lt;br /&gt;or Vista environments without having to install SharePoint 2010 directly on your box.&lt;/li&gt;
&lt;li&gt;Allows you to keep your image portable&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Not a great solution if you want to standardize on Hyper-V which can result &lt;br /&gt;in a little pain when you want to share an image.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run Windows Server 2008 as your workstation/&lt;br /&gt;laptop OS with Hyper-V&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Works great if you have the right hardware.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Performance can be horrible if you don&amp;#39;t have the right hardware. (Details on &lt;br /&gt;this &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/16/understanding-high-end-video-performance-issues-with-hyper-v.aspx"&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;You may have noticed in the list above that there isn&amp;#39;t a Microsoft Virtual PC option.&amp;nbsp; That&amp;#39;s because it doesn&amp;#39;t support 64-bit OS&amp;#39;s which is a requirement for SharePoint 2010.&amp;nbsp; I have tried to find out if there is a plan for Microsoft to update Virtual PC to support 64-bit OS&amp;#39;s however I have yet to hear anything that indicates this.&lt;/p&gt;
&lt;p&gt;For my purposes, I decided to run a VMWare image because I just felt it worked well for me given the hardware I have, the desire to keep my laptop clean, and the fact that I want to remain portable with respect to the image.&amp;nbsp; One other thing to note, if you want to take advantage of the new SharePoint 2010 developer tools in Visual Studio 2010 you&amp;#39;ll need to have SharePoint 2010 installed on the same environment as Visual Studio 2010 which, in my opinion, makes the choice of the environment you choose all the more important.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d be really interested to hear other&amp;#39;s thoughts on this topic.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=2227" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/peterg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://imason.com/imason_Blogs/b/peterg/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://imason.com/imason_Blogs/b/peterg/archive/tags/SharePoint+Development+Environment/default.aspx">SharePoint Development Environment</category></item><item><title>Some noteworthy new features of SharePoint 2010</title><link>http://imason.com/imason_Blogs/b/peterg/archive/2009/12/06/test.aspx</link><pubDate>Mon, 07 Dec 2009 03:57:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:2216</guid><dc:creator>Peter Grigoriou</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In my last post I mentioned I had the privilege of attending the SharePoint 2010 conference.&amp;nbsp; In this post I&amp;#39;d like to review the things I think were quite notable based on the sessions I attended:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sandboxed Solutions:&lt;/strong&gt; I have run into a lot of clients who want to use SharePoint as their application development platform and have various groups within their organization building their own applications.&amp;nbsp; However the question that is always asked is how do we make sure that they can&amp;rsquo;t do something that brings down the entire farm.&amp;nbsp; Sandboxed solutions provide the ability to limit access to resources and isolate worker processes from the rest of the platform reducing the risk that a particular application will bring down the farm.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurable Deployment:&lt;/strong&gt; Deployment has always been big challenge and resulted in a lot of effort with SharePoint applications.&amp;nbsp; With Visual Studio 2010 there is now a series of out of the box deployment steps as well as the ability to create your own custom deployment package.&amp;nbsp; From what I have seen so far I think this is going to greatly improve SharePoint deployments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branch Caching with Windows Server 2008 R2 and Windows 7 and the Office Document Cache in Office 2010:&lt;/strong&gt; These are features to improve the performance of global SharePoint deployments (ex. A centralized SharePoint Intranet being accessed from around the world.)&amp;nbsp; Office 2010 provides an Office Document Cache which basically stores documents requested for SharePoint locally on the persons computer.&amp;nbsp; Subsequent requests to the same document in SharePoint will result in a check to the server if the document as changed and if not, will serve the document from the local cache and if it has changed will send just the differences over (this is limited to Word, Excel, PowerPoint and OneNote).&amp;nbsp;&amp;nbsp; Branch caching provides the ability to cache documents at particular locations via either a Windows Server 2008 R2 server or on local Windows 7 workstations.&amp;nbsp; Once cached subsequent requests will either go to the local Branch cache server (Windows Server 2008 R2 Box) or request the document from a local peer workstation thus reducing the need to transfer the document over long distances.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multilingual User Interface:&lt;/strong&gt; This is the ability to install multiple language packs and toggle between languages on the same site.&amp;nbsp; Prior to this you would need a third party or completely custom solution to make this work and usually involved a lot of development effort.&amp;nbsp; I am not sure of all the limitations but it&amp;rsquo;s a step in the right direction.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Social Computing:&amp;nbsp; &lt;/strong&gt;There are a lot of features that pull in Social Computing concepts from Facebook, YouTube, Twitter etc that should add a bunch of excitement to what is possible from a development perspective.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phonetic People Search: &lt;/strong&gt;This was pretty impressive.&amp;nbsp; The demo showed the presenter misspelling a person&amp;rsquo;s name (ex. Cowfman) and it finding the person named Kauffman.&amp;nbsp; It also does the same for common nicknames. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other notable items:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All Search Web Parts will be open source. &lt;/li&gt;
&lt;li&gt;Vastly improved SharePoint Designer Workflows (particularly being able to package them into a WSP so that you can deploy the workflow to other lists and SharePoint sites).&lt;/li&gt;
&lt;li&gt;Very scalable farm architecture with a new concept of the Application Services Server.&amp;nbsp; You can view the architecture here.&lt;/li&gt;
&lt;li&gt;Integrated SharePoint support in Visual Studio IDE&lt;/li&gt;
&lt;li&gt;Improved Search and FAST integration &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#39;ll dive into this in more detail in future posts as I work with some of these items.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=2216" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/peterg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://imason.com/imason_Blogs/b/peterg/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://imason.com/imason_Blogs/b/peterg/archive/tags/SharePoint+2010+New+Features/default.aspx">SharePoint 2010 New Features</category></item><item><title>Another version of SharePoint?  Actually SharePoint 2010 is pretty impressive.</title><link>http://imason.com/imason_Blogs/b/peterg/archive/2009/11/23/another-version-of-sharepoint-actually-it-s-pretty-impressive.aspx</link><pubDate>Tue, 24 Nov 2009 04:47:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:2213</guid><dc:creator>Peter Grigoriou</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;span style="color:#888888;"&gt;So this is my first blog post...ever!&amp;nbsp; Yeah, I&amp;#39;m pretty excited that
I have finally taken the plunge and decided to write about something, so here goes...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#888888;"&gt;
I have been working at imason for over 6 years now and in that time
my main technology focus has been around SharePoint.&amp;nbsp; I was lucky
enough to attend the SharePoint 2010 conference in Las Vegas and have
to say I came away being thoroughly impressed at what I had seen over
the 4 days.&amp;nbsp; If you had asked me prior to attending the conference what
I thought about SharePoint 2010 I would have replied &amp;quot;Oh great, another
version of SharePoint that I need to get up-to-speed on&amp;quot;.&amp;nbsp; Today,
however, I am pretty excited about the new features and improvements in
2010 and I think it will make for some great potential solutions once
it is released.&amp;nbsp;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#888888;"&gt;The SharePoint conference itself
was fantastic.&amp;nbsp; The sheer size (around 7500 attendants) and number of
sessions (over 250) was very impressive and the sessions I did attend
were very informative and went smoothly considering it is a beta
product.&amp;nbsp; I think the thing that stuck out to me the most was that for
2010 Microsoft focused on fixing
the issues that developers and business users routinely complained
about in MOSS 2007, providing a wealth of additional features that
really solidifies SharePoint as a great development platform, &amp;nbsp;and
building in a lot of the social computing concepts we see in the public
domain.&amp;nbsp; Microsoft did a great job of focusing on what was new and
improved which helped me understand the key differences between MOSS
2007 and SharePoint 2010.&amp;nbsp; One of the things
that can be overwhelming with a product the size of SharePoint is
having the knowledge that something exists so that you can leverage it
when needed and the conference was great at providing those details.&amp;nbsp; At some point, you will probably be asked the question, &amp;quot;Why should we move to
2010?&amp;quot; and my hope is that over the next few weeks and months my posts
will help provide some insight into helping you answer that question.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=2213" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/peterg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://imason.com/imason_Blogs/b/peterg/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Performance Testing: The Performance Test Plan</title><link>http://imason.com/imason_Blogs/b/boyan_tsolov/archive/2009/11/10/performance-testing-the-basics.aspx</link><pubDate>Wed, 11 Nov 2009 03:57:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:2208</guid><dc:creator>Boyan Tsolov</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I have always had a problem doing performance testing (aka load testing). I am quite adept at recording web tests and collecting counters, but I still find it troublesome interpreting the counters that I gather from load tests. The problem is that I need a plan that will produce relevant results with which I can conclude with confidence: &amp;quot;This system is a juggernaught! It can withstand more hits than Google.com.&amp;quot; If you are like me and you have trouble planning your load tests, then maybe this post will help you. The following post describes how I like to run my own plan and what conclusions I can make with this plan.&lt;/p&gt;
&lt;p&gt;Special thanks goes out to &lt;a target="_blank" href="http://imason.com/imason_Blogs/b/fast_sharepoint_search/default.aspx"&gt;Jeff Dunmall&lt;/a&gt;, our co-CEO, whose article &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/magazine/cc188783.aspx"&gt;&amp;quot;Real-World Load Testing Tips to Avoid Bottlenecks When Your Web App Goes Live&amp;quot;&lt;/a&gt; got me to write something more about load testing here, and Randar Puust who uses this plan (and thus now I use it too).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There are a number of facets to load testing:&lt;/p&gt;
&lt;p&gt;- setting up a load testing rig and setting up your environment in&amp;nbsp; Visual Studio&lt;/p&gt;
&lt;p&gt;- recording the web tests &lt;/p&gt;
&lt;p&gt;- planning the load tests&lt;/p&gt;
&lt;p&gt;- collecting performance counters and figuring out what the recorded result mean&lt;/p&gt;
&lt;p&gt;Unless you have a plan, planning the load tests and reading the results will be meaningless. A &lt;b&gt;performance test plan&lt;/b&gt; will keep you on track throughout the last two phases mentioned above. The results from a test plan will allow you to determine:&lt;/p&gt;
&lt;p&gt;- maximum number of users that can hit the site before it becomes unresponsive&lt;/p&gt;
&lt;p&gt;- can the system recover from overload&lt;/p&gt;
&lt;p&gt;- are there memory leaks in the code&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A performance test plan consists of four types of tests that need to be run in the following order:&lt;/p&gt;
&lt;p&gt;1. Performance Tests&lt;/p&gt;
&lt;p&gt;2. Load Tests&lt;/p&gt;
&lt;p&gt;3. Stress Tests&lt;/p&gt;
&lt;p&gt;4. Endurance Tests&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. Performance Tests&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;These are the benchmark tests. By this point you should have recorded web tests which cover the most-used parts of your web application. Now, you will create a load test that gathers and runs all of the web tests that you have recorded. Run the load test with settings similar to these:&lt;/p&gt;
&lt;p&gt;- load: low end of the expected number of users for the system. I like to start with 5 or 10.&lt;/p&gt;
&lt;p&gt;- time: 10 minutes&lt;/p&gt;
&lt;p&gt;- think time: 5 seconds&lt;/p&gt;
&lt;p&gt;- warmup: 30 seconds to 1 minute is more than enough&lt;/p&gt;
&lt;p&gt;A load test like this should not stress the web server, it should be low-impact. The goal of this test is for it to be run later on in this plan and be used to compare against (i.e. a benchmark). Collect and save the result counters from the web server and from the client. Web Server counters to collect are: &amp;quot;CPU %&amp;quot;, &amp;quot;Used Memory&amp;quot;. Client counters to collect are: &amp;quot;Respose time per page&amp;quot;, &amp;quot;Number of Requests per second&amp;quot;. Other counters you might like to save are &amp;quot;pages that take the longest time to load&amp;quot;, &amp;quot;number of errors&amp;quot;, &amp;quot;network usage&amp;quot; - these are useful for neat reports that you might want to compile.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. Load Tests&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The load tests are going to stress the web application and try and find its breaking point. The goal of these test will be to find the lucky number X. This number is the number of users that are concurrently hitting the system and that cause the system to be unresponsive or response times to be unacceptable. For this part of the plan you will need to run a number of load tests. In each case, increase the number of users and collect the counters:&lt;/p&gt;
&lt;p&gt;- load: 10 users, 15 users, 20 users, 50 users.... until the response times get too large, or server CPU % gets dangerously high.&lt;/p&gt;
&lt;p&gt;- time, think time, warmup: same as for the performance test. Basically we are running the performance test from step 1but with more and more users.&lt;/p&gt;
&lt;p&gt;By the end of this step you will know what is the maximum number of users that can hit the system.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. Stress Tests&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Stress tests check that the web application can recover from errors induced by overload. &lt;/p&gt;
&lt;p&gt;- load: X + 20% (where X is the magic number from step 2 which causes the system to be unstable)&lt;/p&gt;
&lt;p&gt;- time: 1 minute&lt;/p&gt;
&lt;p&gt;- think time: 5 seconds&lt;/p&gt;
&lt;p&gt;After this test is run the system should become unresponsive. If it is not unresponsive, then increase the 20%. One way to check if it is unresponsive is to check that response times are suddenly exponentially far worse than the results in step 2 and CPU % usage on the server is close to 100%. &lt;/p&gt;
&lt;p&gt;Immediately after this test runs run the performance test from step 1. If the performance test runs fine and the results are comparable to the test that was run at step 1, then your system passes! It can safely recover from overload issues.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4. Endurance Tests&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The endurance tests are unrelated to the other 3 tests. These tests are run over a long period of time, which causes many users to hit the site. If there are memory leaks, then over the course of this endurance test the free memory on the web server should decrease dramatically.&lt;/p&gt;
&lt;p&gt;- load: X - 20% (where X is the magic number from step 2 which causes the system to be unstable). We&amp;#39;ll use -(minus) 20% because we don&amp;#39;t want to overload the system&lt;/p&gt;
&lt;p&gt;- time: 12 hours&lt;/p&gt;
&lt;p&gt;- think time: 5 seconds&lt;/p&gt;
&lt;p&gt;Remember to record the &amp;quot;Free&amp;quot; or &amp;quot;Used Memory&amp;quot; on the web server. The goal at the end of this step is to make sure that the memory usage on the web server has not decreased dramatically and thus there are no memory leaks in your code. If that is the case with your results then tip of the hat to you!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;At the end of these four types of tests you should have a better idea of where your system stands in terms of load that it can handle. You will know: &lt;/p&gt;
&lt;p&gt;- what is the maximum number of users it can handle before performance is unacceptable&lt;/p&gt;
&lt;p&gt;- can it recover after an overload&lt;/p&gt;
&lt;p&gt;- are there any memory leaks&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Happy testing!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=2208" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/boyan_tsolov/archive/tags/load+test/default.aspx">load test</category><category domain="http://imason.com/imason_Blogs/b/boyan_tsolov/archive/tags/technical/default.aspx">technical</category></item><item><title>Create TFS Work Items directly from Outlook Emails</title><link>http://imason.com/imason_Blogs/b/stephen_kearns/archive/2009/10/19/create-tfs-work-items-directly-from-outlook-emails.aspx</link><pubDate>Mon, 19 Oct 2009 14:36:50 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:2205</guid><dc:creator>Stephen Kearns</dc:creator><slash:comments>0</slash:comments><description>  &lt;p&gt;This is a great little productivity tool for teams actively using Work Items to track dev activities in TFS. Used it at a recent customer (thx Dilip!) and found it helpful. &lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.microsoft.co.il/blogs/srlteam/archive/2007/03/04/Team-System-Outlook-2007-Addin-_2D00_-v1.0.aspx" href="http://blogs.microsoft.co.il/blogs/srlteam/archive/2007/03/04/Team-System-Outlook-2007-Addin-_2D00_-v1.0.aspx" target="_blank"&gt;http://blogs.microsoft.co.il/blogs/srlteam/archive/2007/03/04/Team-System-Outlook-2007-Addin-_2D00_-v1.0.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://blogs.microsoft.co.il/photos/srlteam/images/9510/original.aspx" /&gt;&lt;/p&gt; technical; TFS; work items   &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=2205" width="1" height="1"&gt;</description></item><item><title>Don’t Tell Me You’re Not a Designer</title><link>http://imason.com/imason_Blogs/b/user_experience/archive/2009/08/06/don-t-tell-me-you-re-not-a-designer.aspx</link><pubDate>Thu, 06 Aug 2009 15:03:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1925</guid><dc:creator>Kerri McKenna</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Often, when I&amp;rsquo;m working on a project with someone who isn&amp;rsquo;t an Interaction Designer I&amp;rsquo;ll inevitably hear the phrase, &amp;ldquo;I&amp;rsquo;m not a designer, but...&amp;rdquo; followed by an idea or suggestion for changing the user experience. This is frustrating to hear.&lt;/p&gt;
&lt;p&gt;Designers are facilitators of ideas. We assemble requirements, best practices and ideas into visual representations for consideration.&amp;nbsp; But we&amp;rsquo;re not omniscient divas who will storm off at the first hint of a non-designer&amp;rsquo;s opinion. &lt;/p&gt;
&lt;p&gt;Good designers analyze the big picture and the minute details of a design problem. We should be able to tell you why our concepts work well, and where there&amp;rsquo;s room for flexibility. Rather than telling you that our design is perfect, we &lt;em&gt;need&lt;/em&gt; to hear your feedback. We &lt;em&gt;want&lt;/em&gt; to collaborate with you to improve our design &amp;ndash; it will probably never be perfect, but it can always get better.&lt;/p&gt;
&lt;p&gt;So if you&amp;rsquo;ve got an idea for changing a design or interaction, throw it out there. Sure, designers may have more experience and knowledge about the rules of engagement for design and usability principles &amp;ndash; but a good designer won&amp;rsquo;t shoot you down. Just like we hope that you won&amp;rsquo;t immediately dismiss our first take on a design solution. Let&amp;rsquo;s work together here &amp;ndash; no ideas are bad, they just might not be the best ones. But we can filter out the good ones together.&lt;/p&gt;
&lt;p&gt;Think of a designer&amp;rsquo;s concepts as sparks for a fire of ideas. I don&amp;rsquo;t care that you&amp;rsquo;re not a designer.&amp;nbsp; I do care about your sparks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1925" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/user+experience/default.aspx">user experience</category><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/graphic/default.aspx">graphic</category><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/design/default.aspx">design</category></item><item><title>Enterprise Search: Why Search Scoping Doesn’t Work</title><link>http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/2009/07/28/enterprise-search-why-search-scoping-doesn-t-work.aspx</link><pubDate>Tue, 28 Jul 2009 21:57:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1771</guid><dc:creator>Jeff Dunmall</dc:creator><slash:comments>0</slash:comments><description>My previous post outlined the problem with the &amp;lsquo;traditional&amp;rsquo; approach to search scoping. To explore the problem and a solution that leverages Microsoft FAST search, I&amp;rsquo;ve invented a fictitious company called Canadian Financial . That gives us some context &amp;ndash; it is a bank with multiple geographies, lines of business, languages, and products. There are dozens of internal sites up that provide a massive amount of information required to do your job more effectively, if you can...(&lt;a href="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/2009/07/28/enterprise-search-why-search-scoping-doesn-t-work.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://imason.com/aggbug.aspx?PostID=1771" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Search/default.aspx">Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Microsoft+FAST+Search/default.aspx">Microsoft FAST Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Employee+Solution/default.aspx">Employee Solution</category></item><item><title>A tribute to Michael Jackson</title><link>http://imason.com/imason_Blogs/b/bob_brown/archive/2009/07/15/a-tribute-to-michael-jackson.aspx</link><pubDate>Wed, 15 Jul 2009 20:24:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1627</guid><dc:creator>Bob Brown</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Last night I found a great site commemorating Michael Jackson by letting people post a video of themselves doing the moonwalk. Anyone who knows me, knows that I&amp;#39;m a huge fan, so I took the opportunity to have some fun and shoot a mini clip of me moonwalking to add to the &lt;a target="_blank" href="http://www.eternalmoonwalk.com/"&gt;Eternal Moonwalk&lt;/a&gt; reel!&lt;/p&gt;
&lt;p&gt;If you want to see me, here&amp;#39;s the direct link: &lt;a target="_blank" href="http://www.eternalmoonwalk.com/bob-nxv"&gt;http://www.eternalmoonwalk.com/bob-nxv&lt;/a&gt;. I&amp;#39;m in the clip right after Michael Jackson...&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.imason.com/img/blogs/bb_090715_01.jpg" alt="Bob at home moonwalking" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1627" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/bob_brown/archive/tags/atimason/default.aspx">atimason</category></item><item><title>imason in the news with Microsoft Office 2010 Technical Preview Launch Event</title><link>http://imason.com/imason_Blogs/b/newsandevents/archive/2009/07/15/imason-in-the-news-with-Microsoft-Office-2010-Technical-Preview-Launch-Event.aspx</link><pubDate>Wed, 15 Jul 2009 15:13:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1626</guid><dc:creator>Stephen Kearns</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Jeff Dunmall, co-CEO&amp;nbsp;and Stephen Kearns, Principal Consultant&amp;nbsp;recently participated as Partners in the Microsoft Office 2010 Technical Preview Launch Event. &lt;/p&gt;
&lt;p&gt;First a little terminology &amp;ndash; the Technical Preview is an &amp;ldquo;engineering milestone&amp;rdquo; indicating that product development has been substantially completed such that Microsoft is ready to start showing it off and generating excitement about the new product. However, it&amp;rsquo;s not showing up in a shrink-wrapped package just yet. &lt;/p&gt;
&lt;p&gt;Jeff, participating from the &lt;a target="_blank" href="http://www.digitalwpc.com/"&gt;World-Wide Partner Conference&lt;/a&gt; in New Orleans was quoted in &lt;a target="_blank" href="http://www.itbusiness.ca/it/client/en/home/News.asp?id=53868&amp;amp;PageMem=2"&gt;IT Business&lt;/a&gt;: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;Customers are coming to us and telling us they want to get involved with Office 2010. That&amp;#39;s unusual. We normally enter a proactive sales approach with new releases. We have to talk to customers about the benefits and differentiators and that gets the customers engaged. With Office 2010, they&amp;#39;re already excited about it,&amp;rdquo; Dunmall said. &lt;br /&gt;This wasn&amp;#39;t the case for Office 2007, Dunmall said. Customers hesitated on Office 2007, but for Office 2010 it has turned into enthusiasm.&amp;rdquo; [1]&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Stephen, participating in Toronto at the Microsoft Canada launch event was quoted in &lt;a target="_blank" href="http://www.itworldcanada.com/a/Daily-News/f83346b9-5007-43c5-b3f0-cd10ccd5b45d.html"&gt;IT World Canada&lt;/a&gt;&amp;nbsp;and &lt;a target="_blank" href="http://www.itbusiness.ca/it/client/en/Home/News.asp?id=53871" title="IT Business" class="null"&gt;IT Business&lt;/a&gt; respectively:&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Microsoft partners at the event said extending the ribbon interface marks a commitment to continuing to include the context-sensitive GUI in future versions of Office. In the words of Stephen Kearns of &lt;/em&gt;&lt;a href="http://www.imason.com/"&gt;&lt;em&gt;imason Inc.&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &amp;quot;It&amp;#39;s not going away.&amp;quot; [2]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Office has long been the predominant productivity suite for enterprise and home-based users but the release of a collaborative platform is a &amp;quot;game changer,&amp;quot; according to Stephen Kearns of &lt;a title="imason inc." class="null"&gt;iMason Inc&lt;/a&gt;. [4]&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Curious to see what some of the new features look like? Check out the &lt;a target="_blank" href="http://www.microsoft.com/presspass/presskits/2010office/imageGallery.aspx"&gt;gallery&lt;/a&gt; hosted by Microsoft [3]. Interested in finding out more about how Office 2010 can help you and your organization improve team productivity? Contact us directly at &lt;a href="mailto:info@imason.com"&gt;info@imason.com&lt;/a&gt; or (416) 597-3256. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[1] &lt;a target="_blank" href="http://www.itbusiness.ca/it/client/en/home/News.asp?id=53868&amp;amp;PageMem=2"&gt;http://www.itbusiness.ca/it/client/en/home/News.asp?id=53868&amp;amp;PageMem=2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] &lt;a target="_blank" href="http://www.itworldcanada.com/a/Daily-News/f83346b9-5007-43c5-b3f0-cd10ccd5b45d.html"&gt;http://www.itworldcanada.com/a/Daily-News/f83346b9-5007-43c5-b3f0-cd10ccd5b45d.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] &lt;a href="http://www.microsoft.com/presspass/presskits/2010office/imageGallery.aspx" title="http://www.microsoft.com/presspass/presskits/2010office/imageGallery.aspx"&gt;http://www.microsoft.com/presspass/presskits/2010office/imageGallery.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[4] &lt;a href="http://www.itbusiness.ca/it/client/en/Home/News.asp?id=53871"&gt;http://www.itbusiness.ca/it/client/en/Home/News.asp?id=53871&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1626" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/newsandevents/archive/tags/conference/default.aspx">conference</category><category domain="http://imason.com/imason_Blogs/b/newsandevents/archive/tags/atimason/default.aspx">atimason</category><category domain="http://imason.com/imason_Blogs/b/newsandevents/archive/tags/office+2010/default.aspx">office 2010</category></item><item><title>Celebrating 10 Years Building Web Technology That Works</title><link>http://imason.com/imason_Blogs/b/newsandevents/archive/2009/07/13/celebrating-10-years-building-web-technology-that-works.aspx</link><pubDate>Mon, 13 Jul 2009 19:59:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1609</guid><dc:creator>Kerri McKenna</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;May 1st marks the start of 10 years in business for Toronto-based imason inc. Starting out in a humble office (i.e. basement) in Etobicoke, imason&amp;rsquo;s first paid project was for writing an article for Microsoft&amp;rsquo;s MIND magazine titled, &amp;ldquo;&lt;a href="http://www.imason.com/blogs/scott_howlett/archive/2009/04/27/make-your-legacy-apps-work-on-the-internet.aspx" title="Make Your Legacy Apps Work on the Internet" class="null"&gt;Make Your Legacy Apps Work on the Internet&lt;/a&gt;&amp;rdquo;. Since then we&amp;rsquo;ve grown to 40 people in a renovated space in the Entertainment District working on projects with many of Canada&amp;rsquo;s top companies. There have been numerous accomplishments worth noting over the years &amp;ndash; awards, customer wins, technology firsts, and recognition from many sources. And all the while we&amp;rsquo;ve been teaching and helping our clients, and learning from them too.&lt;/p&gt;
&lt;p&gt;Founders Jeff Dunmall and Scott Howlett sought to create &amp;lsquo;the best place to work&amp;rsquo; in 1999, and have succeeded in attracting top talent who exemplify imason&amp;rsquo;s original mantra: experience, focus and passion. Although we&amp;rsquo;re a diverse team of skilled professionals who have many interests outside of imason, we&amp;rsquo;re bound by an enthusiasm for learning. We&amp;rsquo;re voracious consumers of information and we love solving the tough problems related to business IT strategy, programming, infrastructure and user experience. &lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve got a lot to be proud of as a team, and you can bet that we&amp;rsquo;re heartily celebrating reaching the 10 year mark with Jeff and Scott. Every single person at imason helped us get here, and contributes to accomplishments that enable us to celebrate our core purpose: &lt;em&gt;To revel in dramatically impacting our customers, our company, and each other&lt;/em&gt;. But we also wouldn&amp;rsquo;t be here without our valued customers, some of whom we&amp;rsquo;ve worked with for many years and others who we&amp;rsquo;re just getting to know on new projects. The relationships we&amp;rsquo;ve formed with you, and the challenges you&amp;rsquo;ve trusted us to solve, are two other important reasons we look forward to getting out of bed and coming to work every morning.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;Cheers to &lt;em&gt;our customers, our company, and each other&lt;/em&gt;!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1609" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/newsandevents/archive/tags/atimason/default.aspx">atimason</category></item><item><title>Office 2010 Technical Preview Announced Today</title><link>http://imason.com/imason_Blogs/b/stephen_kearns/archive/2009/07/13/office-2010.aspx</link><pubDate>Mon, 13 Jul 2009 19:14:10 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1608</guid><dc:creator>Stephen Kearns</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Hi All – I was at the Microsoft Technical Preview Press Event this morning to participate in a panel discussion with members of the press. Session was hosted by &lt;a href="http://news.microsoft.ca/press_kits/archive/2008/10/03/microsoft-office-live-small-business.aspx"&gt;Jason Brommet&lt;/a&gt; and the good folks at High Road communications. &lt;/p&gt;  &lt;p&gt;ITWorld Canada picked up the event and some of the partner discussion: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.itworldcanada.com/a/Daily-News/f83346b9-5007-43c5-b3f0-cd10ccd5b45d.html" href="http://www.itworldcanada.com/a/Daily-News/f83346b9-5007-43c5-b3f0-cd10ccd5b45d.html"&gt;http://www.itworldcanada.com/a/Daily-News/f83346b9-5007-43c5-b3f0-cd10ccd5b45d.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here were a few quick hits on stuff that jumped out at me that I’m going to really enjoy in the new version. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Outlook&lt;/strong&gt;       &lt;ol&gt;       &lt;li&gt;Convert voicemail to text (when hooked up to exchange) &lt;/li&gt;        &lt;li&gt;You can mark a given conversation thread to ignore further updates &lt;/li&gt;        &lt;li&gt;When you receive invites, body of message includes a calendar preview &lt;/li&gt;        &lt;li&gt;Mouse-over emails/presence jelly-beans pops up a little contact-preview &lt;/li&gt;        &lt;li&gt;New pane listing recent contacts you’ve interacted with (quick click to IM or email) &lt;/li&gt;        &lt;li&gt;Quick-steps – kind of like a section on the ribbon where you can stick in some canned/customized macros – e.g. Reply with Invite – takes an email you’re on and creates invite with all the people on the email as invitees. Nice! &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;PowerPoint &lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;video as “first class citizen” – basic video editing and effects tools built right in &lt;/li&gt;        &lt;li&gt;more powerful image editing &lt;/li&gt;        &lt;li&gt;Record your PowerPoint presentation without having to go out to a 3rd party tool like Camtasia &lt;/li&gt;        &lt;li&gt;You can broadcast your presentation (pops up a provider list, including Windows Live for individual consumer audience) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Excel&lt;/strong&gt;       &lt;ol&gt;       &lt;li&gt;&lt;strong&gt;Sparklines &lt;/strong&gt;looks interesting – visualization/charting right inside a spreadsheet cell – may seem small, but when you’re pouring over volumes of data, the ability to visually highlight key points so person consuming the information can spot it quickly is really valuable &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Slicers&lt;/strong&gt; – ability to surface up your data filters on table or pivot tables as a little persistent dialog/window and see what filters have been applied, apply new ones, deselect. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Word&lt;/strong&gt;       &lt;ol&gt;       &lt;li&gt;Backstage (across all apps) – surfaces lots of great doc properties/tools – e.g. integrates print dialog with print-preview &lt;/li&gt;        &lt;li&gt;Ability to minimize the ribbon &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;You can see more screenshot info here: &lt;a title="http://www.microsoft.com/presspass/presskits/2010office/imageGallery.aspx" href="http://www.microsoft.com/presspass/presskits/2010office/imageGallery.aspx"&gt;http://www.microsoft.com/presspass/presskits/2010office/imageGallery.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Looking forward to seeing many of the other good stuff coming down the pipe including the web versions - “Office Anywhere” later this summer and the SharePoint side of Office 14 in the fall. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1608" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/stephen_kearns/archive/tags/conference/default.aspx">conference</category><category domain="http://imason.com/imason_Blogs/b/stephen_kearns/archive/tags/office+2010/default.aspx">office 2010</category></item><item><title>Graphic Design Guidelines for SharePoint 2007</title><link>http://imason.com/imason_Blogs/b/user_experience/archive/2009/07/08/graphic-design-guidelines-for-sharepoint.aspx</link><pubDate>Wed, 08 Jul 2009 18:31:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1559</guid><dc:creator>Kerri McKenna</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Problem: You&amp;#39;ve been asked to create a graphic design that can be applied to a SharePoint 2007 site - but you&amp;#39;ve never seen one before. Or, you&amp;#39;ve seen one but don&amp;#39;t have access to the CSS to see how things are set up. &lt;/p&gt;
&lt;p&gt;Here are some basic guidelines for creating a graphic design that can easily be applied to out-of-box Microsoft SharePoint 2007 sites. The guidelines apply to designs that will be implemented using SharePoint &amp;ldquo;themes&amp;rdquo;, which means that only CSS and graphics can be altered but the HTML on pages cannot. This is by no means an exhaustive list of SharePoint elements&amp;nbsp;- but if you&amp;#39;re trying to work on a mock-up of new graphic design, hopefully this will help clarify some of the terminology and limitations you might hear about when discussing the feasibility of implementing the design with a technical team. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Disclaimer: When I say that something &amp;quot;cannot&amp;quot; be done - I don&amp;#39;t mean it&amp;#39;s impossible, but rather that it&amp;#39;s not easily done by modifying a theme file alone. And I won&amp;#39;t claim to be a CSS guru either. I have no doubt that people have figured out ways to overcome some of the points below with more crafty CSS than I am capable of.&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PAGE WIDTH&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pages have a fluid width and are designed to occupy 100% of the width and height of the browser window. &lt;/li&gt;
&lt;li&gt;Pages are optimized for a 1024x768 browser resolution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tip&lt;br /&gt;If designing with a &amp;ldquo;grid layout&amp;rdquo;, commonly used in print design, percentages will have to be used to define the column and gutter widths.&lt;/p&gt;
&lt;p&gt;&lt;img width="610" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/pageWidth.gif" alt="Page width guidelines" height="466" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NAVIGATION&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tabs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unselected tabs all look the same. &lt;/li&gt;
&lt;li&gt;The selected tab can have a distinct look from unselected tabs.&lt;/li&gt;
&lt;li&gt;You cannot single out a tab and change its style (e.g. adding a &amp;ldquo;New!&amp;rdquo; icon or unique colouring that draws attention to it).&lt;/li&gt;
&lt;li&gt;The width of each tab defaults the width of the name of each tab, plus padding of XX pixels on either side of the text. &lt;/li&gt;
&lt;li&gt;The widths of the tabs can be made consistent through styles, but longer tab names should be considered when defining the width.&lt;/li&gt;
&lt;li&gt;The small arrow icon is a graphic, and shows up when a tab has menu items underneath it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="582" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/tabStyles.gif" alt="Tab styles" height="115" /&gt;&lt;/p&gt;
&lt;p&gt;Left Navigation &lt;/p&gt;
&lt;p&gt;In Sharepoint terminology, the left navigation bar is referred to as the &amp;ldquo;Quick Launch&amp;rdquo; bar. The links in this area are generated dynamically as users add lists and libraries to their Sharepoint site. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The width of the left navigation area is static and set in pixels. The width is the same on all pages.&lt;/li&gt;
&lt;li&gt;Headings all share the same styles.&lt;/li&gt;
&lt;li&gt;Links under headings all share the same styles.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;View All Site Content&amp;rdquo; link can have its own style.&lt;/li&gt;
&lt;li&gt;The Recycle Bin area can have its own style.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="289" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/quickLaunch.gif" height="447" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Breadcrumb&lt;/p&gt;
&lt;p&gt;The breadcrumb uses plain text, hyperlinks, and the &amp;ldquo;&amp;gt;&amp;rdquo; character to let users know where they are in the site hierarchy. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Links can be styled.&lt;/li&gt;
&lt;li&gt;Plain text can be styled.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;&amp;gt;&amp;rdquo; character cannot be changed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="445" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/breadcrumb.gif" alt="Breadcrumb" height="129" /&gt;&lt;/p&gt;
&lt;p&gt;Global Links&lt;/p&gt;
&lt;p&gt;Global links appear at the top of each page.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img width="681" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/globalLinks.gif" alt="Global links at the top of each page" height="56" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TITLES&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Area / Site Title&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The area/site title appears at the top of every page and is a hyperlink which can be styled. &lt;/li&gt;
&lt;li&gt;The height of the white background seen in the screen shots can be modified as required.&lt;/li&gt;
&lt;li&gt;The white background behind the area/site title, logo icon/graphic, and search bar can be styled.&lt;/li&gt;
&lt;li&gt;The position of the title within the white background can be controlled with styles.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="568" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/sitePageTitle.gif" alt="Page title and description" height="161" /&gt;&lt;/p&gt;
&lt;p&gt;Logo / Icon&lt;/p&gt;
&lt;p&gt;The default icon can be replaced with a JPEG, GIF, or PNG file. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The white background around the logo will increase or decrease in height depending on the size of the replacement graphic. &lt;/li&gt;
&lt;li&gt;The icon can also be hidden and replaced with a background image that contains logos or graphics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Page Title&lt;/p&gt;
&lt;p&gt;The page title is plain text that can be styled.&lt;/p&gt;
&lt;p&gt;Page Description&lt;/p&gt;
&lt;p&gt;The page description is plain text that can be styled.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consider a link colour for the page title, because on some pages the title may be a hyperlink.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;WEB PARTS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Web part&amp;rdquo; is a SharePoint term that in other platforms means &amp;ldquo;widget&amp;rdquo;. A &amp;ldquo;web part page&amp;rdquo; could be considered as a dashboard view of various lists consolidated on a single page. The condensed view of each list is referred to as a &amp;ldquo;web part&amp;rdquo;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img width="607" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/webParts.gif" alt="Web parts on a page" height="354" /&gt;&lt;/p&gt;
&lt;p&gt;Web Part Title Bars&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web part title bars all use the same styles.&lt;/li&gt;
&lt;li&gt;Sometimes the text is a hyperlink to the full view of a list; other times it&amp;rsquo;s just plain text.&lt;/li&gt;
&lt;li&gt;The arrow icon on the right side of the title bar cannot be changed. When hovered over a drop-down menu appears.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="561" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/webPartTitles.gif" alt="Web part title bars" height="132" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LIST VIEWS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Toolbar&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The toolbar options change depending on the type of list you are using, but the same styles are used everywhere.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;View&amp;rdquo; option on the right side of the tool bar can have its own unique style.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="610" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/toolbar.gif" alt="Toolbars in list views" height="211" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEARCH RESULTS&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There may be more than one search scope available, in which case tabs are used to indicate the available options.&lt;/li&gt;
&lt;li&gt;The title of the result is a hyperlink.&lt;/li&gt;
&lt;li&gt;The URL for the result is a hyperlink. &lt;/li&gt;
&lt;li&gt;The paging options are hyperlinks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="611" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/searchResults.gif" alt="Search result styles" height="282" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CONTENT PAGES&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Article Page&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The article title is a mandatory fields&amp;nbsp;and shares the same style as all page titles.&lt;/li&gt;
&lt;li&gt;The article date is an optional field that can be styled.&lt;/li&gt;
&lt;li&gt;The article byline is an optional field that can be styled.&lt;/li&gt;
&lt;li&gt;Content is entered through a rich text editor (RTE). Default styles for RTE text can be modified, and custom styles can be added.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="610" src="http://www.imason.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/user_5F00_experience.Images/articleStyles.gif" alt="Article page layout" height="225" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1559" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/SharePoint+Themes/default.aspx">SharePoint Themes</category><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/CSS/default.aspx">CSS</category><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/SharePoint+Customization/default.aspx">SharePoint Customization</category><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/user+experience/default.aspx">user experience</category><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/graphic/default.aspx">graphic</category><category domain="http://imason.com/imason_Blogs/b/user_experience/archive/tags/design/default.aspx">design</category></item><item><title>Online forms - inline labelling</title><link>http://imason.com/imason_Blogs/b/aaron_bernardo/archive/2009/06/24/online-forms-inline-labelling.aspx</link><pubDate>Wed, 24 Jun 2009 14:49:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1492</guid><dc:creator>Aaron Bernardo</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Any site or app that collects user information of any kind will more than likely require that a form be filled out. This is never the most fun part of the user experience but it is a necessary step in the process. If an online form has any obstacles there is a high probability that the user will either; contact someone and ask for assistance, bail on the process, or leave and never return. Therefore, anything that makes the entire process easier on the end-user can only&amp;nbsp;have a&amp;nbsp;positive outcome for everyone involved.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span&gt;I&amp;rsquo;m interested in any tips that help the form completion process, these are never drastic additions that make the user&amp;#39;s squeal with excitement, like a well developed RIA (Rich Internet Application) such as Flash or Silverlight, but&amp;hellip; &amp;ldquo;&lt;em&gt;It&amp;#39;s the little details that are vital. Little things make big things happen&lt;/em&gt;.&amp;rdquo; &amp;ndash; John Wooden&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Here&amp;rsquo;s a nice tip I came across when creating forms&amp;hellip;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;"&gt;&lt;a href="http://www.zurb.com/article/271/making-forms-convert-through-awesome-inli"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;http://www.zurb.com/article/271/making-forms-convert-through-awesome-inli&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;" lang="EN-CA"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;" lang="EN-CA"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Inline labelling that remains even after the user has selected the input field, then disappears as the user types.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;" lang="EN-CA"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Usually the inline label disappears after it is selected which can cause problems if the label contains instructions or it is selected by default.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;" lang="EN-CA"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;" lang="EN-CA"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This effect is achieved through a combination of html, css and javascript.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;" lang="EN-CA"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;" lang="EN-CA"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;It is being used with good results here &amp;hellip;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;cite&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Arial;"&gt;&lt;a href="http://www.me.com/"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;www.me.com/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/cite&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Arial;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1492" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/aaron_bernardo/archive/tags/javascript/default.aspx">javascript</category><category domain="http://imason.com/imason_Blogs/b/aaron_bernardo/archive/tags/css/default.aspx">css</category><category domain="http://imason.com/imason_Blogs/b/aaron_bernardo/archive/tags/html/default.aspx">html</category><category domain="http://imason.com/imason_Blogs/b/aaron_bernardo/archive/tags/User+experience/default.aspx">User experience</category><category domain="http://imason.com/imason_Blogs/b/aaron_bernardo/archive/tags/usability/default.aspx">usability</category></item><item><title>SharePoint FBA and the 403 Forbidden Error</title><link>http://imason.com/imason_Blogs/b/bob_brown/archive/2009/06/14/sharepoint-fba-and-the-403-forbidden-error.aspx</link><pubDate>Sun, 14 Jun 2009 03:05:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1442</guid><dc:creator>Bob Brown</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;em&gt;Scott alluded to the issue here (&lt;/em&gt;&lt;/span&gt;&lt;a href="http://demophon/blogs/scott_howlett/archive/2009/04/03/ie8-and-crm-3-0-unsupported-browser-or-is-it.aspx"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;em&gt;http://www.imason.com/blogs/scott_howlett/archive/2009/04/03/ie8-and-crm-3-0-unsupported-browser-or-is-it.aspx&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;em&gt;), but I&amp;rsquo;m going to take a deeper dive for all of the SharePoint users experiencing the following problem.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Set-up:&lt;/b&gt; SharePoint 2007 using Forms Based Authentication (FBA)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Problem:&lt;/b&gt; When trying to access the root site URL to log in, some users experience a blank screen or a 403 Forbidden&amp;nbsp;error instead of the forms login page.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Reason...and it might shock you:&lt;/b&gt; Because of a conflict between the new Office Live Components and a by-design condition in WSS 3.0&amp;rsquo;s implementation of WebDAV, SharePoint gets confused, thinks that the web request is for WebDAV and returns a 403 error code.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Let&amp;rsquo;s look a little deeper...&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;If a user has installed the new Office Live Components (&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=91fe0002-eb00-434b-8726-27911326d2b2&amp;amp;DisplayLang=en"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=91fe0002-eb00-434b-8726-27911326d2b2&amp;amp;DisplayLang=en&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;) two new entries will be added to Internet Explorer&amp;rsquo;s user agent on each GET request: &lt;b style="mso-bidi-font-weight:normal;"&gt;OfficeLiveConnector.1.3&lt;/b&gt; and &lt;b style="mso-bidi-font-weight:normal;"&gt;OfficeLivePatch.0.0&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;GET / HTTP/1.1&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/x-silverlight, application/x-silverlight-2-b2, */*&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;Accept-Language: en-ca&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8; &lt;b&gt;&lt;span style="background:yellow;"&gt;OfficeLiveConnector.1.3; OfficeLivePatch.0.0&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;Accept-Encoding: gzip, deflate&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;Host: mysharepointsite.com&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;Connection: Keep-Alive&lt;/span&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:12pt;font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:EN-CA;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;But the WebDAV implementation in SharePoint looks specifically for the substring &amp;ldquo;Office&amp;rdquo; in the user agent to make some assumptions about the request:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;From: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc250199(PROT.10).aspx"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;http://msdn.microsoft.com/en-us/library/cc250199(PROT.10).aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;4&amp;gt; Section 2.2.8: The WebDAV server in Windows Windows SharePoint Services 3.0 technology checks the product tokens in the User-Agent request-header field sent with a request for the presence of &amp;quot;Mozilla&amp;quot; and the absence of either &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="background:yellow;mso-highlight:yellow;"&gt;&amp;quot;Office&amp;quot;&lt;/span&gt;&lt;/b&gt;, &amp;quot;FrontPage&amp;quot;, or &amp;quot;non-browser&amp;quot; to determine whether to send an HTTP 302 redirect message to a login page when using ASP.NET Forms Authentication for unauthenticated clients. Otherwise, the server assumes that the client user agent is not a browser and will return either an HTTP 401 &amp;quot;Unauthorized&amp;quot; error to prompt authentication when using Windows Integrated authentication, or an HTTP 403 &amp;quot;Forbidden&amp;quot; error when using ASP.NET Forms Authentication along with an X-MSDAVEXT_ERROR message [MS-WDV] section 2.2.3 with an Extended-error value of 917656. This specific error combination is used by the Windows client WebDAV Redirector as a signal to send a Cookies request-header along with the request. If the Windows client does not have a Forms Authentication cookie, the server will resend the HTTP 403 error with the X-MSDAVEXT_ERROR message with an Extended-error value of 917656, as a signal to the Windows client that it needs to prompt the user to authenticate.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;So there you have it: the new Office Live Components add new entries to the IE user agent, but WebDAV confuses these entries with requests coming from a WebDAV compatible client (not a browser), causing an error to be returned.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;I&amp;rsquo;ve come across two other people with the same issue, so you can check out the following links for more details:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div style="margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;a href="http://blogs.catalystss.com/blogs/marek_mazur/archive/2009/04/14/sharepoint-office-live-add-in-and-403-forbidden.aspx"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;http://blogs.catalystss.com/blogs/marek_mazur/archive/2009/04/14/sharepoint-office-live-add-in-and-403-forbidden.aspx&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;a href="http://social.microsoft.com/Forums/zh-CN/sharepointadmin/thread/f65a760e-dbe3-4641-868b-7d4c1f8b641d"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;http://social.microsoft.com/Forums/zh-CN/sharepointadmin/thread/f65a760e-dbe3-4641-868b-7d4c1f8b641d&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;I was really hoping that&amp;nbsp;WSS 3.0&amp;nbsp;SP2 would have patched up this issue, but when I installed it recently, sadly no fix.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Workarounds:&lt;/b&gt; Unfortunately, I still haven&amp;rsquo;t come across a silver bullet solution for this but there are a couple things that you can do (I&amp;rsquo;m open to other ideas too if you want to suggest them in the comments):&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;1)&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Get your users to hit the FBA login page directly; for instance, instead of going to &lt;/span&gt;&lt;a href="http://mysharepointsite/"&gt;&lt;span style="font-size:small;color:#0000ff;font-family:Calibri;"&gt;http://mysharepointsite&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;, get them to go to &lt;/span&gt;&lt;a href="http://mysharepointsite/_layouts/%3cFBALoginPage%3e.aspx?ReturnUrl"&gt;&lt;span style="font-size:small;color:#0000ff;font-family:Calibri;"&gt;http://mysharepointsite/_layouts/&amp;lt;&lt;i style="mso-bidi-font-style:normal;"&gt;FBALoginPage&amp;gt;.aspx&lt;/i&gt;?ReturnUrl&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;= (notice the ReturnUrl query string parameter -&amp;gt; it&amp;rsquo;s mandatory)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;2)&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Get your users to change their user agent by uninstalling the Office Live Components or using a tool like the User Agent Picker: &lt;/span&gt;&lt;a href="http://www.enhanceie.com/ietoys/uapick.asp"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;http://www.enhanceie.com/ietoys/uapick.asp&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;. This isn&amp;rsquo;t an ideal approach, but it does work&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Hope this helps someone else!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1442" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/bob_brown/archive/tags/SharePoint+FBA/default.aspx">SharePoint FBA</category><category domain="http://imason.com/imason_Blogs/b/bob_brown/archive/tags/user+agent/default.aspx">user agent</category><category domain="http://imason.com/imason_Blogs/b/bob_brown/archive/tags/office+live+components/default.aspx">office live components</category><category domain="http://imason.com/imason_Blogs/b/bob_brown/archive/tags/WebDAV/default.aspx">WebDAV</category><category domain="http://imason.com/imason_Blogs/b/bob_brown/archive/tags/403+error/default.aspx">403 error</category><category domain="http://imason.com/imason_Blogs/b/bob_brown/archive/tags/Technical/default.aspx">Technical</category></item><item><title>MOSS: Indexing HTML from a Publishing HTML Field</title><link>http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/2009/06/09/moss-indexing-html-from-a-publishing-html-field.aspx</link><pubDate>Tue, 09 Jun 2009 04:21:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1430</guid><dc:creator>Suleman Ibrahim</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I was working on a custom search (Full Text Search) web part when at a point I came to know that managed property of a Publishing HTML field is returning just Text (simple) not actual HTML saved in that field. Whereas client requirement was to show formatted text with hyperlinks etc. in the web part. Initially I thought that there might be something wrong with either crawl or managed property for the field. However, I ran some tests and figured out that there is nothing wrong with crawl or managed property. So only other thing was, may be there was something wrong the way I setup/created Publishing HTML field. &lt;/p&gt;
&lt;p&gt;For testing purpose, I created a new Publishing HTML field add some contents in that field, create crawl and managed properties then did a search against that new property and I was surprised new property was returning HTML instead of simple text&amp;hellip; see screenshots below;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Added contents in both fields (having some bold, underline text)      &lt;br /&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/suleman_5F00_ibrahim/image_5F00_26FC5457.png"&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_119E9EEF.png" height="67" width="244" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/li&gt;
&lt;li&gt;Ran incremental crawl and see following results in the custom web part (I had already changed the web part query and XSLT to show both fields in the web part)      &lt;br /&gt;      &lt;br /&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_314D78B7.png" /&gt;&amp;nbsp; &lt;br /&gt;In this screenshot you can see &lt;b&gt;Test Additional Text &lt;/b&gt;(New Field) is showing formatted text but &lt;b&gt;Additional Text&lt;/b&gt; (Actual Field) is showing simple text.       &lt;/li&gt;
&lt;li&gt;Then I ran same query in SPQuery Tool and got following results that described the difference in both fields.      &lt;br /&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/suleman_5F00_ibrahim/image_5F00_5ECE987A.png"&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_4904B01D.png" height="56" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;In this screenshot you can see &lt;b&gt;Additional Text&lt;/b&gt; is returning just Text whereas &lt;b&gt;Test Additional Text&lt;/b&gt; field is returning html.       &lt;/li&gt;
&lt;li&gt;Now this was confusing for me; apparently I wasn&amp;rsquo;t able to see any difference the way both fields, crawl and managed properties were being created. But then I got the difference and that was Face value of both field is different in the List view form.     &lt;br /&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/suleman_5F00_ibrahim/image_5F00_48987D28.png"&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_482C4A33.png" height="191" width="244" /&gt;&lt;/a&gt;       &lt;br /&gt;May be some of you are thinking that &lt;b&gt;AllItems.aspx&lt;/b&gt; looks ugly but in my case only Site Owners and Administrators can go to this page, all other users see results in the custom search web part on home page.&amp;nbsp; &lt;/li&gt;
&lt;li&gt;So yeah! I got the clue; actually problem was Crawler crawls face value/text not the hidden value/text that&amp;rsquo;s why I was facing that problem. But as I mentioned earlier there wasn&amp;rsquo;t any difference the way both fields were created.      &lt;/li&gt;
&lt;li&gt;I wrote a utility to compare all of properties of both fields --- Hurray :), I found something; that is &lt;b&gt;RichText&lt;/b&gt; property of &lt;b&gt;Additional Text&lt;/b&gt; is set to true, which make sense to show a nice and pretty view on &lt;b&gt;AllItems.aspx&lt;/b&gt; page but as mentioned I wasn&amp;rsquo;t worried about &lt;b&gt;AllItems.aspx&lt;/b&gt;.       &lt;br /&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_7BF44084.png" height="29" width="244" /&gt;&amp;nbsp; &lt;/li&gt;
&lt;li&gt;I wrote following lines of code to set RichText property to False.
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Microsoft.SharePoint.Publishing.Fields.HtmlField field = (Microsoft.SharePoint.Publishing.Fields.HtmlField)list.Fields[&amp;quot;Additional Text&amp;quot;];            &lt;br /&gt;field.RichText = false;             &lt;br /&gt;field.Update();             &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Finally! my web part shows formatted text instead of simple text.      &lt;br /&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_3B51F415.png" height="60" width="244" /&gt;&amp;nbsp; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I hope this can save someone&amp;rsquo;s bunch of time who is facing same kind of problems with publishing fields :).&lt;/p&gt;
&lt;ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1430" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/Publishing+HTML/default.aspx">Publishing HTML</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/Index+html/default.aspx">Index html</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/crawl+html/default.aspx">crawl html</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/Publishing+Html+Field/default.aspx">Publishing Html Field</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/htmlfield/default.aspx">htmlfield</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/technical/default.aspx">technical</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Retrieving source code from a specific TFS label</title><link>http://imason.com/imason_Blogs/b/peter_bojanczyk/archive/2009/06/08/retrieving-source-code-from-a-specific-tfs-label.aspx</link><pubDate>Mon, 08 Jun 2009 14:07:53 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1427</guid><dc:creator>Peter Bojanczyk</dc:creator><slash:comments>0</slash:comments><description>&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8fe798c7-ced8-4848-85be-f60b2dec6a1b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+Foundation+Server" rel="tag"&gt;Team Foundation Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2008" rel="tag"&gt;Visual Studio 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Labels" rel="tag"&gt;Labels&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;Grab a specific version &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peter_5F00_bojanczyk/clip_5F00_image002_5F00_1339F71E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peter_5F00_bojanczyk/clip_5F00_image002_5F00_thumb_5F00_3A080D5E.jpg" width="187" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Choose Label and make sure both checkboxes are set (this ensures that your current Source code gets overwritten by the code you’ll pull from TFS), then click the “…” button (marked by arrow) &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peter_5F00_bojanczyk/image_5F00_25168AEB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peter_5F00_bojanczyk/image_5F00_thumb_5F00_6BFFADE8.png" width="240" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Choose your project and click Find. After that highlight your label and press Close. This will put the label text back into the previous screen &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peter_5F00_bojanczyk/image_5F00_04FB7E2E.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peter_5F00_bojanczyk/image_5F00_thumb_5F00_2BC9946E.png" width="236" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Your screen should now look something like this. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peter_5F00_bojanczyk/image_5F00_44C564B3.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peter_5F00_bojanczyk/image_5F00_thumb_5F00_20A00A24.png" width="240" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click Get and you’re done! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1427" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/peter_bojanczyk/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://imason.com/imason_Blogs/b/peter_bojanczyk/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://imason.com/imason_Blogs/b/peter_bojanczyk/archive/tags/Labels/default.aspx">Labels</category><category domain="http://imason.com/imason_Blogs/b/peter_bojanczyk/archive/tags/TFS/default.aspx">TFS</category><category domain="http://imason.com/imason_Blogs/b/peter_bojanczyk/archive/tags/technical/default.aspx">technical</category></item><item><title>Configuring Enterprise Library 4.0 for Exception handling and Logging</title><link>http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/2009/05/25/configuring-enterprise-library-4-0-for-exception-handling-and-logging.aspx</link><pubDate>Mon, 25 May 2009 21:18:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1384</guid><dc:creator>Suleman Ibrahim</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;A few weeks back, I was trying to configure Enterprise Library 4.0 for Exception handling and Logging exception into event log but was not able to find any help on internet so it took me long time to do all the configurations for handling and logging exceptions using Enterprise. Library 4.0. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Follow following steps to configure Ent. Lib 4.0 &lt;b&gt;Exception Handling&lt;/b&gt; and &lt;b&gt;Logging&lt;/b&gt; blocks. &lt;/p&gt;
&lt;h3&gt;Configurations:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download and install Enterprise library 4.0, you can download it from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=90de37e0-7b42-4044-99be-f8ecfbbc5b65&amp;amp;DisplayLang=en"&gt;here&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;After installation go to &lt;b&gt;Start&lt;/b&gt; -&amp;gt; &lt;b&gt;All Programs&lt;/b&gt; -&amp;gt; &lt;b&gt;Microsoft patterns &amp;amp; practices&lt;/b&gt; -&amp;gt; &lt;b&gt;Enterprise Library 4.0 &amp;ndash; May 2008&lt;/b&gt; -&amp;gt; &lt;b&gt;Enterprise Library configuration&lt;/b&gt;       &lt;br /&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/suleman_5F00_ibrahim/clip_5F00_image002_5F00_07CE0299.jpg"&gt;&lt;img title="clip_image002" style="border:0pt none;display:inline;" alt="clip_image002" src="http://www.imason.com/img/blogs/clip_5F00_image002_5F00_thumb_5F00_4797E91E.jpg" /&gt;&lt;/a&gt;       &lt;/li&gt;
&lt;li&gt;A new wizard console will open then go to &lt;b&gt;File&lt;/b&gt; -&amp;gt;&amp;nbsp; &lt;b&gt;Open Application&lt;/b&gt; -&amp;gt; (Navigate to your SharePoint web Application web.config) and click &lt;b&gt;Open&lt;/b&gt; button.       &lt;br /&gt;&lt;img title="clip_image004" style="border:0pt none;display:inline;" alt="clip_image004" src="http://www.imason.com/img/blogs/clip_5F00_image004_5F00_thumb_5F00_0E810C1C.jpg" /&gt;       &lt;/li&gt;
&lt;li&gt;After loading web.config, right click on the web.config path (see screen shot) &amp;ndash;&amp;gt; &lt;b&gt;New&lt;/b&gt; -&amp;gt; &lt;b&gt;Exception Handling Application Block&lt;/b&gt;       &lt;br /&gt;&lt;img title="clip_image006" style="border:0pt none;display:inline;" alt="clip_image006" src="http://www.imason.com/img/blogs/clip_5F00_image006_5F00_thumb_5F00_4078ACA6.jpg" height="100" width="244" /&gt;       &lt;/li&gt;
&lt;li&gt;A new block &lt;b&gt;Exception Handling Application Block&lt;/b&gt; will be added to left pan of window. &lt;/li&gt;
&lt;li&gt;Right click on &lt;b&gt;Exception Handling Application Block&lt;/b&gt; &amp;ndash;&amp;gt; &lt;b&gt;New&lt;/b&gt; &amp;ndash;&amp;gt; &lt;b&gt;Exception Policy&lt;/b&gt;       &lt;br /&gt;&lt;img title="clip_image008" style="border:0pt none;display:inline;" alt="clip_image008" src="http://www.imason.com/img/blogs/clip_5F00_image008_5F00_thumb_5F00_354F225C.jpg" height="159" width="244" /&gt;       &lt;/li&gt;
&lt;li&gt;A new sub block will be added click on &lt;b&gt;Exception Policy&lt;/b&gt; and type some meaningful name for your project in right pan of window       &lt;br /&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_2D1276CC.png" height="83" width="244" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; &lt;b&gt;Exception Policy&lt;/b&gt; will change to new name you had written in this step&lt;b&gt; &lt;/b&gt;in left pan as well. This step is the most important step, if multiple developers are working on the project you need to make sure everyone is using same name across the board otherwise you can run into issue while integration.       &lt;/li&gt;
&lt;li&gt;Right click on &lt;b&gt;My Custom Exception Policy&lt;/b&gt;(left pan) &amp;ndash;&amp;gt; &lt;b&gt;New&lt;/b&gt; -&amp;gt; &lt;b&gt;Exception Type&lt;/b&gt;       &lt;br /&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/suleman_5F00_ibrahim/clip_5F00_image012_5F00_1534159F.jpg"&gt;&lt;img title="clip_image012" style="border:0pt none;display:inline;" alt="clip_image012" src="http://www.imason.com/img/blogs/clip_5F00_image012_5F00_thumb_5F00_2E2FE5E4.jpg" height="93" width="244" /&gt;&lt;/a&gt;       &lt;/li&gt;
&lt;li&gt;A new dialog window will open look for &lt;b&gt;Exception&lt;/b&gt; and click &lt;b&gt;OK&lt;/b&gt; button.       &lt;br /&gt;&lt;img title="clip_image014" style="border:0pt none;display:inline;" alt="clip_image014" src="http://www.imason.com/img/blogs/clip_5F00_image014_5F00_thumb_5F00_6027866E.jpg" height="230" width="244" /&gt;       &lt;/li&gt;
&lt;li&gt;A new sub block Exception will be added to left pan. &lt;/li&gt;
&lt;li&gt;Right click on &lt;b&gt;Exception&lt;/b&gt; &amp;ndash;&amp;gt; &lt;b&gt;New&lt;/b&gt; &amp;ndash;&amp;gt; &lt;b&gt;Logging Handler&lt;/b&gt;       &lt;br /&gt;&lt;img title="clip_image016" style="border:0pt none;display:inline;" alt="clip_image016" src="http://www.imason.com/img/blogs/clip_5F00_image016_5F00_thumb_5F00_2710A96C.jpg" height="82" width="244" /&gt;       &lt;/li&gt;
&lt;li&gt;Another sub block &lt;b&gt;Logging Handler&lt;/b&gt; will be added as well as a &lt;b&gt;Logging Application Block&lt;/b&gt;. So left pan will looks like:       &lt;br /&gt;&lt;img title="clip_image018" style="border:0pt none;display:inline;" alt="clip_image018" src="http://www.imason.com/img/blogs/clip_5F00_image018_5F00_thumb_5F00_34E2EF67.jpg" /&gt;       &lt;/li&gt;
&lt;li&gt;Click on Logging Handler and make following changes in Properties Pan. &lt;/li&gt;
&lt;li&gt;Click on &lt;b&gt;Formatter Type&lt;/b&gt; -&amp;gt; click &lt;b&gt;&amp;hellip; &lt;/b&gt;button (in value field)       &lt;br /&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/suleman_5F00_ibrahim/clip_5F00_image020_5F00_1FF16CF4.jpg"&gt;&lt;img title="clip_image020" style="border:0pt none;display:inline;" alt="clip_image020" src="http://www.imason.com/img/blogs/clip_5F00_image020_5F00_thumb_5F00_38ED3D39.jpg" /&gt;&lt;/a&gt;       &lt;/li&gt;
&lt;li&gt;A dialog window will open select TextExcetionFormatter then click &lt;b&gt;OK&lt;/b&gt;       &lt;br /&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/suleman_5F00_ibrahim/clip_5F00_image022_5F00_14C7E2AA.jpg"&gt;&lt;img title="clip_image022" style="border:0pt none;display:inline;" alt="clip_image022" src="http://www.imason.com/img/blogs/clip_5F00_image022_5F00_thumb_5F00_2DC3B2EF.jpg" height="145" width="244" /&gt;&lt;/a&gt;       &lt;/li&gt;
&lt;li&gt;Select &lt;b&gt;General&lt;/b&gt; in for &lt;b&gt;LogCategory&lt;/b&gt; field.       &lt;br /&gt;&lt;img title="clip_image024" style="border:0pt none;display:inline;" alt="clip_image024" src="http://www.imason.com/img/blogs/clip_5F00_image024_5F00_thumb_5F00_5FBB5379.jpg" height="88" width="244" /&gt;       &lt;/li&gt;
&lt;li&gt;Click on &lt;b&gt;Formatted EvenLog TraceListener&lt;/b&gt; and change source to something more meaningful e.g. &lt;b&gt;Application ABC Exception        &lt;br /&gt;&lt;/b&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_25F33A54.png" height="85" width="244" /&gt;&amp;nbsp; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; This step is not important but it would be good if team uses same &lt;b&gt;Source&lt;/b&gt; name across the board.       &lt;/li&gt;
&lt;li&gt;Go to &lt;b&gt;File&lt;/b&gt; -&amp;gt; &lt;b&gt;Save Application&lt;/b&gt; to save all the configurations. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3&gt;Web.Config Configurations:&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Note: &lt;/b&gt;web.config changes are required if you are using Enterprise Library with SharePoint for .Net application you can skip these steps.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy following DLLs from &amp;ldquo;C:\Program Files\Microsoft Enterprise Library 4.0 - May 2008\Bin&amp;rdquo; and paste them into your web App Bin directory or deploy into GAC.
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;a.&lt;/b&gt; Microsoft.Practices.EnterpriseLibrary.Common.dll           &lt;br /&gt;&lt;b&gt;b.&lt;/b&gt; Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll           &lt;br /&gt;&lt;b&gt;c.&lt;/b&gt; Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll           &lt;br /&gt;&lt;b&gt;d.&lt;/b&gt; Microsoft.Practices.EnterpriseLibrary.Logging.dll           &lt;br /&gt;&lt;b&gt;e.&lt;/b&gt; Microsoft.Practices.ObjectBuilder2.dll           &lt;br /&gt;&lt;b&gt;f.&lt;/b&gt; Microsoft.Practices.Unity.dll&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Add following safe controls in web.config
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;a.&lt;/b&gt; &amp;lt;SafeControl Assembly=&amp;quot;Microsoft.Practices.EnterpriseLibrary.Common, Version=4.0.0.0, Culture=neutral,&amp;nbsp; PublicKeyToken=31bf3856ad364e35&amp;quot; Namespace=&amp;quot;Microsoft.Practices.EnterpriseLibrary.Common&amp;quot; TypeName=&amp;quot;*&amp;quot; Safe=&amp;quot;True&amp;quot; /&amp;gt;           &lt;br /&gt;&lt;b&gt;b.&lt;/b&gt;&amp;nbsp; &amp;lt;SafeControl Assembly=&amp;quot;Microsoft.Practices.ObjectBuilder2, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot; Namespace=&amp;quot;Microsoft.Practices.ObjectBuilder2&amp;quot; TypeName=&amp;quot;*&amp;quot; Safe=&amp;quot;True&amp;quot; /&amp;gt;           &lt;br /&gt;&lt;b&gt;c.&lt;/b&gt;&amp;nbsp; &amp;lt;SafeControl Assembly=&amp;quot;Microsoft.Practices.Unity, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot; Namespace=&amp;quot;Microsoft.Practices.Unity&amp;quot; TypeName=&amp;quot;*&amp;quot; Safe=&amp;quot;True&amp;quot; /&amp;gt;           &lt;br /&gt;&lt;b&gt;d.&lt;/b&gt; &amp;lt;SafeControl Assembly=&amp;quot;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot; Namespace=&amp;quot;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling&amp;quot; TypeName=&amp;quot;*&amp;quot; Safe=&amp;quot;True&amp;quot; /&amp;gt;           &lt;br /&gt;&lt;b&gt;e.&lt;/b&gt;&amp;nbsp; &amp;lt;SafeControl Assembly=&amp;quot;Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot; Namespace=&amp;quot;Microsoft.Practices.EnterpriseLibrary.Logging&amp;quot; TypeName=&amp;quot;*&amp;quot; Safe=&amp;quot;True&amp;quot; /&amp;gt;           &lt;br /&gt;&lt;b&gt;f.&lt;/b&gt; &amp;lt;SafeControl Assembly=&amp;quot;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot; Namespace=&amp;quot;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging&amp;quot; TypeName=&amp;quot;*&amp;quot; Safe=&amp;quot;True&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Code:&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Add following references and namespaces in your project &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling &lt;/li&gt;
&lt;li&gt;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Use Browse tab while adding reference and add above references from &amp;ldquo;&amp;lt;System Drive&amp;gt;:\Program Files\Microsoft Enterprise Library 4.0 - May 2008\Bin&amp;rdquo;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;User following code snippet for exception handling:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;//CODE&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&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; bool rethrow = ExceptionPolicy.HandleException(ex, &amp;quot;&lt;b&gt;My Custom Exception Policy&lt;/b&gt;&amp;quot;); &lt;/p&gt;
&lt;p&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; // Policy Name should be same as we configured in configuration step 7 &lt;/p&gt;
&lt;p&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; if (rethrow)&lt;/p&gt;
&lt;p&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; throw; //Throw Exception if you need to show an error message to end user otherwise no need to throw exception.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;// Close/Dispose all objects&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;You are all done to get benefits of Enterprise Library 4.0 &amp;ndash; Enjoy!!!!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1384" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/Enterprise+library/default.aspx">Enterprise library</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/Exception+handling/default.aspx">Exception handling</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/technical/default.aspx">technical</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/Logging/default.aspx">Logging</category></item><item><title>MOSS 2007 - Uploading and Indexing Large Files:</title><link>http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/2009/05/25/uploading-and-indexing-large-files-in-a-moss-site.aspx</link><pubDate>Mon, 25 May 2009 18:13:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1382</guid><dc:creator>Suleman Ibrahim</dc:creator><slash:comments>10</slash:comments><description>&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A client has reported an issue that users were not able to upload files larger than 50MB file which we can resolve easily by updating Web Application settings; however, users were getting Timeout exceptions as well. Furthermore, business told us that business requirement is to be able to upload up to 100MB files. &lt;/p&gt;  &lt;p&gt;There are few simple configurations setting those needs to do in order to upload large files in to SharePoint document libraries…. &lt;/p&gt;  &lt;h3&gt;SharePoint Configurations:&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Increase the maximum upload size        &lt;br /&gt;&lt;/b&gt;The maximum size for uploading files is set to 50 MB for a Web Application. If you need to be able to upload larger files, you can change this setting to &lt;b&gt;any value up to 2 GB (2047 MB).&lt;/b&gt; However, as this is web application level setting so even if you have multiple site collections, this change will replicate to all site collections.       &lt;blockquote&gt;       &lt;p&gt;1- Go to &lt;strong&gt;Start&lt;/strong&gt; –&amp;gt; &lt;strong&gt;All Programs&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Administrative Tools&lt;/strong&gt; –&amp;gt; &lt;strong&gt;SharePoint 3.0 Central Administration&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Applications Management&lt;/strong&gt;.           &lt;br /&gt;2- Go to &lt;strong&gt;Web application general settings&lt;/strong&gt; under &lt;strong&gt;SharePoint Web Application Management&lt;/strong&gt; section.           &lt;br /&gt;3- Look for &lt;strong&gt;Maximum Upload Size&lt;/strong&gt; and update that field as required up to 2 GB (2047MB)           &lt;br /&gt;4- Click &lt;strong&gt;OK&lt;/strong&gt; to save Settings. &lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Increase the default chunk size for large files        &lt;br /&gt;&lt;/b&gt;The chunk size is not related to the maximum upload file size. The chunk size simply specifies the amount of data that can be read from a file at one time. &lt;b&gt;By default, the large-file-chunk-size property is set to 5 MB&lt;/b&gt;. If you notice performance or scale problems on the client or server, then you may need to tune this setting to get the performance you are targeting.       &lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you raise the chunk size too high, the files might use up too much front-end memory and you may need to lower this setting.       &lt;br /&gt;      &lt;br /&gt;The large–file–chunk–size property must be set from the command line. This property is configured for a server or server farm, and cannot be configured for an individual virtual server. To set this property, use the following syntax:&lt;strong&gt;&lt;/strong&gt;       &lt;blockquote&gt;       &lt;p&gt;1- Open Command Prompt          &lt;br /&gt;2- Navigate to 12 Hive Bin Folder (usually C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\Bin)&amp;#160; &lt;br /&gt;3- Run Command: &lt;strong&gt;Stsadm.exe –o setproperty –pn large–file–chunk–size –pv &amp;lt;Size in Bytes&amp;gt;&lt;/strong&gt;           &lt;br /&gt;4- After making a change to this property, you must restart IIS. You can restart IIS by typing iisreset on the command line.&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;&lt;b&gt;Tune the Microsoft Internet Information Services (IIS) connection timeout setting&lt;/b&gt;:&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;By default, timeout for is set to 120 seconds (2 minutes). Depending on your maximum file size and how long it takes for the file to be uploaded, you may not need to change this setting. If, however, IIS is timing out when you upload large files, you can change this property to ensure that larger files can be uploaded successfully.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;1- Go to &lt;strong&gt;Start&lt;/strong&gt; –&amp;gt; &lt;strong&gt;All Programs&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Administrative Tools&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Internet Information Services (IIS) Manager&lt;/strong&gt;.       &lt;br /&gt;2- Right-click the virtual server you want to configure, and then click &lt;strong&gt;Properties&lt;/strong&gt;.       &lt;br /&gt;3- Click the &lt;strong&gt;Web Site&lt;/strong&gt; tab.       &lt;br /&gt;4- In the &lt;strong&gt;Connections&lt;/strong&gt; section, in the &lt;strong&gt;Connection timeout&lt;/strong&gt; box, type the number of seconds you want IIS to wait before timing out.       &lt;br /&gt;5- Click &lt;strong&gt;OK&lt;/strong&gt; to save settings.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Those who are working in SPS 2003 and want to make changes for web parts, please have a look to &lt;a href="http://office.microsoft.com/en-us/winsharepointadmin/HA011607881033.aspx"&gt;this article&lt;/a&gt; and find &lt;b&gt;Configuring Large File Support.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;Web.Config configurations:&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Update maxRequestLength and executionTimeout attributes for the httpRuntime node:&lt;/b&gt;&amp;#160; &lt;br /&gt;excecutionTimeout = &amp;lt;Time in Seconds&amp;gt;       &lt;br /&gt;maxRequestLength = &amp;lt;File size in KB&amp;gt; (by default for ASP applications, its set to 4096 (4MB), but because SharePoint supports 50MB so its set to 51200)       &lt;br /&gt;e.g.       &lt;br /&gt;&lt;strong&gt;&amp;lt;httpRuntime executionTimeout=&amp;quot;999999&amp;quot; maxRequestLength=&amp;quot;102400&amp;quot; /&amp;gt;&lt;/strong&gt;&amp;#160;&amp;#160; &amp;lt;!-- 102400 = 100MB --&amp;gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;Indexing Large files:&lt;/h3&gt;  &lt;p&gt;If large files needs to be crawl then we need to make following changes in the Registry and central administration.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Registry Configurations:&lt;/strong&gt;       &lt;br /&gt;By default, Search Services can crawl and filter a file with a size of up to &lt;b&gt;16 megabytes (MB).&lt;/b&gt; It will always crawl the first 16MB of a file. After this limit is reached, SharePoint Portal Server enters a warning in the gatherer log “The file reached the maximum download limit. Check that the full text of the document can be meaningfully crawled.”       &lt;br /&gt;To increase the limit of 16 MB, you must add in the registry new entry &lt;b&gt;MaxDownloadSize&lt;/b&gt;.&amp;#160; To do this, follow these steps:       &lt;br /&gt;      &lt;blockquote&gt;       &lt;p&gt;1- Start Registry Editor (&lt;strong&gt;Start&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Run&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Regedit&lt;/strong&gt;).           &lt;br /&gt;2- Locate the following key in the registry: &lt;strong&gt;HKEY_LOCAL_MACHINE &lt;/strong&gt;-&amp;gt; &lt;strong&gt;SOFTWARE&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Microsoft&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Office Server&lt;/strong&gt; -&amp;gt; &lt;strong&gt;12.0&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Search&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Global&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Gathering Manager&lt;/strong&gt;           &lt;br /&gt;3- If already &lt;b&gt;MaxDownloadSize&lt;/b&gt; exits then move to step 5.&amp;#160; &lt;br /&gt;4- Right click –&amp;gt;&amp;#160; &lt;strong&gt;New&lt;/strong&gt; –&amp;gt; &lt;strong&gt;DWORD Value&lt;/strong&gt;. Name it &lt;b&gt;MaxDownloadSize&lt;/b&gt;.           &lt;br /&gt;5- Double-click on &lt;b&gt;MaxDownloadSize&lt;/b&gt;, change the value to &lt;strong&gt;Decimal&lt;/strong&gt;, and type the maximum size (in MB) for files that the gatherer downloads.           &lt;br /&gt;6- Restart the server (this is an important step to do, otherwise changes will not effect).           &lt;br /&gt;7- Start &lt;strong&gt;Full Crawl&lt;/strong&gt;. &lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;NOTE:&lt;/b&gt; Increasing the file size may cause a timeout exception because the crawler can timeout if the file takes too long to crawl/index (because of its size). To increase timeout value, follow these steps:&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Central Administration Configurations: &lt;/strong&gt;&amp;#160; &lt;blockquote&gt;1- Go to &lt;strong&gt;Start&lt;/strong&gt; –&amp;gt; &lt;strong&gt;All Programs&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Administrative Tools&lt;/strong&gt; –&amp;gt; &lt;strong&gt;SharePoint 3.0 Central Administration&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Applications Management&lt;/strong&gt;.         &lt;br /&gt;2- In the &lt;strong&gt;Search&lt;/strong&gt; section, click &lt;strong&gt;Manage search service&lt;/strong&gt;         &lt;br /&gt;3- On the &lt;strong&gt;Manage Search Service&lt;/strong&gt; page, in the &lt;strong&gt;Farm-Level Search Settings&lt;/strong&gt; section, click &lt;strong&gt;Farm-level search settings&lt;/strong&gt;.         &lt;br /&gt;4- In the &lt;strong&gt;Timeout Settings&lt;/strong&gt; section change &lt;strong&gt;Connection&lt;/strong&gt; and &lt;strong&gt;Request acknowledgement time&lt;/strong&gt;. (here you need to do your math that how big files are suppose to be index and approximately how long it will take to crawl – for 100MB I haven’t change it so it’s still default 60 seconds for both).&lt;/blockquote&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You are all done and ready to test your scenarios :). &lt;/p&gt;  &lt;p&gt;Enjoy!!! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1382" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/maxRequestLength/default.aspx">maxRequestLength</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/Index+large+file/default.aspx">Index large file</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/MaxFileDownloadSize/default.aspx">MaxFileDownloadSize</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/uploading+a+file+larger+than+50MB/default.aspx">uploading a file larger than 50MB</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/excecutionTimeout/default.aspx">excecutionTimeout</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/Max+file+upload+size/default.aspx">Max file upload size</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/httpRuntime/default.aspx">httpRuntime</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/large+file+Timeout/default.aspx">large file Timeout</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/technical/default.aspx">technical</category><category domain="http://imason.com/imason_Blogs/b/suleman_ibrahim/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>The Problem: Why Employees Can’t Find What They Are Looking For</title><link>http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/2009/05/20/the-problem-why-employees-can-t-find-what-they-are-looking-for.aspx</link><pubDate>Wed, 20 May 2009 14:34:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1359</guid><dc:creator>Jeff Dunmall</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;a href="http://www.imason.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fast_5F00_sharepoint_5F00_search/image_5F00_290161A2.png"&gt;&lt;img style="border:0pt none;display:inline;margin-left:0px;margin-right:0px;float:right;" title="image" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_73F4D271.png" height="155" width="161" /&gt;&lt;/a&gt;It is easy to create content.&amp;nbsp; Fire up a Word document and post it, or create a sub-site on your Intranet and add pages.&amp;nbsp; Even creating a new web site isn&amp;rsquo;t hard anymore &amp;ndash; most business users can go through a process to launch one quickly.&amp;nbsp; The benefit: quickly converting corporate knowledge into something that can be consumed by others.&amp;nbsp; The challenge: it is up to the end user to &amp;lsquo;know&amp;rsquo; where to find it, and that often doesn&amp;rsquo;t happen.&lt;/p&gt;
&lt;p&gt;There is good news.&amp;nbsp; Today&amp;rsquo;s search engines make it easy to hook up new sources of content.&amp;nbsp; Check out the solution you have today for internal search and hunt around for a dropdown box of options.&amp;nbsp; There are probably dozens.&amp;nbsp; Each time a new web site comes online internally, the search engine needs to be pointed at it.&amp;nbsp; It probably includes: HR content, news, product information, service information, people directory, manuals &amp;amp; procedures, links to tools, potentially file shares, email, collaboration environments like SharePoint, plus perhaps a Documentum or Interwoven, and likely multiplied by geography, business units, secured content, or all of the above.&lt;/p&gt;
&lt;p&gt;The user is faced with two options: 1) choose a source, or 2) search everything.&amp;nbsp; Lets look at each in more detail.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) Choose a Source &amp;ndash; &lt;/b&gt;this option requires an employee to know what a three or four word description means, and what kind of content is likely to be included.&amp;nbsp; It also assumes that it is possible to name the content, and that generally a single type is available.&amp;nbsp; As that is often not possible (consider how many different types of content you have on your &amp;lsquo;Intranet&amp;rsquo;), the sources get redefined to be more granular.&amp;nbsp; The result: many more options to choose from.&amp;nbsp; Realistically end users cannot be expected to hunt through this list to find the right one, which leads to most choosing the second option.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) Search Everything &lt;/b&gt;&amp;ndash; This is often the default: search across all content under index and provide a result set.&amp;nbsp; That can include hundreds of thousands of items, and as you get all of your content under index it can easily span millions of entries.&amp;nbsp; This option assumes two things.&amp;nbsp; First, that your search engine can bring back the top 10 relevant results every time based on a few words of input, and second that each result should be displayed in the same format (typically, title, link, preview, plus potentially a date).&amp;nbsp; Do those assumptions seem reasonable?&lt;/p&gt;
&lt;p&gt;So, what to do?&amp;nbsp; More on that soon.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1359" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Search/default.aspx">Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Microsoft+FAST+Search/default.aspx">Microsoft FAST Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Employee+Solution/default.aspx">Employee Solution</category></item><item><title>VSTS – Setting Permissions on Work Items?</title><link>http://imason.com/imason_Blogs/b/stephen_kearns/archive/2009/05/19/vsts-setting-permissions-on-work-items.aspx</link><pubDate>Tue, 19 May 2009 19:11:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1357</guid><dc:creator>Stephen Kearns</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Is it possible? I was thinking the answer was no &amp;ndash; but I poked around and ran across this forum entry which outlines how you do it &amp;ndash; basically, the short version is TFS allows you to apply permission (or deny permissions) to a specific Node in the Area Path Tree. &lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border:0pt none;display:inline;" alt="image" src="http://www.imason.com/img/blogs/image_5F00_thumb_5F00_69835924.png" /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a title="http://social.msdn.microsoft.com/Forums/de-DE/tfsworkitemtracking/thread/280095b2-974e-469e-b879-9ec9f1bacfb0" href="http://social.msdn.microsoft.com/Forums/de-DE/tfsworkitemtracking/thread/280095b2-974e-469e-b879-9ec9f1bacfb0"&gt;http://social.msdn.microsoft.com/Forums/de-DE/tfsworkitemtracking/thread/280095b2-974e-469e-b879-9ec9f1bacfb0&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1357" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/stephen_kearns/archive/tags/technical/default.aspx">technical</category><category domain="http://imason.com/imason_Blogs/b/stephen_kearns/archive/tags/TFS/default.aspx">TFS</category><category domain="http://imason.com/imason_Blogs/b/stephen_kearns/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>Steve Ballmer on assessing job candidates</title><link>http://imason.com/imason_Blogs/b/scott_howlett/archive/2009/05/19/steve-ballmer-on-assessing-job-candidates.aspx</link><pubDate>Tue, 19 May 2009 16:14:07 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1356</guid><dc:creator>Scott Howlett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This is from a &lt;a href="http://www.nytimes.com/2009/05/17/business/17corner.html?pagewanted=1&amp;amp;_r=1&amp;amp;th&amp;amp;emc=th"&gt;great interview of Steve Ballmer done by the NY Times&lt;/a&gt; (bolding is done by me):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Q. How do you assess job candidates? &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;A. If they come from inside the business, the best predictor of future success is past success. It’s not 100 percent, but it’s a reasonable predictor. For an external candidate, what I’ve found is that reference checks are super-important. I didn’t used to believe so much in reference checks. You can always get somebody to say something nice about you. But the truth is, if you ask enough questions and you ask around, you can really get a profile of who’s accomplished various things and who hasn’t. &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;strong&gt;And I try to figure out sort of a combination of I.Q. and passion. I just ask somebody to tell me what they’ve done that they are really proud of and tell me about it. And if it’s something you are proud of, you should be able to answer any question I can come up with, at least at a level that would satisfy my interest. I ought to be able to see your passion. It might be quiet passion; it might be bubbly passion. But I should be able to sense that you are one of those people who just sort of throws themselves into things.&lt;/strong&gt; &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I get asked this question all the time, particularly in forums like in Microsoft’s &lt;a href="http://www.microsoft.com/canada/technet/iyc2009/"&gt;Ignite Your Career&lt;/a&gt; webcast series and I love Ballmer’s response.&amp;#160; My answer is very similar to Ballmer’s, except I usually combine “Specialism” with “Passion”.&amp;#160; That is, talk to me about where you’ve specialized and why.&amp;#160; And in doing so, I should be able to get a good sense of your passion for your specialty.&amp;#160; We’ve long recruited for passion at imason, and indeed one of our Core Values is “Be Passionate”.&amp;#160; At imason, we’ve had interviews where we spoke at length about such things as the &lt;a href="http://en.wikipedia.org/wiki/Sitar"&gt;Sitar&lt;/a&gt; (we hired this person) or even medieval German Literature (the interviewee had a Masters in the field, but we didn’t hire this person).&amp;#160; We always try to get people to talk about something they’re truly passionate about, and it doesn’t need to be work-related and in fact, it usually isn’t.&lt;/p&gt;  &lt;p&gt;You see, the thing is that if you’re a passionate person you’re highly likely to be passionate about &lt;em&gt;everything you do&lt;/em&gt; including your work.&lt;/p&gt;  &lt;p&gt;It’s a great interview with Ballmer – definitely check it out!&amp;#160; And Be Passionate!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1356" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/scott_howlett/archive/tags/interview/default.aspx">interview</category></item><item><title>Enterprise Search: Does the Name Help or Hurt?</title><link>http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/2009/05/15/enterprise-search-does-the-name-help-or-hurt.aspx</link><pubDate>Fri, 15 May 2009 16:08:21 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1337</guid><dc:creator>Jeff Dunmall</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you’re looking for an internal search solution you’ve probably heard the term &lt;a href="http://en.wikipedia.org/wiki/Enterprise_search"&gt;Enterprise Search&lt;/a&gt; kicking around.&amp;#160; It generally applies putting in an internal search solution that can broadly index content (file shares, email, SharePoint, etc) and provide a search interface for your employees.&lt;/p&gt;  &lt;p&gt;It assumes a few things.&amp;#160; First, that the solution applies to all employees.&amp;#160; After all, don’t all employees need the ability to search through their knowledge work?&amp;#160; Isn’t search just like email?&amp;#160; The key flawed assumption: all employees share the same underlying search problem.&lt;/p&gt;  &lt;p&gt;I certainly agree from a strategy perspective.&amp;#160; An Enterprise Search Strategy can help identify the holistic approach to rolling out and implementing a search solution.&amp;#160; That may be where the usefulness of the term ‘Enterprise’ ends.&lt;/p&gt;  &lt;p&gt;I think it is more constructive to think of search in the way you currently think of your database platform.&amp;#160; Don’t databases require real business applications to be useful to their end users?&amp;#160; Would you attempt to justify the purchase of a database without the needs of a specific group of users in mind?&amp;#160; Search solutions should be approached the same way – they have a specific set of users in mind, and the solution should be tuned to provide the best search experience possible.&lt;/p&gt;  &lt;p&gt;Here is a clear symptom of that problematic assumption: are you having a hard time building a Enterprise Search business case?&amp;#160; If the search solution is inexpensive, like a Google Search Appliance or Microsoft Search Server, then a business case isn’t as important and you probably are using the ‘we just need it’ argument to justify the expense.&amp;#160; That’s valid.&amp;#160; However, if you are spending significantly more on a platform like FAST or Autonomy,&amp;#160; you need a solid business case.&amp;#160; One of the best ways to accomplish that is to know specifically who the solution is for, and precisely what benefit you’ll drive by deploying it.&amp;#160; That concept contradicts the ‘Enterprise’ assumption we often start with.&lt;/p&gt;  &lt;p&gt;My suggestion: look for a group of users that share a common knowledge discovery challenge, and work on building a search solution and a business case around them.&amp;#160; Look for a group that is large enough to support a business case, but not so large that their job functions diverge and therefore their search needs are too broad.&amp;#160; Also, establish an overall Enterprise Search Strategy so this and future search solutions can fit into a cohesive plan.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1337" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Search/default.aspx">Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Microsoft+FAST+Search/default.aspx">Microsoft FAST Search</category><category domain="http://imason.com/imason_Blogs/b/fast_sharepoint_search/archive/tags/Employee+Solution/default.aspx">Employee Solution</category></item><item><title>Event ID: 6875 in Event Viewer after deleting an SPFolder in a SharePoint document library</title><link>http://imason.com/imason_Blogs/b/noorez_khamis/archive/2009/05/14/event-id-6875-in-event-viewer-after-deleting-an-spfolder-in-a-sharepoint-document-library.aspx</link><pubDate>Thu, 14 May 2009 22:20:00 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1334</guid><dc:creator>Noorez Khamis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;ehucsd969j&lt;/p&gt;
&lt;p&gt;I am deleting a folder from a document library using the code:&lt;/p&gt;
&lt;pre class="brush: csharp;"&gt;using (SPSite tempDocLibSite = new SPSite(tempDocLibWebRootUrl))
{
    using (SPWeb tempDocLibWeb = tempDocLibSite.OpenWeb())
    {
        tempDocLibWeb.AllowUnsafeUpdates = true;

        SPFolder tempAttachmentSubFolder = tempDocLibWeb.GetFolder(string.Format(&amp;quot;{0}/{1}/{2}&amp;quot;, 
            tempDocLibName, base.ListId.ToString(), hdnTempAttachmentID.Value));

        &lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#ff0000;"&gt;tempAttachmentSubFolder.Delete();&lt;/span&gt;&lt;/span&gt;

        tempDocLibWeb.Update();

        tempDocLibWeb.AllowUnsafeUpdates = false;
    }
}&lt;/pre&gt;
&lt;p&gt;When it get&amp;rsquo;s to the highlighted line, I get the following error in the event viewer with Event ID: 6875:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Error loading and running event receiver Microsoft.SharePoint.Publishing.Internal.PublishingWebEventReceiver in Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Additional information is below. &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;: There is no file with URL &amp;#39;TempAttachmentsUpload/e4486bd9-1719-4a9d-a8a1-de25924cd49a/0136561e-0d20-4b0d-b7e7-ab1e1ada6218&amp;#39; in this Web. &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The funny thing is that the folder &lt;strong&gt;&lt;em&gt;does&lt;/em&gt;&lt;/strong&gt; exist and &lt;strong&gt;&lt;em&gt;does&lt;/em&gt;&lt;/strong&gt; get deleted.&lt;/p&gt;
&lt;p&gt;There are lots of resources on the web about this event id for SharePoint but it looks like it&amp;rsquo;s an event that is very common for different reasons.&lt;/p&gt;
&lt;p&gt;I am using MOSS SP1 with the December Cumulative Updates.&lt;/p&gt;
&lt;p&gt;It looks like there is a built-in event receiver that is executing when the folder gets deleted which is causing this error.&amp;nbsp; I don&amp;rsquo;t think it should cause this error and it looks like it&amp;rsquo;s a bug, hopefully someone can confirm it or correct my code.&amp;nbsp; I&amp;rsquo;m not sure if it is fixed in SP2 or the April Cumulative Updates though.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;[1] &lt;a rel="me" href="http://technorati.com/claim/ehucsd969j"&gt;Technorati Profile&lt;/a&gt; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1334" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/noorez_khamis/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://imason.com/imason_Blogs/b/noorez_khamis/archive/tags/technical/default.aspx">technical</category></item><item><title>Make Your Legacy Apps Work on the Internet</title><link>http://imason.com/imason_Blogs/b/scott_howlett/archive/2009/04/27/make-your-legacy-apps-work-on-the-internet.aspx</link><pubDate>Mon, 27 Apr 2009 21:30:23 GMT</pubDate><guid isPermaLink="false">ba1d72eb-a51c-4157-8cec-718d26de3334:1282</guid><dc:creator>Scott Howlett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;So, we’re just retiring our first server.&amp;#160; We used to name our servers after our clients, and our first client was MIND – Microsoft Internet Developer magazine, a pre-cursor to MSDN magazine.&amp;#160; It was with nostalgia, that I went looking for that first bit of technical prose… But alas, the Microsoft archives only go back to 2000…&amp;#160; Duh??!!&lt;/p&gt;  &lt;p&gt;Not to be discouraged, I turned to the amazing &lt;a href="http://web.archive.org"&gt;web archive&lt;/a&gt; and they had the copy.&amp;#160; Amazing!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://web.archive.org/web/20000819063214/http://www.microsoft.com/mind/defaultframe.asp?page=/mind/0999/inthisissuefeatureslist0999.htm"&gt;&lt;img border="0" alt="September 1999" src="http://web.archive.org/web/20000819063214/http://www.microsoft.com/mind/images/smallCovers/sept99Back.gif" width="72" height="97" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So, in honour of the now defunct MIND server, I reprint the original “Make Your Legacy Apps Work on the Internet” authored more-or-less 10 years ago, and still right on message.&amp;#160; You have to love the old days when “VB6 COM Objects” were cutting edge, and XML was the be-all-and-end-all-that-it-should-be-the-whole-cover.&amp;#160; Beautiful.&amp;#160; &lt;/p&gt;  &lt;p&gt;Check it on the &lt;a href="http://web.archive.org/web/20001012112710/www.microsoft.com/mind/defaultframe.asp?page=/mind/0999/inthisissuefeatureslist0999.htm"&gt;web archive&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;----&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/mind.htm"&gt;&lt;img border="0" alt="MIND" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/newlogos/smallnewlogo.gif" width="116" height="26" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This article assumes you&amp;#39;re familiar with XML, Microsoft Message Queue, and Visual Basic   &lt;br /&gt;&lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/code/howlett0999.zip"&gt;Download the code&lt;/a&gt; (22KB)&lt;/p&gt;  &lt;p&gt;&lt;img align="top" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/topbar.gif" width="380" height="2" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Make Your Legacy Apps Work on the Internet&lt;/b&gt;    &lt;br /&gt;&lt;i&gt;&lt;b&gt;Scott Howlett and Jeff Dunmall&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;The Internet is increasingly becoming an important path for business-to-business data services. You can use BizTalk and COM to keep your existing systems useful for longer.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;I&lt;/b&gt;n the coming years, most companies will integrate their Internet presence with their mission-critical line-of-business systems. Creating these applications will be the most difficult challenge Internet developers have yet to face. It means enabling interoperability between legacy systems, possibly from different companies, and doing it with the availability and scalability that Internet applications demand. By getting into the right design mindset and making the right technology choices, notably Extensible Markup Language (XML) and Microsoft® Message Queue Services (MSMQ), Internet applications can provide the return-on-investment that has been promised in the past, but rarely delivered.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;First, let’s explore what legacy systems are and why they’re important. We’ll walk you through interoperable Internet application development and the issues involved in building them. Then we’ll build an Internet-based Address Change facility as a traditional Internet application that integrates with existing systems. We’ll also show you how the design is extensible, enabling business-to-business communication using the BizTalk framework. Surprisingly, the framework can be written with only about 100 lines of ASP and Visual Basic® code.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Microsoft will expand the technology available for integration with legacy systems when it releases the Microsoft Enterprise Interop Server, codenamed &amp;quot;Babylon&amp;quot; (see &lt;b&gt;Figure 1&lt;/b&gt;). Babylon delivers application integration with COM Transaction Integrator (COMTI) and an MSMQ-to-MQ &lt;/p&gt;  &lt;p&gt;&lt;img alt="Figure 1: Microsoft Enterprise Interop Server Architecture" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacyfig01.gif" width="407" height="68" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;&lt;b&gt;Figure 1: Microsoft Enterprise Interop Server Architecture&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Series bridge, data integration with OLE DB providers and ODBC drivers, and network/platform integration via an SNA gateway or direct TCP/IP access. We’ll only address the challenges of getting data to the Interop server. To find out more about Microsoft’s interoperability strategy, go to &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/isapi/gomscom.asp?target=/interoperability/"&gt;http://web.archive.org/web/20000617215818/http://www.microsoft.com/isapi/gomscom.asp?target=/interoperability/&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Background&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;If you were at Microsoft TechEd this past May, you probably heard Paul Maritz’s discussion about the upcoming third generation of Internet applications. In his analysis, the first generation involved content publishing based on the HTML standard. The second generation was based on dynamic content using Windows® DNA technology, and the third generation will feature integrated Internet systems that enable more effective line-of-business applications.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Building third-generation Internet systems will demand integration with legacy systems from one or more companies. Companies will be aggressively developing these applications because they know that customers and suppliers will demand integrated systems based on open Internet standards. Increased efficiency and streamlined business processes should have pleasant effects on the bottom line, in part through the competitive advantage gained by providing better and faster service. If a company doesn’t or can’t provide integrated services, business opportunities will likely be lost.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;If you read Don Box’s article, &amp;quot;&lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/isapi/gomscom.asp?target=/msj/0599/complusprog/complusprog.htm"&gt;Windows 2000 Brings Significant Refinements to the COM(+) Programming Model&lt;/a&gt;&amp;quot; (&lt;i&gt;Microsoft Systems Journal&lt;/i&gt;, May 1999), you were probably surprised at the notion that COM components developed before Windows 2000 are often referred to as &amp;quot;legacy&amp;quot; components. You’ve never written any COBOL, so how could you have any legacy code?     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;The terminology shouldn’t surprise anyone. It simply means that you have written software that is part of a production system. Having legacy code is a good thing because the alternative is that none of your code is working in production! So, simply put, a legacy system is any system that exists in production. It’s made of legacy code and the manual processes, such as call centers, that support the system.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Legacy systems often have hundreds of development-years invested in them. This is why it’s so important to evaluate legacy systems and build Internet systems on top of their foundations. With the right design, you will be able to overcome the pitfalls associated with integration and interoperability.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Building line-of-business systems in Internet time (less than six months) demands that existing systems be exploited. Usually, legacy systems have some manual processing where the combined expertise and experience of people is critical. You simply can’t reproduce that effort in your timeframe, and you probably don’t want to anyway—unless you have a penchant for pain or like to rewrite COBOL source code.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Of course, legacy systems aren’t all good news for Internet applications. When you bring them into the fold, you’re adding the most dangerous software villain: the unknown quantity of legacy systems. But on the bright side, you’ve got an excellent starting point because you already have a working system.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Legacy systems are frequently not documented, leaving everyone afraid that doing anything to them might break them. You can’t change any of their code and no one can or will tell you how they work. So there have to be legacy experts on the team, at least for the design period. They’ll be responsible for investigating, researching, and documenting the interfaces, business rules, and other facets of the legacy systems. Finding legacy experts is usually the first problem in building these systems.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;On the technology side—where we’ll focus the rest of this article—there are a number of hurdles to overcome. Integration isn’t always easy. In fact, it almost always involves some pain. But with the introduction of technologies such as XML and application services such as MSMQ, building interoperable systems has never been easier. Microsoft Windows 2000 offers more technology advancements that will make interoperability even easier, notably native support for queued components. Babylon, due in beta in the last quarter of 1999, will provide even more opportunity for legacy integration. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Availability, Performance, and Scalability&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Generally, integration problems fall into three familiar categories: availability, performance/scalability, and exception handling.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;The availability of your application is related directly to the availability of the legacy systems you connect with. Your Internet application likely needs to run 24/7, while your legacy systems may not have the same constraints. They may be scheduled for nightly maintenance or weekend shutdowns. What will your Internet application do when legacy systems are unavailable?     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;From a performance and scalability perspective, the legacy system probably can’t handle the volume of traffic that the Internet site can, at least not in the same form. Including legacy resources in your application increases transaction time, thereby decreasing scalability. Sometimes even connecting to the legacy systems can be a costly operation. If the only interface to the legacy system is through screen scraping (don’t laugh, it happens all the time), then you definitely have a back-end resource bottleneck to overcome in your design.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;If you have any combination of these issues, you must find a way to decouple your legacy systems from your Internet application, making it transparent to your customers. The most effective way to accomplish this is with MSMQ. On the Internet side, you can concurrently send thousands of requests and get excellent performance from MSMQ. On the legacy side, you can process those messages at a pace that the legacy system can handle. If there are only five database connections available through SNA, for example, you can process five messages at a time. This effectively allows you to throttle the load on the legacy system, while at the same time addressing your availability concerns and allowing your Internet application to scale appropriately.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;A third grade French teacher once said, &amp;quot;Pour toutes les règles, il y a des exceptions.&amp;quot; (Every rule has an exception.) We don’t remember much French, but after years in the software business, we’ve refined these words of wisdom: &amp;quot;Every business rule that has existed for more than five years has at least one exception.&amp;quot; And herein lies the third category of integration problem: if every rule can be broken, how do you write a middle tier that enforces the business rules? As a further complicating factor, many of these rules are entrenched in the legacy systems and manual processes (and people) that surround them. So to build a completely automated system, it’s necessary to discover every business rule that’s grown up around the process, and to uncover all the exceptions to the rules.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Realistically, it takes time to flush all of these rules out and code them into your application, and they typically aren’t documented very well. In many cases, this is not possible in a six-month timeframe, so you’ll need to incorporate the manual processes to handle the remaining exceptions, at least in the first version. The golden rule is to make most things automatic and everything else possible, even if it means invoking a manual process.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;For example, if you move to another town, it’s likely that your auto insurance policy needs to be updated to reflect your new neighborhood. So when building an Internet address change system for an insurance company, you have two design choices. You can either reprogram the system to automate the adjustment of the policy, or you can integrate this change within the existing process.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;If you’ve ever worked with an insurance company, option one should send shivers down your spine, especially if you have to deliver your application in six months. Changing a policy involves numerous rules that need to be enforced, many of them for legal reasons. Besides, you’re supposed to be building an address change system, not an automatic policy update system. So the best alternative is to integrate the existing policy update process into the new system. This will save you time (the scarcest resource) in the development cycle because you won’t have to discover every rule and exception up front.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;By incorporating the existing manual processes, you can rely on the expertise of the people who know the system best. Integration makes your life easier by saving you time and headaches. In version 2, after you get the app up and running, you can seek to uncover and incorporate more business rules and thereby automate the system more completely. Don’t underestimate how complex this will be. Even though a division might look like a call center to you, it’s also the brain center for many businesses, and it can’t be easily replaced. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;How to Bring Them Together&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;So how do you overcome the availability, performance/scalability, and exception handling pitfalls? How many new design patterns and technologies do you need to learn? There’s some good news. All three areas can be addressed by one technology choice: a combination of MSMQ and XML. But technology alone won’t save the day. To do it right, you’ll need to change the way you think about application development.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Generally speaking, people are on-demand thinkers. When we’re hungry, we eat; when we’re thirsty, we drink. This type of thinking translates into a design pattern that will leave you dead in the water when it comes to building integrated Internet systems. You have to break this design pattern by thinking asynchronously first, and designing synchronous transactions only as a last resort. If you must use a synchronous transaction, hold on to your hat—in some cases it simply may not be possible with hundreds of users. Benchmark synchronous transactions early to avoid late-breaking scalability problems.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;You also have to get over the common mindset that goes something like this: &amp;quot;If I (re)build everything in the system, all the code will be mine and everything will work.&amp;quot; While this may be true in some cases, it is not the proper approach, especially if you want to finish on time. The key here is to make use of the enormous amount of effort that has been invested in existing systems and processes. If you integrate with an existing process, it’s likely that the development time spent handling exceptions can be reduced by half because the existing process already has built-in exception handling mechanisms.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Finally, you must embrace the versioned approach to software development. If version 1.0 of your application is also meant to be the last version, it is almost certain to fail. A one-version approach will compromise proper system design, the first casualty of increased scope inside the same development schedule. Furthermore, you’ll lose the ability to make course corrections, both in overall architecture and specific features. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;MSMQ and XML&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;As we mentioned previously, the three main problems with integrated systems (availability, performance/scalability, and exception handling) can be addressed with a single technology choice—MSMQ and XML.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Many systems already communicate by passing a simple string. In order for both systems to understand the format and location of the data in the string, it’s probably marked it up with some kind of token system or based on fixed-length fields. XML is the formalization of this concept. It also includes the tools and techniques to make development easier. By using valid XML—XML that conforms to a document type definition (DTD) or schema—industries can standardize on a data format, giving applications the ability to exchange data with a much larger audience. XML provides a great way to model data and represent that data in a simple and powerful format.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;What XML does for data, MSMQ does for transport. MSMQ gives systems a reliable and disconnected path for the transfer of XML between different systems in an organization. It guarantees that the XML is delivered once (and only once) when network conditions permit. If you’re integrating with systems that are widely distributed geographically, not always available, slow, or nonscalable, MSMQ allows you to isolate these systems from your customers. Your customers need not be concerned with your legacy systems because customers never interact directly with them. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Sample Application&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;About a year ago, one of our cars was stolen from the airport. The settlement for my car showed up in the requisite 60 days, but a check for the car’s contents never arrived. After six months or so, we gave the insurance company a call. After all, the Smiths CD that was in the car had to be replaced. The agent said that the second check was indeed sent over five months ago. It turns out that while the auto policy had the new address, the home policy (which insured the contents of the car) still had the old address. The same insurance company held both policies, so the cause of this mishap was surely the lack of integration across their line-of-business systems.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Let’s examine an Internet-based address change facility that solves the problem we just outlined. The insurance company has many internal processes, but we’ll focus on these three parts of the call center: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Auto policy address change: when a customer calls, the change is entered into a database via a terminal session. &lt;/li&gt;    &lt;li&gt;Auto policy change: when a customer calls, an email is sent to an insurance agent, who then reviews the policy and makes the appropriate changes. &lt;/li&gt;    &lt;li&gt;Home policy address change: for a simple address change, a fax is sent to the auto policy division that handles the address change.&lt;/li&gt; &lt;/ul&gt; &lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;In our case, it’s likely the fax was never sent and thus my home policy address was never updated.   &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Let’s take a quick look at the typical Internet solution and highlight some of the pitfalls. We’ll then show you a good second-generation application and its extension to a third-generation app using the approach advocated by BizTalk.org, which was announced at TechEd in May 1999.   &lt;p&gt;&lt;b&gt;Typical Approach&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;The typical approach toward building an Internet-based front end over a legacy system would be to build an HTML form that posts to an ASP page. The ASP code would connect to each of the data sources and execute some SQL to make the address changes. Finally, you’d write some HTML back to the client, indicating the success or failure of the operation. The HTML form would look something like &lt;b&gt;Figure 2&lt;/b&gt;. &lt;/p&gt;  &lt;p&gt;&lt;img alt="Figure 2: A Traditional HTML Form" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacyfig02.gif" width="200" height="250" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;&lt;b&gt;Figure 2: A Traditional HTML Form&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;This solution does not address the availability, performance, scalability, or exception handling challenges. First, availability is not optimal because if any of the data sources are unavailable at submit time, the user will receive an error message. Furthermore, if the underlying data sources run on a mainframe (as most legacy systems do), there may also be transient problems with connectivity through the SNA gateway. And, of course, there are the usual network problems, which may be intensified if the database is located across the WAN.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;There is a big problem with performance: the user is waiting for all database transactions to complete. This can be disastrous, especially at busy periods (end-of-month, holidays, and so on) when legacy systems typically run at or near full capacity. Having this many database connections on a single page also presents scalability problems, especially if connections are limited (which they frequently are in legacy systems) and if there are contention issues. There may even be a show stopper if the transactions are lengthy and are locking resources.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;This system does not exploit existing systems, and there is no exception handling mechanism. There are also less obvious problems with this solution. What if complex business rules need to be enforced? Even worse, what if they had traditionally been enforced by a manual process? What if connectivity to the back-end database is simply not possible (existing instead in a flat file on the mainframe) or a subsystem is down for regular maintenance? What if you want to share this information with an affiliate company? This may sound like worst-case planning, but these are common concerns at large corporations. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;A Better Solution&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Now, let’s take a look at how this system could be built to address the shortcomings of the traditional approach. As you read, keep three &amp;quot;VIA&amp;quot; (Version, Integrate, Asynchronous) rules in mind: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Plan for another &lt;i&gt;version&lt;/i&gt; (you don’t have to do everything in version 1.0). &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Integrate&lt;/i&gt; existing systems and processes (don’t start from scratch). &lt;/li&gt;    &lt;li&gt;Think &lt;i&gt;asynchronous&lt;/i&gt; first (isolate existing systems).&lt;/li&gt; &lt;/ul&gt; &lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;From the user’s perspective, the interface is still an HTML form with the same appearance as the one shown in &lt;b&gt;Figure 2&lt;/b&gt;. Instead of posting the HTML form, you’re going to represent the data in XML and post the XML to the server. An excellent source of information about XML was Dino Esposito’s &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0699/cutting/cutting0699.htm"&gt;June 1999&lt;/a&gt; Cutting Edge column.   &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;The project starts with a DTD, which defines the structure of the XML. The source code is shown in &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig3"&gt;&lt;b&gt;Figure 3&lt;/b&gt;&lt;/a&gt;. DTDs have their place, but they don’t describe data in a way that is useful to data architects. A new standard, schemas, is emerging. Schemas use XML itself to describe the XML document structure. We chose to use XML schemas for this reason. Schemas are also a key part of the BizTalk initiative, which was started to facilitate business-to-business communications using XML.   &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;The DTD and schema serve the same goal: they allow the XML parser to validate an XML document against a reference to make sure it conforms to the published standard. An XML document that conforms to a DTD or schema is said to be valid. Schemas are currently only supported by Microsoft Internet Explorer 5.0. A sample Customer schema is shown in &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig4"&gt;&lt;b&gt;Figure 4&lt;/b&gt;&lt;/a&gt;.   &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Before we get into the nitty-gritty implementation details, let’s go over the entire solution first. We’re taking a straightforward, six-step approach (see &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig5"&gt;&lt;b&gt;Figure 5&lt;/b&gt;&lt;/a&gt;):   &lt;ol&gt;   &lt;li&gt;Generate XML on the client machine. &lt;/li&gt;    &lt;li&gt;Submit the XML to the server. &lt;/li&gt;    &lt;li&gt;Package the XML into an MSMQ message and send it to the Distributor. &lt;/li&gt;    &lt;li&gt;Send XML confirmation back to client. &lt;/li&gt;    &lt;li&gt;Based on data stored in the registry, the Distributor will send one or more additional messages (one for each registered system). &lt;/li&gt;    &lt;li&gt;These messages will in turn be received by Handlers, which will initiate a manual process or execute an address change in a particular system.&lt;/li&gt; &lt;/ol&gt; &lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Now that you have the schema for the XML document, let’s take a look at how to generate the XML document on the client (see &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig6"&gt;&lt;b&gt;Figure 6&lt;/b&gt;&lt;/a&gt;). Most of the work is done in AddXMLNode. Notice that the schema definition is added to each node. This ensures that every node in the document is bound to the XML schema. By setting the DOMDocument.async property to false and then checking the DOMDocument.parseError code, you can determine whether the generated XML is valid. The resulting XML document is shown in &lt;b&gt;Figure 7&lt;/b&gt;.   &lt;p&gt;&lt;img alt="Figure 7: Customer XML Document" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacyfig07.gif" width="350" height="257" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;&lt;b&gt;Figure 7: Customer XML Document&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;At this point, you’ve defined your XML schema, created an XML document on the client, and validated it against the schema. Now it’s time to submit it to the server. To post the XML to the page, use the XMLHTTPRequest object included in the msxml.dll that ships with Internet Explorer 5.0. Using this object offers the best performance (by providing the leanest possible HTTP POST forms without compression) and the most straightforward code. The client-side source code to post the XML is shown in the SendXML method in &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig6"&gt;&lt;b&gt;Figure 6&lt;/b&gt;&lt;/a&gt;. Prior to Internet Explorer 5.0, the preferred method for HTTP posting would have been through the WinInet API. We’ve seen the code that does this, and it’s not pretty.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;The code to receive the XML on the server is shown in &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig8"&gt;&lt;b&gt;Figure 8&lt;/b&gt;&lt;/a&gt;. Note the call to set the async property of the XMLDOM object to False. If you omit this line, the resolution of the schema and the eventual parsing of the document will be performed asynchronously, which is not what you want in this case. The source code that receives XML on the server is shown in the ProcessRequest method in &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig8"&gt;&lt;b&gt;Figure 8&lt;/b&gt;&lt;/a&gt;. The SendMessage function sends an MSMQ message to the Distributor here as well.     &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;The address change message is sent from the ASP page to the source queue shown in &lt;b&gt;Figure 9&lt;/b&gt;. When it arrives, MSMQ notifies a Listener that calls the Distributor, a Microsoft Transaction Services (MTS) component. The Distributor pulls the message off the queue and sends the XML body to the destination queues as specified in the registry. Should something go wrong while sending the messages, the transaction rolls back, leaving the message on the source queue and nothing in the destination queues. More detailed information about sending and receiving MSMQ messages is available in Ted Pattison’s article, &amp;quot;&lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/isapi/gomscom.asp?target=/msj/0599/msmq/msmq.htm"&gt;Using Visual Basic to Integrate MSMQ into Your Distributed Applications&lt;/a&gt;&amp;quot; (&lt;i&gt;Microsoft Systems Journal&lt;/i&gt;, May 1999). &lt;/p&gt;  &lt;p&gt;&lt;img alt="Figure 9: Distributor Architecture" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacyfig09.gif" width="250" height="168" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;&lt;b&gt;Figure 9: Distributor Architecture&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;To take a message off a queue in an MTS transaction, the application removing the message must be running locally on the same machine as the queue and it must be running in MTS. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;The Listener&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;MSMQ notifies the Listener application (see &lt;b&gt;Figure 10&lt;/b&gt;) when a message arrives by declaring an MSMQEvent object called WithEvents: &lt;/p&gt;  &lt;pre&gt; Dim WithEvents msmqMsgEvent As MSMQEvent
 Dim msmqQue As MSMQQueue&lt;/pre&gt;

&lt;p&gt;To set up notification in the Visual Basic-based listener, you’d then use the following code: &lt;/p&gt;

&lt;pre&gt; Set msmqInfo = CreateObject(&amp;quot;MSMQ.MSMQQueueInfo&amp;quot;)
 Set msmqMsgEvent = CreateObject(&amp;quot;MSMQ.MSMQEvent&amp;quot;)
         
 msmqInfo.FormatName = txtSourceQueue
 Set msmqQue = msmqInfo.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)
 msmqQue.EnableNotification Event:=msmqMsgEvent&lt;/pre&gt;

&lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Instead of using a path name here, you should use a format name to increase performance. Using a path name requires a query to the Message Queue Information Store (MQIS). That RPC call adds significant overhead to the open queue request. Using a format name, on the other hand, requires only a single RPC call to the MQIS (if it is not a direct format name). After the first call, MSMQ caches the connection information, which removes the site controller from the picture and increases performance. This will be particularly relevant in the MTS Distributor component. &lt;/p&gt;

&lt;p&gt;&lt;img alt="Figure 10: The Listener Application" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacyfig10.gif" width="400" height="76" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;&lt;b&gt;Figure 10: The Listener Application&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;When an MSMQEvent_Arrived event is fired, the Visual Basic-based component calls the Distributor in MTS with the format name of the source queue. It does not pass a reference to the source queue directly; calling ReceiveCurrent on the reference would not include the source message in the transaction because the queue was not opened in the context of the transaction. If the transaction aborted, the message would neither appear in the destination queue nor remain in the source queue. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;The Distributor&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Based on data stored in a local database, the Distributor will send one or more additional messages based on the contents of the registry (see &lt;b&gt;Figure 11&lt;/b&gt;). The source code for the Distributor is shown in &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig12"&gt;&lt;b&gt;Figure 12&lt;/b&gt;&lt;/a&gt;. The messages sent by the Distributor will in turn be received by Handlers, which will initiate and execute an address change for a particular system. The architecture of a Handler is very similar to the Distributor, so we’re leaving out the details. &lt;/p&gt;

&lt;p&gt;&lt;img alt="Figure 11: Registry Values" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacyfig11.gif" width="500" height="155" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;&lt;b&gt;Figure 11: Registry Values&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;In a more robust system, the Distributor might determine the destination based on a database lookup and the type of XML schema used in the body of the message. This more flexible architecture could be used to process other message types as well. 

  &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;&lt;b&gt;Figure 9&lt;/b&gt; gives the impression that the Distributor and destination queues are all running side-by-side on the same machine. While this is possible, it is equally likely that the Handlers would be running in separate offices, maybe even in different countries. This transparency gives your application the ability to communicate over slow links or WAN connections, knowing that your message will be processed when network conditions permit. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Benefits of this Solution&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Before going into the benefits of this architecture, take a look at the amount of code written for this sample. Granted, the sample app is straightforward, but the table in &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig13"&gt;&lt;b&gt;Figure 13&lt;/b&gt;&lt;/a&gt; shows just how little source code is required to build the framework around an integrated Internet site. 

  &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;As you can see in &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig13"&gt;&lt;b&gt;Figure 13&lt;/b&gt;&lt;/a&gt;, there is not much source code involved in our sample application. Remember VIA? This solution fulfills all three parts: &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Versioned: the first version of this system was simple and could be delivered in a realistic timeframe. However, the design and technologies chosen allow for easy extensibility in the future (see the BizTalk section that follows). &lt;/li&gt;

  &lt;li&gt;Integrated: we did not start this project from scratch. For example, the existing fax-based submission process was incorporated rather than attempting to redo it from scratch. By doing this, we did not have to incorporate the business rules surrounding modifications to insurance policies. &lt;/li&gt;

  &lt;li&gt;Asynchronous: the system has very few synchronous processes and the legacy systems are isolated from the customer. This optimizes the availability of the system. Furthermore, the performance and scalability of the system will be exceptional because there are no synchronous database connections.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;Let’s take a look at a possible extension of this simple application. Suppose an insurance company was going to provide an address change service as part of their policies. This service would update the customer’s profile at their bank at the same time. How would the insurance company be able to provide this service? This is where the BizTalk framework fits in. BizTalk is dedicated to establishing, publishing, and maintaining industry-specific XML schemas to facilitate the exchange of information between businesses. Instead of using a local XML schema, this application might instead use a schema located directly on the BizTalk site (&lt;a href="http://web.archive.org/web/20000617215818/http://www.biztalk.org/"&gt;http://web.archive.org/web/20000617215818/http://www.biztalk.org/&lt;/a&gt;). 

&lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;The next step would be to register another data service with the Distributor. This data service would simply post valid XML—according to the BizTalk customer schema—to the bank, which would then process the request. In effect, the bank would not be able to tell if the XML request came directly from a customer or via his insurance company. Version 3 of MSMQ is slated to support native HTTP message delivery that extends the guaranteed delivery concept across the Internet (version 2 is scheduled for release as part of Windows 2000). 

&lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt; &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/legacy/legacytextfigs.htm#fig14"&gt;&lt;b&gt;Figure 14&lt;/b&gt;&lt;/a&gt; extends the conceptual diagram of the system, making this a business-to-business solution. As you can see, extending a second-generation application to include business-to-business operations is quite natural—especially if the BizTalk framework is used to standardize on the use of a single XML schema. 

&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;To build third-generation Internet applications, you’ll need to build an interoperable system. Look at legacy systems and processes as opportunities to be exploited because the technology exists to address their shortcomings. By making the right technology choices now, communication with the systems of other companies will be a natural extension in future versions. 

  &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;It’s clear that XML is emerging as the standard data format for communication between systems. On the transport side, MSMQ is an easy-to-use, asynchronous mechanism that can increase both performance and scalability. It will also isolate legacy systems and increase the availability of the system. 

  &lt;br /&gt;&lt;img src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/indent.gif" width="10" height="4" alt="" /&gt;To build this new brand of applications, you’ll need to focus on the VIA design techniques we discussed in this article. Using these technologies and the VIA design concepts, you should be able to find the way to your third-generation Internet application. Good luck!

  &lt;br /&gt;&lt;img align="right" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/dingbats/ending.gif" width="23" height="14" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;From the &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/0999/inthisissue0999.htm"&gt;September 1999&lt;/a&gt; issue of &lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/mind.htm"&gt;Microsoft Internet Developer&lt;/a&gt;. Get it at your local newsstand, or better yet, &lt;/i&gt;&lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/subscribe.htm"&gt;&lt;i&gt;subscribe&lt;/i&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt="MSDN" src="http://web.archive.org/web/20000617215818/http://www.microsoft.com/mind/images/logos/msdnnew.gif" width="200" height="22" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/isapi/gomsdn.asp?TARGET=/xml/articles/hess061499.asp"&gt;http://web.archive.org/web/20000617215818/http://www.microsoft.com/isapi/gomsdn.asp?TARGET=/xml/articles/hess061499.asp&lt;/a&gt;

  &lt;br /&gt;and

  &lt;br /&gt;&lt;a href="http://web.archive.org/web/20000617215818/http://www.microsoft.com/isapi/gomsdn.asp?TARGET=/xml//default.asp"&gt;http://web.archive.org/web/20000617215818/http://www.microsoft.com/isapi/gomsdn.asp?TARGET=/xml//default.asp&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://imason.com/aggbug.aspx?PostID=1282" width="1" height="1"&gt;</description><category domain="http://imason.com/imason_Blogs/b/scott_howlett/archive/tags/Microsoft+Message+Queue/default.aspx">Microsoft Message Queue</category><category domain="http://imason.com/imason_Blogs/b/scott_howlett/archive/tags/legacy/default.aspx">legacy</category><category domain="http://imason.com/imason_Blogs/b/scott_howlett/archive/tags/XML/default.aspx">XML</category><category domain="http://imason.com/imason_Blogs/b/scott_howlett/archive/tags/technical/default.aspx">technical</category><category domain="http://imason.com/imason_Blogs/b/scott_howlett/archive/tags/archive/default.aspx">archive</category><category domain="http://imason.com/imason_Blogs/b/scott_howlett/archive/tags/Visual+Basic/default.aspx">Visual Basic</category></item></channel></rss>