<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.rightpoint.com/community/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>Rightpoint Consulting</title><link>http://www.rightpoint.com/community/blogs/</link><description>Where Business &amp; Technology Converge</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Debug Build: 31106.3070)</generator><item><title>Login or Logon?</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/05/16/login-or-logon.aspx</link><pubDate>Wed, 16 May 2012 06:19:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2957</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="Text"&gt;As I&amp;#39;ve been template-izing my ASP.NET MVC work (&lt;a target="_blank" href="http://chrisdomino.com/blog/post/A-Really-Sweet-MVC-3-Project-Template-Part-1-The-Infrastructure" class="Link"&gt;here&lt;/a&gt; and &lt;a target="_blank" href="http://chrisdomino.com/blog/post/A-Really-Sweet-MVC-3-Project-Template-Part-2-The-Web-Project" class="Link"&gt;here&lt;/a&gt;) and thinking about public-facing websites holistically, I came across an interesting metaphor around users, applications, and the Internet itself. I found a bug in the code I posted (and, yes, it&amp;#39;s been fixed) in my Account controller where a view was named &amp;quot;Logon&amp;quot; and its backing Action was named &amp;quot;Login.&amp;quot; My initial reaction was of course that I simply had to follow MVC conventions and just match them up. &lt;/p&gt;
&lt;p class="Text"&gt;Since it was faster to rename the Login method in the controller to Logon than it was to rename the view&amp;#39;s cshtml file, I went with &amp;quot;Logon.&amp;quot; But that looked kinda funny. It sort of makes me think of the name of a species from a science fiction movie.&amp;quot;The Logons are invading sector 4G7!&amp;quot; or whatever. So what about Login? I changed both components to this, and liked it a little better. &lt;/p&gt;
&lt;p class="Text"&gt;&amp;quot;Login,&amp;quot; for whatever typographical reason, still manifests that a verb and a preposition have been smushed together into a verbosition, which is a part of speech I just invented. So from a glance at a webpage, seeing &amp;quot;Logon&amp;quot; makes me think of aliens while &amp;quot;Login&amp;quot; makes me think of passwords. So, psychologically, I&amp;#39;m going with the latter, both in terms of intuition and grammatical aesthetics. &lt;/p&gt;
&lt;p class="Text"&gt;But I was still curious about this metaphor. Well, it&amp;#39;s not really a &lt;span class="Italic"&gt;metaphor&lt;/span&gt; per say; it&amp;#39;s not like saying that &amp;quot;Authentication is like the facial recognition region of your brain&amp;quot; or &amp;quot;Logging in/on is like falling in love&amp;quot; or anything like that. It&amp;#39;s really more of a physical consideration around an ethereal action. &lt;/p&gt;
&lt;p class="Text"&gt;All these ones and zeros are floating around in the air; files, web pages, databases, etc. don&amp;#39;t exist as physical entities. Of course, there are servers and circuit boards and chips and transistors. But there&amp;#39;s no way to reach out and &lt;span class="Italic"&gt;touch&lt;/span&gt; a web page as you would a newspaper. (Or at least not yet...) But like I said, I started thinking about this ethereal stuff more concretely anyway. &lt;/p&gt;
&lt;p class="Text"&gt;So do you log &lt;span class="Italic"&gt;into&lt;/span&gt; a site or &lt;span class="Italic"&gt;onto&lt;/span&gt; a site? I&amp;#39;m thinking about these verbs physically. When you&amp;#39;re using a site, are you physically in side of it? Or physically on top of it? What do each of these mean? I&amp;#39;m going to dig into metaphorical cyber space here, and hopefully find some sort of relevance for us back in the real world. &lt;/p&gt;
&lt;p class="Text"&gt;Like I said, I prefer login to logon (neither of which interestingly offends Word&amp;#39;s spell checker). Comparing a web site to a house: you can visit different pages (or rooms) connected by navigation links (doors) which can be locked (security). Or course there are also architectural similarities where sub systems support the rooms or pages that visitors are consuming. The word &amp;quot;plumbing&amp;quot; is used to refer to the minutia of data access layers, business objects, and other non-UI functionality. And we &amp;quot;wire&amp;quot; up event handlers just as an electrician wires up a fuse box. &lt;/p&gt;
&lt;p class="Text"&gt;So when you get invited to a house party, and you ring the bell, are you asked to &amp;quot;come inside&amp;quot; or &amp;quot;come onside&amp;quot; their place? If I showed up to a friend&amp;#39;s apartment and was asked to &amp;quot;come onside&amp;quot; I wouldn&amp;#39;t really know what to do. You are &lt;span class="Italic"&gt;in&lt;/span&gt; the house. It is perfectly valid to be &lt;span class="Italic"&gt;on&lt;/span&gt; a house, but that is nonsensical in the context of a social visit. And, living downtown Chicago, I&amp;#39;ve been on plenty of rooftop decks and patios; although they are indeed situated on top of a building, they are used as room rather than a roof. So while you&amp;#39;re technically outside (and onside), you&amp;#39;re logically inside; you&amp;#39;re still constrained by floors and walls and doors. &lt;/p&gt;
&lt;p class="Text"&gt;It&amp;#39;s the same story when you visit a web site. You are inside it. You can&amp;#39;t see the rest of the Internet when you&amp;#39;re on a particular site. In fact, the web is rather opaque to that extent: you are always using a page, or an FTP folder, or a network drive. There&amp;#39;s no ubiquitous &amp;quot;lobby&amp;quot; to the Internet. You&amp;#39;re always somewhere. You&amp;#39;re not on a site. If you were, it would be like being &lt;span class="Italic"&gt;on&lt;/span&gt; a house or apartment building. &lt;/p&gt;
&lt;p class="Text"&gt;When you&amp;#39;re standing atop a tall building, you can&amp;#39;t really say that you&amp;#39;re in it, because you can see what&amp;#39;s around it. When you&amp;#39;re really &lt;span class="Bold"&gt;IN&lt;/span&gt;side something, its four walls define the extent of your current universe. It&amp;#39;s like being in a tent in the middle of the forest. It&amp;#39;s sort of like being in love. But when you&amp;#39;re on something, it is elevating you to see bey&lt;span class="Bold"&gt;ON&lt;/span&gt;d it. It&amp;#39;s serving you, giving you a boost, almost obsequiously. &lt;/p&gt;
&lt;p class="Text"&gt;Or think of it in terms of time. If you&amp;#39;re &amp;quot;on time&amp;quot; then you&amp;#39;ve mastered time; you are on top of it as you are &amp;quot;on schedule&amp;quot; or &amp;quot;on task&amp;quot; or &amp;quot;on mark.&amp;quot; You are perched on time&amp;#39;s shoulders, staying just above it or ahead of it. However, if you are &amp;quot;in time&amp;quot; that generally means that you had to expedite something or in some way put yourself at disease to arrive punctually. You are in time; you are inside of time, it owns you and swallows you up. &lt;/p&gt;
&lt;p class="Text"&gt;A good web site should be immersive, starting with conveying to its users that they are &amp;quot;in&amp;quot; it, and ultimately getting to a point where they don&amp;#39;t even realize they are using a site at all; they are simply doing the thing that your site allows them to do. It&amp;#39;s like letting your mind wander while you jog and forgetting, for only a few seconds at a time, that you&amp;#39;re actually running. &lt;/p&gt;
&lt;p class="Text"&gt;Compare this to being &amp;quot;on&amp;quot; a site: you&amp;#39;re just perched up there, deciding if you want to dive in. It&amp;#39;s like standing on the bank of a pond with your shoes and socks off. There&amp;#39;re no walls and the water&amp;#39;s cold. But like I said, there&amp;#39;s no cyber-lobby; you&amp;#39;re in or you&amp;#39;re out. Even search engines are still just sites. Operating systems are really just programs! There&amp;#39;s no &amp;quot;white room&amp;quot; like in &lt;span class="Italic"&gt;The Matrix&lt;/span&gt; when everything&amp;#39;s loading. You are logged into a site or an app or a computer; the only thing you&amp;#39;re &amp;quot;on&amp;quot; is probably a chair of some sort. &lt;/p&gt;
&lt;p class="Text"&gt;There&amp;#39;s no lobby, no starting point, no origin: just a closed system of circuit boards wired together. Much like cells in an organism, everything&amp;#39;s specialized; some of these circuit boards are grouped into database tables and some are really good at being memory processes while others are soldered together to make network cards or threaded into Ethernet cables. These organisms form an ecosystem that is the Internet. It&amp;#39;s the universe that all one&amp;#39;s and zero&amp;#39;s live in. &lt;span class="Italic"&gt;In&lt;/span&gt;. &lt;/p&gt;
&lt;p class="Text"&gt;So when we think of being &amp;quot;on&amp;quot; something, the Internet itself is the lobby. Everything is the starting point. I don&amp;#39;t want to get into quantum mechanics, but like electrons in the cells above, all websites are everywhere at once, buzzing around with no exact, permanent physical location. IP addresses change, hard drives change, and servers change; web sites live on in one layer of abstraction on top another. &lt;span class="Italic"&gt;On&lt;/span&gt;. &lt;/p&gt;
&lt;p class="Text"&gt;The &amp;quot;on&amp;quot; for us being &amp;quot;on line&amp;quot; is our Internet connection. We are &amp;quot;on&amp;quot; the &lt;span class="Bold"&gt;Internet&lt;/span&gt;, &lt;span class="Bold"&gt;connected&lt;/span&gt; by a &amp;quot;line,&amp;quot; whether it&amp;#39;s a phone line or a fiber optic line or something in between. Once your NIC does its thing and DNS does its thing, you are online; you are on the Internet. You&amp;#39;re connected; you have the potential to visit any resource in the whole world to which you have access, and login to it. The Internet is what you&amp;#39;re on whenever you&amp;#39;re in a site, but you&amp;#39;re never actually on it; only inside of one logical piece of it at a time. &lt;/p&gt;
&lt;p class="Text"&gt;So we&amp;#39;re online and logged in. There&amp;#39;s really only one more positional metaphor I&amp;#39;d like to play with. We&amp;#39;ve talked about servers and pages and networks. But there&amp;#39;s one more facet of being online that&amp;#39;s really only half online and half logged in: Email. You&amp;#39;re not &lt;span class="Italic"&gt;on&lt;/span&gt; Email. You&amp;#39;re not &lt;span class="Italic"&gt;in&lt;/span&gt; Email. You&amp;#39;re &lt;span class="Italic"&gt;at&lt;/span&gt; Email. Of course, you need to be online to receive and send Email, but not to read it, compose it, sort it, delete it, etc. &lt;/p&gt;
&lt;p class="Text"&gt;And of course, you need to login to &lt;span class="Italic"&gt;something&lt;/span&gt; to access Email. If you use Gmail, or any other web-based Email client, then it&amp;#39;s pretty much the same story as any other website, except the content just happens to be listings of messages. But what about checking Email on your phone? Or via Outlook at work? These are client programs, and use your credentials the same way a login form would on a page to log you in. However, unlike the web, you can still do at least &lt;span class="Italic"&gt;some&lt;/span&gt; things if you&amp;#39;re offline. In a way, you&amp;#39;re offline &lt;span class="Italic"&gt;and&lt;/span&gt; logged in! &lt;/p&gt;
&lt;p class="Text"&gt;But the &amp;quot;at&amp;quot; component is what&amp;#39;s interesting. Before, I said that you&amp;#39;re not &amp;quot;in&amp;quot; your Email. And that might seem to be true at first; a lot of clients (especially in the SharePoint world) tell me that they &amp;quot;live in their Email.&amp;quot; And on the surface, that&amp;#39;s valid. However, if you dig a bit, you see that they don&amp;#39;t live in their &lt;span class="Italic"&gt;Email&lt;/span&gt;, they live in their Email &lt;span class="Italic"&gt;client&lt;/span&gt;. The molecules of air that support such a life are the Email messages themselves. And these messages would never reach them and oxygenate their inboxes if they didn&amp;#39;t know where the person was &lt;span class="Italic"&gt;at&lt;/span&gt;. &lt;/p&gt;
&lt;p class="Text"&gt;So in much the same way you live at a street address, you very much so live at an Email address as well. You have a unique name at a unique location. You might live in a house...that&amp;#39;s on a street...but at an address. If you standing on top of a sky scrapper, and fired up a mapping application on your phone, it wouldn&amp;#39;t be able to discern your location with respect to the building. As far as your GPS is concerned, you&amp;#39;re &lt;span class="Italic"&gt;at&lt;/span&gt; the building, not in it or on it. &lt;/p&gt;
&lt;p class="Text"&gt;In the Internet universe, you&amp;#39;re in some things, on some things, and at some things. For me, the takeaway from these metaphors is the realization that positional pronouns can help us design better systems. If you&amp;#39;re a web person, whether you&amp;#39;re technical or creative, (or indeed both) image your users being &lt;span class="Italic"&gt;in&lt;/span&gt; your work. Is it immersive? Is it intuitive? Do people get excited about using it and feel compelled to share it with their friends? Does it make their lives easier? &lt;/p&gt;
&lt;p class="Text"&gt;If you&amp;#39;re a hardware or network person, consider the experience of users being &lt;span class="Italic"&gt;on&lt;/span&gt; your infrastructure. Is it fast? Is it &lt;span class="Italic"&gt;really really&lt;/span&gt; fast? Is it reliable? Does it protect itself from outages or data loss? Does it scale? Are you doing everything you can to ensure that your corner of the Internet is a safe environment for people to store their work? &lt;/p&gt;
&lt;p class="Text"&gt;And if you&amp;#39;re an administrator, be cognizant that users have identities &lt;span class="Italic"&gt;at&lt;/span&gt; your location. This goes beyond just Email: network accounts, authentication, authorization, and all of that come into play as well when someone is at somewhere dot com. Is onboarding simple and automated? Are passwords managed well? Are permissions granted - and revoked - properly? Does everyone have everything they need? &lt;/p&gt;
&lt;p class="Text"&gt;Think about this stuff and build beautifully. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2957" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Web+Metaphor/default.aspx">Web Metaphor</category></item><item><title>A Really Sweet MVC 3 Project Template: Part 2 – The Web Project</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/05/04/a-really-sweet-mvc-3-project-template-part-2-the-web-project.aspx</link><pubDate>Fri, 04 May 2012 21:11:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2955</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="Text"&gt;In &lt;a target="_blank" href="http://chrisdomino.com/blog/post/A-Really-Sweet-MVC-3-Project-Template-Part-1-The-Infrastructure" class="Link"&gt;Part 1&lt;/a&gt; of this series, I introduced my version of a template for ASP.NET MVC 3 projects that contains the data access layer, a common library, and some other components that I tend to reuse on every site. Before diving into the final slice of the pie, the web project itself, I want to reiterate that this template isn&amp;#39;t supposed to be the end-all and be-all of MVC projects; it&amp;#39;s the stuff I need 90% of the time; use the cloner (code that&amp;#39;ll be included in this post that clones folder structures, replaces guids, and other fun stuff) and strip out what you don&amp;#39;t need. &lt;/p&gt;
&lt;p class="Text"&gt;Starting from the Visual Studio solution we created in Part 1, add a new MVC 3 Web Application. Choose the &amp;quot;Empty&amp;quot; template, which only provisions the main MVC folders (models, views, and controllers) and pulls in the latest jQuery, ASP.NET AJAX, and modernizer JavaScript files, and a few other goodies. Next add references to our ClientB.Common and ClientB.Data projects. &lt;/p&gt;
&lt;p class="Text"&gt;I usually end up deleting the &amp;quot;Content&amp;quot; folder and all the theme crap under it in favor adding a &amp;quot;Styles&amp;quot; folder with a single Site.css stylesheet under it. All the jQuery theming stuff is cute and all, but it just feels a bit overkill to me. Besides, these assets aren&amp;#39;t really &amp;quot;content;&amp;quot; the content is in the MVC views. But I&amp;#39;ll leave it in the template (however, the stylesheet will be moved into the above-menioned &amp;quot;Styles&amp;quot; folder) in case you need it. Included in my CSS are a few pervasive styles that I&amp;#39;ve found useful on many sites I&amp;#39;ve done. Here they are: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;html&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;overflow-y&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;scroll&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;body&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;margin&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;0px&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;height&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;100%&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;font-size&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;10pt&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;font-family&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;arial&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;textarea&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;padding&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;5px&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;resize&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;none&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;outline&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;none&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;height&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;100px&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;font-family&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;arial&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;textarea:focus&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;input:focus&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;outline&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;none&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;a&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;font-size&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;10pt&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;text-decoration&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;none&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;a:focus&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;outline&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;none&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;a img&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;border&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;none&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;input[disabled=&amp;quot;disabled&amp;quot;]&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;input.disabled&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;cursor&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;default&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;color&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;graytext&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;input[type=&amp;quot;text&amp;quot;]&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;padding&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;5px&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;input[type=&amp;quot;submit&amp;quot;]&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;margin&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;0px&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;border&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;none&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;padding&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;0px&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;color&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;#0071bc&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;font-size&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;10pt&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;cursor&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;pointer&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;background&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;transparent&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;.label&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;color&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;#000000&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;font-size&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;9pt&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;.labelerror&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;border&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;none&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;color&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;#ff0000&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span style="padding-left:10px;"&gt;&lt;span class="ClassName"&gt;font-size&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;9pt&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;To round out the folder maintenance, I also create an &amp;quot;Images&amp;quot; folder at the root to store visual assets, as well as add a catch-all JavaScript file named &amp;quot;ClientB.js&amp;quot; to the &amp;quot;Scripts&amp;quot; folder. The next big chunk to tackle is the web.config file. We&amp;#39;re going to be adding not only app settings and connection strings, but also configuring the ASP.NET Membership provider, making things easier when working with areas, and a few other miscellaneous updates. &lt;/p&gt;
&lt;p class="Text"&gt;First, the connection strings. Copy in the one for Entity Framework in the Data project&amp;#39;s app.config file with a name &amp;quot;Database&amp;quot; and pull out the actual connection string for another entry called &amp;quot;Membership.&amp;quot; This second, more conventional one will be used by our authentication provider. Here&amp;#39;s what it should look like: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;connectionStrings&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Membership&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; connectionString&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;[dev connection string]&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Database&lt;span class="ClassName"&gt; connectionString&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;[dev connection string]&amp;amp;quot;&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; providerName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Data.EntityClient&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;connectionStrings&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Next we want to use the Visual Studio 2010 feature that allows you to map web.config file modifications to build configurations. Ideally, your &amp;quot;Debug&amp;quot; settings in Configuration Manager match your local / development / staging / test servers, and &amp;quot;Release&amp;quot; mode matches production. If you have different environments or multiple developers, you might want to create additional configurations. This is way better than checking a web.config file into TFS with commented out settings blocks for each team member. Adorn each setting with the following &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/dd465326.aspx" class="Link"&gt;transformation&lt;/a&gt; attributes where appropriate in the web.config.release file: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;?&lt;/span&gt;&lt;span class="Keyword"&gt;xml&lt;/span&gt;&lt;span class="ClassName"&gt; version&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;1.0&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;configuration&lt;/span&gt;&lt;span class="ClassName"&gt; xmlns:xdt&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;http://schemas.microsoft.com/XML-Document-Transform&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;appSettings&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; key&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;URL&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; xdt:Transform&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;SetAttributes&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; xdt:Locator&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Match(key)&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; value&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;http://clientb.com&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;appSettings&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;connectionStrings&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;clear&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Membership&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; xdt:Transform&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;SetAttributes&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; xdt:Locator&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Match(name)&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; connectionString&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;[prod connection string]&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Database&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; xdt:Transform&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;SetAttributes&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; xdt:Locator&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Match(name)&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; connectionString&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;[prod connection string]&amp;amp;quot;&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; providerName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Data.EntityClient&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;connectionStrings&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;system.web&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;compilation&lt;/span&gt;&lt;span class="ClassName"&gt; xdt:Transform&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;RemoveAttributes(debug)&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;system.web&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;configuration&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;This way, when you build in release (or whatever) mode, Visual Studio will poop out the appropriately-generated web.config file. Notice that one of the app settings here is the URL to the site. Why, you might ask, would some of these settings be here while others are implemented as constants in ClientB.Utilities? Basically, if a string is dynamic (in terms of environment) it should be an app setting. A good example of this is an Email address from which automated notifications are sent. In development, you might want to use your own; in production, a generic one should be selected. However, something like the name of the site or an Id that&amp;#39;s being used for a third party integration (like a credit card merchant account) will be constant across all configurations. I throw these in the &amp;quot;constants&amp;quot; class to avoid hard coding and allow site-wide changes (or clones for new sites) to be executed easily and safely. &lt;/p&gt;
&lt;p class="Text"&gt;Next is a tweak that makes areas able to consume assets in the &amp;quot;root&amp;quot; of the application. I&amp;#39;m not too versed in the details here, but it&amp;#39;s one of those &amp;quot;do this and it works&amp;quot; kind of things. Take the following blob from the web.config file under &amp;quot;Views&amp;quot; and move it to the root one: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;system.web.webPages.razor&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;host&lt;/span&gt;&lt;span class="ClassName"&gt; factoryType&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;pages&lt;/span&gt;&lt;span class="ClassName"&gt; pageBaseType&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Web.Mvc.WebViewPage&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;namespaces&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Web.Mvc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Web.Mvc.Ajax&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Web.Mvc.Html&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Web.Routing&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;namespaces&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;pages&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;system.web.webPages.razor&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Next, to make EF assemblies available application-wide, add the following under system.web/compilation/assemblies: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt;&lt;span class="ClassName"&gt; assembly&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Data.Entity,&amp;nbsp;Version=4.0.0.0,&amp;nbsp;Culture=neutral,&amp;nbsp;PublicKeyToken=b77a5c561934e089&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Now let&amp;#39;s get into the authentication stuff. First of all, here&amp;#39;s the basic goo that&amp;#39;s needed to wire up the membership and role providers: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;membership&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;providers&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;clear&lt;/span&gt;&lt;span class="Operator"&gt; /&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt; &lt;span class="ClassName"&gt;name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;AspNetSqlMembershipProvider&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; enablePasswordRetrieval&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;true&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;type&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Web.Security.SqlMembershipProvider&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;connectionStringName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Membership&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;enablePasswordReset&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;true&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;requiresQuestionAndAnswer&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;true&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;requiresUniqueEmail&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;true&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;passwordFormat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Encrypted&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;maxInvalidPasswordAttempts&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;2147483647&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;minRequiredPasswordLength&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;7&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;minRequiredNonalphanumericCharacters&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;passwordAttemptWindow&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;applicationName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;providers&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;membership&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;roleManager&lt;/span&gt; &lt;span class="ClassName"&gt;enabled&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;true&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;providers&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;clear&lt;/span&gt;&lt;span class="Operator"&gt; /&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;add&lt;/span&gt; &lt;span class="ClassName"&gt;name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;AspNetSqlRoleProvider&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;connectionStringName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Membership&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;applicationName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;type&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;System.Web.Security.SqlRoleProvider&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;providers&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;roleManager&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;That&amp;#39;s real basic stuff, but with a bunch of settings defaults I usually go with that are still worth mentioning. In the membership provider, I have it configured to have unique Email and encrypted passwords while allowing them to be retrieved, question and answer turned off, as well as account lockouts disabled. You can&amp;#39;t really &amp;quot;disable&amp;quot; this, so they need to get int.MaxValue invalid attempts in one second to get locked out. Finally, I have password strengths that require six characters with at least one being non-alphanumeric. &lt;/p&gt;
&lt;p class="Text"&gt;Finally, in order to facilitate password encryption and decryption, we need to have a valid machine key in the web.config file. These should really be unique for each web app you write, so I use the following &lt;a target="_blank" href="http://aspnetresources.com/tools/machineKey" class="Link"&gt;generator&lt;/a&gt; to get a new one. Here&amp;#39;s an example of what an entry (in system.web along with the rest of the authentication configuration) looks like, with the encrypted bits stripped out: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;machineKey&lt;/span&gt;&lt;span class="ClassName"&gt; validationKey&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;[encoded]&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; decryptionKey&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;[also encoded]&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; validation&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;SHA1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; decryption&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;AES&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Next we have the Email section. I like to wire this up in the web.config file so that the Email code I have in ClientB.Common will pick up those settings and just work. Much like with the connection strings, these settings might differ from development to production, so use your web.config.whatever files to manage them. Here&amp;#39;s what that block looks like: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;system.net&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;mailSettings&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;smtp&lt;/span&gt;&lt;span class="ClassName"&gt; deliveryMethod&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Network&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;network&lt;/span&gt;&lt;span class="ClassName"&gt; host&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;[SMTP server URL]&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; userName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;[Username or Email address]&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; password&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;[password]&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;smtp&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;mailSettings&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;system.net&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;That&amp;#39;s it for configuration! Next up is to discuss is error handling. There are a lot of different ways to implement error handling, as well as a lot of third party tools that can take care of it for you. However, using an external component sort of goes against the grain of a generic template. I&amp;#39;ll throw some shameless pugs out for &lt;a target="_blank" href="http://code.google.com/p/elmah/" class="Link"&gt;Elmah&lt;/a&gt; or &lt;a target="_blank" href="http://logging.apache.org/log4net/" class="Link"&gt;Log4net&lt;/a&gt; as they are the two I feel are used the most, and then go ahead and do my own. &lt;/p&gt;
&lt;p class="Text"&gt;There are basically three parts to error handling in my eyes: throwing errors, catching errors, and reporting errors. You won&amp;#39;t find any examples of the former in this template, because it&amp;#39;s more ethereal in the first place and I never encounter errors at all to any extent in the second place. Juuust kidding. Real quick though, throwing errors means deciding which exceptions are handled and which are unhandled. When you&amp;#39;re building a particular functionality, ask yourself: &amp;quot;What if this bombs?&amp;quot; &amp;quot;What if there are no elements in this collection?&amp;quot; &amp;quot;What if it&amp;#39;s null?&amp;quot; &lt;/p&gt;
&lt;p class="Text"&gt;Basically, if it &lt;span class="Italic"&gt;could&lt;/span&gt; be null in some supported (or at least identified) use cases, I protect it with a try...catch. Or if the code is dealing with user input, and I can&amp;#39;t anticipate every possible situation: try it and catch it. But if something &lt;span class="Italic"&gt;should not&lt;/span&gt; be null, I purposely &lt;span class="Italic"&gt;do not&lt;/span&gt; protect it; this exception has to be thrown so I know about it. Catching and eating is way better for your bug count and way worse for your application than throwing into the wind. &lt;/p&gt;
&lt;p class="Text"&gt;On the backend, in ClientB.Common, have some sort of static class through which all errors are routed. When you do purposefully catch an exception, call this method explicitly. What it actually does is up to your implementation. You can throw it in an event log, log file, log database table, or just Email it to yourself if that&amp;#39;s the preferred route. It doesn&amp;#39;t matter, as long as the &amp;quot;catching&amp;quot; part of the architecture handles them uniformly. But when an unhandled exception occurs, and you don&amp;#39;t think the generic ASP.NET error page works well aesthetically in your application, we need to wire up higher-level logging. &lt;/p&gt;
&lt;p class="Text"&gt;And nothing is higher-level than Global.asax. Here of course is where you can handle global events in your application around start up, session, and, as it turns out, Application_Error! This event will be raised when any unhandled exception occurs in the app. Here&amp;#39;s my implementation: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;protected&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; Application_Error&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;object&lt;/span&gt; sender&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;EventArgs&lt;/span&gt; e&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//initialization&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;Exception&lt;/span&gt; exception &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Server&lt;span class="Operator"&gt;.&lt;/span&gt;GetLastError&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;exception &lt;span class="Operator"&gt;!&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//clear&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Response&lt;span class="Operator"&gt;.&lt;/span&gt;Clear&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Server&lt;span class="Operator"&gt;.&lt;/span&gt;ClearError&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//email&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;Utilities&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SendErrorEmail&lt;span class="Operator"&gt;(&lt;/span&gt;exception&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Global Error Handler&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//return&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Response&lt;span class="Operator"&gt;.&lt;/span&gt;Redirect&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Concat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;~/Home/Error/?message=&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Convert&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ToBase64String&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Encoding&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ASCII&lt;span class="Operator"&gt;.&lt;/span&gt;GetBytes&lt;span class="Operator"&gt;(&lt;/span&gt;exception&lt;span class="Operator"&gt;.&lt;/span&gt;Message&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;catch&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Exception&lt;/span&gt; ex&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//we&amp;#39;re really broken&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;Utilities&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SendErrorEmail&lt;span class="Operator"&gt;(&lt;/span&gt;ex&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Global Error Handler Error&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Response&lt;span class="Operator"&gt;.&lt;/span&gt;Redirect&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;~/Home/Error&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;The only interesting thing here is in Line #15 when I base 64-encode the error message and pass that explicitly to a view via querystring. Although I haven&amp;#39;t tried it (because it&amp;#39;s hard to experiment with error handling logic when you have never had an error in your entire career) it might be a bit cleaner to use session or some other mechanism. But when you&amp;#39;re handling global errors, you have no idea what might be broken; I always try to respect this and write the leanest code possible here. &lt;/p&gt;
&lt;p class="Text"&gt;So that&amp;#39;s throwing and catching; what about reporting? The Emailing is included in the template because Email is always available for error logging; using a database or a log file or a third party control requires some &amp;quot;intrusion&amp;quot; into the architecture and/or surface area of the application. Email will more likely than not already &amp;quot;be&amp;quot; there, so for this template, we&amp;#39;ll just piggy back that tier. &lt;/p&gt;
&lt;p class="Text"&gt;When we&amp;#39;re still in the context of the website when an unhandled exception occurs, we need to add a UI to the error reporting in addition to the logging. This way, users don&amp;#39;t have a false positive when something didn&amp;#39;t work. Like I said, it&amp;#39;s far worse to hide these errors than it is to show them; your users will be a little annoyed because an error occurred in general, but appreciate the fact that you spent a few extra minutes to make the experience as graceful as possible. &lt;/p&gt;
&lt;p class="Text"&gt;The view display is up to you; let&amp;#39;s take a look at the controller that renders it: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;ActionResult&lt;/span&gt; Error&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt; message&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get message&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;IsNullOrWhiteSpace&lt;span class="Operator"&gt;(&lt;/span&gt;message&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;message &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;An unknown error has occured.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get message&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;message &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;Encoding&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ASCII&lt;span class="Operator"&gt;.&lt;/span&gt;GetString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Convert&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;FromBase64String&lt;span class="Operator"&gt;(&lt;/span&gt;message&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//busted&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;message &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Unable to decode error message.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//render view&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ViewBag&lt;span class="Operator"&gt;.&lt;/span&gt;Message &lt;span class="Operator"&gt;=&lt;/span&gt; message&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;View&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Basically, it takes in the encoded error message, and attempts to decode it before passing everything down to the view for rendering. The only reason I screw around with encoding is because I don&amp;#39;t like passing human-readable text in query strings. Not only is it sloppy, and lets users see up the skirt of your implementation, but I feel it could be a real easy to get hacked. &lt;/p&gt;
&lt;p class="Text"&gt;That&amp;#39;s it for error logging! I won&amp;#39;t go into too much detail for the error page itself; just make sure to slap a link on there so they can get back to the home page. You&amp;#39;ll notice that the Visual Studio MVC 3 template includes an &amp;quot;Error&amp;quot; view in the &amp;quot;Shared&amp;quot; folder, and that view has code in it that unhinges itself from its layout. This, like my statement about code in the global error handler, is a protection against not knowing what&amp;#39;s broken; it could be something in the layout. So be careful not to cause errors by handling errors! &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;Internet Noise&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;I&amp;#39;m not putting this into the template, but I wanted to call it out real quick. With some of my little MVC 3 sites that are in production, (incidentally all hosted on GoDaddy) I get a lot of &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.httpexception.aspx" class="Link"&gt;HttpExceptions&lt;/a&gt; regarding forgery tokens and other &amp;quot;Internet noise.&amp;quot; I&amp;#39;m not sure if it cause by dying spam robots defeated by my MVC security measures, actual errors in my URL mappings, or something else entirely. I&amp;#39;ve found myself adding logic to my global error handling that swallows these, as they are sort of impossible to reproduce and fix. I hate eating exceptions &lt;span class="Italic"&gt;almost&lt;/span&gt; as much as I hate Outlook taking ten minutes to load. Just something to think about... &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;/ Internet Noise&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;Let&amp;#39;s move on to the controllers, which are of course the brains behind the MVC pattern. Right click the &amp;quot;Controllers&amp;quot; folder and select &amp;quot;Add...&amp;quot; and then &amp;quot;Controller...&amp;quot; In the box that pops up, type in &amp;quot;Base&amp;quot; over the selected text so that the class name becomes &amp;quot;BaseController&amp;quot; and click &amp;quot;Add.&amp;quot; We are going to have all of our other controller inherit from this one, so sort of think of it like the code-behind for a master page. &lt;/p&gt;
&lt;p class="Text"&gt;The two pieces of logic I&amp;#39;m including in this template are there to demonstrate two different paradigms of what you&amp;#39;d want to do with a base controller. The first one, which is basic navigation logic, sets Booleans based on which controller is handling the request so the layout can update itself accordingly (by building out a breadcrumb or selecting tab or highlighting a background). Paradigm-wise, this is example of code that needs to run on each load; master pages (or the equivalent) are a great place to take care of these tasks. &lt;/p&gt;
&lt;p class="Text"&gt;Also using the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.controllerbase.viewbag(v=vs.98).aspx" class="Link"&gt;ViewBag&lt;/a&gt;, the second sets the current user, which will ideally be cached to avoid database hits on each load. This is the second paradigm a base controller implements: handling do-once-and-cache tasks across the application. Let&amp;#39;s look at the code: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; ClientB&lt;span class="Operator"&gt;.&lt;/span&gt;Data&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;.&lt;/span&gt;Web&lt;span class="Operator"&gt;.&lt;/span&gt;Mvc&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;namespace&lt;/span&gt; ClientB&lt;span class="Operator"&gt;.&lt;/span&gt;Web&lt;span class="Operator"&gt;.&lt;/span&gt;Controllers&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;class&lt;/span&gt; &lt;span class="ClassName"&gt;BaseController&lt;/span&gt; &lt;span class="Operator"&gt;:&lt;/span&gt; &lt;span class="ClassName"&gt;Controller&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Events&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;protected&lt;/span&gt; &lt;span class="Keyword"&gt;override&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; OnActionExecuting&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;ActionExecutingContext&lt;/span&gt; filterContext&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//initialization&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;base&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;OnActionExecuting&lt;span class="Operator"&gt;(&lt;/span&gt;filterContext&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get calling controller name&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt; url &lt;span class="Operator"&gt;=&lt;/span&gt; filterContext&lt;span class="Operator"&gt;.&lt;/span&gt;Controller&lt;span class="Operator"&gt;.&lt;/span&gt;ValueProvider&lt;span class="Operator"&gt;.&lt;/span&gt;GetValue&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;controller&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;RawValue&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ToLowerInvariant&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//TODO: use url to update navigation&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//this.ViewBag.CurrentUrl = url;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//if (url.Equals(&amp;quot;home&amp;quot;, StringComparison.InvariantCultureIgnoreCase))&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//this.ViewBag.Home = true;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//this.ViewBag.Account = false;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//else&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//this.ViewBag.Home = false;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//this.ViewBag.Account = true;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//TODO: caching of common data elements&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//open database&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Database&lt;/span&gt; database &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;Database&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//set current user&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ViewBag&lt;span class="Operator"&gt;.&lt;/span&gt;CurrentUser &lt;span class="Operator"&gt;=&lt;/span&gt; database&lt;span class="Operator"&gt;.&lt;/span&gt;GetCurrentUser&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Whichever paradigm you&amp;#39;re following, use base controllers to do the things that happen upon every request. This differs from &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute.aspx" class="Link"&gt;ActionFilterAttributes&lt;/a&gt;, which instead encapsulate logic that could happen on every instance of a particular request. Whereas every single request cares about the current user (base controller), only certain requests need to make sure the current user is authenticated (action filter attribute). The following are out-of-the-box filters that you&amp;#39;ll see all over the place in the source code included with this post: &lt;/p&gt;
&lt;p class="Text"&gt;&lt;ol class="Text"&gt;
&lt;li class="Text"&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.httppostattribute.aspx" class="Link"&gt;HttpPost&lt;/a&gt;&lt;/li&gt;
&lt;li class="Text"&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.validateantiforgerytokenattribute.aspx" class="Link"&gt;ValidateAntiForgeryToken&lt;/a&gt; &lt;/li&gt;
&lt;li class="Text"&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx" class="Link"&gt;Authorize&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p class="Text"&gt;Like I said, these apply common functionality to particular requests. A cool thing about these filters is that they can be applied to both controllers and action methods. Applying it to a controller is the equivalent to applying it to all action methods on that controller. A good example of functionality like this is an attribute that redirects a request to its HTTPS equivalent. If you have a particular request or controller that handles credit card transactions, decorate it with this attribute. If your entire application requires SSL, put it on your base controller. &lt;/p&gt;
&lt;p class="Text"&gt;From here on in, everything else is optional. I&amp;#39;ll be discussing some common patterns or functionality that I include in some, but not all, my applications. The ideas above (and in the previous post) are part of almost all of the MVC work I do. The rest are edge cases, but certainly still &amp;quot;common&amp;quot; enough to be represented in (and potentially ignored or removed from) the template. To start, here&amp;#39;s an example of the above attribute, called ForceSSL: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;.&lt;/span&gt;Web&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;.&lt;/span&gt;Web&lt;span class="Operator"&gt;.&lt;/span&gt;Mvc&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;namespace&lt;/span&gt; ClientB&lt;span class="Operator"&gt;.&lt;/span&gt;Web&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;class&lt;/span&gt; &lt;span class="ClassName"&gt;ForceSSL&lt;/span&gt; &lt;span class="Operator"&gt;:&lt;/span&gt; &lt;span class="ClassName"&gt;ActionFilterAttribute&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Events&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;override&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; OnActionExecuting&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;ActionExecutingContext&lt;/span&gt; filterContext&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//initialization&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;HttpRequestBase&lt;/span&gt; request &lt;span class="Operator"&gt;=&lt;/span&gt; filterContext&lt;span class="Operator"&gt;.&lt;/span&gt;HttpContext&lt;span class="Operator"&gt;.&lt;/span&gt;Request&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;HttpResponseBase&lt;/span&gt; response &lt;span class="Operator"&gt;=&lt;/span&gt; filterContext&lt;span class="Operator"&gt;.&lt;/span&gt;HttpContext&lt;span class="Operator"&gt;.&lt;/span&gt;Response&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//check if we&amp;#39;re secure or not and if we&amp;#39;re on the local box&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;!&lt;/span&gt;request&lt;span class="Operator"&gt;.&lt;/span&gt;IsSecureConnection &lt;span class="Operator"&gt;&amp;amp;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;amp;&lt;/span&gt; &lt;span class="Operator"&gt;!&lt;/span&gt;request&lt;span class="Operator"&gt;.&lt;/span&gt;IsLocal&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//rebuild url to use ssl&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;UriBuilder&lt;/span&gt; builder &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;UriBuilder&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;request&lt;span class="Operator"&gt;.&lt;/span&gt;Url&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:50px;" class="Code"&gt;&lt;span class="Code"&gt;Port &lt;span class="Operator"&gt;=&lt;/span&gt; 443&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:50px;" class="Code"&gt;&lt;span class="Code"&gt;Scheme &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;Uri&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;UriSchemeHttps&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//redirect&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;response&lt;span class="Operator"&gt;.&lt;/span&gt;Redirect&lt;span class="Operator"&gt;(&lt;/span&gt;builder&lt;span class="Operator"&gt;.&lt;/span&gt;Uri&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//base&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;base&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;OnActionExecuting&lt;span class="Operator"&gt;(&lt;/span&gt;filterContext&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Not only is this a good example of the flexibility of filter attributes specifically, but it also shows just how much control you have in MVC in general. Take advantage of how close you are to the underlying HTTP request. In web forms, these would have to be HTTP modules or handlers (which are sort of obscured from the rest of your code); in MVC, they are right there with the rest of your business logic. &lt;/p&gt;
&lt;p class="Text"&gt;The next optional controller I&amp;#39;m including is the handling of &amp;quot;robots&amp;quot; for SEO purposes. Instead of dealing with a robots.txt file, (which is very un-MVC) you can rig up a path to a controller that does this dynamically. Here&amp;#39;s that controller: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;ContentResult&lt;/span&gt; Robots&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//return&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;ContentResult&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;ContentType &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;text/plain&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;Content &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;Convert&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ToBoolean&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;AppSettings&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;AllowRobots&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt; &lt;span class="Operator"&gt;?&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;User-agent: *\r\nAllow: /&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;:&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;User-agent: *\r\nDisallow: /&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Few things here: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;ul class="Text"&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;Line #1&lt;/span&gt;: This returns a &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.contentresult.aspx" class="Link"&gt;ContentResult&lt;/a&gt;, which we can tell the browser that it&amp;#39;s getting the plain text that the little Bing and Google robots re hungry for.&lt;/li&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;Line #7&lt;/span&gt;: I have a value in the web.config that controls this behavior. For the template, it&amp;#39;s an &amp;quot;on&amp;quot; or &amp;quot;off&amp;quot; idea so that our code hanging out in production isn&amp;#39;t being crawled while the site is still under development. However, you can add to this to enable certain crawlers, etc.&lt;/li&gt;
&lt;li class="Text"&gt;We need to enable this route in Global.asax. In the &amp;quot;RegisterRoute&amp;quot; method, before the last line representing the &amp;quot;default&amp;quot; route, add the following line:&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//robots&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;routes&lt;span class="Operator"&gt;.&lt;/span&gt;MapRoute&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;Robots&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Robots.txt&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="Operator"&gt;{&lt;/span&gt; area &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Empty&lt;span class="Operator"&gt;,&lt;/span&gt; controller &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Home&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; action &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Robots&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;}&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Speaking on ContentResults, there&amp;#39;s also the nifty &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.fileresult.aspx" class="Link"&gt;FileResult&lt;/a&gt; that your actions can return. I use this particularly to map a URL directly to my site&amp;#39;s logo. This is useful in both the layout and in the Email template. First, store the relative path (something like &amp;quot;/images/logo.png&amp;quot;) in the web.config. Then, create the following action (all of these &amp;quot;optional&amp;quot; actions are on the &amp;quot;Home&amp;quot; or default controller): &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;FilePathResult&lt;/span&gt; Logo&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//render image&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;File&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Server&lt;span class="Operator"&gt;.&lt;/span&gt;MapPath&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;AppSettings&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;LogoImageURL&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;MediaTypeNames&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Image&lt;span class="Operator"&gt;.&lt;/span&gt;Jpeg&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Line #4 has the &amp;quot;System.Net.Mime&amp;quot; namespace &amp;quot;using-ed&amp;quot; in. With this mechanism, &amp;quot;http://clientb.local/home/logo&amp;quot; will return the main image for the site. Finally, let&amp;#39;s talk about the account stuff. After all of that wiring of the membership provider, we need to throw some UI into the app to facilitate all of the account-ish things users will need: registration, login/off, password request/change, etc. The &amp;quot;MVC 3 Internet&amp;quot; Visual Studio template pulls a lot of this stuff in for us, but I like to reorganize it a bit. &lt;/p&gt;
&lt;p class="Text"&gt;First, some sanity. There are UI services that come along with the out-of-the-box Account models, and the code is intermingled with them. I feel like service-typed things and POCO-typed things should not be neighbors. I like to refactor these services (and their interfaces) from Models/AccountModels.cs into separate classes on the root, named Services.cs and IServices.cs respectively. &lt;/p&gt;
&lt;p class="Text"&gt;There are even more refactoring opportunities in this file. The next thing I do is move all of the custom validators into a separate file. So create &amp;quot;Validation.cs&amp;quot; in the root of ClientB.Web and copy-and-paste anything that inherits from &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute.aspx" class="Link"&gt;ValidationAttribute&lt;/a&gt; there. There&amp;#39;s nothing specific about this code (or the services above) to the Account controller, so let&amp;#39;s make it available to our entire site. I&amp;#39;ve also added some other validators that I use from time to time. &lt;/p&gt;
&lt;p class="Text"&gt;There&amp;#39;s one more thing to do here, refactoring wise. There&amp;#39;s a static method forlornly tucked into the &amp;quot;Status Codes&amp;quot; region that translates &amp;quot;proprietary&amp;quot; membership error codes into English strings. I move this guy, called &amp;quot;ErrorCodeToString,&amp;quot; to the Utilities.cs class over in ClientB.Common. (Make sure you add a reference to the obscure System.Web.ApplicationServices assembly.) Once again, this logic not specific to the Account stuff, or even necessarily to our site, so its home should be Common. &lt;/p&gt;
&lt;p class="Text"&gt;Now we can get to the actual M in the MVC. What&amp;#39;s left over are a few models describing the data that needs to be transferred to facilitate out-of-the-box authentication-ish functionality. Namely, these are the &amp;quot;ChangePasswordModel,&amp;quot; &amp;quot;LogOnModel,&amp;quot; and the &amp;quot;RegisterModel.&amp;quot; I&amp;#39;ve basically kept these in fact in the template, but added &amp;quot;RetrievePasswordModel&amp;quot; and some other goodies. Here&amp;#39;s what that looks like: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;class&lt;/span&gt; &lt;span class="ClassName"&gt;RetrievePasswordModel&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Members&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="ClassName"&gt;Required&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="ClassName"&gt;ValidateEmail&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;true&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="ClassName"&gt;&lt;span class="ClassName"&gt;DataType&lt;/span&gt;&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;&lt;span class="ClassName"&gt;DataType&lt;/span&gt;&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;EmailAddress&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="ClassName"&gt;DisplayName&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;Email address&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; Email &lt;span class="Operator"&gt;{&lt;/span&gt; &lt;span class="Keyword"&gt;get&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt; &lt;span class="Keyword"&gt;set&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt; &lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Next we need to build out the controller and views needed to implement these models. Now I&amp;#39;m not going to audaciously re-write Microsoft templates as pass them off as my own; the Account controller and views are fine as they are. I only tore apart the models because that file, in my opinion, is a bit sloppy. So all I&amp;#39;ll do is add in the infrastructure to support password retrieval, which follows the same patterns as the rest of the out-of-the-box functionality here. &lt;/p&gt;
&lt;p class="Text"&gt;First, let&amp;#39;s pull our nicely-refactored services into Controllers/AccountController.cs: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Members&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;IMembershipService&lt;/span&gt; _membershipService &lt;span class="Operator"&gt;{&lt;/span&gt; &lt;span class="Keyword"&gt;get&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt; &lt;span class="Keyword"&gt;set&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt; &lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;IFormsAuthenticationService&lt;/span&gt; _formsService &lt;span class="Operator"&gt;{&lt;/span&gt; &lt;span class="Keyword"&gt;get&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt; &lt;span class="Keyword"&gt;set&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt; &lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Protected Methods&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;protected&lt;/span&gt; &lt;span class="Keyword"&gt;override&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; Initialize&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;RequestContext&lt;/span&gt; requestContext&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//set forms service&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;_formsService &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;_formsService &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;FormsAuthenticationService&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//set membership service&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;_membershipService &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;_membershipService &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;AccountMembershipService&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//initialization&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;base&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Initialize&lt;span class="Operator"&gt;(&lt;/span&gt;requestContext&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;And then our password retrieval controller functionality: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;ActionResult&lt;/span&gt; RetrievePassword&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//render view&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;View&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="ClassName"&gt;HttpPost&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="ClassName"&gt;ValidateAntiForgeryToken&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;ActionResult&lt;/span&gt; RetrievePassword&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;RetrievePasswordModel &lt;/span&gt;model&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//email user thier password&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ModelState&lt;span class="Operator"&gt;.&lt;/span&gt;IsValid&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get password&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;_membershipService&lt;span class="Operator"&gt;.&lt;/span&gt;RetrievePassword&lt;span class="Operator"&gt;(&lt;/span&gt;model&lt;span class="Operator"&gt;.&lt;/span&gt;Email&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//success&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;RedirectToAction&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;RetrievePasswordSuccess&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//error&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ModelState&lt;span class="Operator"&gt;.&lt;/span&gt;AddModelError&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Empty&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Unable to retrieve password. Please try again.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//render view&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;View&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;ActionResult&lt;/span&gt; RetrievePasswordSuccess&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//render view&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;View&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;The views are fairly straight forward, so I won&amp;#39;t make this epic post any longer than it was to be. &lt;/p&gt;
&lt;p class="Text"&gt;And that is it! Attached to this post are two ZIP files: one for the MVC project itself, and one for the project cloner. To use the later, unpackage it, and run it as a command line exe or load it up in Visual Studio. If you&amp;#39;re in VS, edit the project file, and enter the following as the &amp;quot;Command line arguments&amp;quot; in the &amp;quot;Debug&amp;quot; tab: &lt;/p&gt;
&lt;p class="Text"&gt;-s &amp;quot;[full path to root folder to clone]&amp;quot; -t &amp;quot;[full path to route target folder]&amp;quot; -o -g -n &amp;quot;[target namespace]&amp;quot; -i bin -i obj -i pkg -i pkgobj -e vspscc -e vssscc -sourcename &amp;quot;[source namespace]&amp;quot; &lt;/p&gt;
&lt;p class="Text"&gt;This code is actually just a utility used by an in-house TFS generation app, and hasn&amp;#39;t really been used extensively outside of that context; manipulate it at your own risk! As for the MVC project, unzip it and set it up in Visual Studio as you would any other. You&amp;#39;ll see that there&amp;#39;s a lot more in there than I write about because, again, this post is way too long. Like I keep saying, this is just a starting point; strip out what you don&amp;#39;t need, apply your own patterns and styles, and, as always, have fun MVC-ing! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2955" width="1" height="1"&gt;</description><enclosure url="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.55/ClientB-and-ProjectCloner.zip" length="3377715" type="application/x-zip-compressed" /><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/MVC/default.aspx">MVC</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>A Really Sweet MVC 3 Project Template: Part 1 – The Infrastructure</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/04/24/a-really-sweet-mvc-3-project-template-part-1-the-infrastructure.aspx</link><pubDate>Tue, 24 Apr 2012 16:12:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2951</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="Text"&gt;After doing a few MVC 3 pet projects, I&amp;#39;ve found myself starting each new one with a copy-and-paste sprint from the last. In one code session, I can have the SQL Membership provider, error handling, Email, user registration, and Entity Framework design and integration all ready to rock. However, as anyone who can spell &amp;quot;TFS&amp;quot; knows, this copy-and-pasting is of course bad. And I&amp;#39;m not just talking about manually touching up namespaces or hacking connection strings; those are more annoying than harmful. &lt;/p&gt;
&lt;p class="Text"&gt;But if your new application has some other company&amp;#39;s logo? Or favicon? Or Email template? Or masthead? Not good. Sometimes a global find and replace is magical; other times, it can create far more (and more difficult) problems than it solves. So what I decided to do is create a generic MVC web application (and the encompassing Visual Studio solution) that has &lt;span class="Italic"&gt;everything&lt;/span&gt; so I can clone it and strip out what I don&amp;#39;t need when I&amp;#39;m onto the next project. &lt;/p&gt;
&lt;p class="Text"&gt;To avoid yet another blog past that has a massive procedure with dozens and dozens of steps, I&amp;#39;m going to break this up into different sections for each component of the application &amp;quot;template.&amp;quot; (I put template in quotes here because it&amp;#39;s not really a Visual Studio template; I have code that actually clones a directory and outputs new code to more easily facilitate uniqueness of guids, give control over which file types are analyzed, etc. More information about this &amp;quot;Project Cloner,&amp;quot; written by &lt;a target="_blank" href="http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/11/getting-the-first-spmetal-queries-after-application-domain-startup-to-not-crash.aspx" class="Link"&gt;Jonathon Rupp&lt;/a&gt;, will be available at the end of this post&amp;#39;s series.) &lt;/p&gt;
&lt;p class="Text"&gt;Before going through the steps I&amp;#39;ve taken to build out each project, let&amp;#39;s start with the database. Of course, if you have no database, (nor a need for any other component of this structure) just skip over that particular skip. We&amp;#39;re doing the database first to keep the order of operations aligned with project dependencies, so that we never have to &amp;quot;go back&amp;quot; to a project once we&amp;#39;re done configuring it. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;The Database&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;First things first: create a new database (named ClientB) by any means you choose. (SQL Server Management Studio is about the only time I use a designer; it&amp;#39;s the fastest way for me to rig up my database model.) Then build out the rest of your tables, views, etc. Something I almost always have in my applications (the ones that require administrative/CMS functionality at least) is the typical hierarchical term table to model the site&amp;#39;s taxonomy. I&amp;#39;ll be including that here so that there&amp;#39;s something in the data model: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;CREATE&lt;/span&gt; &lt;span class="Keyword"&gt;TABLE&lt;/span&gt; &lt;span class="Operator"&gt;[&lt;/span&gt;dbo&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;Term&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;TermId&lt;span class="Operator"&gt;]&lt;/span&gt; UNIQUEIDENTIFIER &lt;span class="Keyword"&gt;NOT&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;ParentTermId&lt;span class="Operator"&gt;]&lt;/span&gt; UNIQUEIDENTIFIER &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;Name&lt;span class="Operator"&gt;]&lt;/span&gt; NVARCHAR &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;MAX&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Keyword"&gt;NOT&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;Description&lt;span class="Operator"&gt;]&lt;/span&gt; NVARCHAR &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;MAX&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;Weight&lt;span class="Operator"&gt;]&lt;/span&gt; MONEY CONSTRAINT &lt;span class="Operator"&gt;[&lt;/span&gt;DF_Term_Weight&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Keyword"&gt;DEFAULT&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;1&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt; &lt;span class="Keyword"&gt;NOT&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;Ordinal&lt;span class="Operator"&gt;]&lt;/span&gt;INT NOT &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;IsDeleted&lt;span class="Operator"&gt;]&lt;/span&gt; BIT CONSTRAINT &lt;span class="Operator"&gt;[&lt;/span&gt;DF_Term_IsDeleted&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Keyword"&gt;DEFAULT&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;0&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt; &lt;span class="Keyword"&gt;NOT&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="Operator"&gt;[&lt;/span&gt;PK_Term&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Keyword"&gt;PRIMARY&lt;/span&gt; &lt;span class="Keyword"&gt;KEY&lt;/span&gt; &lt;span class="Keyword"&gt;CLUSTERED&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;TermId&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Keyword"&gt;ASC&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="Operator"&gt;[&lt;/span&gt;FK_Term_Term&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Keyword"&gt;FOREIGN&lt;/span&gt; &lt;span class="Keyword"&gt;KEY&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;ParentTermId&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt; &lt;span class="Keyword"&gt;REFERENCES&lt;/span&gt; &lt;span class="Operator"&gt;[&lt;/span&gt;dbo&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;Term&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;TermId&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt; &lt;span class="Keyword"&gt;ON&lt;/span&gt; &lt;span class="Keyword"&gt;DELETE&lt;/span&gt; &lt;span class="Keyword"&gt;NO&lt;/span&gt; &lt;span class="Keyword"&gt;ACTION&lt;/span&gt; &lt;span class="Keyword"&gt;ON&lt;/span&gt; &lt;span class="Keyword"&gt;UPDATE&lt;/span&gt; &lt;span class="Keyword"&gt;NO&lt;/span&gt; &lt;span class="Keyword"&gt;ACTION&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Next, since almost ALL of my MVC apps have users and forms authentication, I install the ASP.NET SQL Server schema. Real quick: &lt;/p&gt;
&lt;p class="Text"&gt;&lt;ol class="Text"&gt;
&lt;li class="Text"&gt;Start -&amp;gt; All Programs -&amp;gt; Microsoft Visual Studio 2010 -&amp;gt; Visual Studio Tools -&amp;gt; Visual Studio Command Prompt (2010)&lt;/li&gt;
&lt;li class="Text"&gt;Run &amp;quot;aspnet_regsql&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Next&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Next&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Select a server and a database and click &amp;quot;Next&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Next&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Finish&amp;quot;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p class="Text"&gt;There are slightly different versions of this infrastructure depending on which version of ASP.NET and SQL Server are installed; we&amp;#39;ll deal with this later. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;The Solution&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;The generic starting point for this project structure is called &amp;quot;ClientB&amp;quot; (which you might have guessed from the database name). Sub in your app name wherever you see that here. When the Architecture Council at Rightpoint came up with our project template for SharePoint work, we really flexed our creative wings and went with &amp;quot;ClientA&amp;quot; for that. Following suite, and as part of the ensuing inside joke, this mess is heretofore going to be un-intuitively pronounced &amp;quot;CientB.&amp;quot; So to start off on the code side, create a new blank Visual Studio 2010 solution called ClientB. &lt;/p&gt;
&lt;p class="Text"&gt;The Visual Studio solution is made up of five projects, but you probably only need three. Technically, I guess, you can have just one and shove everything in there, but that&amp;#39;s simply not proper. The three main ones are: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;ul class="Text"&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;ClientB.Web&lt;/span&gt;: The MVC project itself, and home to all web assets.&lt;/li&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;ClientB.Data&lt;/span&gt;: A project that houses the EF model, and all supporting partial classes and data access logic.&lt;/li&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;ClientB.Database&lt;/span&gt;: A SQL Server 2008 Database project that contains the SQL script files to facilitate quick and easy schema comparisons among development machines and production servers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;The two more optional ones are: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;ul class="Text"&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;ClientB.Common&lt;/span&gt;: This is the &amp;quot;utility&amp;quot; code that could be accessed by any project. Since I&amp;#39;m sort of a nutjob about refactoring, any line of code that might be called by different projects (namely, in the context of ClientB, Web or Data) should live here. This is also the home to any constants used by your application.&lt;/li&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;ClientB.Dependencies&lt;/span&gt;: This is the perversion of TFS to bring files into the mix with source code. Any external or third party DLLs, MSIs, or other supporting files live here so they can be referenced relatively across development machines. (Note: &lt;a target="_blank" href="http://nuget.org/" class="Link"&gt;NuGet&lt;/a&gt; is the answer to this problem, but I&amp;#39;ve had issues with it not upgrading and not downloading the packages I have registered. I probably need to spend a bit more time hammering this into place, but for now, old habits will be hard to break.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Dependencies&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;That said, let&amp;#39;s start with the most optional one: ClientB.Dependencies. Add a new class library project, and delete the &amp;quot;class1.cs&amp;quot; that comes along with it. To start, just add the following file to the project: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll. Even though this is a DLL, add it as an &amp;quot;Existing Item,&amp;quot; not a reference. &lt;/p&gt;
&lt;p class="Text"&gt;This way, when we reference this (or any other) DLL in a project, we&amp;#39;d do it by browsing to this file, so all relative references come down whenever the latest is gotten form TFS. The goal here is to be able to get, compile, and run in a new developer&amp;#39;s first few seconds on the project. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Common&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Let&amp;#39;s finish up with the optional projects. Add another class library named &amp;quot;ClientB.Common&amp;quot; and once again delete &amp;quot;class1.cs.&amp;quot; I usually add two classes to this project: Constants.cs and Utilities.cs. Both are static and public, and, like I said, contain any and all functionality that is to be shared across multiple projects in the solution. If you or your organization has a common library, that could replace or compliment this. &lt;/p&gt;
&lt;p class="Text"&gt;There are going to be a lot of places around the application where the name of the app is displayed: page titles, Email signatures, etc. In order to avoid hardcoding the name of the app everywhere, I like to refactor that into a constant - especially when the name of the app (or even the company!) changes half way through the project. This is especially helpful to support us safely cloning this code from project to project. Here&amp;#39;s what the constants class looks like: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;namespace&lt;/span&gt; ClientB&lt;span class="Operator"&gt;.&lt;/span&gt;Common&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;static&lt;/span&gt; &lt;span class="Keyword"&gt;class&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Properties&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;const&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; ApplicationNamespace &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;ClientB&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;const&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; ApplicationFriendlyName &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Client B&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Sending Email is a great example of logic that belongs in the Common project&amp;#39;s Utilities class. I use two methods: one to send the Email itself, and one that wraps it for sending error Emails (when you&amp;#39;re in a hosted environment and don&amp;#39;t have access to logs (beyond writing to a text file)). Add a reference to System.Configuration and check out the following code in Utilities: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;static&lt;/span&gt; &lt;span class="Keyword"&gt;class&lt;/span&gt; &lt;span class="ClassName"&gt;Utilities&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;static&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; SendErrorEmail&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt; message&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; location&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//compose&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;StringBuilder&lt;/span&gt; sb &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;StringBuilder&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;An unhandled exception has been thrown in {0}.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ApplicationFriendlyName&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;{0}Location: {1}&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Environment&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;NewLine&lt;span class="Operator"&gt;,&lt;/span&gt; location&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;{0}Error: {1}&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Environment&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;NewLine&lt;span class="Operator"&gt;,&lt;/span&gt; message&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//send&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;Utilities&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SendEmail&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;AppSettings&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;ErrorEmail&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Administrator&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; sb&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;static&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; SendEmail&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt; email&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; to&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; subject&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; body&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//initialization&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;MailMessage&lt;/span&gt; mm &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;MailMessage&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Format&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;{0}&amp;lt;{1}&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ApplicationFriendlyName&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;AppSettings&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;AdminEmail&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; email&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//build body&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;StringBuilder&lt;/span&gt; sbBody &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;StringBuilder&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;body&lt;span class="Operator"&gt;.&lt;/span&gt;Split&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Environment&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;NewLine&lt;span class="Operator"&gt;.&lt;/span&gt;ToCharArray&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;StringSplitOptions&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;None&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ToList&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ForEach&lt;span class="Operator"&gt;(&lt;/span&gt;x &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt; sbBody&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;p style=\&amp;quot;margin: 10px;\&amp;quot;&amp;gt;&amp;lt;span style=\&amp;quot;font-family:Arial; color:#FFFFFF;\&amp;quot;&amp;gt;{0}&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; x&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//build template&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;StringBuilder&lt;/span&gt; sb &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;StringBuilder&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;body style=\&amp;quot;background:url({0}/home/background) repeat left top #CCCCCC;\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;AppSettings&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;URL&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;table&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;td&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;img src=\&amp;quot;{0}/home/logo\&amp;quot; alt=\&amp;quot;{1}\&amp;quot; /&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;AppSettings&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;URL&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ApplicationFriendlyName&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;td style=\&amp;quot;background-color:#4D4D4D;\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;p style=\&amp;quot;margin: 10px;\&amp;quot;&amp;gt;&amp;lt;span style=\&amp;quot;font-family:Arial;color:#FFFFFF;\&amp;quot;&amp;gt;Hello {0},&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; to&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;p style=\&amp;quot;margin: 10px;\&amp;quot;&amp;gt;&amp;lt;span style=\&amp;quot;font-family:Arial;color:#FFFFFF;\&amp;quot;&amp;gt;{0}&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; sbBody&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;p style=\&amp;quot;margin: 10px;\&amp;quot;&amp;gt;&amp;lt;span style=\&amp;quot;font-family:Arial;color:#FFFFFF;\&amp;quot;&amp;gt;Thank you!&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;AppendFormat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;p style=\&amp;quot;margin: 10px;\&amp;quot;&amp;gt;&amp;lt;a href=\&amp;quot;{0}\&amp;quot; style=\&amp;quot;color:#0071BC; font-family:Arial; text-decoration:none;\&amp;quot; title=\&amp;quot;{1}\&amp;quot;&amp;gt;{1}&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;AppSettings&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;URL&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ApplicationFriendlyName&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;/table&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;sb&lt;span class="Operator"&gt;.&lt;/span&gt;Append&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//configure email&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;mm&lt;span class="Operator"&gt;.&lt;/span&gt;IsBodyHtml &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;true&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;mm&lt;span class="Operator"&gt;.&lt;/span&gt;Body &lt;span class="Operator"&gt;=&lt;/span&gt; sb&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;mm&lt;span class="Operator"&gt;.&lt;/span&gt;Subject &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Format&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;{0} - {1}&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ApplicationFriendlyName&lt;span class="Operator"&gt;,&lt;/span&gt; subject&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//send mail&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;SmtpClient&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Send&lt;span class="Operator"&gt;(&lt;/span&gt;mm&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//success&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Empty&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;catch&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Exception&lt;/span&gt; ex&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//error&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; ex&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;That&amp;#39;s actually as far as I&amp;#39;m going with this one; refactoring is specific to each project as well as each developer&amp;#39;s tastes. The above Email methods might be a bit too specific for our purposes here, but the code I use to generate paragraph tags seems to look consistent across most Email clients, so I thought it might be useful to just include it. But remember: if you don&amp;#39;t want it in your template, just delete it. The goal here isn&amp;#39;t to create a rigid one-stop-shop for all web projects you&amp;#39;d ever do. Instead it&amp;#39;s just a starting point; it&amp;#39;s stuff I&amp;#39;ve had to replicate on &lt;span class="Italic"&gt;almost&lt;/span&gt; all MVC work I&amp;#39;ve done. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Database&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;SQL Server projects were a game changer for me. Synchronizing database schemas across my laptop, desktop, other team member&amp;#39;s machines, as well development, staging, and production servers, was always a nightmare. What was the latest version? What state is my database in? Why doesn&amp;#39;t my application work? These are all questions easily answered by bringing your database under source control, and throwing a nice schema comparison tool into the mix for good measure. If you have any database dependencies on your project, never leave home without one of these. &lt;/p&gt;
&lt;p class="Text"&gt;First, create a SQL Server 2008 Database project, named ClientB.Database. If you have the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx" class="Link"&gt;SQL Server tools&lt;/a&gt; package installed from the Web Platform Installer, there&amp;#39;s a better version of the Schema Compare tool; you&amp;#39;ll need to upgrade your project to take advantage of it. In this case, right click your project and select &amp;quot;Convert to SQL Server Database project.&amp;quot; Then *poof* you&amp;#39;re there. &lt;/p&gt;
&lt;p class="Text"&gt;Next let&amp;#39;s import our current schema. Right click again, and select &amp;quot;Schema Compare.&amp;quot; In the first dropdown, select &amp;quot;Select Source...&amp;quot; and configure a connection to the database. Then specify &amp;quot;Select Target...&amp;quot; in the second and configure it to talk to the project we just created. When you&amp;#39;ve got that, click &amp;quot;Compare&amp;quot; at the top. &lt;/p&gt;
&lt;p class="Text"&gt;Here&amp;#39;s where I&amp;#39;d like to revisit the ASP.NET SQL Server schema discrepancies that can crop up. Not only will your development machine (no doubt running the latest version of everything; possibly the betas of the &lt;span class="Italic"&gt;next&lt;/span&gt; versions of everything) probably have a different version of aspnet_regsql than your production environment; (no doubt running an older version of things, which, for example, Go Daddy does) there will also be security concerns between your database project in Visual Studio and the database itself. Namely, I&amp;#39;m talking about importing users, roles, and schemas. In a SQL Server Data project, think of all SQL files as &amp;quot;executable&amp;quot; scripts. If you have bad TSQL in one of them, things &lt;span class="Italic"&gt;won&amp;#39;t compile&lt;/span&gt;. &lt;/p&gt;
&lt;p class="Text"&gt;So to combat this, I simply ignore slight differences between the schemas of tables and views and the code of stored procedures and database functions, and don&amp;#39;t even bother with any SQL objects that could be related to users. Upon every comparison, clear the &amp;quot;Action&amp;quot; checkbox next to any &amp;quot;Type&amp;quot; under the &amp;quot;Add&amp;quot; node that starts with &amp;quot;Role,&amp;quot; &amp;quot;Schema,&amp;quot; or &amp;quot;User.&amp;quot; We don&amp;#39;t need it, and like I said above, we don&amp;#39;t want to deal with trying to synchronize it across our different databases. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/A-Really-Sweet-MVC-3-Project-Template-Part-1-The-Infrastructure/ExcludeUsersRolesSchemas.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Really the only parts of the SQL Membership infrastructure that I use are the authentication and authorization subsystems, which is only a slice of the technology. If you&amp;#39;re doing profiles and whatnot, there&amp;#39;s more to consider; the basic functionality, however, works all the same across the various versions. So, despite all this hacking on the backend, no .NET code will change in the middle layer. &lt;/p&gt;
&lt;p class="Text"&gt;Schema Comparison and reconciliation is about all I use this project for, although it can do a lot more. Really the only other functionality I need here is a place to store any random data-population scripts I might find useful. I usually have something that truncates my tables so I can test new code against a clean slate; it&amp;#39;s so specific to the model, however, that there&amp;#39;s no use for it in this template. &lt;/p&gt;
&lt;p class="Text"&gt;The concept of the anonymous user, however, is fairly pervasive in public-facing web sites. I like to go ahead and create an actual record in the database for the anonymous user with an empty guid for its UserId. This way, instead of nullable foreign keys, every entity in my model that has a relationship with a user can have a nice tidy link to one. &lt;/p&gt;
&lt;p class="Text"&gt;While we&amp;#39;re at it with scripting users, let&amp;#39;s add in an administrator. If our application has users &lt;span class="Bold"&gt;and&lt;/span&gt; administrative functionality, chances are we&amp;#39;re going to need some concept of administrators. I implement this by using the SQL Membership&amp;#39;s cousin: the Role Provider, which is a simple implementation of groups in the database. &lt;/p&gt;
&lt;p class="Text"&gt;So let&amp;#39;s take a look at the following script (or a slight derivation of it, depending on requirements) to make sure these users exist: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;--initialization&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;DECLARE&lt;/span&gt; @appID &lt;span class="Keyword"&gt;UNIQUEIDENTIFIER&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;DECLARE&lt;/span&gt; @roleID &lt;span class="Keyword"&gt;UNIQUEIDENTIFIER&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;DECLARE&lt;/span&gt; @adminID &lt;span class="Keyword"&gt;UNIQUEIDENTIFIER&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;DECLARE&lt;/span&gt; @emptyGuid &lt;span class="Keyword"&gt;UNIQUEIDENTIFIER&lt;/span&gt; &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;00000000-0000-0000-0000-000000000000&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;--ensure application&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;SELECT&lt;/span&gt; @appID &lt;span class="Operator"&gt;=&lt;/span&gt; Applicationid &lt;span class="Keyword"&gt;FROM&lt;/span&gt; aspnet_Applications&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;IF&lt;/span&gt; @appId &lt;span class="Keyword"&gt;IS&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;SET&lt;/span&gt; @appID &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;NEWID&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;INSERT&lt;/span&gt; &lt;span class="Keyword"&gt;INTO&lt;/span&gt; aspnet_Applications &lt;span class="Keyword"&gt;VALUES&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; @appid&lt;span class="Operator"&gt;,&lt;/span&gt; null&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;--ensure anonymous user&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;IF&lt;/span&gt; &lt;span class="Keyword"&gt;NOT&lt;/span&gt; &lt;span class="Keyword"&gt;EXISTS&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;SELECT&lt;/span&gt; &lt;span class="Operator"&gt;*&lt;/span&gt; &lt;span class="Keyword"&gt;FROM&lt;/span&gt; aspnet_Users &lt;span class="Keyword"&gt;WHERE&lt;/span&gt; UserId&lt;span class="Operator"&gt;=&lt;/span&gt;@emptyGuid&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;INSERT&lt;/span&gt; &lt;span class="Keyword"&gt;INTO&lt;/span&gt; aspnet_Users &lt;span class="Keyword"&gt;VALUES&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;@appID&lt;span class="Operator"&gt;,&lt;/span&gt; @emptyGuid&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;Anonymous&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;anonymous&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 1&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;2012-01-12 21:10:12.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 0&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;INSERT&lt;/span&gt; &lt;span class="Keyword"&gt;INTO&lt;/span&gt; aspnet_Membership &lt;span class="Keyword"&gt;VALUES&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;@appID&lt;span class="Operator"&gt;,&lt;/span&gt; @emptyGuid&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;cWIho8hr4yIZqXeXETZfjOJbIUkP2MDpRS8wADoIdtRVRY0WYPFCj+pPfF05/ga0&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 2&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;O1JsY+aBppJzFQGmojKP+A==&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;anonymous@clientb.com&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;anonymous@clientb.com&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 1&lt;span class="Operator"&gt;,&lt;/span&gt; 0&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;2012-01-12 21:10:12.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;2012-01-12 21:10:12.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;2012-01-12 21:10:12.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;1754-01-01 00:00:00.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 0&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;1754-01-01 00:00:00.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 0&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;1754-01-01 00:00:00.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;--ensure admin user&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;SELECT&lt;/span&gt; @adminID &lt;span class="Operator"&gt;=&lt;/span&gt; UserId FROMaspnet_Users &lt;span class="Keyword"&gt;WHERE&lt;/span&gt; UserName&lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;#39;Admin&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;IF&lt;/span&gt; @adminID &lt;span class="Keyword"&gt;IS&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;SET&lt;/span&gt; @adminID &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;NEWID&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;INSERT&lt;/span&gt; &lt;span class="Keyword"&gt;INTO&lt;/span&gt; aspnet_Users &lt;span class="Keyword"&gt;VALUES&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;@appID&lt;span class="Operator"&gt;,&lt;/span&gt; @adminID&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;Admin&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 1&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;2012-01-12 21:10:12.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 0&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;INSERT&lt;/span&gt; &lt;span class="Keyword"&gt;INTO&lt;/span&gt; aspnet_Membership &lt;span class="Keyword"&gt;VALUES&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;@appID&lt;span class="Operator"&gt;,&lt;/span&gt; @adminID&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;cWIho8hr4yIZqXeXETZfjOJbIUkP2MDpRS8wADoIdtRVRY0WYPFCj+pPfF05/ga0&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 2&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;O1JsY+aBppJzFQGmojKP+A==&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;admin@clientb.com&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;admin@clientb.com&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 1&lt;span class="Operator"&gt;,&lt;/span&gt; 0&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;2012-01-12 21:10:12.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;2012-01-12 21:10:12.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;2012-01-12 21:10:12.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;1754-01-01 00:00:00.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 0&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;1754-01-01 00:00:00.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; 0&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;1754-01-01 00:00:00.000&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;--ensure role&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;SELECT&lt;/span&gt; @roleID &lt;span class="Operator"&gt;=&lt;/span&gt; RoleID FROMaspnet_Roles &lt;span class="Keyword"&gt;WHERE&lt;/span&gt; RoleName&lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Constant"&gt;&amp;#39;Admin&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;IF&lt;/span&gt; @roleID &lt;span class="Keyword"&gt;IS&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;SET&lt;/span&gt; @roleID &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;NEWID&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;INSERT&lt;/span&gt; &lt;span class="Keyword"&gt;INTO&lt;/span&gt; aspnet_Roles &lt;span class="Keyword"&gt;VALUES&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;@appID&lt;span class="Operator"&gt;,&lt;/span&gt; @roleID&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;Admin&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;NULL&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;--ensure user in role&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;IF&lt;/span&gt; &lt;span class="Keyword"&gt;NOT&lt;/span&gt; &lt;span class="Keyword"&gt;EXISTS&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;SELECT&lt;/span&gt; &lt;span class="Operator"&gt;*&lt;/span&gt; &lt;span class="Keyword"&gt;FROM&lt;/span&gt; aspnet_UsersInRoles &lt;span class="Keyword"&gt;WHERE&lt;/span&gt; RoleId&lt;span class="Operator"&gt;=&lt;/span&gt;@roleID &lt;span class="Keyword"&gt;AND&lt;/span&gt; UserId&lt;span class="Operator"&gt;=&lt;/span&gt;@adminID&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;INSERT&lt;/span&gt; &lt;span class="Keyword"&gt;INTO&lt;/span&gt; aspnet_UsersInRoles &lt;span class="Keyword"&gt;VALUES&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;@adminID&lt;span class="Operator"&gt;,&lt;/span&gt; @roleID&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Now that we have our users scripted, go ahead and execute this against the database to get those guys in there. Finally, we&amp;#39;ll add it to our database project for safe keeping. Right click the &amp;quot;Scripts&amp;quot; folder and select &amp;quot;Add...&amp;quot; and then &amp;quot;Script...&amp;quot; In the window that pops up, make sure to select the &amp;quot;Script (Not in build)&amp;quot; template. This allows us to store arbitrary SQL code in TFS that the project doesn&amp;#39;t attempt to &amp;quot;compile&amp;quot; upon each build. Name it &amp;quot;Users.sql&amp;quot; and we&amp;#39;re done. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;NOTE&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;You might be wondering why, after pulling all this wonderful new SQL integration technology into our project, we&amp;#39;re still manually running scripts in SQL Management Studio and using it only for source control. It really comes down to the fact that deploying the project (which you can (and I do) turn off in Configuration Manager for one or all the build configurations) is slooooow. &lt;/p&gt;
&lt;p class="Text"&gt;Even on my home computer, which is an i7 with a million gigs of RAM, it adds a few seconds of churn to every F5 without any updates actually being made. Even though I love love love scripted deployments of any kind, the overhead required to configure this single run-once script simply isn&amp;#39;t worth it. Script deployments to save yourself time, not create more work. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;/NOTE&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Data&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Next is the data layer, for which I turn to the Entity Framework to implement every time. If you want to use Linq-To-Sql or CSLA, (juuust kidding) feel free. But EF, especially the 4.0 release, has been real solid for me. So add another class library project, delete class1, and add a reference to System.Web. Once that&amp;#39;s all set up, we can import our data model. &lt;/p&gt;
&lt;p class="Text"&gt;Add a new item to the project of type &amp;quot;ADO.NET Entity Data Model&amp;quot; named &amp;quot;Entities.dbmx&amp;quot; and complete the ensuing wizard to select your database connection (which will of course be to the database we created at the start of this process). Something I always screw up in this wizard is which setting dictates the name of the class that will represent my context. This is the screen were you specify the name of the connection string. I go with &amp;quot;Database&amp;quot; but you can use whatever you want. I feel this is a little cleaner than &amp;quot;[name of solution]Entities&amp;quot; (which is what is generated by default). &lt;/p&gt;
&lt;p class="Text"&gt;At the end of the wizard, you specify which tables, views, and procs you want imported into the model. On this screen, expand the &amp;quot;Tables&amp;quot; node and tick off &amp;quot;aspnet_Users,&amp;quot; &amp;quot;aspnet_Membership,&amp;quot; &amp;quot;aspnet_Applications,&amp;quot; and &amp;quot;Terms.&amp;quot; In most cases, you&amp;#39;d probably only need the users table, but depending in your style of usage for membership, it might be nice to take all three. The terms table, again, is just for example purposes. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/A-Really-Sweet-MVC-3-Project-Template-Part-1-The-Infrastructure/AddTables.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;EF actually does a fairly good job of coming up with singularized and pluralized names for your entities and collections of them. However, the membership tables all have that &amp;quot;aspnet_&amp;quot; prefix and are pluralized; the OCD in me cannot stand for this. If grammatical correctness, properly naming your entities, and destroying all superfluous navigation properties is a must for you as well, perform the following clean up: &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Bold"&gt;aspnet_Applications&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;&lt;ol class="Text"&gt;
&lt;li class="Text"&gt;Rename entity to &amp;quot;Application&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In the F4 properties pane, set the &amp;quot;Entity Set Name&amp;quot; to &amp;quot;Applications&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Delete all navigation properties&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Bold"&gt;aspnet_Users&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;&lt;ol class="Text"&gt;
&lt;li class="Text"&gt;Rename entity to &amp;quot;User&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In the F4 properties pane, set the &amp;quot;Entity Set Name&amp;quot; to &amp;quot;Users&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Delete the &amp;quot;aspnet_Applications&amp;quot; navigation property&lt;/li&gt;
&lt;li class="Text"&gt;Rename the &amp;quot;aspnet_Membership&amp;quot; navigation property to &amp;quot;Membership&amp;quot;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Bold"&gt;aspnet_Membership&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;&lt;ol class="Text"&gt;
&lt;li class="Text"&gt;Rename entity to &amp;quot;Membership&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Delete all navigation properties&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Bold"&gt;Term&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;&lt;ol class="Text"&gt;
&lt;li class="Text"&gt;Rename the &amp;quot;Term1&amp;quot; navigation property to &amp;quot;ChildTerms&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Rename the &amp;quot;Term2&amp;quot; navigation property to &amp;quot;ParentTerm&amp;quot;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p class="Text"&gt;The above exercise, renaming the &amp;quot;Term&amp;quot; table&amp;#39;s navigation properties, is the main reason I included the table at all in this structure. I wanted to demonstrate that even when EF gets the name wrong, it&amp;#39;s really easy to correct it. Maybe your brain is fine with &amp;quot;Term1&amp;quot; and &amp;quot;Term2&amp;quot; and can deal with it; mine can&amp;#39;t. Once you have all your entities the way you want them, the next step is to start extending them. &lt;/p&gt;
&lt;p class="Text"&gt;The partial class-ed-ness of EF entities (and the context itself) is, in my opinion, one of its strongest extensibilities, and makes tasks like databinding, just, well, stupid easy. I will demonstrate this by extending the context to return the current user, and one of the entities to add a read-only property for databinding purposes. &lt;/p&gt;
&lt;p class="Text"&gt;So first, let&amp;#39;s get the current user. Add a class called &amp;quot;Database&amp;quot; or whatever you named your entity model to the project. Here&amp;#39;s what it&amp;#39;ll look like: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;.&lt;/span&gt;Web&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;.&lt;/span&gt;Linq&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;namespace&lt;/span&gt; ClientB&lt;span class="Operator"&gt;.&lt;/span&gt;Data&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;partial&lt;/span&gt; &lt;span class="Keyword"&gt;class&lt;/span&gt; &lt;span class="ClassName"&gt;Database&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Public Methods&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;User&lt;/span&gt; GetCurrentUser&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//see if this request is anonymous&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;HttpContext&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Current&lt;span class="Operator"&gt;.&lt;/span&gt;Request&lt;span class="Operator"&gt;.&lt;/span&gt;IsAuthenticated&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get current user&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Users&lt;span class="Operator"&gt;.&lt;/span&gt;Include&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;Membership&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Single&lt;span class="Operator"&gt;(&lt;/span&gt;u &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt; u&lt;span class="Operator"&gt;.&lt;/span&gt;UserName&lt;span class="Operator"&gt;.&lt;/span&gt;Equals&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;HttpContext&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Current&lt;span class="Operator"&gt;.&lt;/span&gt;User&lt;span class="Operator"&gt;.&lt;/span&gt;Identity&lt;span class="Operator"&gt;.&lt;/span&gt;Name&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;StringComparison&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;InvariantCultureIgnoreCase&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get anonymous user&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Users&lt;span class="Operator"&gt;.&lt;/span&gt;Include&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;Membership&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Single&lt;span class="Operator"&gt;(&lt;/span&gt;u &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt; u&lt;span class="Operator"&gt;.&lt;/span&gt;UserId&lt;span class="Operator"&gt;.&lt;/span&gt;Equals&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Guid&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Empty&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Extending entities is just as easy. Let&amp;#39;s say we want to display a user&amp;#39;s Email. In the SQL Membership infrastructure, Email is actually on the aspnet_Membership table, so we&amp;#39;d have to join and pull it in. But if we partial class our User entity, we can add a new ready-only property, abstract that join out, and have it display nicely (in a grid, for example) along with the rest of the &amp;quot;native&amp;quot; user properties. To see this, add another class to our Data project named &amp;quot;User.cs&amp;quot; and use the following code: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;namespace&lt;/span&gt; ClientB&lt;span class="Operator"&gt;.&lt;/span&gt;Data&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;partial&lt;/span&gt; &lt;span class="Keyword"&gt;class&lt;/span&gt; &lt;span class="ClassName"&gt;User&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Properties&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; Email&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//ensure relationship is loaded&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Membership &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:50px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;MembershipReference&lt;span class="Operator"&gt;.&lt;/span&gt;Load&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//return email&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:40px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Membership&lt;span class="Operator"&gt;.&lt;/span&gt;Email&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:20px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:10px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="padding-left:0px;" class="Code"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;As long as you manage the disposal of your context properly, you can add a bit of logic to extended properties and make your UI databinding logic a lot easier. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Web&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;So this post turned out to be massive; I&amp;#39;m going to present the Web project in a separate one, since it&amp;#39;s far and away the biggest. Doing so sort of creates a nice separation between the idea of an MVC &lt;span class="Italic"&gt;solution&lt;/span&gt;, which is all of the physical tiers of a web application and an MVC &lt;span class="Italic"&gt;site&lt;/span&gt;, which is just the web components. Perhaps you have a completely different approach to setting up your MVC infrastructure, and just are interested in the web bits. If that&amp;#39;s the case, I apologize for however long you spent reading this, as your question your question won&amp;#39;t be answered until the next post. My bad! &lt;/p&gt;
&lt;p class="Text"&gt;Read on &lt;a target="_blank" href="http://chrisdomino.com/blog/post/A-Really-Sweet-MVC-3-Project-Template-Part-2-The-Web-Project" class="Link"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2951" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/MVC/default.aspx">MVC</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>SharePoint Designer 2010 Workflow Advanced Properties</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/04/17/sharepoint-designer-2010-workflow-advanced-properties.aspx</link><pubDate>Tue, 17 Apr 2012 21:21:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2949</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;I&amp;rsquo;ve recently spent a lot of time on SharePoint 2010 workflows.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I made a ton of errors and learned a lot about the new Task Process in 2010.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It may look easy, but there are a lot of things that can go wrong.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;I&amp;rsquo;m currently working on putting together a SharePoint Saturday session on the Task Process.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I will be writing a few &amp;ldquo;Lessons Learned&amp;rdquo; articles to help me organize my thoughts to prepare for this session (not yet determined when or where).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I will cover the following topics in more details in upcoming articles: Association and Initiation Forms, Change the behavior of a single task, Change the behavior of the overall task process, Change the completion conditions for this task process, the difference between assigning tasks and starting a task process.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="margin:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;This article is specifically about the Task Process &amp;ldquo;Advanced Properties&amp;rdquo;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;It is not immediately noticeable that a task process has advanced properties.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you click on the name of the task, you are taken to a Task Settings page that allows you to change certain settings.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;However, there are certain settings that you may not know to set since you do not see it anywhere except for in the task&amp;rsquo;s Advanced Properties.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I will notate these as I go through each one below. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Many of the issues I encountered were because these settings had changed or disappeared through the course of my iterations of the workflows.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;These settings apply to the three Task Processes that can be added from &amp;ldquo;Action, Task Actions&amp;rdquo; and include the word &amp;ldquo;Process&amp;rdquo; &amp;ndash; Start Approval Process, Start Custom Task Process, Start Feedback Process. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&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;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp1.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp1.gif" border="0" alt="" /&gt;&lt;/a&gt;&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;I highly recommend completely setting up your task process and reviewing these settings at the end.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Many of these options will be blank when you first set up your task process and will be automatically populated in the course of customizing your workflow.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&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;To view the advanced properties, click on the task process row and click on the drop down button that appears on the right.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Then Select Properties, which will show you some settings and variables that are specific to that task process. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp2.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp2.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp3.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp3.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br clear="all" style="mso-special-character:line-break;" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Here is a list of all the Properties available.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;These are the same for all three task processes.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Note: you will see that some items are &amp;ldquo;Variables&amp;rdquo; and some items are &amp;ldquo;Parameters&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Variables are hidden from end users, but the workflow needs to function&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Parameters&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;may be included on a form or setting for user input&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="margin:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;General Property Variables: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&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-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Content Type ID&lt;/b&gt; &amp;ndash; this is a read only field, you cannot set the Task Content Type here.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you need to assign a custom content type to a task process, click here for instructions:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/21/assign-a-custom-content-type-to-task-process-in-a-sharepoint-designer-2010-workflow.aspx"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;Assign a Custom Content Type to Task Process in a SharePoint Designer 2010 workflow&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Allow Change Request&lt;/b&gt; &amp;ndash;will prevent or allow the assigned user to request a change to the page or document being reviewed.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This option can be changed from the Task General Settings page (see print screen below)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This option will generate a button on the form and a corresponding outcome&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Selecting this option will mark the current task as complete, assign a new task to the person a change is requested from.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Once that task is marked as complete, a new task will be created to the person that requested the change to review the change and complete the task process. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;3.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Allow Reassign&lt;/b&gt; &amp;ndash; will allow the assigned user to reassign a new task to someone else.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This will mark the current task as complete with an outcome of delegated to:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;new person.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This option can be changed from the Task General Settings page (see print screen below)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This option will generate a button on the form and a corresponding outcome&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Selecting this option will mark the current task as complete and assign a new task you want to reassign the task to.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp4.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp4.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&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-family:Calibri;font-size:small;"&gt;4.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Delete Tasks on Complete &lt;/b&gt;&amp;ndash; Setting this to &amp;ldquo;Yes&amp;rdquo; will delete the task once it has been completed or canceled. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;You may want to consider this if you will be generating a large number of tasks with workflows.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If you are collecting data in the workflow task that you need to retain and you need to delete your tasks, you should include steps in your workflow to place that data somewhere else; in your page or document the process is acting on, for example. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;5.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Expand Groups &amp;ndash; &lt;/b&gt;This setting only applies if you are assigning tasks to SharePoint User Groups.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Yes means that each person in the group will get an individual task assigned &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;No means that one task will be created and a member of the group will have the option of claiming the task, which will reassign the task from the group to the individual.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This default can be set with the Initiation Form Parameters&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp5.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp5.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;You can also leave this option on your workflow initiation form and allow the workflow initiator to select the appropriate option. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;6.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Permission Set &amp;ndash; &lt;/b&gt;This is asking if you want to use the permissions of the task list (default) or set permissions for these tasks so that only people that are assigned to a task, workflow initiators and admins can see tasks.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This is set to &amp;ldquo;Default&amp;rdquo; by default. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This can be set on the Task Settings page.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you check the box to &amp;ldquo;Only allow task recipients and process owners to read and edit workflow tasks SharePoint will set this variable to &amp;ldquo;AssignedTo&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&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-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp6.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp6.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&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-family:Calibri;font-size:small;"&gt;7.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Task Deleted Outcome &amp;ndash; &lt;/b&gt;This is asking what the task outcome should be logged as if someone deleted a task.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;By default this is blank.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;You can enter &amp;ldquo;Deleted&amp;rdquo; or &amp;ldquo;Cancelled&amp;rdquo; or something that will let someone reviewing the workflow history know what happened to the task. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;8.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Task Process Owner &amp;ndash; &lt;/b&gt;Lists who owns this task process.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you change the permissions of the task &amp;ldquo;PermissionSet&amp;rdquo; then this user or group will have access to all the tasks as the owner. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;This can be an individual or a SharePoint group.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;You can set this in the Task Information section of the task general settings page. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&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-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp8.gif"&gt;&lt;/a&gt;&lt;/span&gt;&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-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp7.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp7.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&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-family:Calibri;font-size:small;"&gt;9.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Send Default Task Notifications &amp;ndash; &lt;/b&gt;pay attention to this one.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you are sending a custom task notification to a user as part of the process, mark this as &amp;ldquo;No&amp;rdquo;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Otherwise it will change the default setting of your task list no notify users when a task is assigned.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Personally, I prefer to customize the task notification message, so I mark this as &amp;ldquo;no&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If this is set to &amp;ldquo;Yes&amp;rdquo; it will send the automated message below from the Task List this task resides in (the variables in &amp;lt;&amp;gt; below will be populated by the task or item)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp8.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp8.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Parameters for &amp;ldquo;[Task Process]&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&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-family:Calibri;font-size:small;"&gt;10.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Task Process Name &amp;ndash;&lt;/b&gt; This is the name of the Task Process, which may be included in notifications, depending on how yours are set up.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You can also change this setting in the Task General Settings Page under Task Information.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&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-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp9.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp9.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&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-family:Calibri;font-size:small;"&gt;11.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Overdue Repeat&lt;/b&gt; &amp;ndash; Set this parameter if you want to send a notification to a user when the task is overdue.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Your options are Off, Daily, Weekly or Monthly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;You have the option of customizing the email that is sent in the Task Process.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;That will be covered in another post.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp10.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp10.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;The default setting is weekly.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&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-family:Calibri;font-size:small;"&gt;12.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Overdue Repeat Times&lt;/b&gt; &amp;ndash; How many reminders do you want to send to the person or group a task is assigned to?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You can enter a set number, or enter -1 for infinity.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This means SharePoint will keep sending a reminder on the schedule that you listed in the previous parameter until the task is marked as complete, the task process is cancelled or the task is deleted. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp11.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp11.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;The default setting is infinity&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="margin:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Parameters for &amp;ldquo;[this item]&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p class="MsoListParagraph"&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-family:Calibri;font-size:small;"&gt;13.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Item ID &amp;ndash; &lt;/b&gt;Do not change this option.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It is defaulted to the Item ID that the workflow is running on. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="margin:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Parameters for &amp;ldquo;[these users]&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;These variables can also be set in the workflow task using the &amp;ldquo;Set Workflow Variable&amp;rdquo; action or when you click on the link to start the task process with &amp;ldquo;these users&amp;rdquo;&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;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp12.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp12.gif" border="0" alt="" /&gt;&lt;/a&gt;&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;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp13.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp13.gif" border="0" alt="" /&gt;&lt;/a&gt;&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;&lt;/span&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-family:Calibri;font-size:small;"&gt;14.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;CC: - &lt;/b&gt;This variable is asking if an individual or group should be copied on emails regarding this task process.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Unless you are setting your workflow so that every workflow copies a certain person or group, I would leave this as &amp;ldquo;Parameter: CC&amp;rdquo;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;You can include this parameter on the initiation form for a person starting the workflow to complete or you can set with workflow actions if the workflow will be started automatically.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;15.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Comments &amp;ndash; Important&lt;/b&gt;:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;if &amp;ldquo;Parameter: Comments&amp;rdquo; is not listed here, then if your workflow can be manually started and you allow a workflow initiator to enter comments when manually starting the workflow, they will be lost.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;They will not be included in the emails or on the &amp;ldquo;Task Process Consolidated Comments&amp;rdquo; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;The alternative is to enter static text here or to enter static text when you are adding a workflow to the list, library or content type&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;16.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Subject &lt;/b&gt;&amp;ndash; Default subject of task notifications.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;I personally do not complete this one because I make each task notification subject different depending on how complex the workflow is.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;For example, a reassigned or change request task gets a different subject that an original task.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Or a task assigned to a group will have a different subject than a task assigned to an individual. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;17.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Duration &lt;/b&gt;&amp;ndash; the number of days, weeks or months that a person has to complete a task&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;You can set this parameter here, in the overall workflow process itself, or when adding the workflow to the list, library or content type. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Make sure this is as least set as &amp;ldquo;Parameter: Duration&amp;rdquo; in the advanced.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;18.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Duration Unit &lt;/b&gt;&amp;ndash; days weeks or months&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;You can set this parameter here, in the overall workflow process itself, or when adding the workflow to the list, library or content type. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Make sure this is as least set as &amp;ldquo;Parameter: Duration Unit&amp;rdquo; in the advanced settings.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&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-family:Calibri;font-size:small;"&gt;19.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Due Date &lt;/b&gt;&amp;ndash; If you&amp;rsquo;d rather set an overall due date for the entire task process you can set it here.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;You can set this parameter here, in the overall workflow process itself, or when adding the workflow to the list, library or content type. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Make sure this is as least set as &amp;ldquo;Parameter: Due Date&amp;rdquo; in the advanced settings.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;An example of the screen when you are assigning a workflow to a list, library or content type is below.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Note the parameters that you can set here or in the Task Process&amp;rsquo;s advanced settings.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;You can make these fields available to a workflow initiator or hide them. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp14.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/SPDAdvProp14.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&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;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2949" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Business+Process+Automation/default.aspx">Business Process Automation</category></item><item><title>Connect multiple sub-sites in Data View Web Part 2010</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/04/12/connect-multiple-sub-sites-in-data-view-web-part-2010.aspx</link><pubDate>Thu, 12 Apr 2012 19:40:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2948</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;In SharePoint 2007, the&amp;nbsp;Data View Web part (DVWP) was all the rage.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You could create complex views from multiple sites within your site collection or other data sources and group, sort and format the data in a visually appealing and meaningful way.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;SharePoint Designer 2007 made it easy for you to connect multiple lists on sub-sites with a handy little &amp;ldquo;Connect to another library&amp;hellip;&amp;rdquo; link at the bottom of the data sources task pane.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;With all the improvements Microsoft has made with the Content Query Web Part, I was excited to use the DVWP as a sort of expanded version of information that I show in a CQWP.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;However, SharePoint Designer 2010 has gotten rid of the task pane and the handy little link that allows you to quickly connect data sources to display in the DVWP.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Out of the box you can see you site&amp;rsquo;s document libraries and lists in the data sources. &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;So the question is, &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="text-decoration:underline;"&gt;how do you combine data from multiple sub-sites to display in a consolidated list&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;For this example, I have 8 departments and each department has a sub-site.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Each of these sub-sites has a &amp;ldquo;Goals&amp;rdquo; list that uses a global content type in a custom task list.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I want to consolidate each department&amp;rsquo;s goals on the parent site to display a view the company-wide goals.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;Inbar Cizar (@Cizi) does an excellent job of explaining how to add a sub-site&amp;rsquo;s list to your list of data sources in this post:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/cizi/archive/2010/08/01/connect-to-another-library-in-sharepoint-designer-2010.aspx"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;http://blogs.microsoft.co.il/blogs/cizi/archive/2010/08/01/connect-to-another-library-in-sharepoint-designer-2010.aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Once you have added each of your department&amp;rsquo;s goals as a data source, you will need to create a &amp;ldquo;Linked Data Sources&amp;rdquo; and use this Linked Data Source in your Data View Web Part&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/DataSources1.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/DataSources1.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Then open an existing or create a new page (I used &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;an .aspx 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;On the ribbon, click on the down arrow on the Data View button and select your Linked Data Source.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/DataSource_2D00_Insert.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/DataSource_2D00_Insert.gif" border="0" alt="" /&gt;&lt;/a&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;From there you can add your columns, group, sort and modify the DVWP as needed. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;NOTE: &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Name your SOAP datasources carefully; you can use the name of the connection to group or sort a DVWP by the name of the sub-site, or whatever you call it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;After the datasources have been connected as a Linked Source, any name changes are not reflected, so you will need to create a new Linked Source to reflect a name change. &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;Here are instructions to group the DVWP by the site name, which is what I named the SOAP Service datasource. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Call your &amp;ldquo;SOAP Services&amp;rdquo; data source the name of your sub-site.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Click on sort and Group &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;3.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Select &amp;ldquo;Add Sort Expression&amp;hellip;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;4.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Select &amp;ldquo;agg:source&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/DataSources_2D00_GroupByDatasource.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/DataSources_2D00_GroupByDatasource.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2948" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/sharepointoint+2010/default.aspx">sharepointoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Data+View+Web+Part/default.aspx">Data View Web Part</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/DVWP/default.aspx">DVWP</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Data+Sources/default.aspx">Data Sources</category></item><item><title>SharePoint Designer 2010 Workflows – an alternate deployment option</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/04/12/sharepoint-designer-2010-workflows-an-alternate-deployment-option.aspx</link><pubDate>Thu, 12 Apr 2012 18:55:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2943</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;I love SharePoint Designer and all the cool things you can do with it as a no-code solutions expert.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I love the concept of being able to save a globally reusable workflow as a Site Template and deploying it to other site collections via Visual Studio or Sandbox Solutions.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Unfortunately, we ran into some major issues when trying to deploy a .wsp file from a local machine to our development server to the client&amp;rsquo;s stage server and finally to production.&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;I worked with a supremely talented developer,&amp;nbsp;Chris Domino, to try and deploy workflows through Visual Studio.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Unfortunately, for a variety of reasons, we couldn&amp;rsquo;t get it to work.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You can read his take on our deployment adventure in his 3-part blog here:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/05/importing-sharepoint-designer-workflows-into-visual-studio-part-1.aspx"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;Importing SharePoint Designer Workflows into Visual Studio - Part 1&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;, &lt;/span&gt;&lt;a href="http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/07/importing-sharepoint-designer-workflows-into-visual-studio-part-2.aspx"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;Part 2&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt; &amp;amp; &lt;/span&gt;&lt;a href="http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/07/importing-sharepoint-designer-workflows-into-visual-studio-part-3.aspx"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;Part 3&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;After spending way too much time on that process, we decided we were going to use the process that Microsoft gave us; Save as a Template, upload into User Solutions, Activate and then turn on the feature.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In theory, this sounds great.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Unfortunately, we ran into a bunch of issues with this process too&amp;hellip;including variables getting messed up, empty folders being created, changes not updating, buttons not working, InfoPath form customizations getting lost, etc.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We would resolve one issue and the next time, a totally new one would pop up.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The worst thing of all was that when we deactivated the feature and removed the solution, our out-of-the-box task fields that the workflow used were removed too!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;As a last resort, I decided to try the same thing that I did when I needed to get a workflow in SharePoint 2007 from one site to another: &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Copy and Paste.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Yup, that&amp;rsquo;s right, I just copied and pasted a workflow from one site to another, did a quick &amp;ldquo;Find and replace&amp;rdquo; of GUID&amp;rsquo;s for list ID&amp;rsquo;s and I was able to use the same workflow on multiple sites, my own 2007 version of a reusable workflow.&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;I thought it was my own little secret way until I just searched for and found this post by&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Paul Galvin that gives great step-by-step instructions for moving 2007 workflows:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="https://www.nothingbutsharepoint.com/sites/eusp/Pages/why-can_e2_80_99t-i-easily-port-sharepoint-designer-workflow-solutions-from-one-list-to-another-part-2.aspx"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;https://www.nothingbutsharepoint.com/sites/eusp/Pages/why-can_e2_80_99t-i-easily-port-sharepoint-designer-workflow-solutions-from-one-list-to-another-part-2.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The only thing missing is that you will need to do a Find and Replace of the GUID&amp;rsquo;s once you have the workflow in its new home.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I have only used this method for copying workflows from one site to another in the same site collection in the same environment.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I do not know if it will work from environment to environment.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;strong&gt;Here are the updated instructions for SharePoint 2010.&lt;/strong&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Some notes about these instructions:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Workflows were created as Reusable workflows and were not associated with any lists or content types. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;I created these workflows on a subsite so they could be tested, then copied it up to the parent site where I could then globally publish them on our development environment and then followed the same process on our production environment.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Our site columns and content types were created through Visual Studio so that all of our environments have the same GUID&amp;rsquo;s.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you are not able to have a developer do this, then you may need to do a few extra steps listed at the end to re-align everything.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;These workflows do not include any lookups to other site lists, but they do include global site columns.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Here is the process that worked best for us.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;These steps assume that you have completed your workflow, it is fully tested and you are ready to move it to its new home. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;First we need to make sure that the workflow&amp;rsquo;s new home has a &amp;ldquo;Workflow&amp;rdquo; folder for it to be moved to.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;In the site where you will be moving your workflow, go to All Files (see print screen below if you get a blank screen) and confirm that there is a &amp;ldquo;Workflows&amp;rdquo; folder.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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 style="mso-no-proof:yes;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy2.gif"&gt;&lt;img height="154" width="460" src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy2.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If there is not, create a new reusable workflow.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Don&amp;rsquo;t worry about adding in steps or publishing it&amp;hellip;we are just doing this to create the folder.&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 style="mso-no-proof:yes;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy1.gif"&gt;&lt;img height="219" width="433" src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy1.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;The following steps happen on the site where the workflow that you want to move currently exists.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Click on &amp;ldquo;All Files&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Click on the &amp;ldquo;Workflows&amp;rdquo; folder&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;3.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Click on the name of the workflow that you want to move, right click and select &amp;ldquo;Copy&amp;rdquo; (or select and click Ctrl +C)&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 style="mso-no-proof:yes;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy3.gif"&gt;&lt;img height="463" width="418" src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy3.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;4.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Go to the workflow&amp;rsquo;s new home, &amp;ldquo;Workflows&amp;rdquo; folder&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;5.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Paste your folder in the &amp;ldquo;Workflows&amp;rdquo; folder by either clicking &amp;ldquo;Ctrl+V&amp;rdquo; or right click and select &amp;ldquo;Paste&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;6.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Now click on Workflows link&amp;nbsp;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy4.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy4.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt; in the left navigation and open your workflow.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;7.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If your form has any out of the box Association or Task InfoPath forms, delete them and let the new site re-generate them for you. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;a.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;NOTE: If you customized the Initiation and/or Task InfoPath form, click on them to open InfoPath and publish them.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;SharePoint will do some back-end magic that will associate your form with this workflow on this site. &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 style="mso-no-proof:yes;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy5.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy5.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&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;NOTE: Your Task form may have a different name with &amp;ldquo;Copy&amp;rdquo; if you are using the out of the box task form.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you need to associate a custom content type task form to your workflow, check out this article:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/21/assign-a-custom-content-type-to-task-process-in-a-sharepoint-designer-2010-workflow.aspx"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;Assign a Custom Content Type to Task Process in a SharePoint Designer 2010 workflow&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;8.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Click through all the steps in your workflow or click on Check for errors to confirm that everything is aligned correctly. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;This is where you may need to delete remove associated fields and re-add them.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Or delete fields that you are populating and re-add them in the new environment.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Since all of our fields and content types were created with code and the GUID&amp;rsquo;s matched, I don&amp;rsquo;t have any examples to show.&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 style="mso-no-proof:yes;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy7.gif"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy6.gif.jpg"&gt;&lt;img height="110" width="237" src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy6.gif.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;9.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;If you need to make your site globally available, paste your workflow in the &amp;ldquo;Workflows&amp;rdquo; folder on the parent site and you can click on &amp;ldquo;Publish Globally&amp;rdquo; from here.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy7.gif"&gt;&lt;img height="145" width="183" src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy7.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Notes about globally publishing a workflow:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;I don&amp;rsquo;t recommend copying and pasting directly into the global workflows folder.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In theory I think it would work, but I don&amp;rsquo;t know enough about what SharePoint magic happens to make a workflow globally available, and I&amp;rsquo;d rather be safe than sorry.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If you have a globally published workflow that you need to add to a content type, don&amp;rsquo;t add it during business hours or during times where users may actively be editing that content type&amp;hellip;they may lose their information as your changes override theirs. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;The same goes for re-publishing changes to the global workflow.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If you have custom InfoPath forms, the process of globally publishing it will generate a new out of the box form.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;To replace this, copy the forms from your &amp;ldquo;All Files -&amp;gt;Workflows&amp;rdquo; folder and paste into the Global Workflows folder: &amp;quot;All Files -&amp;gt;_catalogs -&amp;gt;wfpub&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy8.gif"&gt;&lt;img height="316" width="384" src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/WorkflowDeploy8.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2943" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category></item><item><title>Thoughts On Virtualization For SharePoint 2010 Development</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/04/06/thoughts-on-virtualization-for-sharepoint-2010-development.aspx</link><pubDate>Fri, 06 Apr 2012 19:53:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2942</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="Text"&gt;Being a SharePoint developer, I&amp;#39;ve always run Windows Server natively. From the timeframes of 2003, 2003 R2, 2008, and 2008 R2, I&amp;#39;ve gotten very used to having gray task bars, typing &amp;quot;sldkjf&amp;quot; into the Shut Down Tracker, and spending lots of time getting wireless and sound to work. There are a lot of resources out there that discuss how to turn Windows Server into a client operating system, going beyond configuring Aero and hacking the Zune setup to install in an unsupported environment. &lt;/p&gt;
&lt;p class="Text"&gt;What I was more interested in was the development experience. Despite the fact that SharePoint 2010 installs, to a limited extent, on Windows 7, I still think that the best development experience is to run server native, and have the full platform and API available to Visual Studio. At the end of the day, you still have Visual Studio and SharePoint installed on the same machine, so why not work with the full features of each? &lt;/p&gt;
&lt;p class="Text"&gt;The alternative of course is virtualization. VMs are great, since you can quickly tear down and tear up server environments pre-packaged with SQL Server, Visual Studio, and all of the SharePoint configuration you require. An interesting corollary to this is that you therefore &lt;span class="Italic"&gt;don&amp;#39;t need&lt;/span&gt; to reinstall or reinstate Office, other apps, personal files, preferences, etc. every time you hose your box; Email, music, etc. all rock out on your host machine, leaving your VM a lean server environment that could exactly match production. &lt;/p&gt;
&lt;p class="Text"&gt;But there are a few downsides; in my opinion, they sort of outweigh the many upsides. The main one is performance. I love multitasking, and when I&amp;#39;m building out SharePoint sites, there are a lot times when I&amp;#39;m waiting thirty seconds to possibly thirty minutes for IIS to reset, PowerShell scripts to run, sites to spin up and warm up, etc. Those are perfect opportunities to pop into a different instance of Visual Studio and kill a bug or implement a quick feature. &lt;/p&gt;
&lt;p class="Text"&gt;I&amp;#39;ve found that having a full SharePoint farm running as a web garden on a single physical machine combined with multiple Visual Studios running combined with Outlook, OneNote, Zune, and everything else, things get &lt;span class="Bold"&gt;SLOW&lt;/span&gt;. Now virtualize the processor. Now virtualize the hard drive, memory, NIC, etc. Now throw in the overhead of virtualization itself. Yikes. Or, more appropriately: Yawn! &lt;/p&gt;
&lt;p class="Text"&gt;Now if you&amp;#39;re on three concurrent SharePoint projects (bless your soul) and need to be able to support three separate farms, the choice to use VMs is sort of made for you. But when it comes to the standard day-to-day doings of a developer, the performance hit is really felt hard. But performance, in terms of hardware (physical or virtual) throughout, is only part of the picture. The other knock I have against living in a virtual world isn&amp;#39;t exactly &amp;quot;performance,&amp;quot; per say, but &amp;quot;code speed.&amp;quot; &lt;/p&gt;
&lt;p class="Text"&gt;I can fly through web development in Visual Studio when I have two monitors, a few extra CPU cores laying around, and a local database. It&amp;#39;s not that you can&amp;#39;t achieve this with virtualization technology, particularly around multiple monitors; the two technologies I&amp;#39;ve used, &lt;a target="_blank" href="https://www.virtualbox.org/" class="Link"&gt;VirtualBox&lt;/a&gt; and &lt;a target="_blank" href="http://www.microsoft.com/en-us/server-cloud/windows-server/hyper-v-overview.aspx" class="Link"&gt;Hyper-V&lt;/a&gt;, can basically get there. (VirtualBox fakes this by having two separate windows that can talk to each other. With Hyper-V running locally, I can remote into the machine with RDP&amp;#39;s &amp;quot;Use all my monitors for the remote session&amp;quot; option enabled.) &lt;/p&gt;
&lt;p class="Text"&gt;But it&amp;#39;s not the same! &lt;/p&gt;
&lt;p class="Text"&gt;Both setups are &amp;quot;tweaky.&amp;quot; Whenever I&amp;#39;m remoted into a server, it never exactly quite &lt;span class="Italic"&gt;feels&lt;/span&gt; seamless. There are ever so slight delays in mouse clicks and keystrokes. Or the connection would drop and reset itself. Or the screen would hiccup while repainting and I&amp;#39;d end up opening something twice. Or I&amp;#39;d accidentally control + alt + delete or alt + tab my way into a confusing state. &lt;/p&gt;
&lt;p class="Text"&gt;When using a local VM, my internet connections get screwy. I need to adjust them whenever I&amp;#39;m in a new office or connected to a new wireless or wired network. (And it&amp;#39;s quite annoying to have my tray network icon constantly displaying the yellow-warning-exclamation-marked-triangle overlay.) You also lose the file copy-and-paste you get with RDP. Beyond that, there are paradigm shifts for things like hibernation and screen locking that just make my development experience a bit clunkier. &lt;/p&gt;
&lt;p class="Text"&gt;In both scenarios, there are setups I&amp;#39;ve configured that basically keep me as technically productive as a native development environment, in terms of how long it would take me to complete a given task. However, I don&amp;#39;t fly. My code speed is noticeably lessened, and beyond not physically being able to type and compile the same about of code, it&amp;#39;s a distraction that steals away some of the cycles from my own CPU (my brain). &lt;/p&gt;
&lt;p class="Text"&gt;This might sound minuet and over-cerebral, but attitude plays a huge role in my work. Technology should be making us more productive, not less; that&amp;#39;s the whole reason my career exists. When I boot up and click the Visual Studio icon in my task bar, and don&amp;#39;t immediately see the splash screen, I become frustrated, click it again, and end up waiting even longer while both instances of the application launch only to have to close one - which &lt;span class="Italic"&gt;still&lt;/span&gt; takes over a minute while my virtual or remote machine warms up elsewhere. &lt;/p&gt;
&lt;p class="Text"&gt;By then it&amp;#39;s 9:20, I&amp;#39;m already off my game, and haven&amp;#39;t even started working yet. &lt;/p&gt;
&lt;p class="Text"&gt;But I think I&amp;#39;ve reached a happy place that combines the pros of all of the above environments (native SharePoint / Visual Studio, virtualization, RDP, and having a host client operating system) while mitigating the cons as much as possible. That happy place is Windows 8. (Note: this was written while running Windows 8 Consumer Preview; things might change when the platform RTMs.) &lt;/p&gt;
&lt;p class="Text"&gt;Having been a Windows Phone 7 user since the day it launched, Windows 8 wasn&amp;#39;t as big a shift for me as it will be for PC folks not familiar with Metro. But I don&amp;#39;t want to write about Windows 8 overall; this is instead focusing on the introduction of Hyper-V to the client, which is a wonderful enhancement. VirtualBox, until now, edged Hyper-V out with client OS support. What I want to discuss here is my exploration into virtualization on the Microsoft stack from the perspective of a SharePoint developer. &lt;/p&gt;
&lt;p class="Text"&gt;The first task was getting my host environment installed. I had been running Windows Server 2008 R2 natively for quite a while. Then my hard drive crashed...literally...into the ground...as my laptop fell from my hand while walking to a meeting. I decided that this would be a great opportunity to kick around not only the beta of the new client OS, but also a new SharePoint development paradigm. After getting a new hard drive for my Lenovo T510, I installed Windows 8 from a USB drive on a new partition. &lt;/p&gt;
&lt;p class="Text"&gt;Once it was installed, after spending a few minutes figuring out how to get into Control Panel, the next thing I did was go and enable Hyper-V in Windows Features. There are two: &amp;quot;Hyper-V Management Tools&amp;quot; and &amp;quot;Hyper-V Platform.&amp;quot; The issue I ran into was the latter being disabled. I didn&amp;#39;t panic though: CPU virtualization was probably turned off in my BIOS. So I rebooted and into the BIOS, found the proper screen, and &lt;span class="Italic"&gt;then &lt;/span&gt;panicked: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Thoughts-On-Virtualization-For-SharePoint-2010-Development/BIOS-Disabled.jpg" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;It was already enabled! I didn&amp;#39;t know what the &amp;quot;Intel VT-d Feature&amp;quot; was, but I decided to enable it anyway, as it could be a component to the CPUs virtualization infrastructure that Hyper-V depends on. Then I rebooted and checked the features again; Hyper-V was still disabled. Already calculating how much more downtime I&amp;#39;d have to burn through installing Windows Server 2008 R2 again, I went to Lenovo&amp;#39;s site and starting downloading and installing all BIOS, chipset, and Intel drivers I could get for my T510. &lt;/p&gt;
&lt;p class="Text"&gt;Fortunately, after flashing the BIOS, I was able to finish installing Hyper-V. Unfortunately, in my frantic &amp;quot;I CAN&amp;#39;T WORK&amp;quot; state, I didn&amp;#39;t keep track of which updates I installed. I&amp;#39;m almost certain it was the BIOS update, but I can&amp;#39;t know for sure. Regardless, I had native virtualization on my native client machine, and was ready to rock. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Thoughts-On-Virtualization-For-SharePoint-2010-Development/Windows-Features.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;After standing up a new VM with all the normal trimmings, I installed Windows Server 2008 R2, SQL Server 2008 R2, SharePoint 2010 Enterprise, and Visual Studio 2010 Premier, along with all services packs and droppings from Windows Update. My machine has eight gigs of RAM, and I allocated the maximum allowed amount, five, to the VM. (Let the record show that I did not review or implement any of the Tech-Net Hyper-V performance optimizations, since my set up was so basic. The only other step I performed was creating a Virtual Switch so that I could share my NICs with the VM. &lt;/p&gt;
&lt;p class="Text"&gt;Setting up a virtual network is still something I don&amp;#39;t completely have my head around. Why I have to look at this all day still vexes me: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Thoughts-On-Virtualization-For-SharePoint-2010-Development/Network-Icon.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;And the fact that wireless works fine at the office but only for my VM at home (that&amp;#39;s right: Internet access on the VM but blackout on my host) is even more annoying. Even though it&amp;#39;s certainly possible to work without Internet access, the main reason I want it up for both is to be able to remote from host to VM. And I think it does; I&amp;#39;ve gotten it to work at home, meaning that VM needs to be online &amp;quot;enough&amp;quot; for it to respond to RDP calls, and the host has to also be online &amp;quot;enough&amp;quot; to think it can send them. &lt;/p&gt;
&lt;p class="Text"&gt;But getting proper RDP is worth it. Hyper-V comes with a connection mechanism, but it has crappy &amp;quot;full screen&amp;quot; support. Compare working in: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Thoughts-On-Virtualization-For-SharePoint-2010-Development/VM-Connection.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;To: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Thoughts-On-Virtualization-For-SharePoint-2010-Development/RDP-Connection.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;I know those screen shots aren&amp;#39;t great, but it shows you how much real estate you can get with an RDP connection. Once I got past all of this, I was able to really get into a SharePoint development groove. However you do it, having Visual Studio (along with &lt;a target="_blank" href="http://visualstudiogallery.msdn.microsoft.com/ee876627-962c-4c35-a4a6-a4d89bfb61dc" class="Link"&gt;CKS Dev&lt;/a&gt;) installed on your SharePoint box is basically a must: quick deploys, copy to root, and better SPMetal support are features I cannot live without. Like I said, it&amp;#39;s going to be slower than a bare metal installation, but in addition to a fully functional server environment, I also have a client to run the rest of my apps. &lt;/p&gt;
&lt;p class="Text"&gt;To that point, using Windows 8 beta with the remaining three gigs of RAM while a VM is running with the rest isn&amp;#39;t awesome. But it is passable, especially since all my work (Visual Studio, SQL Server, and IIS) is not taking up any of that memory. I typically have a few Office apps, Lync, Zune, and probably a Visual Studio running (like I could possibly stand up an OS without my IDE) and it&amp;#39;s not bad. &lt;/p&gt;
&lt;p class="Text"&gt;But like I said, it&amp;#39;s not awesome either. &lt;/p&gt;
&lt;p class="Text"&gt;So I&amp;#39;m going to give this a try for a few months. The lock screen crashes. The networking is not 100%. Restarting hangs occasionally. But to date, Windows 8 (beta) with Hyper-V is the most evolved development environment I&amp;#39;ve had for SharePoint. The best part is, when I&amp;#39;m not developing in SharePoint, it&amp;#39;s off; I can dev in my host environment and it&amp;#39;s super speedy. (I have heretofore failed to mention that Windows 8, when not babysitting a VM or being a beta brat, is freaking fast.) Also, I owe it to myself (and my readers...and probably Microsoft) to bone up on some Hyper-V best practices, because I might be able to squeeze even better performance out of it. &lt;/p&gt;
&lt;p class="Text"&gt;Cya. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2942" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Hyper-V/default.aspx">Hyper-V</category></item><item><title>SPItemEventReceiver.ItemUpdated Method Doesn’t Fire When a Workflow Status Changes</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/31/spitemeventreceiver-itemupdated-method-doesn-t-fire-when-a-workflow-status-changes.aspx</link><pubDate>Sat, 31 Mar 2012 17:53:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2941</guid><dc:creator>Josh Eberhardy</dc:creator><slash:comments>0</slash:comments><description>&lt;h2 class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;The Backstory&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;I recently worked on a project where our users wanted to have a number of different approval workflows (about 15) on a single list. When they added a new list item, they would manually select an appropriate workflow depending on the type of list item they had added. Each list item would only have a single workflow running on it at any given time. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;However, every time a new workflow is started on a given list, a new column is added to the list that shows the workflow status. After starting several of these workflows, not only do things get ugly by having too many columns, forcing the user to horizontally scroll, but SharePoint lists only allow 8 lookup columns on a list by default. This means that after too many of these workflows are started, they get the following error: &lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;COLOR:#6d6f72;FONT-SIZE:8pt;"&gt;This view cannot be displayed because the number of lookup and workflow status columns it contains exceeds the threshold (8) enforced by the administrator.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Of course, this setting can be changed (&lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/dinaayoub/archive/2010/04/22/sharepoint-2010-how-to-change-the-list-view-threshold.aspx"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;http://blogs.msdn.com/b/dinaayoub/archive/2010/04/22/sharepoint-2010-how-to-change-the-list-view-threshold.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;), but changing this value beyond 8 results in a performance hit and not only that, you&amp;rsquo;re still left with an ugly looking list with too many columns, forcing users to scroll horizontally.&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;The ideal solution would be to create a single, custom SharePoint Designer workflow which accepts user input to decide where to route the approvals. Our users didn&amp;rsquo;t like that idea. They wanted separate, out-of-the-box workflows. &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;Since we would only be running a single workflow on any given list item, I came up with the idea to create a hyperlink column on the list called &amp;ldquo;Workflow Status&amp;rdquo;, and have it show the status of the most recently started workflow. This way, rather than having 15 different columns, each showing a different workflow&amp;rsquo;s status, we could have a single column. Clicking on the status link would show the workflow information and history.&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;Since we weren&amp;rsquo;t using SharePoint Designer workflows, we needed a different way to have the workflow update my custom column with the workflow status. I decided to create an event receiver which would be triggered when a workflow was started or its status changed. Below is the code that I wrote:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote style="width:530px;"&gt;
&lt;span style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;using&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;System;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;using&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;System.Security.Permissions;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;using&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;System.Xml.Linq;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;using&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;Microsoft.SharePoint;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;using&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;Microsoft.SharePoint.Security;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;using&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;Microsoft.SharePoint.Utilities;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;using&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;Microsoft.SharePoint.Workflow;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;namespace&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;ListEventReciever.EventReceiver1&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;public&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;class&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;EventReceiver1&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;SPItemEventReceiver&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;public&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;override&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;void&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;ItemUpdating(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;SPItemEventProperties&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;properties)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;updateWFStatus(properties,&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;true&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;base&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.ItemUpdating(properties);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;public&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;override&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;void&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;ItemUpdated(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;SPItemEventProperties&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;properties)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;updateWFStatus(properties,&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;false&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;base&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.ItemUpdated(properties);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;private&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;void&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;updateWFStatus(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;SPItemEventProperties&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;properties,&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;bool&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;ing)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;try&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;SPListItem&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;currentItem&amp;nbsp;=&amp;nbsp;properties.ListItem;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;url&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.Empty;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;wfState&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.Empty;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;SPWorkflowCollection&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;wfc&amp;nbsp;=&amp;nbsp;currentItem.Workflows;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;SPWorkflow&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;workflow&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;null&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;//Although only one workflow should be running on this list item, &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//we should check. If there is more than one, only grab the most&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//recent one.&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;foreach&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;SPWorkflow&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;wf&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;in&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;wfc)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;if&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;(workflow&amp;nbsp;==&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;null&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;workflow&amp;nbsp;=&amp;nbsp;wf;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;else&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;if&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;(wf.Created&amp;nbsp;&amp;gt;&amp;nbsp;workflow.Created)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;workflow&amp;nbsp;=&amp;nbsp;wf;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;//The workflow xml is going to let us tap into the status of the WF&lt;br /&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//and the URL that will allow us to click on the status hyperlink.&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;XDocument&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;xdoc&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;XDocument&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.Parse(workflow.Xml);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;wfState&amp;nbsp;=&amp;nbsp;GetWorkflowStatus(xdoc);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;url&amp;nbsp;=&amp;nbsp;workflow.StatusUrl;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;this&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.EventFiringEnabled&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;false&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;if&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;(ing)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;properties.AfterProperties[&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Workflow&amp;nbsp;Status&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;]&amp;nbsp;=&amp;nbsp;properties.Web.Url&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;+&amp;nbsp;url&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;,&amp;nbsp;&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;+&amp;nbsp;wfState;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;else&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentItem[&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Workflow&amp;nbsp;Status&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;]&amp;nbsp;=&amp;nbsp;properties.Web.Url&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;+&amp;nbsp;url&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;,&amp;nbsp;&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;+&amp;nbsp;wfState;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentItem.Update();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;this&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.EventFiringEnabled&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;true&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;catch&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;Exception&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;this&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.EventFiringEnabled&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;true&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;//We need to get the Status1 attribute, which is the ID of our workflow &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//status.&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;private&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;GetWorkflowStatus(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;XDocument&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;xdoc)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;Status1String;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;int&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;WorkflowStatusValue;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;WorkflowStatusString&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;Status1String&amp;nbsp;=&amp;nbsp;(&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;)xdoc.Element(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Workflow&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;).Attribute(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Status1&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;if&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;(!(&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;String&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.IsNullOrEmpty(Status1String)))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;WorkflowStatusValue&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;int&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;.Parse(Status1String.ToString());&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;WorkflowStatusString&amp;nbsp;=&amp;nbsp;WorkflowStatusLookup(WorkflowStatusValue);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;WorkflowStatusString;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;//The status of the workflow is actually an integer. Couldn&amp;rsquo;t find any&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//official documentation showing these, but an Internet search proved fruitful&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:green;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//(&lt;a href="http://chanakyajayabalan.wordpress.com/2010/03/08/sharepoint-workflow-status-codes/"&gt;http://chanakyajayabalan.wordpress.com/2010/03/08/sharepoint-workflow-status-codes/&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;private&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;WorkflowStatusLookup(&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;int&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;status)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;switch&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;(status)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;0:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Not&amp;nbsp;Started&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;1:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Failed&amp;nbsp;on&amp;nbsp;Start&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;2:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;In&amp;nbsp;Progress&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;3:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Error&amp;nbsp;Occurred&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;4:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Canceled&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;5:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;6:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Failed&amp;nbsp;on&amp;nbsp;Start&amp;nbsp;(retrying)&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;7:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Error&amp;nbsp;Occurred&amp;nbsp;(retrying)&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;15:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Canceled&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;16:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Approved&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;case&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;17:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Rejected&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;default&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:blue;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;return&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;quot;Unknown&amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&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;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Consolas;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/blockquote&gt;
&lt;h2 style="MARGIN:24pt 0in 0pt;"&gt;The Problem&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;The problem was that when the workflow status changed, my code wasn&amp;rsquo;t firing. However, if I manually changed some other field on the list, the code would fire. This issue perplexed me for the longest time, until I realized that ListItems reference lookup fields by their ID, rather than their value. Therefore, my list item wasn&amp;rsquo;t storing the value for the workflow status, it was&amp;nbsp;storing the ID of my workflow status field. That ID doesn&amp;rsquo;t change, regardless of the status, so although the status was changing, the ListItem itself was not.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:24pt 0in 0pt;"&gt;The Solution&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;After much weeping and gnashing of teeth I discovered that if Content Approval for the Document Library is turned on (Document Library Settings &amp;gt;&amp;gt; Versioning Settings) and the workflow has Content Approval Enabled, the list item will be updated, thus triggering our code.&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;We didn&amp;rsquo;t actually need content approval, so I set the Draft Item Security to &amp;ldquo;Any user who can read items&amp;rdquo; so all users would see the item regardless of its content approval status, and I just hid this column from the users. If I wanted to go a step further I could add code to my event receiver to automatically approve these, but for my purposes this wasn&amp;rsquo;t necessary. Problem solved!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2941" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Event+Receiver/default.aspx">Event Receiver</category></item><item><title>What are the Business Benefits for upgrading to SQL Server 2012?</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/27/what-are-the-business-benefits-for-upgrading-to-sql-server-2012.aspx</link><pubDate>Tue, 27 Mar 2012 15:19:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2940</guid><dc:creator>Marcello Benati</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Our Rightpoint architects have spent the last year working extensively with the SQL Server 2012 in conjunction with Microsoft, and with several of our clients. The benefits this new platform has to offer can significantly enhance your SQL Server environments.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-0.25in;margin:0in 0in 10pt 0.5in;mso-list:l0 level1 lfo1;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&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-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Improved Visualization of your Data&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;With Power View you can extract live data into PowerPoint presentations, saving you time and ensuring up to date information for every meeting. This feature enhances your visualization and interactivity with your data, giving you easy access to the company&amp;#39;s data, allowing you to quickly make business decisions, and it does this all within one browser.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-0.25in;margin:0in 0in 10pt 0.5in;mso-list:l0 level1 lfo1;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&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-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Improved Data Quality&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Our clients regularly need help with their data quality, an on-going challenge in many organizations. SQL Server 2012 has significantly reduced this problem by improving the accuracy and consistency of the data. It does this by cleaning the data itself resulting in excellent quality and on-going maintenance.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-0.25in;margin:0in 0in 10pt 0.5in;mso-list:l0 level1 lfo1;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&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-family:Calibri;font-size:small;"&gt;3.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Excellent Performance&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SQL Server 2012 greatly improves your query performance by thousands of times. It does this through fast, interactive exploration of your data, allowing you to get even more business value, even quicker, thus resulting in faster and more accurate decisions. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-0.25in;margin:0in 0in 10pt 0.5in;mso-list:l0 level1 lfo1;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&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-family:Calibri;font-size:small;"&gt;4.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Mission Critical Confidence&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SQL Server&amp;#39;s new disaster recovery solution helps to protect your infrastructure whilst reducing planned and unplanned downtime. It delivers maximum application availability and data protection, ensuring you have the performance you need, at the right price, especially for mission critical workloads.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-0.25in;margin:0in 0in 10pt 0.5in;mso-list:l0 level1 lfo1;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&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-family:Calibri;font-size:small;"&gt;5.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Scale Business Solutions Fast with the Cloud&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SQL Server 2012 offers you the agility to quickly create and scale solutions that offer you new business opportunity from server to private or public cloud. These are all linked together for optimized productivity allowing you to build once so you can deploy and manage whenever, wherever.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2940" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/sql2012/default.aspx">sql2012</category></item><item><title>SQL 2012 Licensing Primer.</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/27/sql-2012-licensing-primer.aspx</link><pubDate>Tue, 27 Mar 2012 15:16:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2939</guid><dc:creator>Marcello Benati</dc:creator><slash:comments>0</slash:comments><description>&lt;div class="WordSection1"&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="color:#943634;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="WordSection3"&gt;
&lt;p class="Body" style="margin:0in 0in 3pt;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;SQL Server 2012&lt;/b&gt; is a significant product release, providing &lt;b style="mso-bidi-font-weight:normal;"&gt;Mission Critical Confidence&lt;/b&gt; with greater uptime, blazing-fast performance and enhanced security features for mission critical workloads; &lt;b style="mso-bidi-font-weight:normal;"&gt;Breakthrough Insight&lt;/b&gt; with managed self-service data exploration and stunning interactive data visualization capabilities; &lt;b style="mso-bidi-font-weight:normal;"&gt;Cloud On Your Terms&lt;/b&gt; by enabling the creation and extension of solutions across on-premises and public cloud.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;SQL Server 2012 is a &lt;i style="mso-bidi-font-style:normal;"&gt;Cloud Ready Information Platform&lt;/i&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 style="margin:12pt 0in 3pt;"&gt;&lt;span style="color:#943634;"&gt;Editions overview&lt;/span&gt;&lt;/h1&gt;
&lt;p class="Body" style="margin:0in 0in 3pt;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Segoe UI;"&gt;The SQL Server 2012 Editions have been streamlined to better align with how customers are deploying applications and solutions.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;SQL Server 2012 will be released in 3 main editions*: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;b&gt;&lt;span style="font-size:small;"&gt;Enterprise &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:small;"&gt;for mission critical applications and large scale data warehousing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;b&gt;&lt;span style="font-size:small;"&gt;Business Intelligence&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:small;"&gt;, a new product edition, providing premium corporate and self-service BI &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;b&gt;&lt;span style="font-size:small;"&gt;Standard&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:small;"&gt; for basic database, reporting and analytics capabilities&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" style="margin:0in 0in 3pt;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Segoe UI;"&gt;The main editions are now offered in a consistent, tiered model which creates greater consistency across editions, features and licensing. Enterprise Edition will include all features available in SQL Server 2012.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The Business Intelligence Edition will include premium BI features as well as all of the Standard Edition features. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Notes" style="margin:6pt 0in 12pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;em&gt;&lt;span style="font-family:Segoe UI;"&gt;*Note: SQL Server 2012 will continue to be available in Developer, Express and Compact editions. Web Edition will be offered in a Services Provider &lt;strong&gt;&lt;span style="font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;License&lt;/span&gt;&lt;/strong&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt; &lt;/b&gt;Agreement (SPLA) model only. Datacenter Edition is being retired with all capabilities now available in Enterprise. Workgroup and Small business Editions are also being retired. &lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 style="margin:12pt 0in 3pt;"&gt;&lt;span style="color:#943634;"&gt;SQL Server 2012 Licensing Options&lt;/span&gt;&lt;/h1&gt;
&lt;p class="Body" style="margin:0in 0in 3pt;"&gt;&lt;span style="mso-fareast-language:KO;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Segoe UI;"&gt;SQL Server 2012 will continue to offer two licensing options &amp;ndash; one based on computing power, and one based on users or devices.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In the computing power-based license model, however, the way we measure power will shift from processors to cores.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Core-based licensing provides a more precise measure of computing power and a more consistent licensing metric regardless of where the solution is deployed across on-premises, virtual and cloud scenarios.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-fareast-language:KO;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;&lt;span style="mso-fareast-language:KO;"&gt;Enterprise Edition (EE) &lt;/span&gt;&lt;/b&gt;&lt;span style="mso-fareast-language:KO;"&gt;will be licensed based on compute capacity measured in cores&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-fareast-language:KO;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;&lt;span style="mso-fareast-language:KO;"&gt;Business Intelligence (BI) Edition&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-fareast-language:KO;"&gt; will be available in the Server + CAL model, based on users or devices&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-fareast-language:KO;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;b&gt;&lt;span style="mso-fareast-language:KO;"&gt;&lt;span style="font-size:small;"&gt;Standard Edition&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-fareast-language:KO;"&gt;&lt;span style="font-size:small;"&gt; &lt;b&gt;(SE)&lt;/b&gt; offers both licensing models to address basic database workloads&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="text-indent:0in;margin:0in 0in 3pt;mso-list:none;"&gt;&lt;span style="mso-fareast-language:KO;"&gt;&lt;span style="font-family:Segoe UI;color:#404040;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table width="366" cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" style="margin:auto auto auto -10.6pt;border-collapse:collapse;mso-table-layout-alt:fixed;mso-border-alt:solid windowtext .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0in .7pt 0in .7pt;"&gt;
&lt;tbody&gt;
&lt;tr style="height:10.7pt;mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;td width="9" rowspan="2" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:6.8pt;padding-right:0.7pt;background:white;height:10.7pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan="2" width="114" rowspan="2" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:85.5pt;padding-right:0.7pt;background:#404040;height:10.7pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:text1;mso-background-themetint:191;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 6.1pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;"&gt;SQL Server 2012 Editions&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="96" rowspan="2" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:1in;padding-right:0.7pt;background:#404040;height:10.7pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:text1;mso-background-themetint:191;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;"&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan="2" width="66" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:49.5pt;padding-right:0.7pt;background:#404040;height:10.7pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:text1;mso-background-themetint:191;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;"&gt;Licensing Options&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="81" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:60.7pt;padding-right:0.7pt;background:#404040;height:10.7pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-background-themecolor:text1;mso-background-themetint:191;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;"&gt;Pricing**&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;mso-bidi-font-weight:bold;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:3.65pt;mso-yfti-irow:1;"&gt;
&lt;td width="36" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:27pt;padding-right:0.7pt;background:#404040;height:3.65pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:text1;mso-background-themetint:191;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;mso-bidi-font-weight:bold;"&gt;Server&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;mso-bidi-font-weight:bold;"&gt;+ CAL&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="30" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:22.5pt;padding-right:0.7pt;background:#404040;height:3.65pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:text1;mso-background-themetint:191;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;mso-bidi-font-weight:bold;"&gt;Core Based&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="81" style="padding-bottom:0in;padding-left:0.7pt;width:60.7pt;padding-right:0.7pt;background:#404040;height:3.65pt;padding-top:0in;mso-background-themecolor:text1;mso-background-themetint:191;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;border:#f0f0f0;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;mso-bidi-font-weight:bold;"&gt;Open NL (US$)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:47.25pt;mso-yfti-irow:2;"&gt;
&lt;td width="9" rowspan="3" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:6.8pt;padding-right:0.7pt;background:white;height:47.25pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="54" rowspan="3" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:40.5pt;padding-right:0.7pt;background:#943634;height:47.25pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:accent2;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-background-themeshade:191;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 6.1pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;"&gt;Main Editions&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="60" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:45pt;padding-right:0.7pt;background:#f2f2f2;height:47.25pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-background-themeshade:242;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;Enterprise&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="96" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:1in;padding-right:0.7pt;background:#f2f2f2;height:47.25pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-background-themeshade:242;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;High end datacenter, data warehousing and BI capabilities&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="36" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:27pt;padding-right:0.7pt;background:#f2f2f2;height:47.25pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-background-themeshade:242;"&gt;
&lt;p align="center" class="MsoNoSpacing" style="text-align:center;margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="30" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:22.5pt;padding-right:0.7pt;background:#f2f2f2;height:47.25pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-background-themeshade:242;"&gt;
&lt;p align="center" class="MsoNoSpacing" style="text-align:center;text-indent:0.05pt;margin:0in 0in 0pt;mso-list:l5 level1 lfo4;"&gt;&lt;span style="line-height:90%;font-family:Wingdings;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;mso-themecolor:accent2;mso-themeshade:191;mso-bidi-font-weight:bold;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;uuml;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="81" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:60.7pt;padding-right:0.7pt;background:#f2f2f2;height:47.25pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-background-themeshade:242;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;$6,874 per Core&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:44.5pt;mso-yfti-irow:3;"&gt;
&lt;td width="60" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:45pt;padding-right:0.7pt;background:#d9d9d9;height:44.5pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;mso-border-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;Business Intelligence&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="96" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:1in;padding-right:0.7pt;background:#d9d9d9;height:44.5pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;mso-border-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;Enterprise BI and High Scale Analytics&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="36" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:27pt;padding-right:0.7pt;background:#d9d9d9;height:44.5pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;mso-border-themecolor:background1;"&gt;
&lt;p align="center" class="MsoNoSpacing" style="text-align:center;text-indent:0in;margin:0in 0in 0pt;mso-list:l7 level1 lfo3;"&gt;&lt;span style="line-height:90%;font-family:Wingdings;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;mso-themecolor:accent2;mso-themeshade:191;mso-bidi-font-weight:bold;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;uuml;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="30" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:22.5pt;padding-right:0.7pt;background:#d9d9d9;height:44.5pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;mso-border-themecolor:background1;"&gt;
&lt;p align="center" class="MsoNoSpacing" style="text-align:center;margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="81" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:60.7pt;padding-right:0.7pt;background:#d9d9d9;height:44.5pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;$8,592 per Server*&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:35.05pt;mso-yfti-irow:4;"&gt;
&lt;td width="60" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:45pt;padding-right:0.7pt;background:#f2f2f2;height:35.05pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:242;mso-border-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;Standard&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="96" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:1in;padding-right:0.7pt;background:#f2f2f2;height:35.05pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:242;mso-border-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;Basic database and BI capabilities&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="36" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:27pt;padding-right:0.7pt;background:#f2f2f2;height:35.05pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:242;mso-border-themecolor:background1;"&gt;
&lt;p align="center" class="MsoNoSpacing" style="text-align:center;text-indent:0in;margin:0in 0in 0pt;mso-list:l7 level1 lfo3;"&gt;&lt;span style="line-height:90%;font-family:Wingdings;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;mso-themecolor:accent2;mso-themeshade:191;mso-bidi-font-weight:bold;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;uuml;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="30" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:22.5pt;padding-right:0.7pt;background:#f2f2f2;height:35.05pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:242;mso-border-themecolor:background1;"&gt;
&lt;p align="center" class="MsoNoSpacing" style="text-align:center;text-indent:0in;margin:0in 0in 0pt;mso-list:l7 level1 lfo3;"&gt;&lt;span style="line-height:90%;font-family:Wingdings;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;mso-themecolor:accent2;mso-themeshade:191;mso-bidi-font-weight:bold;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;uuml;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#943634;font-size:14pt;mso-bidi-font-size:8.0pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="81" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:60.7pt;padding-right:0.7pt;background:#f2f2f2;height:35.05pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:242;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;$1,793 per Core, or $898 per Server*&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:32.8pt;mso-yfti-irow:5;mso-yfti-lastrow:yes;"&gt;
&lt;td width="9" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:6.8pt;padding-right:0.7pt;background:white;height:32.8pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="54" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:40.5pt;padding-right:0.7pt;background:#943634;height:32.8pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:accent2;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:191;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="60" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:45pt;padding-right:0.7pt;background:#d9d9d9;height:32.8pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;mso-border-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;Client Access License (CAL)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="96" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:1in;padding-right:0.7pt;background:#d9d9d9;height:32.8pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;mso-border-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;Access to SQL Server databases licensed per server&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="36" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:27pt;padding-right:0.7pt;background:#d9d9d9;height:32.8pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;mso-border-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#943634;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="30" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:22.5pt;padding-right:0.7pt;background:#d9d9d9;height:32.8pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-alt:solid white .5pt;mso-border-right-themecolor:background1;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;mso-border-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#943634;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:accent2;mso-themeshade:191;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="81" style="border-bottom:white 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:0.7pt;width:60.7pt;padding-right:0.7pt;background:#d9d9d9;height:32.8pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-background-themecolor:background1;mso-border-left-alt:solid white .5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid white .5pt;mso-border-top-alt:solid white .5pt;mso-border-top-themecolor:background1;mso-background-themeshade:217;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt 1.6pt;"&gt;&lt;span style="line-height:90%;font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8pt;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:text1;mso-bidi-font-weight:bold;"&gt;$209 per CAL&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class="Notes" style="margin:0in 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-family:Segoe UI;"&gt;* Requires CALs, which are sold separately&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p class="Notes" style="margin:0in 0in 0pt;"&gt;&lt;em&gt;&lt;span style="font-family:Segoe UI;"&gt;**Pricing is for demonstrative uses only&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;table width="18" cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" style="margin:auto auto auto -10.6pt;border-collapse:collapse;mso-table-layout-alt:fixed;mso-border-alt:solid windowtext .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0in 2.9pt 0in 2.9pt;"&gt;
&lt;tbody&gt;
&lt;tr style="height:13.5pt;mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;td width="18" rowspan="2" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:2.9pt;width:13.5pt;padding-right:2.9pt;background:white;height:13.5pt;border-top:#f0f0f0;border-right:white 1pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white .5pt;mso-background-themecolor:background1;"&gt;
&lt;p class="MsoNoSpacing" style="margin:0in 0in 0pt;"&gt;&lt;b&gt;&lt;span style="font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:white;mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;mso-themecolor:background1;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td height="18" style="background-color:transparent;height:13.5pt;border:#f0f0f0;"&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:13.5pt;mso-yfti-irow:1;mso-yfti-lastrow:yes;"&gt;
&lt;td height="18" style="background-color:transparent;height:13.5pt;border:#f0f0f0;"&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style="margin:0in 0in 0pt;"&gt;&lt;span style="font-size:large;"&gt;&lt;span style="font-family:Segoe UI Semibold;"&gt;Core-Based Licensing&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;The Enterprise Edition and Standard Edition of SQL Server 2012 will both be available under core-based licensing. Core-based licenses will be sold in two-core packs.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Core based licensing is appropriate when customers are unable to count users/devices, have Internet/Extranet facing workloads or systems that integrate with external facing workloads.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;To license a physical server, you must license all the cores in the server with a minimum of 4 core licenses required for each physical processor in the server.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Core licenses will be priced at &amp;frac14; the cost of a SQL Server 2008 R2 (EE/SE) processor license.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" style="margin:auto auto auto 5.4pt;border-collapse:collapse;mso-border-alt:solid #943634 .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-insideh:none;mso-border-insidev:none;"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;td colspan="2" width="348" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;border-top:#943634 1pt solid;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-top-alt:solid #943634 .5pt;mso-border-top-themecolor:accent2;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-top-themeshade:191;mso-border-left-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:10pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;How to license&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="line-height:normal;text-indent:-13.5pt;margin:0in 0in 0pt 0.3in;mso-add-space:auto;mso-list:l8 level1 lfo5;mso-layout-grid-align:none;"&gt;&lt;span style="color:#404040;font-size:10pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;1.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;font-size:10pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;License all of the physical cores on the hardware&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="line-height:normal;text-indent:-13.5pt;margin:0in 0in 0pt 0.3in;mso-add-space:auto;mso-list:l8 level1 lfo5;mso-layout-grid-align:none;"&gt;&lt;span style="color:#404040;mso-bidi-font-size:10.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;2.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="color:#404040;font-size:10pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;A minimum of 4 core licenses are required per physical processor&lt;/span&gt;&lt;span style="color:#404040;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow:1;"&gt;
&lt;td width="108" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:81pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:2.5in;padding-right:5.4pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:6pt 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow:2;"&gt;
&lt;td width="108" style="border-bottom:#bfbfbf 1pt solid;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:81pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid #BFBFBF .5pt;mso-border-left-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;PHYSICAL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;CORES IN THE&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;PROCESSOR:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" style="border-bottom:#bfbfbf 1pt solid;border-left:#f0f0f0;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:2.5in;padding-right:5.4pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:solid #BFBFBF .5pt;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;2&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow:3;mso-yfti-lastrow:yes;"&gt;
&lt;td width="108" style="border-bottom:#943634 1pt solid;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:81pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-border-top-alt:solid #BFBFBF .5pt;mso-border-top-themecolor:background1;mso-border-top-themeshade:191;mso-border-left-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;CORE LICENSES&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;REQUIRED&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" style="border-bottom:#943634 1pt solid;border-left:#f0f0f0;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:2.5in;padding-right:5.4pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-border-top-alt:solid #BFBFBF .5pt;mso-border-top-themecolor:background1;mso-border-top-themeshade:191;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="margin:0in 0in 0pt;"&gt;&lt;span style="font-size:large;"&gt;&lt;span style="font-family:Segoe UI Semibold;"&gt;Server and Client Access License (CAL) Licensing &lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;The Business Intelligence and Standard Editions will be available under the Server and Client Access License (CAL) model.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;This licensing model can be used when the number of users can be readily counted (e.g., internal database applications).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;To access a licensed SQL Server, each user must have a SQL Server CAL that is the same version or newer (for example, to access a SQL Server 2008 SE server, a user would need a SQL Server 2008 or 2012 CAL).&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Each SQL Server CAL can provide access to multiple licensed SQL Servers, including the new Business Intelligence Edition as well as Standard Edition Servers and legacy Enterprise Edition Servers. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;The SQL Server 2012 CAL price will increase by about 27%.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" style="margin:auto auto auto 5.4pt;border-collapse:collapse;mso-border-alt:solid #943634 .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-insideh:none;mso-border-insidev:none;"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;td width="348" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;border-top:#943634 1pt solid;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-top-alt:solid #943634 .5pt;mso-border-top-themecolor:accent2;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-top-themeshade:191;mso-border-left-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:10pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;How to license&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="text-indent:-13.5pt;margin:0in 0in 0pt 0.3in;mso-add-space:auto;mso-list:l2 level1 lfo6;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;1.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;License each individual server with a SQL Server license&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent:-13.5pt;margin:0in 0in 3pt 0.3in;mso-add-space:auto;mso-list:l2 level1 lfo6;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;2.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;License each user or device accessing the server with a SQL Server CAL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:11pt;mso-themecolor:text1;mso-themetint:191;"&gt;SQL Server 2012 CALs can be used to access any SQL Server database licensed per server, regardless of platform or edition.&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:1;mso-yfti-lastrow:yes;"&gt;
&lt;td width="348" style="border-bottom:#943634 1pt solid;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-left-themeshade:191;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="color:black;mso-themecolor:text1;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 style="margin:12pt 0in 3pt;"&gt;&lt;span style="color:#943634;"&gt;Virtualization Licensing - Cloud Optimized&lt;span style="line-height:90%;font-size:12pt;mso-bidi-font-size:18.0pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p class="Body" style="margin:0in 0in 3pt;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Segoe UI;"&gt;SQL Server 2012 will offer expanded virtualization rights, options and benefits to provide greater flexibility for customers deploying in virtual environments. There will be two primary virtualization licensing options in SQL Server 2012: The ability to license individual virtual machines and the ability to license for maximum virtualization in highly virtualized and private cloud environments. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="margin:0in 0in 0pt;"&gt;&lt;span style="font-size:large;"&gt;&lt;span style="font-family:Segoe UI Semibold;"&gt;Individual Virtual Machines&lt;span style="line-height:90%;font-size:12pt;mso-bidi-font-size:11.0pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;As hardware capabilities grow, it will become more common for each database to use a fraction of its server&amp;rsquo;s computing power.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;When deploying databases on Virtual Machines (VMs) that use just a fraction of a physical server, savings can be achieved by licensing individual VMs.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;To license a VM with core licenses, purchase a core license for each virtual core (virtual thread) allocated to the virtual machine (minimum of 4 core licenses per VM).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;To license a single VM with a server license (for Business Intelligence or Standard only), buy the server license and buy matching SQL Server CALs for each user. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Each licensed VM covered with Software Assurance (SA) can be moved frequently within a server farm or to a third party hoster or cloud services provider without buying additional SQL Server licenses.&amp;nbsp;&lt;br style="mso-special-character:line-break;" /&gt;&lt;br style="mso-special-character:line-break;" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" style="margin:auto auto auto 5.4pt;border-collapse:collapse;mso-border-alt:solid #943634 .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-insideh:.5pt solid #943634;mso-border-insidev:.5pt solid #943634;mso-border-insideh-themecolor:accent2;mso-border-insideh-themeshade:191;mso-border-insidev-themecolor:accent2;mso-border-insidev-themeshade:191;"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;td colspan="2" width="348" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;border-top:#943634 1pt solid;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-top-alt:solid #943634 .5pt;mso-border-top-themecolor:accent2;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-top-themeshade:191;mso-border-left-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:10pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;How to License VMs with Core Licenses&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="text-indent:-13.5pt;margin:0in 0in 0pt 0.3in;mso-add-space:auto;mso-list:l6 level1 lfo7;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;1.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;License the virtual cores in each virtual machine&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent:-13.5pt;margin:0in 0in 3pt 0.3in;mso-add-space:auto;mso-list:l6 level1 lfo7;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;2.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;There is a minimum of 4 core licenses required for each virtual machine&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:1;"&gt;
&lt;td width="168" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;padding-left:5.4pt;width:1.75in;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:white 1.5pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white 1.5pt;mso-background-themecolor:background1;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-background-themeshade:217;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM1&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="180" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM2&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:2;"&gt;
&lt;td width="168" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;padding-left:5.4pt;width:1.75in;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:white 1.5pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white 1.5pt;mso-background-themecolor:background1;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-background-themeshade:217;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="color:black;mso-themecolor:text1;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="180" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="color:black;mso-themecolor:text1;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:3;"&gt;
&lt;td width="168" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;padding-left:5.4pt;width:1.75in;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:white 1.5pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white 1.5pt;mso-background-themecolor:background1;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-background-themeshade:217;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM with 4 Virtual Cores&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;4 Core licenses required&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="180" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM with 6 Virtual Cores&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;6 Core licenses required&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:4;mso-yfti-lastrow:yes;"&gt;
&lt;td colspan="2" width="348" style="border-bottom:#943634 1pt solid;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-left-themeshade:191;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:6pt 0in 3pt;"&gt;&lt;span style="color:black;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:none;"&gt;&lt;span style="font-family:Segoe UI;color:#404040;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" style="margin:auto auto auto 5.4pt;border-collapse:collapse;mso-border-alt:solid #943634 .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-insideh:.5pt solid #943634;mso-border-insidev:.5pt solid #943634;mso-border-insideh-themecolor:accent2;mso-border-insideh-themeshade:191;mso-border-insidev-themecolor:accent2;mso-border-insidev-themeshade:191;"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;td colspan="2" width="348" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;border-top:#943634 1pt solid;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-top-alt:solid #943634 .5pt;mso-border-top-themecolor:accent2;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-top-themeshade:191;mso-border-left-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:10pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;How to License VMs with Server + CAL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="text-indent:-13.5pt;margin:0in 0in 0pt 0.3in;mso-add-space:auto;mso-list:l4 level1 lfo8;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;1.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;License each VM with a Server License&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent:-13.5pt;margin:0in 0in 3pt 0.3in;mso-add-space:auto;mso-list:l4 level1 lfo8;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;2.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;License each user or device with a CAL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:1;"&gt;
&lt;td colspan="2" width="348" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-left-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:black;mso-themecolor:text1;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:2;"&gt;
&lt;td width="168" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;padding-left:5.4pt;width:1.75in;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:white 1.5pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white 1.5pt;mso-background-themecolor:background1;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-background-themeshade:217;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM1&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="180" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM2&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:3;"&gt;
&lt;td width="168" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;padding-left:5.4pt;width:1.75in;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:white 1.5pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white 1.5pt;mso-background-themecolor:background1;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-background-themeshade:217;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="color:black;mso-themecolor:text1;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="180" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="color:black;mso-themecolor:text1;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:4;"&gt;
&lt;td width="168" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;padding-left:5.4pt;width:1.75in;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:white 1.5pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white 1.5pt;mso-background-themecolor:background1;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-background-themeshade:217;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM with SQL Server Business Intelligence Edition&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;1 Server license required + CALs&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="180" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM with SQL Server Standard Edition&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;1 Server license required + CALs&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:5;mso-yfti-lastrow:yes;"&gt;
&lt;td colspan="2" width="348" style="border-bottom:#943634 1pt solid;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-left-themeshade:191;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:6pt 0in 3pt;"&gt;&lt;span style="color:black;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:Segoe UI Semibold;font-size:large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Segoe UI Semibold;font-size:large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 style="margin:0in 0in 0pt;"&gt;&lt;span style="font-size:large;"&gt;&lt;span style="font-family:Segoe UI Semibold;"&gt;High Density Virtualization&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Further savings can be achieved by operating a database server utility or SQL Server private cloud.&amp;nbsp;This is a great option for customers who want to take advantage of the full computing power of their physical servers and have very dynamic provisioning and de-provisioning of virtual resources. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Customers will be able to deploy an unlimited number of VM&amp;rsquo;s on the server and utilize the full capacity of the licensed hardware. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;They can do so by fully licensing the server (or server farm) with Enterprise Edition core licenses &lt;i style="mso-bidi-font-style:normal;"&gt;and Software Assurance&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt; based on the total number of physical cores on the servers.&amp;nbsp; SA then enables the ability to run an unlimited number of virtual machines to handle dynamic workloads and fully utilize the hardware&amp;rsquo;s computing power.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="text-indent:0in;margin:0in 0in 3pt 0.25in;mso-list:none;"&gt;&lt;span style="font-size:1pt;mso-bidi-font-size:12.0pt;"&gt;&lt;span style="font-family:Segoe UI;color:#404040;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" style="margin:auto auto auto 5.4pt;border-collapse:collapse;mso-border-alt:solid #943634 .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-insideh:.5pt solid #943634;mso-border-insidev:.5pt solid #943634;mso-border-insideh-themecolor:accent2;mso-border-insideh-themeshade:191;mso-border-insidev-themecolor:accent2;mso-border-insidev-themeshade:191;"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;td colspan="3" width="348" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;border-top:#943634 1pt solid;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-top-alt:solid #943634 .5pt;mso-border-top-themecolor:accent2;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-top-themeshade:191;mso-border-left-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Licensing SQL Server private cloud:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:2pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow:1;"&gt;
&lt;td colspan="3" width="348" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-left-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="text-indent:-13.5pt;margin:0in 0in 0pt 0.3in;mso-add-space:auto;mso-list:l0 level1 lfo9;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;1.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;License all the physical cores on the server with Enterprise Edition core licenses and SA&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:0in;margin:0in 0in 0pt 0.3in;mso-add-space:auto;mso-list:none;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:2pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent:-13.5pt;margin:0in 0in 3pt 0.3in;mso-add-space:auto;mso-list:l0 level1 lfo9;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Segoe UI;"&gt;2.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Deploy an unlimited number of VMs&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow:2;"&gt;
&lt;td colspan="3" width="348" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:261pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-left-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:1pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Example&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:2pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow:3;"&gt;
&lt;td colspan="2" width="174" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:130.5pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0in;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;What you License&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Physical Cores w/EE+SA&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="174" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0in;background-color:transparent;padding-left:5.4pt;width:130.5pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;What you Deploy&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="line-height:90%;color:#404040;font-size:10pt;mso-bidi-font-size:11.0pt;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Unlimited VMs (example 6)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:4;"&gt;
&lt;td width="168" rowspan="6" style="border-bottom:#943634 1pt solid;border-left:#943634 1pt solid;padding-bottom:0in;padding-left:5.4pt;width:1.75in;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:white 1.5pt solid;padding-top:0in;mso-border-right-themecolor:background1;mso-border-right-alt:solid white 1.5pt;mso-background-themecolor:background1;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-background-themeshade:217;mso-border-left-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Single Server, 2 physical processors, 6 cores/processor (12 total)&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="color:black;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:90%;font-size:10pt;mso-bidi-font-size:11.0pt;"&gt;&lt;span style="font-family:Segoe UI;"&gt;What to Buy:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;12 SQL Server Enterprise Edition core licenses + SA&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan="2" width="180" style="border-bottom:windowtext 1pt dotted;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-border-bottom-alt:dotted windowtext .5pt;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM1&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:5;"&gt;
&lt;td colspan="2" width="180" style="border-bottom:windowtext 1pt dotted;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-border-bottom-alt:dotted windowtext .5pt;mso-border-top-alt:dotted windowtext .5pt;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM2&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:6;"&gt;
&lt;td colspan="2" width="180" style="border-bottom:windowtext 1pt dotted;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-border-bottom-alt:dotted windowtext .5pt;mso-border-top-alt:dotted windowtext .5pt;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM3&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:7;"&gt;
&lt;td colspan="2" width="180" style="border-bottom:windowtext 1pt dotted;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-border-bottom-alt:dotted windowtext .5pt;mso-border-top-alt:dotted windowtext .5pt;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM4&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:8;"&gt;
&lt;td colspan="2" width="180" style="border-bottom:windowtext 1pt dotted;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-border-bottom-alt:dotted windowtext .5pt;mso-border-top-alt:dotted windowtext .5pt;mso-background-themeshade:217;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM5&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:9.45pt;mso-yfti-irow:9;mso-yfti-lastrow:yes;"&gt;
&lt;td colspan="2" width="180" style="border-bottom:#943634 1pt solid;border-left:#f0f0f0;padding-bottom:0in;padding-left:5.4pt;width:135pt;padding-right:5.4pt;background:#d9d9d9;height:9.45pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0in;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid white 1.5pt;mso-border-left-themecolor:background1;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-border-top-alt:dotted windowtext .5pt;mso-background-themeshade:217;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;VM6&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:3pt 0in;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="168" style="background-color:transparent;border:#f0f0f0;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width="6" style="background-color:transparent;border:#f0f0f0;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width="174" style="background-color:transparent;border:#f0f0f0;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 style="margin:12pt 0in 3pt;"&gt;&lt;span style="color:#943634;"&gt;Transition to the New Licensing Models&lt;/span&gt;&lt;/h1&gt;
&lt;p class="Body" style="margin:0in 0in 3pt;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Segoe UI;"&gt;In order to facilitate a smooth transition to the new editions and licensing, Microsoft is offering several options.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;These are designed to help enable customers to plan for the future while protecting their current investments.&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="margin:0in 0in 0pt;"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-size:large;"&gt;&lt;span style="font-family:Segoe UI Semibold;"&gt;Enterprise Edition &lt;i style="mso-bidi-font-style:normal;"&gt;Server + CAL&lt;/i&gt; Licensing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;New server licenses for SQL Server Enterprise Edition in the Server + Cal model will only be available for purchase through June 30&lt;sup&gt;th&lt;/sup&gt;, 2012, after which they will no longer be available for purchase.&lt;/b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;EA/EAP customers that buy SQL Enterprise Edition Servers will have until their next EA/EAP renewal after June 30&lt;sup&gt;th&lt;/sup&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;, 2012 to purchase additional server licenses to complete currently planned projects. After that, all new SQL Server Enterprise Edition deployments must be purchased per core.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;All existing SQL Server Enterprise Edition licenses under the Server + CAL model with Software Assurance current when SQL Server 2012 launches can be upgraded to SQL Server 2012 at no additional cost, and SA can be maintained (in the server + cal model) to provide access to future software updates. &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;These Legacy Enterprise Edition Servers remain licensed under the Server + CAL model and require the appropriate version of the SQL Server CAL for users or devices.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;Legacy SQL Server 2012 Enterprise Edition Server deployments licensed in the server + CAL model will be subject to a &lt;b&gt;20 core per server license maximum&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;.&amp;nbsp; This core maximum applies both to new server licenses and to prior version server licenses upgraded to 2012 with SA.&amp;nbsp; If you purchased SQL Server 2008 R2 Enterprise Edition in the Server + CAL model with Software Assurance and at the launch of SQL Server 2012 are running on a server with &amp;gt; 20 physical cores, contact your Microsoft representative for help transitioning to the new licensing model.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Legacy SQL Server 2012 Enterprise Edition Server licenses are still considered licensed under the Server + CAL model but have the new core limit to allow customers to upgrade their existing deployments and have some near term deployment options to finish currently planned projects under the Server + CAL model for the SQL Server Enterprise Edition.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Moving forward, customers who would have purchased new EE server licenses can: purchase SQL BI server licenses for business intelligence, purchase SQL EE per core for high-scale database or data warehouse, or maintain legacy EE server licenses for existing projects requiring 20 cores or less.&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="margin:6pt 0in 0pt;"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="text-decoration:none;"&gt;&lt;span style="font-family:Segoe UI Semibold;font-size:large;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 style="margin:6pt 0in 0pt;"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-size:large;"&gt;&lt;span style="font-family:Segoe UI Semibold;"&gt;SQL Server Processor licenses under SA moving to Core-based Licensing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Customers with processor licenses under SA can upgrade to SQL Server 2012 at no additional cost. At the end of the SA term, processor licenses will be exchanged for core licenses and customers can renew their SA on core licenses. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;SQL Enterprise and Standard processor licenses under SA will be exchanged for a minimum of 4 core licenses per processor or for the actual number of cores in use. SQL Server Datacenter processor licenses will be exchanged for a minimum of 8 EE core licenses per processor or for the actual number of cores in use. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;At the end of the current agreement term, customers should do a self-inventory of systems currently running SQL Server, documenting the number of cores in each processor in use with a SQL Server processor license covered with Software Assurance. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;This will enable customers to receive the appropriate number of core licenses based on SQL Server 2012 to continue their current deployments. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Customers should do this self-inventory using the Microsoft Assessment and Planning (MAP) Toolkit or other inventory tools and processes to accurately archive a time/date stamped inventory of hardware tied to SQL Server installations. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;If customers do not perform the self-inventory, they will receive 4 core licenses for each Standard and Enterprise Edition processor and 8 EE core licenses per Datacenter Edition processor.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" style="margin:auto auto auto 5.4pt;border-collapse:collapse;mso-border-alt:solid #943634 .5pt;mso-yfti-tbllook:1184;mso-padding-alt:.7pt 1.45pt .7pt 1.45pt;mso-border-themecolor:accent2;mso-border-themeshade:191;mso-border-insideh:none;mso-border-insidev:none;"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;td width="108" style="border-bottom:#f0f0f0;border-left:#943634 1pt solid;padding-bottom:0.7pt;background-color:transparent;padding-left:1.45pt;width:81pt;padding-right:1.45pt;border-top:#943634 1pt solid;border-right:#f0f0f0;padding-top:0.7pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-top-alt:solid #943634 .5pt;mso-border-top-themecolor:accent2;mso-border-top-themeshade:191;mso-border-left-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:0in 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" style="border-bottom:#f0f0f0;border-left:#f0f0f0;padding-bottom:0.7pt;background-color:transparent;padding-left:1.45pt;width:2.5in;padding-right:1.45pt;border-top:#943634 1pt solid;border-right:#943634 1pt solid;padding-top:0.7pt;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-top-alt:solid #943634 .5pt;mso-border-top-themecolor:accent2;mso-border-top-themeshade:191;mso-border-right-themeshade:191;"&gt;
&lt;p align="center" class="MsoNormal" style="text-align:center;margin:6pt 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;mso-no-proof:yes;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:33.85pt;mso-yfti-irow:1;"&gt;
&lt;td width="108" style="border-bottom:#bfbfbf 1pt dotted;border-left:#943634 1pt solid;padding-bottom:0.7pt;background-color:transparent;padding-left:1.45pt;width:81pt;padding-right:1.45pt;height:33.85pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0.7pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:dotted #BFBFBF .5pt;mso-border-left-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;PHYSICAL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;CORES IN THE&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;PROCESSOR:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" style="border-bottom:#bfbfbf 1pt dotted;border-left:#f0f0f0;padding-bottom:0.7pt;background-color:transparent;padding-left:1.45pt;width:2.5in;padding-right:1.45pt;height:33.85pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0.7pt;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:dotted #BFBFBF .5pt;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;2 &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;4&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;8&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:33.85pt;mso-yfti-irow:2;"&gt;
&lt;td width="108" style="border-bottom:#bfbfbf 1pt dotted;border-left:#943634 1pt solid;padding-bottom:0.7pt;background-color:transparent;padding-left:1.45pt;width:81pt;padding-right:1.45pt;height:33.85pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0.7pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:dotted #BFBFBF .5pt;mso-border-top-alt:dotted #BFBFBF .5pt;mso-border-top-themecolor:background1;mso-border-top-themeshade:191;mso-border-left-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;b&gt;&lt;span style="line-height:90%;color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;ENTERPRISE OR STANDARD &amp;ndash; CORES GRANTED&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" style="border-bottom:#bfbfbf 1pt dotted;border-left:#f0f0f0;padding-bottom:0.7pt;background-color:transparent;padding-left:1.45pt;width:2.5in;padding-right:1.45pt;height:33.85pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0.7pt;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-bottom-themecolor:background1;mso-border-bottom-alt:dotted #BFBFBF .5pt;mso-border-top-alt:dotted #BFBFBF .5pt;mso-border-top-themecolor:background1;mso-border-top-themeshade:191;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background:#bfbfbf;mso-shading-themecolor:background1;mso-shading-themeshade:191;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;4&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;4&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;6&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;8 &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:33.85pt;mso-yfti-irow:3;mso-yfti-lastrow:yes;"&gt;
&lt;td width="108" style="border-bottom:#943634 1pt solid;border-left:#943634 1pt solid;padding-bottom:0.7pt;background-color:transparent;padding-left:1.45pt;width:81pt;padding-right:1.45pt;height:33.85pt;border-top:#f0f0f0;border-right:#f0f0f0;padding-top:0.7pt;mso-border-left-alt:solid #943634 .5pt;mso-border-left-themecolor:accent2;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-border-top-alt:dotted #BFBFBF .5pt;mso-border-top-themecolor:background1;mso-border-top-themeshade:191;mso-border-left-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;b&gt;&lt;span style="color:#404040;font-size:8pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-theme-font:minor-latin;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;DATACENTER &amp;ndash; EE CORES GRANTED&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" style="border-bottom:#943634 1pt solid;border-left:#f0f0f0;padding-bottom:0.7pt;background-color:transparent;padding-left:1.45pt;width:2.5in;padding-right:1.45pt;height:33.85pt;border-top:#f0f0f0;border-right:#943634 1pt solid;padding-top:0.7pt;mso-border-right-themecolor:accent2;mso-border-right-alt:solid #943634 .5pt;mso-border-bottom-themecolor:accent2;mso-border-bottom-alt:solid #943634 .5pt;mso-border-top-alt:dotted #BFBFBF .5pt;mso-border-top-themecolor:background1;mso-border-top-themeshade:191;mso-border-right-themeshade:191;mso-border-bottom-themeshade:191;"&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 3pt;"&gt;&lt;span style="color:#404040;mso-themecolor:text1;mso-themetint:191;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background:#bfbfbf;mso-shading-themecolor:background1;mso-shading-themeshade:191;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;8&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;8&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;8&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;8&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style="margin:6pt 0in 0pt;"&gt;&lt;span style="font-family:Segoe UI Semibold;font-size:large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:large;"&gt;&lt;span style="font-family:Segoe UI Semibold;"&gt;Customers with Enterprise Agreements&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Customers in existing Enterprise Agreements, EAPs and EASs will be able to continue to purchase Enterprise Edition server and processor licenses through the end of their term.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;font-size:small;"&gt;Customers purchasing processor based licenses through the end of their term will continue to need to calculate the number of licenses required for a deployment based on the 2008 R2 processor use rights.&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;font-size:small;"&gt;Customers with an EA or EAP do have the option to add core licenses mid-term to their agreement for future purchases and should contact their reseller or Microsoft account team for more information.&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;All servers licensed with SQL Server 2012 Enterprise Edition server licenses will be subject to the 20 core server limitation.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;The same process as outlined above will be followed at the end of term.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 style="margin:12pt 0in 3pt;"&gt;&lt;span style="color:#943634;"&gt;Planning for SQL Server 2012&lt;/span&gt;&lt;/h1&gt;
&lt;p class="Body" style="margin:0in 0in 3pt;"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-hansi-font-family:&amp;#39;Segoe UI&amp;#39;;mso-bidi-font-weight:bold;"&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#404040;"&gt;Customers planning to deploy SQL Server 2012, either through upgrades or new licenses, should remember:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Renewing Software Assurance (SA) is the best way to protect investments and provide access to new versions as well as Deployment Planning Services and technical assistance.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;EAP will continue to offer customers the best value, including discounts of up to 40% on new EE and BI server licenses.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Customers should select the right edition depending on usage:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.75in;mso-list:l1 level2 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;b&gt;&lt;span style="font-size:small;"&gt;Enterprise &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:small;"&gt;for mission critical applications and large scale data warehousing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.75in;mso-list:l1 level2 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;b&gt;&lt;span style="font-size:small;"&gt;Business Intelligence&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:small;"&gt; for premium corporate and self-service BI &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.75in;mso-list:l1 level2 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;b&gt;&lt;span style="font-size:small;"&gt;Standard &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:small;"&gt;for basic database, reporting and analytics capabilities&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyBullet" style="margin:0in 0in 3pt 0.25in;mso-list:l1 level1 lfo2;"&gt;&lt;span style="color:#404040;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe UI;"&gt;Consolidation and virtualization are the best ways to maximize efficiency of hardware and control the size, computing power and more granularly manage cost of your deployments.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="VLBodyCopy" style="margin:0in 0in 0pt;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="font-size:8pt;"&gt;&lt;span style="font-family:Segoe UI;color:#595959;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="VLBodyCopy" style="margin:0in 0in 0pt;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="font-size:8pt;"&gt;&lt;span style="font-family:Segoe UI;color:#595959;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="font-family:&amp;#39;Segoe UI&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#595959;font-size:8pt;mso-fareast-font-family:&amp;#39;Segoe UI&amp;#39;;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-themecolor:text1;mso-themetint:166;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;br clear="all" style="page-break-before:auto;mso-break-type:section-break;" /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Segoe&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#414142;font-size:10pt;mso-bidi-font-family:Segoe;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Segoe&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#414142;font-size:10pt;mso-bidi-font-family:Segoe;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Segoe&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#414142;font-size:10pt;mso-bidi-font-family:Segoe;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Segoe&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#414142;font-size:10pt;mso-bidi-font-family:Segoe;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Segoe&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#414142;font-size:10pt;mso-bidi-font-family:Segoe;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2939" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category></item><item><title>PowerPoint Aspect Ratios and Custom Masters</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/20/powerpoint-aspect-ratios-and-custom-masters.aspx</link><pubDate>Tue, 20 Mar 2012 16:19:06 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2938</guid><dc:creator>Jeremy Williams</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For those of you who have seen a few PowerPoints in your day, you might know exactly what I’m about to &lt;strike&gt;complain&lt;/strike&gt; talk about…&amp;#160; You know those black bars that you see on the side of some presentations, the ones that make it look something like:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_5B73954B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_12D9A67A.png" width="504" height="318" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If those &lt;strong&gt;really bother &lt;/strong&gt;you, then you’re probably the kind of person that &lt;strong&gt;hates&lt;/strong&gt; watching your favorite TV show like Modern Family, Happy Endings, Grey’s Anatomy, &amp;lt;insert your favorite show here&amp;gt; when the aspect ratio is wrong.&amp;#160; Who wants to see the actors all squished and squashed, or miss potentially amusing things happening on the fringes of the frame.&amp;#160; (Alas, I digress…)&amp;#160; If you’re still with me and don’t know what I’m talking about, I’m referring to the fact that some people will use the zoom/aspect feature on their TV to remove the black bars, but at the expense of the proper ratio (thereby cropping part of the picture off the screen and/or messing with the pixel ratios making everything wider, fuzzier, and just plain awful-err (yes, I just said awful-er).&amp;#160; &lt;/p&gt;  &lt;p&gt;So when you see a PowerPoint presentation, and it has those black bars on it, don’t you wonder if there’s a way to fix that?&amp;#160; You guessed it, there is a way!&amp;#160; And it’s surprisingly easy.&amp;#160; Simply navigate to your PowerPoint presentation, click on the Design Tab, then press the ‘Page Setup’ button and then select your ‘Slides sized for:…” Value.&amp;#160; As a cheat-sheet, if you’re presenting on a full HD screen (1920x1080), you’ll want to select 16:9.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_725266C7.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_105074BC.png" width="504" height="265" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now that’s all well and good since it’ll get rid of those dreaded black bars.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_39E43FEF.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_2E4E82B0.png" width="504" height="286" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you can see, it works stupendously if you’re using a design that has elements that ratio-scale well…What’s that mean?&amp;#160; Abstract and generic lines that don’t form recognizable shapes.&amp;#160; If, however, you have your company logo in your design, you’ll notice something alarming happens when you resize your presentation.&lt;/p&gt;  &lt;p&gt;Before: &lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_46DE2000.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_6DAC3640.png" width="136" height="51" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After: &lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_78698D95.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_4605BA16.png" width="170" height="51" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Well now, that’s a bit annoying (not to mention it looks really bad during your presentation).&amp;#160; So, what’s the fix?&amp;#160; Easy, you’ll simply duplicate your slide design and name it 16x9.&amp;#160; Once you’ve created a new slide design, you’ll need to go in and edit the masters to correct the scaling rations.&amp;#160; After that, you’ll be all set!&lt;/p&gt;  &lt;p&gt;…&lt;/p&gt;  &lt;p&gt;riiiiiiiiggggghhhhhhhttttttttt…&amp;#160; So you want to know how to do that now eh?&amp;#160; Well, it’s actually pretty easy.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open up a new presentation and select your design of interest, in my case it’s the ‘Rightpoint v1.0’ theme. &lt;/li&gt;    &lt;li&gt;Change your page setup to the 16x9 ratio &lt;/li&gt;    &lt;li&gt;Go to the slide master view (On the View tab)      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_33BCF354.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_3350C05F.png" width="404" height="181" /&gt;&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;You’ll see all of the possible slide layouts on the left hand side of the screen.&amp;#160; Systematically go through them and correct the scaling ratios.&amp;#160; &lt;ul&gt;       &lt;li&gt;Before: &lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_72AE73EF.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_3682A847.png" width="259" height="74" /&gt;&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;After: &lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_5227343D.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_75E05BD7.png" width="208" height="65" /&gt;&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;When you’re finished, click ‘Close Master View’      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_1184E7CE.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_43105563.png" width="404" height="71" /&gt;&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Then click on the Design tab, click on the design-dropdown, and choose ‘Save the current theme’.&amp;#160; Give it a name and share it with whomever you need, and feel free to reuse this every time you’re doing a 16x9 persentation      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_14B6CFB6.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_7AE29986.png" width="404" height="229" /&gt;&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;As always, I hope this was helpful…&amp;#160; Now go forth and bring correct aspect-ratios upon the world.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2938" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/rant/default.aspx">rant</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>Streamlining Data for Delivery Over Web Services</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/13/streamlining-data-for-delivery-over-web-services.aspx</link><pubDate>Tue, 13 Mar 2012 20:18:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2953</guid><dc:creator>John Wefler</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Taking a subset of data from SQL to pass through a WCF web service is of utmost importance for mobile applications using cellular networks. I never thought I&amp;#39;d be helping write applications for cell phones, but my opportunity to help came recently when the architect in charge of the project read &amp;quot;web services&amp;quot; from my skills list. I have done some crazy things reading and writing data to SharePoint via the out-of-the-box web services, but I&amp;#39;ve never created a web service of my own. Time to grow, I said…&lt;/p&gt;  &lt;p&gt;After a brief ramp up, I had a WCF returning data along an HTTPS pipeline. I was dealing with objectified data within the entity framework model. The &amp;quot;queryable&amp;quot; data was of an abstract type I call &amp;quot;message&amp;quot;.&amp;#160; Imagine a not too complex system to store and retrieve email messages. The data was heavy, dripping with metadata and system-used fields. Some of the data went well with the web-based version of the program that I was helping to create the mobile version of, but most of it didn&amp;#39;t need to be passed along the packetized cellular radio infrastructure.&lt;/p&gt;  &lt;p&gt;What I needed was to pass my queried data into a method that would transform it into a private object class that would be more suited for transport.&lt;/p&gt;  &lt;p&gt;First, I chose a subset of the fields I wanted to return. Then I created a transformer method that mapped fields from the data model into the structure of the subset. I returned a list of these new class objects, which are then serialized with the JavaScript Serializer which spit out objects in JSON format for delivery via web service.&lt;/p&gt;  &lt;h4&gt;   &lt;h3&gt;Transformer method:&lt;/h3&gt; &lt;/h4&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;Message&amp;gt; CleanResults(IQueryable&amp;lt;Model.message_vw&amp;gt; matchedMessages)&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;   var MessagesTransformed = matchedMessages.Select(x =&amp;gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Message&lt;/pre&gt;

  &lt;pre&gt;   {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                message_id = x.message_id,&lt;/pre&gt;

  &lt;pre&gt;                message_subject = x.message_subject,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                message_body = x.message_body,&lt;/pre&gt;

  &lt;pre&gt;                is_urgent = x.is_urgent,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                sent_by_user_id = x.sent_by_user_id&lt;/pre&gt;

  &lt;pre&gt;   })&lt;/pre&gt;

  &lt;pre class="alt"&gt;   .ToList();&lt;/pre&gt;

  &lt;pre&gt;   &lt;/pre&gt;

  &lt;pre class="alt"&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; MessagesTransformed;&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Data Retriever:&lt;/h3&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (Model.Wef_Entities myWefEntities = &lt;span class="kwrd"&gt;new&lt;/span&gt; Model.Wef_Entities())&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;   var matchedMessages = myWefEntities.message_vw&lt;/pre&gt;

  &lt;pre&gt;      .Where(m =&amp;gt; m.recipient_user_id == &lt;span class="kwrd"&gt;this&lt;/span&gt;.UserGuid)&lt;/pre&gt;

  &lt;pre class="alt"&gt;      .OrderByDescending(o =&amp;gt; o.sent_dt);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; SerializeData(CleanResults(matchedMessages));&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;




&lt;h3&gt;JSON Serializer:&lt;/h3&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; SerializeData(&lt;span class="kwrd"&gt;object&lt;/span&gt; obj)&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;   JavaScriptSerializer jss = &lt;span class="kwrd"&gt;new&lt;/span&gt; JavaScriptSerializer();&lt;/pre&gt;

  &lt;pre&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; jss.Serialize(obj);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2953" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Web+Service/default.aspx">Web Service</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Getting the first SPMetal queries after application domain startup to not crash</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/11/getting-the-first-spmetal-queries-after-application-domain-startup-to-not-crash.aspx</link><pubDate>Mon, 12 Mar 2012 02:46:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2937</guid><dc:creator>Jonathan Rupp</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I was recently asked to take a look at some exception stack traces from the production logs of a large intranet site that just went live and is now experiencing a lot of these exceptions calling SPMetal queries that didn’t show up during development and testing, and whenever they go looking for them, they don’t happen, but they regularly appear in the logs.&amp;#160; All of the exceptions had something like this at the top:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;System.ArgumentException: An item with the same key has already been added.      &lt;br /&gt;at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)       &lt;br /&gt;at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)       &lt;br /&gt;at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)       &lt;br /&gt;at Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor.GetEnumerableOperator(MethodInfo qm)       &lt;br /&gt;at Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor.ConvertMethod(MethodCallExpression mce, Context ctx)       &lt;br /&gt;at Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor.&amp;lt;.cctor&amp;gt;b__13(MethodCallExpression mce, Context ctx)       &lt;br /&gt;at Microsoft.SharePoint.Linq.Rules.GuardedRule`4.&amp;lt;&amp;gt;c__DisplayClass3.&amp;lt;.ctor&amp;gt;b__1(TSourceBase src, TContext ctx)       &lt;br /&gt;at Microsoft.SharePoint.Linq.Rules.SwitchRule`3.Apply(TSource src, TContext ctx)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So what did I do to try to narrow this down?&amp;#160; Why ILSpy of course (queue the ILSpy theme music – it sounds a lot like the Mission Impossible theme to me, but whatever song plays in your head is fine).&amp;#160; Here’s where I started in ToEnumerableProcessor.GetEnumerableOperator:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_272FBE25.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_26C38B30.png" width="504" height="137" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, ToEnumerableProcess.enumerableOpsByName, eh?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/clip_5F00_image004_5F00_2657583B.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image004" border="0" alt="clip_image004" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/clip_5F00_image004_5F00_thumb_5F00_140E9179.jpg" width="504" height="52" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Yep, that’s a static dictionary.&amp;#160; If “typeof(Enumerable).GetMember(@operator.Name, MemberTypes.Method, BindingFlags.Static | BindingFlags.Public).Cast&amp;lt;MethodInfo&amp;gt;().ToArray&amp;lt;MethodInfo&amp;gt;()” takes a bit of time to run, we could probably end up with two threads inside that if block at the same time, then both do the Dictionary.Add call, and all but the first would get the exception we’re looking for.&amp;#160; The problem with this theory is that that wouldn’t explain why we get this error a number of times during the day – there’s only 50 different method names on Enumerable, and most of them are probably never used by our code, so we’d not expect to see many of these, even right after startup.&amp;#160; After talking to the team, I found out they’ve been making a number of manual tweaks to the web.config file for the site in the last week or so, which would explain why it the application domain is being rebuilt so many times, and why they’re seeing these errors so often.&amp;#160; One idea that has been floated is the idea of running *all* SPMetal queries while holding the same lock&lt;/p&gt;  &lt;p&gt;Now that we have a theory, can we reproduce it?&amp;#160; To do this, we’d need a simple SPMetal context, and a way to test the theory – create a couple of threads, synchronize them (to eliminate thread startup time from the equation), then create the context and execute a query and see what happens.&amp;#160; Let’s just do a simple query: “cx.StyleLibrary.ToList()”.&amp;#160; What do we get?&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;System.ArgumentException: An item with the same key has already been added.      &lt;br /&gt;&amp;#160;&amp;#160; at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)       &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)       &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)       &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ReflectionTreeRewriter`1.GetRewriter(Type type)       &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ReflectionTreeRewriter`1.GetChildren(TNodeBase node)       &lt;br /&gt;…&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.DataContext.GetList[T](String listName)      &lt;br /&gt;&amp;#160;&amp;#160; at SPMetalThreadTest.WSP.SPMetalDefinition.SPMetalDefinitionContext.get_StyleLibrary()&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Well, not exactly what we were expecting, but the same exception – we appear to be on the right track.&amp;#160; The trick to solving this is probably going to be doing a bunch of ‘fake’ queries once at startup (or before the first query) to get things “warmed up”.&amp;#160; Here’s a first stab at this ‘warmup’ logic (added to the partial DataContext class):&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;partial void &lt;/span&gt;OnCreated()
{
    Warmup();
}

&lt;span style="color:blue;"&gt;private static bool &lt;/span&gt;_WarmedUp = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;
&lt;span style="color:blue;"&gt;private static object &lt;/span&gt;_WarmupLock = &lt;span style="color:blue;"&gt;new object&lt;/span&gt;();
&lt;span style="color:blue;"&gt;private void &lt;/span&gt;Warmup()
{
    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(_WarmedUp)
        &lt;span style="color:blue;"&gt;return&lt;/span&gt;;
    &lt;span style="color:blue;"&gt;lock &lt;/span&gt;(_WarmupLock)
    {
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(_WarmedUp)
            &lt;span style="color:blue;"&gt;return&lt;/span&gt;;

        DoWarmup();
        _WarmedUp = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;
    }
}

&lt;span style="color:blue;"&gt;private void &lt;/span&gt;DoWarmup()
{&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;    Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Running warmup logic&amp;quot;&lt;/span&gt;);
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;x = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.StyleLibrary;
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s run it again and see what we get:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;System.NullReferenceException: Object reference not set to an instance of an object. 
    &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 

    &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor.GetEnumerableOperator(MethodInfo qm)&lt;/p&gt;

  &lt;p&gt;…. 
    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.EntityList`1.GetEnumerator() 

    &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 

    &lt;br /&gt;&amp;#160;&amp;#160; at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sure enough, a different error.&amp;#160; What if I use a different list?&amp;#160; Same error, so it appears using a single one of my lists is enough (though I probably would just add getters for all your lists to be safe – this code won’t run very often).&amp;#160; Ok, now to fix that error – maybe if I just add a .ToList() call to my Warmup logic?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Waiting for all threads to report ready 
    &lt;br /&gt;All threads reported ready - releasing 

    &lt;br /&gt;Running warmup logic 

    &lt;br /&gt;All threads exited&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yep, that worked.&amp;#160; What if I add a select clause to my test query?&amp;#160; No change.&amp;#160; A where?&amp;#160; No change.&amp;#160; A where and a select?&amp;#160; Bingo – another error:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;System.ArgumentException: An item with the same key has already been added. 
    &lt;br /&gt;&amp;#160;&amp;#160; at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) 

    &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 

    &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor.GetEnumerableOperator(MethodInfo qm) 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor.ConvertMethod(MethodCallExpression mce, Context ctx) 

    &lt;br /&gt;….&lt;/p&gt;

  &lt;p&gt;&amp;#160;&amp;#160; at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And this time, it even looks like the trace from our bug report.&amp;#160; We’re definitely on the right track here.&amp;#160; Adding a where and select to my ‘warmup’ query got rid of that error.&amp;#160; If I add a few more operators to my test query (Distinct, OrderBy, Max), I start getting the error again, so it seems my ‘warmup’ method needs to:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Reference each list I’m going to use. &lt;/li&gt;

  &lt;li&gt;Populate ToEnumerableProcessor.enumerableOpsByName by: 
    &lt;ol&gt;
      &lt;li&gt;Run one of every query style to be used (just calling everything from System.Linq.Enumerable in a query won’t be enough – some map to different operators or are combined) 
        &lt;br /&gt;or &lt;/li&gt;

      &lt;li&gt;Use Reflection to make a bunch of calls to Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor.GetEnumerableOperator to trick it into setting up everything we need. &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After taking a few runs at calling all the methods via #2.1, it’s becoming clear that LINQ-to-SP does some operator combinations that are fouling things up, so I’m trying to reflection approach, which seems to be working reliably:&lt;/p&gt;

&lt;blockquote style="width:500px;overflow:auto;"&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;private void &lt;/span&gt;DoWarmup()
{
    &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Running warmup logic&amp;quot;&lt;/span&gt;);
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;x = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.StyleLibrary.Count();

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;asm = &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;DataContext&lt;/span&gt;).Assembly;
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;opUtilType = asm.GetType(&lt;span style="color:#a31515;"&gt;&amp;quot;Microsoft.SharePoint.Linq.OpUtil&amp;quot;&lt;/span&gt;);
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;operatorFields = opUtilType.GetField(&lt;span style="color:#a31515;"&gt;&amp;quot;operatorFields&amp;quot;&lt;/span&gt;, BindingFlags.NonPublic | BindingFlags.Static);
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;methods = ((&lt;span style="color:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;MethodInfo&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;FieldInfo&lt;/span&gt;&amp;gt;)operatorFields.GetValue(&lt;span style="color:blue;"&gt;null&lt;/span&gt;)).Keys.ToList();
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;toEnumerableProcessorType = asm.GetType(&lt;span style="color:#a31515;"&gt;&amp;quot;Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor&amp;quot;&lt;/span&gt;);
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;getEnumerableOperator = toEnumerableProcessorType.GetMethod(&lt;span style="color:#a31515;"&gt;&amp;quot;GetEnumerableOperator&amp;quot;&lt;/span&gt;, BindingFlags.NonPublic | BindingFlags.Static);
    &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:blue;"&gt;var &lt;/span&gt;method &lt;span style="color:blue;"&gt;in &lt;/span&gt;methods)
    {
        getEnumerableOperator.Invoke(&lt;span style="color:blue;"&gt;null&lt;/span&gt;, &lt;span style="color:blue;"&gt;new object&lt;/span&gt;[] { method });
    }

    &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Warmup logic complete&amp;quot;&lt;/span&gt;);
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Great, problem solved, right?&amp;#160; Not quite.&amp;#160; What happens if I change my test query to be something that runs query operators against integers, something like “cx.StyleLibrary.Where(x =&amp;gt; x.Id == 0).Select(x =&amp;gt; x.Id).Distinct().OrderBy(x =&amp;gt; x).Max()”?&amp;#160; Yep, it breaks again…&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;System.ArgumentException: An item with the same key has already been added. 
    &lt;br /&gt;&amp;#160;&amp;#160; at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) 

    &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 

    &lt;br /&gt;&amp;#160;&amp;#160; at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ReflectionTreeRewriter`1.GetRewriter(Type type) 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ReflectionTreeRewriter`1.GetChildren(TNodeBase node) 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ChildRule`2.Apply(TNode src, TContext ctx) 

    &lt;br /&gt;… 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.Rules.ToEnumerableProcessor.Process(Expression e, List`1&amp;amp; assumptions) 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.SPLinqProvider.RewriteAndCompile[T](Expression expression, List`1&amp;amp; assumptions) 

    &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Linq.SPLinqProvider.System.Linq.IQueryProvider.Execute[T](Expression expression) 

    &lt;br /&gt;&amp;#160;&amp;#160; at System.Linq.Queryable.Max[TSource](IQueryable`1 source)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not good. It appears I’m going to need to call Microsoft.SharePoint.Linq.Rules.ReflectionTreeRewriter&amp;lt;T&amp;gt;.GetRewriter(Type) for every type we’re dealing with.&amp;#160; This could get messy fast…&amp;#160;&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_61AABDF9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_41237E47.png" width="504" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_44C19924.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_3278D262.png" width="493" height="102" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_243A5972.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/image_5F00_thumb_5F00_78F5C26A.png" width="441" height="91" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luckily, if ReflectionTreeRewriter&amp;lt;T&amp;gt;.GetRewriterForType(Type) returns null, an exception gets thrown, the default returns null, and the only subclass is the non-generic Microsoft.SharePoint.Linq.Rules.ExpressionTreeRewriter, so this may be doable.&amp;#160; ExpressionTreeRewriter exposes a singleton instance of itself via it’s “Singleton” field, so let’s try adding this to the ‘DoWarmup’ method:&lt;/p&gt;

&lt;blockquote style="width:500px;overflow:auto;"&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;expressionTreeRewriterType = asm.GetType(&lt;span style="color:#a31515;"&gt;&amp;quot;Microsoft.SharePoint.Linq.Rules.ExpressionTreeRewriter&amp;quot;&lt;/span&gt;);
&lt;span style="color:blue;"&gt;var &lt;/span&gt;singletonField = expressionTreeRewriterType.GetField(&lt;span style="color:#a31515;"&gt;&amp;quot;Singleton&amp;quot;&lt;/span&gt;, BindingFlags.Static | BindingFlags.Public);
&lt;span style="color:blue;"&gt;var &lt;/span&gt;expressionTreeRewriter = singletonField.GetValue(&lt;span style="color:blue;"&gt;null&lt;/span&gt;);
&lt;span style="color:blue;"&gt;var &lt;/span&gt;getRewriterMethod = expressionTreeRewriterType.BaseType.GetMethod(&lt;span style="color:#a31515;"&gt;&amp;quot;GetRewriter&amp;quot;&lt;/span&gt;, BindingFlags.NonPublic | BindingFlags.Instance);

&lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:blue;"&gt;var &lt;/span&gt;type &lt;span style="color:blue;"&gt;in &lt;/span&gt;types)
{
    getRewriterMethod.Invoke(expressionTreeRewriter, &lt;span style="color:blue;"&gt;new object&lt;/span&gt;[] { type });
    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(type.IsGenericType &amp;amp;&amp;amp; type.GetGenericTypeDefinition() == &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Nullable&lt;/span&gt;&amp;lt;&amp;gt;))
    {
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;baseType = type.GetGenericArguments()[0];
        getRewriterMethod.Invoke(expressionTreeRewriter, &lt;span style="color:blue;"&gt;new object&lt;/span&gt;[] { baseType });
    }
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Still no dice.&amp;#160; Ok, let’s try a simple retry of the query then.&amp;#160; Add this extension method, and call it instead of ToList():&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt; ToListSafe&amp;lt;T&amp;gt;(&lt;span style="color:blue;"&gt;this &lt;/span&gt;IEnumerable&amp;lt;T&amp;gt; enumeration)
{
    &lt;span style="color:blue;"&gt;try
    &lt;/span&gt;{
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;enumeration.ToList();
    }
    &lt;span style="color:blue;"&gt;catch &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;ArgumentException&lt;/span&gt;)
    {
        &lt;span style="color:green;"&gt;// add the sleep to work for complicated queries too
&lt;/span&gt;        System.Threading.&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;.Sleep(250);
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;enumeration.ToList();
    }
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it works!&amp;#160; (Adding in a “System.Threading.Thread.Sleep(250)” in the catch block makes it even handle some really complicated queries).&amp;#160; In fact, we can get rid of the reflection calls in DoWarmup – just leave the list references there, make sure all of the calls that actually cause queries to execute (such as .ToList, .ToArray, .ToDictionary, .FirstOrDefault(), etc.) are called with a retry if ArgumentException is thrown (like the ToListSafe extension method above), and those problems are history.&lt;/p&gt;

&lt;p&gt;Ok, so we’ve come up with hacks to work around this – the obvious next question is…. WHY?&amp;#160; Well, I can’t answer that.&amp;#160; It appears that the SharePoint LINQ libraries try to heavily take advantage of the performance boost of caching expression trees and the other components that make up query execution.&amp;#160; That’s not problematic by itself, if done correctly, but unfortunately, it is done in a way that isn’t thread-safe, since Dictionary&amp;lt;K,V&amp;gt; is *not* thread-safe, and no measures are taken to protect against problems caused by that.&amp;#160; If you find yourself in a situation like this in .Net 3.5, the best approach is probably to use a System.Collections.Hashtable (which *is* thread-safe, even if it’s not generic), and make sure you don’t call the .Add method (use the indexer instead).&amp;#160; If you’re in .Net 4.0 (which SharePoint 2010 obviously isn’t), ConcurrentDictionary&amp;lt;K,V&amp;gt; is another option, since that *is* thread-safe.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Well, thanks for coming along on yet another dive into the internals of SharePoint to find out why something isn’t behaving like I want it to.&amp;#160; The final sample code for this test scenario with the final fix is attached for your experimentation (&lt;a title="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.37/SPMetalThreadTest.zip" href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.37/SPMetalThreadTest.zip"&gt;SPMetalThreadTest.zip&lt;/a&gt;).&amp;#160; Now, if only I can get iPhones to behave on my site… ah… a story for another day.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2937" width="1" height="1"&gt;</description><enclosure url="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.37/SPMetalThreadTest.zip" length="13444" type="application/x-zip-compressed" /><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SPMetal/default.aspx">SPMetal</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/LINQ-to-SharePoint/default.aspx">LINQ-to-SharePoint</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Importing SharePoint Designer Workflows Into Visual Studio (Part 3)</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/07/importing-sharepoint-designer-workflows-into-visual-studio-part-3.aspx</link><pubDate>Wed, 07 Mar 2012 23:26:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2936</guid><dc:creator>Chris Domino</dc:creator><slash:comments>1</slash:comments><description>&lt;p class="Text"&gt;You&amp;#39;ve made it to Part 3! In &lt;a target="_blank" href="http://chrisdomino.com/blog/post/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-1" class="Link"&gt;Part 1&lt;/a&gt;, I described the general situations we faced importing SharePoint Designer 2010 (SPD) Workflows (WF) into Visual Studio 2010 (VS). &lt;a target="_blank" href="http://chrisdomino.com/blog/post/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2" class="Link"&gt;Part 2&lt;/a&gt; went into a lot of detail about the specific issues we encountered. In this final piece, I&amp;#39;ll outline the...are you ready for this...&lt;span class="Bold"&gt;SEVENTY-ONE&lt;/span&gt; step procedure that I was given. When the engineer at Microsoft first sent over this document, it was actually only a few very (although extremely convoluted) steps. So I broke them down and distilled the process into something that anyone familiar with VS could follow. &lt;/p&gt;
&lt;p class="Text"&gt;When designing a WF, assign its construction to either VS or SPD in the third place after classifying them as &amp;quot;simple&amp;quot; or &amp;quot;complex&amp;quot; in the second place having defined what each of those terms &lt;span class="Italic"&gt;means&lt;/span&gt; to your team and their skillsets in the first place. Then, after the SPD WFs are built and tested, the following procedure gets them into VS, addressing almost all of the concerns listed in Part 2. I&amp;#39;m going to assume you&amp;#39;re starting form an existing VS solution. &lt;/p&gt;
&lt;p class="Text"&gt;Let me begin by first defining some placeholders I use in the step-by-step: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;ul class="Text"&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;[display name of workflow]&lt;/span&gt;: The &amp;quot;friendly&amp;quot; name of the WF, with spaces and capitalization.&lt;/li&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;[folder name of workflow]&lt;/span&gt;: After you do an import, you&amp;#39;ll have a folder named &amp;quot;Workflows&amp;quot; and under that a folder with a cryptic-ish name that generally resembles an &amp;quot;intenral&amp;quot; name for your WF. For example, I had a WF with a display name of &amp;quot;Process Intake&amp;quot; and the generated folder was named &amp;quot;ProcessIntakeFT&amp;quot; in VS. Meh.&lt;/li&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;[workflow node]&lt;/span&gt;: In Solution Explorer, this is the representation of the folder with the above name under the &amp;quot;Workflows&amp;quot; folder off the root of the project. But it won&amp;#39;t be a folder icon, since VS imports it as a module.&lt;/li&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;[solution namespace]&lt;/span&gt;: I follow a standard namespace convention, where my solution name is the name of the client, then the application name, then, for each project, a description of what it does. So something like Client.Application.DataAccess or Client.Application.Web. For workflows, I throw a .Workflows namespace in there, so they are all organized together. This would look like Client.Project.Workflows.SomeWorkflow. Therefore &lt;span class="Bold"&gt;[solution namespace]&lt;/span&gt; is everything before the &amp;quot;.Workflows&amp;quot; part.&lt;/li&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;[display name of solution]&lt;/span&gt;: The &amp;quot;friendly&amp;quot; name of your application, which for me, is usually something like &amp;quot;Client Intranet&amp;quot; with spaces and capitalization. &lt;/li&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;[name of feature]&lt;/span&gt;: There is one feature in these SharePoint VS projects, and this will stand for whatever you rename it to.&lt;/li&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;li class="Text"&gt;&lt;span class="Bold"&gt;[content type node]&lt;/span&gt;: This is another module under the [workflow node] folder that contains a content type SPD generates for the WF task.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Here&amp;#39;s what Solution Explorer will look like after an import (I did clean up some of the node names to make it little more intuitive): &lt;/p&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-3/solution-explorer.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;p class="Text"&gt;And here we go: &lt;/p&gt;
&lt;p class="Text"&gt;&lt;ol class="Text"&gt;
&lt;li class="Text"&gt;In VS, create new project of type &amp;quot;Import Reusable Workflow&amp;quot; named [solution namespace].Workflows.[folder name of workflow].&lt;/li&gt;
&lt;li class="Text"&gt;In the ensuing wizard, select the local SharePoint site URL and file location of the WSP exported from SPD.&lt;/li&gt;
&lt;li class="Text"&gt;In Solution Explorer, rename the feature &amp;quot;[folder name of workflow]Workflow.&amp;quot; This is then [name of feature].&lt;/li&gt;
&lt;li class="Text"&gt;Double click the [name of feature].feature node.&lt;/li&gt;
&lt;li class="Text"&gt;In the feature designer, give it a proper Title (&amp;quot;[display name of solution] [display name of workflow] Workflow&amp;quot;) and description (&amp;quot;Installs the [display name of workflow] workflow and any supporting infrastructure.&amp;quot;).&lt;/li&gt;
&lt;li class="Text"&gt;Remove the content type from the asset list on the right by clicking on its box, and then clicking the &amp;quot;&amp;lt;&amp;quot; button. You&amp;#39;ll see it move over to the list of assets on the left. &lt;span class="Error"&gt;Critical Note:&lt;/span&gt; this is a step we performed because we wanted to use our custom, existing content types for tasks. This is also the thing that didn&amp;#39;t work! Omit this step to use the default content type SPD conjures up, and everything works. &lt;/li&gt;
&lt;li class="Text"&gt;Press Control + S to save the file.&lt;/li&gt;
&lt;li class="Text"&gt;In Solution Explorer, delete the folder for the content type (under the &amp;quot;Workflows\[folder name of workflow]&amp;quot; folder). &lt;span class="Error"&gt;Critical Note:&lt;/span&gt; Again, omit this to use the SPD content type.&lt;/li&gt;
&lt;li class="Text"&gt;Copy the InfoPath 2010 (IP) forms into the workflow node (which is the first folder under &amp;quot;Workflows&amp;quot;).&lt;/li&gt;
&lt;li class="Text"&gt;Delete the &amp;quot;Other Imported Files&amp;quot; folder.&lt;/li&gt;
&lt;li class="Text"&gt;Right click each XSN file, and select &amp;quot;Properties.&amp;quot; &lt;/li&gt;
&lt;li class="Text"&gt;In the property pane, change the &amp;quot;DeploymentType&amp;quot; to &amp;quot;ElementFile.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;There could be zero to many XSN files here, one for the association form (if defined) and one for each task content type the WF is associated with. Repeat the above two steps for each if there are any.&lt;/li&gt;
&lt;li class="Text"&gt;In Solution Explorer, right click [workflow node], and select properties. Expand the &amp;quot;Feature Receiver&amp;quot; node.&lt;/li&gt;
&lt;li class="Text"&gt;Enter &amp;quot;Microsoft.Office.Workflow.Feature, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; for the &amp;quot;Assembly.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Enter &amp;quot;Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver&amp;quot; as the &amp;quot;Class Name.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click the ellipses in the value for &amp;quot;Feature Properties.&amp;quot; A window pops up.&lt;/li&gt;
&lt;li class="Text"&gt;Add a member with a key of &amp;quot;GloballyAvailable&amp;quot; and a value of &amp;quot;true.&amp;quot; &lt;/li&gt;
&lt;li class="Text"&gt;Add a member with a key of &amp;quot;RegisterForms&amp;quot; and a value of &amp;quot;[folder name of workflow]\*.xsn.&amp;quot;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-3/Workflow-Properties.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;In Solution Explorer, if you are source controlled, check out all XSN files. If not, make sure they are not read-only, as the following steps involve opening the IP client application, which doesn&amp;#39;t handle read-only files well. (It doesn&amp;#39;t seem to refresh the file attributes, so if the XSN is read-only when opened, you&amp;#39;ll have to close IP, make the file not read-only, and open it back up.)&lt;/li&gt;
&lt;li class="Text"&gt;Right click the workflow node and select &amp;quot;Open Folder in Windows Explorer.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In Windows Explorer, right click the task form (the XSN file with, hopefully, the word &amp;quot;Task&amp;quot; somewhere in the file name), and select &amp;quot;Design.&amp;quot; (Note: although it&amp;#39;s technically possible to have many task forms as mentioned above, this procedure only supports using one.)&lt;/li&gt;
&lt;li class="Text"&gt;In InfoPath, click &amp;quot;File.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Form Template Properties.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Copy the &amp;quot;ID&amp;quot; field into a new instance of Notepad. Precede it with [TASK].&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;OK.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Close InfoPath.&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Don&amp;#39;t Publish.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In Windows Explorer, right click the association form&amp;#39;s XSN file and select &amp;quot;Design.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In IP, click &amp;quot;File.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Form Template Properties.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Copy the &amp;quot;ID&amp;quot; field into the existing Notepad instance. Precede it with [ASSN].&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;OK.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In Notepad, your text file should look like this:&lt;br /&gt;&lt;br /&gt;[TASK]urn:schemas-microsoft-com:office:infopath:workflowInitAssoc:-AutoGen-2012-02-02T18:22:24:952Z&lt;br /&gt;[ASSN]urn:schemas-microsoft-com:office:infopath:workflowInitAssoc:-AutoGen-2012-01-27T20:54:17:296Z&lt;/li&gt;
&lt;li class="Text"&gt;In IP, click on the &amp;quot;Page Design&amp;quot; tab.&lt;/li&gt;
&lt;li class="Text"&gt;Select the &amp;quot;Associate&amp;quot; view in the &amp;quot;Views&amp;quot; section&amp;#39;s &amp;quot;View&amp;quot; dropdown in the ribbon.&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Properties.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In the popup, check &amp;quot;Set as default view.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Press &amp;quot;OK.&amp;quot;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-3/InfoPath-Default-View.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;Click on the &amp;quot;Data&amp;quot; tab.&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Form Load&amp;quot; in the &amp;quot;Rules&amp;quot; section.&lt;/li&gt;
&lt;li class="Text"&gt;In the &amp;quot;Rules&amp;quot; pane on the right, click &amp;quot;New&amp;quot; and select &amp;quot;Action.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Name it &amp;quot;Switch view on form load&amp;quot; under &amp;quot;Details for.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click the link under &amp;quot;Condition.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In the popup, select &amp;quot;The expression&amp;quot; in the first dropdown.&lt;/li&gt;
&lt;li class="Text"&gt;Enter &amp;quot;isStartWorkflow = &amp;quot;true&amp;quot;&amp;quot; (without the outer quotes) in the textbox.&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;OK.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Back in the &amp;quot;Rules&amp;quot; pane, click &amp;quot;Add&amp;quot; and select &amp;quot;Switch views.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Select &amp;quot;Start&amp;quot; in the &amp;quot;View&amp;quot; dropdown.&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;OK.&amp;quot;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-3/InfoPath-Form-Load-Rules.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;Click the disk (save) icon above &amp;quot;File.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Save&amp;quot; in the popup.&lt;/li&gt;
&lt;li class="Text"&gt;Close InfoPath.&lt;/li&gt;
&lt;li class="Text"&gt;Click &amp;quot;Don&amp;#39;t Publish.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In Visual Studio, in Solution Explorer, open the &amp;quot;Elements.xml&amp;quot; file under the [workflow node].&lt;/li&gt;
&lt;li class="Text"&gt;Add the following markup directly above the closing tag toward the bottom of the file:&lt;br /&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;Instantiation_FormURI&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;[ID from notepad of the association form]&lt;span class="Operator"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="Keyword"&gt;Instantiation_FormURI&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;Association_FormURN&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;[ID from notepad of the association form]&lt;span class="Operator"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="Keyword"&gt;Association_FormURN&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;Task0_FormURN&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;[ID from notepad of the task form]&lt;span class="Operator"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="Keyword"&gt;Task0_FormURN&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;Set the value for the &amp;quot;Workflow&amp;quot; node&amp;#39;s &amp;quot;Name&amp;quot; attribute to &amp;quot;[display name of solution] [display name of workflow] Workflow.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Press Control + S to save the file.&lt;/li&gt;
&lt;li class="Text"&gt;Add the following file references to the project (some of these assemblies need to sucked out of the GAC, so this post has an attachment that&amp;#39;s a ZIP file of these DLLs): 
&lt;ul class="Text"&gt;
&lt;li class="Text"&gt;Microsoft.Office.Workflow.Actions.dll&lt;/li&gt;
&lt;li class="Text"&gt;Microsoft.Office.Workflow.Pages.dll&lt;/li&gt;
&lt;li class="Text"&gt;Microsoft.Office.InfoPath.Server.dll&lt;/li&gt;
&lt;li class="Text"&gt;Microsoft.Office.InfoPath.dll&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;Add the &amp;quot;SharePoint &amp;#39;Layouts&amp;#39; Mapped Folder&amp;quot; to the project.&lt;/li&gt;
&lt;li class="Text"&gt;Add an Application Page to this folder&amp;#39;s child. Name it &amp;quot;MyTaskFormHost.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;In the Application Page HTML editor, remove all content except for the @Page directive.&lt;/li&gt;
&lt;li class="Text"&gt;Copy the following ABOVE your @Page directive:&lt;br /&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Assembly&lt;/span&gt;&lt;span class="ClassName"&gt; Name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;$SharePoint.Project.AssemblyFullName$&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Assembly&lt;/span&gt;&lt;span class="ClassName"&gt; Name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.Office.Workflow.Pages, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Import&lt;/span&gt;&lt;span class="ClassName"&gt; Namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.SharePoint.ApplicationPages&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Assembly&lt;/span&gt;&lt;span class="ClassName"&gt; Name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;Copy the following BELOW your @Page directive:&lt;br /&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Import&lt;/span&gt;&lt;span class="ClassName"&gt; Namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.SharePoint.WebControls&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; Tagprefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;SharePoint&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.SharePoint.WebControls&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Assembly&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; Tagprefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Utilities&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.SharePoint.Utilities&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Assembly&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Import&lt;/span&gt;&lt;span class="ClassName"&gt; Namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.SharePoint&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Assembly&lt;/span&gt;&lt;span class="ClassName"&gt; Name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; Tagprefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;InfoPath&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Namespace&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.Office.InfoPath.Server.Controls&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Assembly&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Microsoft.Office.InfoPath.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;LinksTable&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/LinksTable.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;InputFormSection&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/InputFormSection.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;InputFormControl&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/InputFormControl.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;LinkSection&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/LinkSection.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;ButtonSection&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/ButtonSection.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;ActionBar&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/ActionBar.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;ToolBar&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/ToolBar.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;ToolBarButton&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/ToolBarButton.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="Keyword"&gt; Register&lt;/span&gt;&lt;span class="ClassName"&gt; TagPrefix&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;wssuc&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TagName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Welcome&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_controltemplates/Welcome.ascx&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Content1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ContentPlaceHolderId&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;PlaceHolderAdditionalPageHead&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Content2&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ContentPlaceHolderId&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;PlaceHolderPageTitle&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;SharePoint&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;EncodedLiteral&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;EncodedLiteral1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; text&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;&amp;lt;% $Resources:dlc, WrkTask_PageTitle %&amp;gt;&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; EncodeMethod&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;HtmlEncode&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Content3&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ContentPlaceHolderId&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;PlaceHolderPageTitleInTitleArea&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;a&lt;/span&gt;&lt;span class="ClassName"&gt; tabindex&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; href&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;&amp;lt;% SPHttpUtility.AddQuote(SPHttpUtility.UrlPathEncode(List.DefaultViewUrl,true),Response.Output); %&amp;gt;&lt;span class="Operator"&gt;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&amp;lt;% SPHttpUtility.HtmlEncode(List.Title,Response.Output); %&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;a&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Content4&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ContentPlaceHolderId&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;PlaceHolderTitleBreadcrumb&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;SiteMapPath&lt;/span&gt;&lt;span class="ClassName"&gt; SiteMapProvider&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;SPContentMapProvider&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; id&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;ContentMap&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; SkipLinkText&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Content5&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ContentPlaceHolderId&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;PlaceHolderLeftNavBar&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Content6&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ContentPlaceHolderId&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;PlaceHolderMain&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;SharePoint&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;FormComponent&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;FormComponent1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; TemplateName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;WorkflowEditFormToolBar&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ControlMode&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Edit&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;table&lt;/span&gt;&lt;span class="ClassName"&gt; class&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;ms-informationbar&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;style&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="StyleName"&gt;margin-top&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; 10px&lt;span class="Operator"&gt;;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; border&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;0&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; cellpadding&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;2&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; cellspacing&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;0&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; width&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;100%&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;tr&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:30px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;td&lt;/span&gt;&lt;span class="ClassName"&gt; width&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;10&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; valign&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;center&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;style&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="StyleName"&gt;padding&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; 4px&lt;span class="Operator"&gt;;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:40px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;img&lt;/span&gt;&lt;span class="ClassName"&gt; src&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;/_layouts/images/Workflows.gif&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; alt&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;&amp;lt;% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(GetLocString(&amp;quot;WrkTask_PageTitle&amp;quot;)),Response.Output); %&amp;gt;&lt;span class="Operator"&gt;&amp;quot; /&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:30px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;td&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:30px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;td&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:40px;"&gt;&lt;span class="Code"&gt;&amp;lt;% SPHttpUtility.NoEncode(m_pageDescription, Response.Output); %&amp;gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:30px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;td&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;tr&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;table&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;InfoPath&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;XmlFormView&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;XmlFormControl&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ClassName"&gt;style&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="StyleName"&gt;width&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&amp;nbsp;100%&lt;span class="Operator"&gt;;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;SharePoint&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;FormDigest&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;FormDigest1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;Content&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;In the code behind file of this page, update the using statements at the top of the file to the following:&lt;br /&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; System&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; Microsoft&lt;span class="Operator"&gt;.&lt;/span&gt;SharePoint&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; Microsoft&lt;span class="Operator"&gt;.&lt;/span&gt;Office&lt;span class="Operator"&gt;.&lt;/span&gt;Workflow&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; Microsoft&lt;span class="Operator"&gt;.&lt;/span&gt;SharePoint&lt;span class="Operator"&gt;.&lt;/span&gt;WebControls&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;using&lt;/span&gt; Microsoft&lt;span class="Operator"&gt;.&lt;/span&gt;Office&lt;span class="Operator"&gt;.&lt;/span&gt;InfoPath&lt;span class="Operator"&gt;.&lt;/span&gt;Server&lt;span class="Operator"&gt;.&lt;/span&gt;Controls&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;Change the class to inherit from &amp;quot;WrkTaskIPPage.&amp;quot;&lt;/li&gt;
&lt;li class="Text"&gt;Update the contents of the class to be the following:&lt;br /&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;protected&lt;/span&gt; &lt;span class="Keyword"&gt;override&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; OnInit&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;EventArgs&lt;/span&gt; e&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;XmlFormControl&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Initialize &lt;span class="Operator"&gt;+&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;EventHandler&lt;/span&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="ClassName"&gt;InitializeEventArgs&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;XmlFormControl_Initialize_Custom&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;XmlFormControl&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SubmitToHost &lt;span class="Operator"&gt;+&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;EventHandler&lt;/span&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="ClassName"&gt;SubmitToHostEventArgs&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;XmlFormControl_OnSubmitToHost_Custom&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;XmlFormControl&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Close &lt;span class="Operator"&gt;+&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;EventHandler&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;XmlFormControl_OnClose_Custom&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;base&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;OnInit&lt;span class="Operator"&gt;(&lt;/span&gt;e&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;protected&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; XmlFormControl_Initialize_Custom&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;object&lt;/span&gt; sender&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;InitializeEventArgs&lt;/span&gt; ea&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ModifySettings&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;protected&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; XmlFormControl_OnSubmitToHost_Custom&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;object&lt;/span&gt; sender&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;SubmitToHostEventArgs&lt;/span&gt; e&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ModifySettings&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;protected&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; XmlFormControl_OnClose_Custom&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;object&lt;/span&gt; sender&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;EventArgs&lt;/span&gt; e&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ModifySettings&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;private&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; ModifySettings&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;m_isCustomXsn &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;true&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;int&lt;/span&gt; taskType &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;int&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;m_task&lt;span class="Operator"&gt;[&lt;/span&gt;SPBuiltInFieldId&lt;span class="Operator"&gt;.&lt;/span&gt;TaskType&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;taskType &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; 2&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;XmlFormControl&lt;span class="Operator"&gt;.&lt;/span&gt;DefaultView &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;ChangeView&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li class="Text"&gt;In Visual Studio, rebuild the project, make sure it compiles.&lt;/li&gt;
&lt;li class="Text"&gt;In Solution Explorer, if you&amp;#39;re using the SPD content type, open the elements.xml file under [workflow node]\[content type node].&lt;/li&gt;
&lt;li class="Text"&gt;In the XML editor, under the &amp;quot;FormURLs&amp;quot; element, set &amp;quot;_layouts/ [solution namespace].Workflows.[folder name of workflow]/ MyTaskFormHost.aspx&amp;quot; as the value for the existing &amp;quot;Display&amp;quot; and &amp;quot;Edit&amp;quot; elements. &lt;/li&gt;
&lt;li class="Text"&gt;Add a &amp;quot;New&amp;quot; element as a child to &amp;quot;FormURLs&amp;quot; and set &amp;quot;_layouts/ [solution namespace].Workflows.[folder name of workflow]/ MyTaskFormHost.aspx&amp;quot; as the value for that as well. If you are indeed using your own custom content type, which, recall, is the piece that fails with this procedure, go into the code or configuration that provisions your existing content type, and make sure that &amp;quot;_layouts/ [solution namespace].Workflows.[folder name of workflow]/ MyTaskFormHost.aspx&amp;quot; is set for the NewFormUrl, EditFormUrl, and DisplayFormUrl properties.&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p class="Text"&gt;The code and markup above was given to me by Microsoft, so use third-hand code at your own risk! But in general, that&amp;#39;s it. I mentioned a few times that the one thing that didn&amp;#39;t work was using existing content types for our task forms. This was a show-stopper for us, and the only reason we didn&amp;#39;t move forward with this procedure. But I hope this outlines what has to be dealt with when exporting &amp;quot;complex&amp;quot; SPD WFs into VS. &lt;/p&gt;
&lt;p class="Text"&gt;And, of course, what has to be dealt with after making assumptions... &lt;/p&gt;
&lt;p class="Text"&gt;Have fun! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2936" width="1" height="1"&gt;</description><enclosure url="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.36/WorkflowDLLs.zip" length="1145539" type="application/x-zip-compressed" /><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+Designer+2010/default.aspx">SharePoint Designer 2010</category></item><item><title>Importing SharePoint Designer Workflows Into Visual Studio (Part 2)</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/07/importing-sharepoint-designer-workflows-into-visual-studio-part-2.aspx</link><pubDate>Wed, 07 Mar 2012 22:48:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2935</guid><dc:creator>Chris Domino</dc:creator><slash:comments>1</slash:comments><description>&lt;p class="Text"&gt;In &lt;a target="_blank" href="http://chrisdomino.com/blog/post/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-1" class="Link"&gt;Part 1&lt;/a&gt; of this post, I discussed the general issues my team has run into importing SharePoint Designer 2010 (SPD) workflows (WFs) into Visual Studio 2010 (VS). But for a quick overview: I am currently part of a hybrid team of SharePoint designers and SharePoint developers, and in order to make our application deployment one hundred percent automated, we wanted to import all of the WFs created via SPD into VS. I made the assumption that the &amp;quot;Import Reusable Workflow&amp;quot; VS project import was the winning ticket. But instead, it was more like a speeding ticket, and, to string along this weak metaphor, I was incarcerated for over two months for driving without insurance. &lt;/p&gt;
&lt;p class="Text"&gt;Our solution was to call Microsoft and task for help. The details of this conversation, specifically the issues we discovered and the questions we asked will comprise this post. Since that discussion and the ensuing ninety percent solution (not one hundred percent, since one show-stopping issue still didn&amp;#39;t work) were so long, I&amp;#39;m going to break the latter into a Part 3. I&amp;#39;ll be going into detail about the problems we faced with the workflow; specifically, the ones that we determined were not just bugs on our end, but rather nuances with SPD, and what we were left with after a &amp;quot;successful&amp;quot; import into VS. &lt;/p&gt;
&lt;p class="Text"&gt;Interestingly, most of these problems are SPD- specific, and it&amp;#39;s possible that the hacks employed to get around them are part of the issue causing VS not to import them correctly. But these were only discovered after augmenting our development approaches to support VS integration. I&amp;#39;ll present these first, and then move on to the specific problems we encountered when actually performing the import, or experienced after deploying from VS. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Underline"&gt;SharePoint Designer Issues&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;You&amp;#39;ll see below that a lot of the SPD questions we posed to Microsoft regarded InfoPath (IP) forms and associated custom content types used for the WF tasks. We created these content types, which inherit from WorkflowTask, to store additional data in our task lists. (All of our WFs use the out-of-the-box &amp;quot;Workflow Tasks&amp;quot; list for each sub site.) The IP forms provide the UI for the users to populate this data. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;Rant&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;IP was the cause of many other headaches suffered by our WF designer. Why SPD, in 2010, forces these as the default over ASPX pages, I&amp;#39;ll never understand. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;/Rant&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;Problem Statement #1: For custom task forms, we are unable to set the content type of the task form via SPD (the field is read only). This requires us to do have to manually hack the XMOL and CONFIG files for the WF:&lt;br /&gt;&lt;br /&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/Cannot-Set-Content-Type.jpg" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Question #1: How do we properly set the content type for a custom InfoPath (IP) task form? &lt;/p&gt;
&lt;p class="Text"&gt;Problem Statement #2: Another area we have to manually hack the XOML file is configuring the WF to check in/out the &lt;span class="Italic"&gt;current&lt;/span&gt; list item. Here&amp;#39;s all that&amp;#39;s available to us in the UI for check in/out actions:&lt;br /&gt;&lt;br /&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/Use-Current-List-Item.jpg" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Question #2: How do we configure an SPD WF step to check out the current list item? &lt;/p&gt;
&lt;p class="Text"&gt;Problem Statement #3: On WFs with custom IP task forms, after solution gallery deployment and activation, we are running into an issue with opening SPD and globally publishing the WFs. Here&amp;#39;s what we see in SPD (in the &amp;quot;Forms&amp;quot; section) on the server we just deployed to: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/After-Deployment.png" class="Image" alt="" /&gt;&lt;/p&gt;
After opening the newly-deployed WF, the following error shows up when clicking &amp;quot;Publish Globally:&amp;quot; &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/After-Publish-Globally.jpg" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;This is actually fine for the association / initialization forms, as those can be auto-generated. However, we have to make customizations to the task form, and those changes will be lost if we have to delete the IP form so SPD can re-gen it. In this case, IP gives me the following message: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/Regeneration.jpg" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;In any case, I do a &amp;quot;Quick Publish&amp;quot; operation in IP, and return to SPD. Publishing still fails with that first message above. However, if I close SPD first and then reopen it, the forms appear to know they&amp;#39;ve been updated via an IP Quick Publish (notice the parentheticals next to the form names now say &amp;quot;custom form&amp;quot; instead of &amp;quot;* needs update&amp;quot;). &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/Custom-Form.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;But when I Publish Globally now, it still fails with the same message. &amp;quot;[name of task form].xsn (custom form)&amp;quot; above changes to &amp;quot;[name of task form].xsn * (needs update).&amp;quot; &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/Needs-Update.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;But this is the one we can delete and have SPD re-generate! Doing so and globally republishing does work, but the customizations of the task form are lost. &lt;/p&gt;
&lt;p class="Text"&gt;Question #3: How do we fix customized IP task forms (deployed successfully via WSPs in the site collection solutions gallery) so that their customizations are not reset by the &amp;quot;Publish Globally&amp;quot; process? &lt;/p&gt;
&lt;p class="Text"&gt;Problem Statement #4: We have found that every time you WSP-deploy a workflow created from SPD to a new environment via our procedure, folders will be created on the target environment under &amp;quot;All Files\Workflows&amp;quot; that correspond to every workflow that&amp;#39;s ever been created in the development environment. In other others, if I have Workflow1 and Workflow2 in my local environment and I WSP-deploy Workflow2 only to my development server, an empty folder will be created under &amp;quot;All Files\Workflows\Workflow1&amp;quot; even though it WASN&amp;#39;T WSP-deployed. Although this is mostly just in the way, if we ever do deploy Workflow1, and forget to delete this extraneous folder, we&amp;#39;ll get an error that the folder already exists. &lt;/p&gt;
&lt;p class="Text"&gt;Question #4: Is there any way to get this not to happen? &lt;/p&gt;
&lt;p class="Text"&gt;Question #5: One of our WFs contains a lookup field. After WSP-deploying it to the development environment and opening SPD to globally publish it, we get the following error. This is very indicative of the shortcomings of SPD, since we have carefully deployed our site columns (lookup or otherwise) to ensure they have the same GUIDs across our environments. We could technically work around this issue specifically, but this requires adjustments to our security model and basically re-architecting the WF. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/Lookup.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Question #5: How do you get WFs with lookup site columns to be globally-publishable? &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Underline"&gt;Visual Studio Issues&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;I&amp;#39;ve combined my VS questions to Microsoft into one narrative: &lt;/p&gt;
&lt;p class="Text"&gt;When using the &amp;quot;Import Reusable Workflow&amp;quot; new project template, the workflows are imported, but the project does not compile. I got past this by adding the proper SharePoint/IP/Office DLL references. However, although I can get it to generate WSP packages, the IP forms are never published; they are actually nowhere to be found on the target environment. After fiddling around with it for two days, I decided to abandon this approach. &lt;/p&gt;
&lt;p class="Text"&gt;Now, when using the &amp;quot;Import SharePoint Solution Package&amp;quot; new project template, the workflow does import, package, and deploy. However, the project is a mess: unwanted content types and site columns are imported, multiple features are created, and depending on the titles used back in SPD, horrendously long file names are generated in the deep folder structure, at times throwing compilation errors due to eclipsing the Windows max path length. But like I said, it *does* deploy and work. We need to perform a &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ff798386.aspx" class="Link"&gt;hack&lt;/a&gt; to get the workflows to be &amp;quot;Globally Published (a la SPD);&amp;quot; otherwise, the features are web-scoped and can only be activated to the root site. Finally, when opening up the XOML file in Visual Studio, the workflow is HUGE; hundreds of activities are created, and they all have those red exclamation marks on them in the VS WF designer. Maintainability-wise, this won&amp;#39;t be agreeable to our client. &lt;/p&gt;
&lt;p class="Text"&gt;Additionally, we&amp;#39;ve come across two situations in which this approach actually fails. First, one of our WSPs refuses to import; the last step in the &amp;quot;Import SharePoint Solution Package&amp;quot; wizard that allows you to choose which assets to import is blank. No files are listed. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/No-Workflows.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Second, some WSPs have TWO workflows in the manifest, and merging them manually through Visual Studio is extremely hacky and doesn&amp;#39;t work all the time. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-2/Two-Workflows.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Both of these WSPs are functional in SPD, and were exported using the same process as the rest. &lt;/p&gt;
&lt;p class="Text"&gt;The detailed answers to the SPD questions are out of scope for this post. Of course, hacking the XOML file is not supported. But to my surprise, the issue with the lookup field is not supported either! All in all, the theme of the response was to use VS for &amp;quot;complex&amp;quot; WFs - the subjective answer I discussed in Part 1. As far as explicit SPD support goes, we were toeing the line between what that tool could handle and what VS could do natively. The irony, of course, is that exporting to VS wasn&amp;#39;t working either. &lt;/p&gt;
&lt;p class="Text"&gt;So if you take one thing away from these posts, it&amp;#39;s this: use SPD for what SPD does well. Because when it &lt;span class="Italic"&gt;works&lt;/span&gt;, it works &lt;span class="Italic"&gt;awesome&lt;/span&gt;. We only got into trouble when trying to make the tool sweat. Of course, everything has a support list of functionality and a breaking point; we weren&amp;#39;t being wanton with SPD in my opinion. Microsoft was very consistent in their guidance, regardless of its subjectivity. So read on to &lt;a target="_blank" href="http://chrisdomino.com/blog/post/Importing-SharePoint-Designer-Workflows-Into-Visual-Studio-Part-3" class="Link"&gt;Part 3&lt;/a&gt;, and let&amp;#39;s see how we were able to get around most of these issues! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2935" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+Designer+2010/default.aspx">SharePoint Designer 2010</category></item><item><title>Importing SharePoint Designer Workflows Into Visual Studio (Part 1)</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/03/05/importing-sharepoint-designer-workflows-into-visual-studio-part-1.aspx</link><pubDate>Mon, 05 Mar 2012 22:19:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2934</guid><dc:creator>Chris Domino</dc:creator><slash:comments>1</slash:comments><description>&lt;p class="Text"&gt;SharePoint is a universe, and like our own, new distant galaxies are discovered and elucidated. Similar to an astronomer, as a SharePoint architect, I occasionally find myself making assumptions. It&amp;#39;s sort of like dark matter: we only know it&amp;#39;s there because it &lt;span class="Italic"&gt;has&lt;/span&gt; to be there; it makes all the math work out. Coming from a development background, I know an awful lot about web parts, feature receivers, client objet models, timer jobs, and so on: all of the code-based galaxies of SharePoint. &lt;/p&gt;
&lt;p class="Text"&gt;However, there are distant &amp;quot;SPStars&amp;quot; out there that I&amp;#39;ve only gazed at through a telescope; they are too far away from my .NET home planet to see clearly in the least, let along directly observe in the most. These are things like taxonomy, FAST search, BCS, workflow, and so on: galaxies of SharePoint about which I only know what I&amp;#39;ve had to know to successfully implement them on projects. This varies from code, which I know pervasively and can speak to, estimate against, and work with assumptionlessly. &lt;/p&gt;
&lt;p class="Text"&gt;But for these more ancillary technologies, I can only advise from first hand (and occasionally leverage trusted second hand) experience. The rest is assumptive. BCS is great example. I know that it can be used to index external data for SharePoint search integration. But I&amp;#39;ve only done it once. If I had to estimate how long it would take to accomplish this a second time, I would have to assume that it would be no longer than the first go-around. But until I&amp;#39;ve worked with BCS for ten years like I have with .NET, and it is second nature (or even first nature, as it is with me and code) there would be a lot of assumptions. &lt;/p&gt;
&lt;p class="Text"&gt;I want to close out my series about SharePoint Designer / Developer hybrid team development with a piece about assumptions. And SharePoint. And workflow. And how the former crushed the connection between the two latter. &lt;/p&gt;
&lt;p class="Text"&gt;My role on this project as architect was basically to make sure that all requirements deemed &amp;quot;code-ish&amp;quot; were implemented by my developers. In addition, I had to facilitate all things &amp;quot;SharePoint Designer-ish&amp;quot; being integrated into our Visual Studio-based WSP deployment. This was a balls-to-wall deployment, with code-provisioned site structure, taxonomy-guid-matching-across-environment features, and more PowerShell than I ever thought I&amp;#39;d know. &lt;/p&gt;
&lt;p class="Text"&gt;It was also technically challenging, making sure that page layouts, content types, site columns, and other artifacts that &lt;span class="Italic"&gt;could&lt;/span&gt; have been provisioned manually in the environment were not blown away by our WSPs. It also required a lot of syncing of HTML, CSS, images, etc. across Email, SharePoint Designer, and TFS. It was a large team with a large range of SharePoint knowledge and toolsets, and it was my job to keep them all chugging along together. &lt;/p&gt;
&lt;p class="Text"&gt;So when the workflow phase of the project plan commenced, I thought that this would be the most elegant example of SharePoint Designer / Developer coordination. I thought that this would demonstrate the true value of my automated deployments. &lt;/p&gt;
&lt;p class="Text"&gt;I thought that it would work. &lt;/p&gt;
&lt;p class="Text"&gt;But my assumptions were horribly wrong. And time consuming. And expensive. And frankly, quite depressing at times. So following is a multi-parter about the problem in the first place, the solution in the second place, and the conclusion in the third place. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;Spoiler Alert&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;We did basically get it to work, technically, but the one feature we needed and couldn&amp;#39;t get working was the show-stopper (at the time of this writing, our workflow designer is connected to one of the client&amp;#39;s production SharePoint web front end servers, manually configuring a workflow in SharePoint Designer) that made us, after over two months of technical, political, business, and ideological discussions and debates, pull the plug from importing SharePoint Designer 2010 (SPD heretofore) workflows (WF) into Visual Studio 2010 (of course VS). &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;/Spoiler Alert&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="SectionHeader"&gt;The Assumption&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="Text"&gt;Being in VS all day, I always feel a little miffed and unadventurous scrolling through all the project and item templates I&amp;#39;ve never touched. Like despite how much WCF I&amp;#39;ve done over the years, I&amp;#39;ve never created a &amp;quot;WCF Workflow Service Application&amp;quot; project or an &amp;quot;AJAX-Enabled WCF Service&amp;quot; item. And under the &amp;quot;Data&amp;quot; section there&amp;#39;s a &amp;quot;Service-based Database.&amp;quot; That &lt;span class="Italic"&gt;sounds&lt;/span&gt; cool, but I don&amp;#39;t even know what it &lt;span class="Italic"&gt;is&lt;/span&gt;. Anyway, spending a lot of time in the SharePoint -&amp;gt; 2010 templates, I&amp;#39;ve always seen the two &amp;quot;import&amp;quot; project templates, one for WF and one for general WSPs. &lt;/p&gt;
&lt;p class="Text"&gt;On the day this whole mess started, over three months ago now, I had just completed my final deployment proof of concept, (POC) and was feeling great about the things I could accomplish and the time I could save with my toolset. Sitting next to my WF designer, I realized that amidst all this SPD integration, WF was the &lt;span class="Italic"&gt;only&lt;/span&gt; thing that we planned to deploy separately from the rest of the application. One-offs &lt;span class="Bold"&gt;never&lt;/span&gt; sit well with me, so remembering seeing those VS templates and feeling super confident about my deployment machine, two things happened simultaneously: &lt;/p&gt;
&lt;p class="Text"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul class="Text"&gt;
&lt;li class="Text"&gt;I assumed that the &amp;quot;Import Reusable Workflow&amp;quot; VS project template would create a VS project capable of importing a reusable workflow.&lt;/li&gt;
&lt;li class="Text"&gt;I promised my team and my client that I would be able to use this tool to assimilate WF into VS and our deployment proper.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="Text"&gt;It was a fine day and I felt really good about my plan. This was, unfortunately, the best I&amp;#39;d ever feel about it. As I set about proving this out, my WF designer referred me to a few articles she&amp;#39;d found (one even written by someone she knew) about SPD VS WF integration. She was as excited as I was about this deployment: it meant she would only have to do the work once (verses having to reproduce her WFs manually in each target environment) and that she could learn a thing or two about how her WFs fit into the larger application by way of deployment. &lt;/p&gt;
&lt;p class="Text"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="SectionHeader"&gt;The Problem&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="Text"&gt;Full of excitement for a one hundred percent automated SharePoint deployment mechanism, I had her package up her WF as a WSP via SPD, and shoot me the file. I created a new &amp;quot;Import Reusable Workflow&amp;quot; project, went through the wizard, sucked in the WSP, and watched as VS created a SharePoint 2010 project and provisioned and configured all the necessary structure to represent an SPD WF. &amp;quot;This is awesome,&amp;quot; I remember thinking. Right-click on the project, select &amp;quot;Package,&amp;quot; and update my PowerShell script to include this with the rest of the solutions. &amp;quot;This will take like ten minutes!&amp;quot; &lt;/p&gt;
&lt;p class="Text"&gt;So I right clicked, packaged, but no packaging occurred; it didn&amp;#39;t even &lt;span class="Italic"&gt;compile&lt;/span&gt;. Ten minutes become an hour, most of which I spent digging around the GAC and ISAPI for DLLs. Yet I remained undeterred and finally got it to compile and package. Moment of truth: I turned the crank of my deployment, and the WSP was successfully added and deployed. Things were looking really good. &lt;/p&gt;
&lt;p class="Text"&gt;Then on the site, I was able to activate the web-scoped feature that was provisioned, and the WF was visible on lists. But that&amp;#39;s as far as I got when the troubles began. I couldn&amp;#39;t associate or instantiate the WF. (Read about these &lt;a target="_blank" href="http://chrisdomino.com/blog/post/Fixing-Blank-SharePoint-2010-Workflow-Association-Pages-Caused-By-InfoPath-Forms-Services-Not-Rendering" class="Link"&gt;here&lt;/a&gt; and &lt;a target="_blank" href="http://chrisdomino.com/blog/post/Resolving-Workflow-Association-Errors-Caused-By-Custom-Master-Pages" class="Link"&gt;here&lt;/a&gt;.) Then I learned that I was too quick to glaze over the fact that it was a web-scoped feature; the WFs were not available on any sub sites. Then there&amp;#39;s the fact that updates didn&amp;#39;t really work as desired: upon the second deployment, it was reported that one environment, out of the box site columns disappeared, and in another a content type refused to redeploy. &lt;/p&gt;
&lt;p class="Text"&gt;I think these assets didn&amp;#39;t uninstall during a retraction because they were in use, and the VS WSP deployment failed upon redeployment because an object with the same Id already existed. This is something I call &amp;quot;deployment limbo&amp;quot; when uninstallation fails, causing reinstallation to fail, leaving you with a broken component that you can&amp;#39;t remove or update. The fix is to blow away the site collection, turn off VS feature auto activation, fix your logic, and redeploy manually via PowerShell. &lt;/p&gt;
&lt;p class="Text"&gt;So the ten minutes that became one hour quickly bloated into two days, and I still couldn&amp;#39;t get InfoPath to deploy (read the above links for the back story on that issue). I consulted the aforementioned articles m WF designer gave me, but they all had the same story: import, click next a few times, and you&amp;#39;ve got it. I&amp;#39;m not sure what&amp;#39;s special about our WFs in general or the SPD export process and the VS import process specifically, but somewhere along the way, I ran into many difficulties that apparently no one&amp;#39;s seen before. &lt;/p&gt;
&lt;p class="Text"&gt;So why not just bail at this point? Because after getting my client excited about having the WF logic in VS, they quickly stipulated that they didn&amp;#39;t want to support SPD at all, since they didn&amp;#39;t have the in-house expertise for that tool. So our approach was to have them built in SPD, exported to VS, and then deployment and updated from there. Being in TFS, all code was in one &amp;quot;collaborative&amp;quot; place, and all deployments were automated and repeatable. If the WFs were outside of TFS, then they would have had to maintain the website using two different tools, one of which (SPD) required the manual touching of production. &lt;/p&gt;
&lt;p class="Text"&gt;Another thing to note is that even if everything &lt;span class="Italic"&gt;worked&lt;/span&gt; via VS, I don&amp;#39;t think that, in hind sight, it would have been a &lt;span class="Italic"&gt;feasible&lt;/span&gt; tool to update the WFs. The XOML file designer, once imported into VS, is &lt;span class="Bold"&gt;MONSTEROUS&lt;/span&gt;. A simple SPD WF generates many hundreds of activities, including several depths of nested container elements. If I didn&amp;#39;t have 8GB RAM on my machine, I&amp;#39;m not sure if it would have been able to handle VS&amp;#39; WF designer while running SharePoint, SQL, and everything else you&amp;#39;d find on a development machine. Even if SharePoint WF is already in your wheel house, it&amp;#39;s still probably easier to tweak these things in SPD manually than shuffle through this monstrosity of a designer. &lt;/p&gt;
&lt;p class="Text"&gt;Plus, of course, I hate reneging on above-and-beyond, gold-plated features. If I mention it, I&amp;#39;ll build it. So I decided that since I was already two days overinvested in this approach, I might as well exhaust my ideas before bailing. So I went through the import process again, redeployed, and strangely enough, saw things working! What happened? Well, I recalled that the wizard &lt;span class="Italic"&gt;seamed&lt;/span&gt; a bit different, and the project structure &lt;span class="Italic"&gt;seemed&lt;/span&gt; a bit different too. Turns out, I used the &amp;quot;Import SharePoint Solution Package&amp;quot; by accident! &lt;/p&gt;
&lt;p class="Text"&gt;Although this approach was still flawed (provisioning web-scoped features, occasionally running into an error that the file paths were too long, updates not taking, and a few other small things) it provided the repeatable TFS development experience that our client was assured. However, what brought this approach to its knees wasn&amp;#39;t the deployment itself, but rather the apparent bugginess of the WFs. &lt;/p&gt;
&lt;p class="Text"&gt;When created manually in the WF designer&amp;#39;s SharePoint environment, (which was a VM) everything worked. However, when it was put into VS and deployed to our development environment, we&amp;#39;d experience sporadic issues. And what&amp;#39;s super weird is the WFs would fail with different errors on different servers. These include Emails not being sent, tasks not being created, InfoPath forms not being deployed, WFs themselves not being visible on the association page for a list, and others. &lt;/p&gt;
&lt;p class="Text"&gt;Whereas any developer who uttered the dreaded phrase &amp;quot;but it worked on my machine&amp;quot; would be chastised for not writing robust enough code, the same symptom here could be caused by the deployment, by SharePoint, by Windows Workflow Foundation, or any of the other technologies playing a role here. So my claims of &amp;quot;bug in workflow&amp;quot; were countered with &amp;quot;bug in deployment.&amp;quot; &lt;/p&gt;
&lt;p class="Text"&gt;But instead of allowing the team mojo to be muddled with politics and finger pointing, we decided on another approach: call Microsoft. We were looking for three things from them: first, that the process of importing SPD WFs into VS was the &lt;span class="Italic"&gt;recommend&lt;/span&gt; approach; second, that creating WFs in SPD, exporting to WSPs, and deploying those was a &lt;span class="Italic"&gt;supported&lt;/span&gt; approach; and third how to fix the integration issue we were having. &lt;/p&gt;
&lt;p class="Text"&gt;To make a long story anticlimactic, we did get the validation we were looking for with regard to the first two issues. I was told that SPD was a home run for &amp;quot;simple&amp;quot; WFs, although &amp;quot;simple&amp;quot; is indeed a subjective adjective. Is a WF that performs twenty simple tasks itself therefore simple? In an case, when things get complicated, it&amp;#39;s time to turn to VS. And not just for the added goodies of WSP deployments and TFS integration; it&amp;#39;s simple a more robust tool. Even though SPD 2010 is way more stable than 2007, (in my experience) I still find myself having to close out and reopen my site at least twice an hour. The main reason those &amp;quot;import&amp;quot; VS project templates even exist is to promote VS as the tool for complex WFs, even if they were created in SPD. &lt;/p&gt;
&lt;p class="Text"&gt;So thanks Microsoft, at least our heads (and certainly our hearts) were in the right place. But now what about the third question: getting this thing working? After several more phone calls and Emails about the proper process for this integration, and spending a lot of time testing, tweaking, and expanding upon it with my own improvements, I&amp;#39;m able to present Part 2 of this post: the solution. Like I said: it&amp;#39;s not perfect. And like I haven&amp;#39;t said: it&amp;#39;s approximately 80 steps long. But regardless, in Part 2, I&amp;#39;ll discuss in more detail the technical issues we encountered, and the step-by-step that almost addresses them. &lt;/p&gt;
&lt;p class="Text"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="SectionHeader"&gt;The Conclusion&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="Text"&gt;We don&amp;#39;t need to review the procedure to discuss the outcome. Basically, my attitude is that if it&amp;#39;s not one hundred percent correct, then it&amp;#39;s wrong. Even if you&amp;#39;re left with a happy client, it&amp;#39;s still not right. Unfortunately, I have to voice a vote of no confidence in SPD WFs. If you need workflow, either build it in VS from scratch, buy it from &lt;a target="_blank" href="http://www.nintex.com/" class="Link"&gt;Nintex&lt;/a&gt; or &lt;a target="_blank" href="http://k2.com" class="Link"&gt;K2&lt;/a&gt;, or design it as a timer job, feature receiver, or something else. The VS import tools simply can&amp;#39;t handle complex WFs, regardless of what &amp;quot;complex&amp;quot; means. &lt;/p&gt;
&lt;p class="Text"&gt;So if you&amp;#39;re building &amp;quot;simple&amp;quot; WFs, then perhaps VS isn&amp;#39;t even part of your project, or your world; in any case, considering all of the best practices it requires you to ignore, building your simple WFs in SPD manually and rolling updates on each environment separately might very well be the deployment mechanism that makes the most sense. And as far as assumptions go, you have to trust your tools in the first place, and learn from the experiences in which they fail you in the second place.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2934" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+Designer+2010/default.aspx">SharePoint Designer 2010</category></item><item><title>Cache Busting With The SharePoint CssRegistration Control</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/24/cache-busting-with-the-sharepoint-cssregistration-control.aspx</link><pubDate>Fri, 24 Feb 2012 23:53:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2933</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="Text"&gt;During the development cycle of my latest SharePoint project, we kept getting the same bug reported by the client: a lot of the branding updates weren&amp;#39;t visible after refreshing their browsers upon a deployment. The obvious reaction is to have them do a Control + F5 (IE only in this particular client) first, and then panic if that doesn&amp;#39;t work. Well, it always worked, so we never panicked, and like any other bug that isn&amp;#39;t immediately apparent to end users, this issue slowly became a lower and lower priority. &lt;/p&gt;
&lt;p class="Text"&gt;Then as we were going live, the client suddenly realized that this might be a larger problem in the field, as we did a lot of UAT with some stakeholders and didn&amp;#39;t want them to see old CSS, JavaScript, etc. And running into people&amp;#39;s offices to hit Control + F5 for them was not an option either. So the solution we came up with was to do some cache busting. In a standard SharePoint site, peeking behind the scenes via a view source or developer toolbar, you can see &amp;quot;?rev=[a bunch of random characters]&amp;quot; appended to the URLs of static assets. &lt;/p&gt;
&lt;p class="Text"&gt;So we created a feature that deployed an &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx" class="Link"&gt;SPWebConfigModification&lt;/a&gt; to our web app that stored a revision number (set programmatically to the short date of the latest build). Next we rolled a static property that exposed this as a querystring parameter ready to be tacked onto the end of URLs either via code behind or &amp;lt;% %&amp;gt; tags. Finally we went through our code, and updated all &amp;quot;loose&amp;quot; script tags and CSS includes to consume this (we have a lot of dynamic theming going on). However, we omitted this step for any existing &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.scriptlink.aspx" class="Link"&gt;ScriptLink&lt;/a&gt; or &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.cssregistration.aspx" class="Link"&gt;CssRegistration&lt;/a&gt; tags, since they do that automatically. &lt;/p&gt;
&lt;p class="Text"&gt;Or so I thought. &lt;/p&gt;
&lt;p class="Text"&gt;Actually, ScriptLink does the &amp;quot;rev&amp;quot; thing just fine; tacking on a querystring value that &amp;quot;busts&amp;quot; the browser cache by making it technically a new URL. I just assumed that CssRegistration provided this kindness for us, but not so much. Looking back over all the SharePoint projects I&amp;#39;ve done, I feel like I now owe some old clients a few Control + F5&amp;#39;s. No big deal though; just append our cache busting logic to the &amp;quot;Name&amp;quot; property of our CSS controls (which stores the URL to the CSS) in code, redeploy, and be done. &lt;/p&gt;
&lt;p class="Text"&gt;Or, again, so I thought. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;EDIT&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;After discussing this with &lt;a target="_blank" href="mailto:jrupp@rightpoint.com" class="Link"&gt;Jonathan Rupp&lt;/a&gt; (great developer) and &lt;a target="_blank" href="mailto:jnoellsch@rightpoint.com" class="Link"&gt;Jim Noellsch&lt;/a&gt; (great hair) I learned that CssRegistration does indeed have native support for cache busting. Instead of a normal relative URL to a CSS file in the 14 mapped layouts folder, (presumably _layouts/[name of feature]/styles/[name of file].css) you need to set the &amp;quot;Name&amp;quot; property to &amp;quot;../../[name of feature]/styles/[name of file].css&amp;quot; instead. This causes CssRegistration to render a link tag with a value of &amp;quot;/_layouts/1033/styles/../../[name of feature]/styles/[name of file].css?rev=[some hash of the current content of the file]&amp;quot; for the href. &lt;/p&gt;
&lt;p class="Text"&gt;Even though standard WSP deployment doesn&amp;#39;t put anything in the 1033/styles folder in 14, the &amp;quot;../../&amp;quot; parent directory fixes it, while preserving the apparent format the CssRegistration control needs to do its cache busting. When the contents of the file changes, the rev querystring value hash changes, and the cache is busted. Otherwise, the &amp;quot;old&amp;quot; CSS file is loaded by your browser. But keep reading for a different, code-based approach, which I usually prefer to markup anyway. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Rant"&gt;&amp;lt;/EDIT&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;We had these URLs set in the HTML for the &amp;quot;Name&amp;quot; property of our CssRegistrations, so in the code behind of the corresponding pages, we programmatically appended our query string to this value. When we tested, we apparently didn&amp;#39;t have any new noticeable CSS changes, so we didn&amp;#39;t notice that this wasn&amp;#39;t working. After the bug was reported that new CSS still wasn&amp;#39;t being manifested, I did a view source, and sure enough, CssRegistration tags didn&amp;#39;t have the cache buster URL. So I figured that the hard-coded value in the HTML was winning over the code behind (set in page load) so I redeployed with no Name property in the controls, and the URL completely set in code. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Cache-Busting-With-The-SharePoint-CssRegistration-Control/css-error.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;So that didn&amp;#39;t work. It turns out the answer was to dynamically create the CssRegistration controls in the page load event, and set everything programmatically as follows: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//cache buster&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Controls&lt;span class="Operator"&gt;.&lt;/span&gt;Add&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;CssRegistration&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;After &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;corev4.css&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;EnableTheming &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;false&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;Name &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Concat&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;/_layouts/website/styles/site.css?cachebuster=&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;AppSettings&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;CacheBuster&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;And there you have it: cache busting CSS using the SharePoint CssRegistration control. This works great; end users never see old CSS. And, by programmatically setting the web.config value in our feature, we get a nice correlation between builds and cache busting URLs. I &lt;span class="Bold"&gt;swore&lt;/span&gt; that the CssRegistration control did this out of the box, so it&amp;#39;s possible that I&amp;#39;m still missing something and re-inventing the wheel. However, this simple architecture can be applied to any asset included in your site, so there&amp;#39;s still plenty of value. &lt;/p&gt;
&lt;p class="Text"&gt;Have fun busting some cache! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2933" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/CSS/default.aspx">CSS</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Cache/default.aspx">Cache</category></item><item><title>Assign a Custom Content Type to Task Process in a SharePoint Designer 2010 workflow</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/21/assign-a-custom-content-type-to-task-process-in-a-sharepoint-designer-2010-workflow.aspx</link><pubDate>Tue, 21 Feb 2012 20:17:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2932</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>2</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SharePoint Designer 2010 has some awesome new features!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Two of my favorites are (1) the ability to copy and modify an out of the box workflow and (2) the custom task processes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&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;What I don&amp;rsquo;t love is the way SharePoint assigns names with spacing to these tasks that have &amp;ldquo;_X0028_&amp;rdquo; and &amp;ldquo;_X0029_copy&amp;rdquo; in it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It can cause problems with importing the workflow into Visual Studio, referring to the content type in custom web parts, and as an architect, I just don&amp;rsquo;t like the way it looks too messy.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Plus, if I want to make changes to the task list or roll the task up in a web part, I don&amp;rsquo;t want to have to guess which task goes with which workflow.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;Here is an example of what SPD does when it adds a custom task action to a workflow or when you copy out of the box (OOB) workflow: &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;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/1CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/1CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&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;And this is what I want it to look like:&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;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/2CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/2CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&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;And it&amp;rsquo;s not just aesthetics; I have certain fields that I want to be able to store in the task.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I know that I can assign them in the workflow task process, but I don&amp;rsquo;t want the end user to see them so I want them hidden. &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;Here are the steps: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Create your custom content type at your parent site (or content hub).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;Important note&lt;/i&gt;&lt;/b&gt;:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you are going to be exporting your workflows to other environment (i.e. local to production) and you do not use a content type hub, I STRONGLY recommend creating these content types and any site columns associated with the workflow with code.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This will ensure that your GUID&amp;rsquo;s (custom ID&amp;rsquo;s) are the same across all environments.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;-&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;I worked with a developer to create my site columns and content types for me since we are moving workflows across environments&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;-&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If you do not have access to a developer, then you will need to replicate these steps in each environment to make sure the ID&amp;rsquo;s are correct for each.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Optional Step:&lt;/b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you want the &amp;ldquo;Claim Task&amp;rdquo;, Custom Outcomes functionality, and the ability to Reassign or Request Changes that comes with the out of the box workflow tasks for Enterprise SharePoint, you will need to change the display and edit forms.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If not, you can skip this step. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Example of InfoPath display form vs .aspx display form&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/3CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/3CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If you create the content type in Code, make sure the display and edit form properties include &amp;ldquo;_layouts/WrkTaskIP.aspx&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;If you create the content type by hand (or did not assign a display/edit form specification in the code), open the content type in Designer and change the display and edit form to &amp;ldquo;_layouts/WrkTaskIP.aspx&amp;rdquo; under &amp;ldquo;Forms&amp;rdquo; on the right side of the screen.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/4CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/4CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;3.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Create your workflow&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Either Copy and Modify an out of the box workflow&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;OR Create a new workflow and add a custom task process &amp;ndash; Start Approval Process, Start Custom Task Process or Start Feedback Process &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;-&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;(I have not tested this with the other task actions)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/5CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/5CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;4.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Save the workflow, but &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;do not publish it&lt;/i&gt;&lt;/b&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;NOTE: If you have published it and have the odd-named content type, just delete that task form.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We will generate a new task form at the end. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Arial;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;-&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This odd-named content type will exist in your Content types library until you delete it from there&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;5.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Open the custom content type you created in Designer and Copy the ID&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/6CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/6CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;6.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Go to All Files, Workflows, &amp;lt;WorkflowName&amp;gt; folder &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Note: If the &amp;ldquo;All Files&amp;rdquo; folder looks empty, click on another folder, such as subsites, and select &amp;ldquo;All Files&amp;rdquo; again.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/7CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/7CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;7.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Open the file that ends in&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;ldquo;.wfconfig.xml&amp;rdquo; and replace the following items:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Line 2: TaskContentType=&amp;rdquo;&amp;lt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;ID&lt;/i&gt;&lt;/b&gt;&amp;gt;&amp;rdquo; with your custom content type&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Line 4: ContentType Name=&amp;rdquo;&amp;lt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;Name&lt;/i&gt;&lt;/b&gt;&amp;gt;&amp;rdquo; with your custom content type name&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Line 4: ContentTypeID&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;= &amp;ldquo;&amp;lt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;ID&lt;/i&gt;&lt;/b&gt;&amp;gt;&amp;rdquo; with your content type ID you copied from previous step&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Line 4: WorkflowForm= &amp;ldquo;Workflows/&amp;lt;workflowname&amp;gt;/&amp;lt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;contenttypename&lt;/i&gt;&lt;/b&gt;.xsn&amp;gt;&amp;rdquo; with your content type name (just the name of the form, leave the folder name as is&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/8CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/8CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Here is what it should look like (my content type is &amp;ldquo;IntakeReviewTask&amp;rdquo;)&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;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/9CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/9CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&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;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/9CCT.gif"&gt;&lt;/a&gt;&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;*Line 2 not pictured&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;8.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Save the the xml file and go back to your workflow folder&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;9.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Hover over the file that ends in &amp;ldquo;.xoml&amp;rdquo; file and select &amp;ldquo;Open with&amp;rdquo;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;-&amp;gt; &amp;ldquo;2. SharePoint Designer (Open as XML)&amp;rdquo;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/10CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/10CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;10.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Click (Ctrl+F) for Find and enter &amp;ldquo;ContentType&amp;rdquo; in the &amp;ldquo;Find what&amp;rdquo; box&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/11CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/11CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;11.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Replace the ContentTypeID=&amp;rdquo;ID&amp;rdquo; with your custom content ID&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;12.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;CLOSE SharePoint Designer and re-open it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Refreshing has not worked for me.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;13.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Open Designer, open your workflow by clicking on &amp;ldquo;Workflows&amp;rdquo; and Save your file.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Click &amp;ldquo;No&amp;rdquo; if you receive any messages to replace your file.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/12CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/12CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;14.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Publish your workflow.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The right side of the picture below shows my workflow after completing this process.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/13CCT.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/13CCT.gif" border="0" alt="" /&gt;&lt;/a&gt;&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;And Voila, no more messy names and you can use your custom content type for whatever you may need, displayed in a CQWP, for example.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&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://www.rightpoint.com/community/aggbug.aspx?PostID=2932" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+Designer+2010/default.aspx">SharePoint Designer 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Content+Types/default.aspx">Content Types</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Tasks/default.aspx">Tasks</category></item><item><title>The "No Code" way to Customize FAST Search - Part 1 - Search Results</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/21/the-quot-no-code-quot-solution-way-to-customizing-fast-search-part-1-results-page.aspx</link><pubDate>Tue, 21 Feb 2012 15:17:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2931</guid><dc:creator>Kathryn Ciaralli</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;SharePoint Search can be a great way to elevate the findability of&amp;nbsp;content to a whole new level; even better, it&amp;#39;s easily customizable.&amp;nbsp; I used to think about FAST Search customization in the sense that they can only be achieved via code or PowerShell, and to some degree, that&amp;#39;s correct.&amp;nbsp; However, there&amp;#39;s a lot that can be implemented to enhance the search experience: results,&amp;nbsp;best bets, user targeting, and even document/site promotion and demotion...without writing a drop of code.&amp;nbsp; This is the first of a series, today we will be covering customizing the search results set.&lt;/p&gt;
&lt;p&gt;First - a good resources&amp;nbsp;on &lt;a target="_blank" href="http://www.sharepoint-videos.com/sp10-customize-search-results-using-xslt/" title="Customize Search Results in XSLT"&gt;how to customize (and troubleshoot) SharePoint search using XSLT&lt;/a&gt;.&amp;nbsp; A lot of the results customization is very similar to traditional search, with a few exceptions...as such, we won&amp;#39;t cover XSLT updates here, short of a few tips.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s take a practical scenario - perhaps we want to display different things based on the content types within the FAST Search results - how would we do that?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the managed property&lt;/li&gt;
&lt;li&gt;Update our search results&amp;nbsp;web part to consume the column and update&amp;nbsp;the XSLT to display the results&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Step 1 - Create the Managed Property&lt;br /&gt;&lt;/strong&gt;Creating a managed property in FAST is a little different than&amp;nbsp;in traditional SharePoint search, and it can be a bit confusing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Log into Central Admin &lt;/li&gt;
&lt;li&gt;Navigate to the FAST Query Service&lt;/li&gt;
&lt;li&gt;In the left nav, select &amp;quot;FAST Search Administration&amp;quot; (yes, FAST Search Administration...don&amp;#39;t go straight to the Metadata Properties area of the FAST Query Service)&lt;/li&gt;
&lt;li&gt;Under Property Management, select &amp;quot;Managed Properties&amp;quot;&lt;/li&gt;
&lt;li&gt;On the Managed Properties page, select &amp;quot;Add Managed Property&amp;quot;&lt;/li&gt;
&lt;li&gt;In this scenario - we want to add a property called &amp;quot;ContentTypeQuery&amp;quot;; on the add property page: 
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;TIP&lt;/strong&gt; - there is already a Content Type managed property, however, you are not able to use this in your search results, so you must create a new one&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Give the property a name, such as ContentTypeQuery&lt;/li&gt;
&lt;li&gt;Set the type to &amp;quot;Text&amp;quot;&lt;/li&gt;
&lt;li&gt;Add mapping and point to &amp;quot;ows_ContentType&amp;quot; &lt;/li&gt;
&lt;li&gt;Set additional properties where applicable (in our case, we just want to display the field in our search results, there is no need to activate the other properties): 
&lt;ul&gt;
&lt;li&gt;Sort - if this is a parameter that the search results can be sorted by&lt;/li&gt;
&lt;li&gt;Query - if you are performing property queries from Advanced Search (or other scenarios)&lt;/li&gt;
&lt;li&gt;Refinement - if you want this to display in the refinement panel&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Click OK&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/FAST_5F00_Managed_5F00_Property_5F00_ContentTypeQuery.JPG"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/300x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/FAST_5F00_Managed_5F00_Property_5F00_ContentTypeQuery.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Conduct a full crawl&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2 - Update our search results&amp;nbsp;web part to consume the column and update&amp;nbsp;the XSLT to display the results&lt;br /&gt;&lt;/strong&gt;Now that our managed property has been created, we need to inform the search results web part that it exists, and pass it on to the search results.&amp;nbsp; Generally speaking, I prefer to use a customized federated location to house search result columns and xslt as it&amp;#39;s a better way to disseminate these settings, especially if there are multiple search result pages, or multiple site collections &amp;nbsp;within a farm.&amp;nbsp; For the purpose of this example, I will not be using a federated location, but rather editing the search results web part directly (which, is a great way to test!).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navigate to your FAST search results page&lt;/li&gt;
&lt;li&gt;Edit the page, then edit the &amp;quot;Search Core Results&amp;quot; web part&lt;/li&gt;
&lt;li&gt;Expand the &amp;quot;Display Properties&amp;quot; section 
&lt;ul&gt;
&lt;li&gt;Uncheck the &amp;quot;Use Location Visualization&amp;quot; box (which allows overrides of the federated location)&lt;/li&gt;
&lt;li&gt;Add the column to Fetched Properties 
&lt;ul&gt;
&lt;li&gt;Click into the &amp;quot;Fetched Properties&amp;quot; text box and copy all contents to your clipboard, paste it into Notepad (for easier editing) 
&lt;ul&gt;
&lt;li&gt;At the end of the XML, before the &amp;lt;/Columns&amp;gt; tag, add: &amp;lt;Column Name=&amp;quot;ContentTypeQuery&amp;quot;/&amp;gt;&amp;nbsp; 
&lt;ul&gt;
&lt;li&gt;Copy from Notepad, and paste it back into the Fetched Properties text box&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/FAST_5F00_Results_5F00_Columns.JPG"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/300x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/FAST_5F00_Results_5F00_Columns.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Customize the XSLT Search results 
&lt;ul&gt;
&lt;li&gt;Click on the XSL Editor&lt;/li&gt;
&lt;li&gt;Copy/Paste into Notepad or SharePoint Designer - somewhere to make the formatting easier&lt;/li&gt;
&lt;li&gt;Make the XSLT Updates as needed (there&amp;#39;s a whole slew of ways to do this) 
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;TIP&lt;/strong&gt; - the reference to columns in the XSLT is case sensitive...but not in the way one would think.&amp;nbsp; Any references to columns within the Search Results XSLT must be all lowercase, regardless of the way the property is configured.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;TIP&lt;/strong&gt; - you do not need to add the property to the top of the XSL file in order to use it within&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;In my case, I was performing some if logic around my content types, which ended up looking like this in the XSLT&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/FAST_5F00_Resultes_5F00_XSLT.JPG"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/300x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/FAST_5F00_Resultes_5F00_XSLT.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Copy/Paste back into the XSL editor of the web part&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Save and Publish the page&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With the above information, especially the tips, you can add almost anything to your search results, change up the view, and styling, etc.&amp;nbsp; Some common elements to update:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ratings&lt;/li&gt;
&lt;li&gt;Description or other pertinent metadata&lt;/li&gt;
&lt;li&gt;Cusotmized xslt in the event we see a task or&amp;nbsp;calendar item (based on content type)&lt;/li&gt;
&lt;li&gt;Remove fields that are no longer needed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy (no code)&amp;nbsp;customizing!&amp;nbsp; In the next series we will review additional no code customizations around keywords and best bets for FAST.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2931" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/search/default.aspx">search</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/FAST/default.aspx">FAST</category></item><item><title>Chicago SharePoint Business Strategies User Group Presentation: Intro to CQWP</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/20/chicago-sharepoint-business-strategies-user-group-presentation-intro-to-cqwp.aspx</link><pubDate>Mon, 20 Feb 2012 17:14:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2930</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;I was honored to give a presentation at the February 2012 &lt;/span&gt;&lt;a href="http://www.meetup.com/Sharepoint/"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;Chicago Microsoft SharePoint Business Strategies User Group&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt; meeting.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It was a great group and I had a lot of fun talking about my favorite subject, SharePoint, and my favorite web part, the 2010 Content Query Web Part (CQWP).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;A few attendees asked for the slides so I thought I&amp;rsquo;d post them here for everyone.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The notes view will show you my some of my comments, and the examples should be self-explanatory.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If not, please feel free to let me know at &lt;/span&gt;&lt;a href="mailto:kfrehe@rightpoint.com"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;kfrehe@rightpoint.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;To summarize, the CQWP is a powerful tool that SharePoint provides, out of the box, to give you access to information across your site collection.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The CQWP collects information and displays it for you in one web part on a page, where you can then group, filter and sort the information in a meaningful way.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;This presentation: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Gives a high level overview of what the CQWP is, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Shows some examples of how we have used the CQWP internally and on some of our projects, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Includes print screens with descriptions of adding a web part to a page,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Provides requirements for having access to create and use CQWP&amp;rsquo;s,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Offers some tips and tricks for using the CQWP.&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;a target="_blank" href="https://skydrive.live.com/redir.aspx?cid=9933e5e5dceba3f8&amp;amp;resid=9933E5E5DCEBA3F8!105&amp;amp;parid=root" title="Link to Presentation"&gt;Link to Presentation&lt;/a&gt;&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;Enjoy!&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;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;
&lt;p class="MsoNormal"&gt;To join our next &lt;a href="http://www.meetup.com/Sharepoint/"&gt;&lt;span style="color:#0000ff;"&gt;Chicago Microsoft SharePoint Business Strategies User Group&lt;/span&gt;&lt;/a&gt; meeting, held on the 2&lt;sup&gt;nd&lt;/sup&gt; Tuesday of the month, please sign up at &lt;a href="http://www.meetup.com/sharepoint"&gt;&lt;span style="color:#0000ff;"&gt;http://www.meetup.com/sharepoint&lt;/span&gt;&lt;/a&gt; .&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The topics change every month and are listed one month prior to the meeting date.&lt;/p&gt;
&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;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2930" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Content+Management/default.aspx">Content Management</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/CQWP/default.aspx">CQWP</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Presentations/default.aspx">Presentations</category></item><item><title>Manage Content Owners with the Content Query Web Part (CQWP)</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/15/manage-content-owners-with-the-content-query-web-part-cqwp.aspx</link><pubDate>Wed, 15 Feb 2012 17:11:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2929</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;The CQWP is my absolute favorite out of the box web part.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There are so many things that you can do with it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There are lots of great blogs out there describing how you can present information to your end user with the CQWP, but did you know that you can also use it to determine how your content owners are &lt;i style="mso-bidi-font-style:normal;"&gt;using&lt;/i&gt; their sites?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Are they entering the type of data that you expected them to when you created your form?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Do content owners understand the importance of certain processes, such as clicking on &amp;ldquo;Publish&amp;rdquo; to make a page visible to readers?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Did your users really &amp;ldquo;get&amp;rdquo; the training that you gave them?&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;The current project I am working on is getting ready for a huge launch.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It is a publishing site with minor and major versioning turned on for Pages and Document Libraries.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It is one parent site with 100+ sub-sites, each containing hundreds of pages and documents.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We created a custom web part for content owners to link to other pages in the site collection.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This web part is really cool in that it shows the name of the page or document, the date it was reviewed, user ratings, a brief summary of the content and a link to the page or document.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We want to give the reader some useful information about the link before they decide to click on it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;With so much content in the site, we are relying on content owners to enter information about the content in a field that will be displayed in FAST Search and will also be displayed in the custom web part to link to related content.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The web part respects security, meaning a user must have access to the content in order to view the description in the web part.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;With a big launch coming up, I wanted to do a content check to see how we are doing.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I don&amp;rsquo;t have time to go randomly clicking around on all these sites, so I created a couple of CQWP&amp;rsquo;s in order to see how the site is being populated.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;They also ended up helping our development team complete a final review of our work.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;If you&amp;rsquo;re new the CQWP, it is a web part that you can add to a web part page that can ask all of the sites in your site collection to give you a certain kind of information.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;For example, if this wall of candy dispensers is your site collection, with each dispenser being one site:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="padding-left:60px;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/MMs.jpg"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/200x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/MMs.jpg" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&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;Then this is the CQWP:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="padding-left:60px;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/JellyBeanMachine.jpg"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/200x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/JellyBeanMachine.jpg" border="0" alt="" /&gt;&lt;/a&gt;&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;It has done all the work for you and grabbed multiple types of candies for you to consume quickly.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Yes, I could go to each tube and grab a little from each&amp;hellip;but that just takes way too long and I want my candy NOW &lt;/span&gt;&lt;span style="font-family:Wingdings;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;With the CQWP you can filter your candy to get the specific ones that you need (if you don&amp;rsquo;t want the brown ones you don&amp;rsquo;t have to have them). &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;The CQWP is out of the box when the publishing feature is turned on, and it&amp;rsquo;s pretty quick to configure, especially with practice. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Here are some examples of how I was able to spend a few minutes looking at how the users are using the site and avoid deployment issues.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;All of these queries were done in a browser, with no .xslt edits.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Each took no more than 15 minutes to configure, check, adjust, check, etc. to show exactly what I want on the page.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Check on published versions&lt;/b&gt; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Created 2 queries, one for all &amp;ldquo;Pages&amp;rdquo; libraries and one for all &amp;ldquo;Document Libraries&amp;rdquo; across the site collection, filtered by version is less than 1.0 and displays the last person that modified the content. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&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 Avoided&lt;/b&gt;:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Users not being able to access pages with page not found error, access denied errors and empty custom web parts&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;In order for a site reader to see a page or document the user must publish a page, or check in a major version.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This makes the version 1.0 (or 2.0, 3.0, etc. as you publish major versions&amp;hellip;drafts always have a decimal).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;A document that does not have a published version will have a version less than 1.0, which is why I filtered for by version.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;There were over 400 pages and documents that did not have a published version just two weeks before go live&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;View user-completed fields&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Created 2 queries, one for all &amp;ldquo;Pages&amp;rdquo; libraries and one for all &amp;ldquo;Document Libraries&amp;rdquo; across the site collection, which display the page title and our custom summary field and the content owner.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&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 Avoided&lt;/b&gt;:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Poor search results, poor cross-site link descriptions&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;There were over 300 items with &amp;ldquo;-&amp;ldquo;, an incomplete description or a duplicate description in the summary field that is displayed in our custom web part and search results.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Validation or unique values were not viable options in this case.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Discover users storing documents in wrong locations&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Created one query for all sites, grouped by Page Layout, which showed users were putting Word and .pdf documents in their Pages Libraries (since they had no page layout)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&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 avoided:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;Documents stored in wrong locations would not display correctly to the end user&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;We created Pages Libraries for publishing pages and Document Libraries for all stand-alone documents.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;All documents are presented with a custom page that displays certain properties, taxonomy, user comments and ratings.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;The overall outcome of these CQWP&amp;rsquo;s is that we were able to target the users that needed additional training tips in order to make sure their content is not only visible, but findable for end users on launch day.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Additionally, CQWP&amp;rsquo;s helped our development team to create a better product:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Monitor page layout usage and react &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;o&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This was a unique project where editors were adding content while we were developing the site.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;By creating CQWP&amp;rsquo;s that grouped all Pages by Page Layout we were able to:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;View how users are actually using the page layouts we designed with content and adjust as needed&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Allow our front end developer to make changes to design based on usage&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;sect;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Allow our back-end developers easy access to test the pages and how they worked with our custom controls and actual content&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;If you&amp;rsquo;re not familiar with the content query web part, I strongly recommend spending some time getting to know this very powerful web part.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It has been the fastest way for me to get feedback on what&amp;rsquo;s going on in our sites, so that we can address training issues, user adoption and design before they become a problem.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2929" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Content+Management/default.aspx">Content Management</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/CQWP/default.aspx">CQWP</category></item><item><title>PowerShell Automatic Publishing Page Builder for SharePoint 2010</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/09/powershell-automatic-publishing-page-builder-for-sharepoint-2010.aspx</link><pubDate>Thu, 09 Feb 2012 14:00:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2928</guid><dc:creator>John Wefler</dc:creator><slash:comments>0</slash:comments><description> I’ve recently created a handy PowerShell script to create publishing pages for my SharePoint sites.&amp;#160; During every project, there comes the time when having a decent sized set of randomized page data will help for various lifecycle phases.&amp;#160; I created the script when my team realized a load test of pages was required.&amp;#160; We weren’t talking about a couple pages, either.&amp;#160; This load test needed to handle up to 1,000 pages in order to collect the data we needed to make educated decisions on particular functionality.&amp;#160;   &lt;p&gt;Creating 1,000 pages by hand is beyond tedious.&amp;#160; Enough said…&lt;/p&gt;  &lt;p&gt;As I thought about my page creator, it had to meet several criteria:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Use script vs. code.&lt;/strong&gt;&amp;#160; Script can be “live” edited, pushed to various systems without complicated governance,&amp;#160; and doesn’t need compiling.&amp;#160; Since PowerShell can utilize almost any .NET object, it is a clear winner.&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Reusable on other projects.&lt;/strong&gt;&amp;#160; Having an auto page builder script in your toolbox can be handy for many types of projects.&amp;#160; The script I created should be able to be used on any SharePoint 2010 deployment without the need for extensive editing. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Support a decent level of randomness.&amp;#160;&amp;#160; &lt;/strong&gt;It would be pretty easy to create pages, and copy them using SharePoint Designer.&amp;#160; You’d end up with lots of files with “Copy” in the name and title.&amp;#160;&amp;#160; The auto page builder creates random names and titles based on the system time variable.&amp;#160; It also inserts random field data when available.&amp;#160; See the “Nuts and Bolts” below for more details. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Support many field types.&lt;/strong&gt;&amp;#160;&amp;#160; Most of the pain in creating any tool that inserts SharePoint data is getting the data formatting right for different fields.&amp;#160; The auto page builder so far handles Text, Note, HTML, Taxonomy, DateTime, User, URL, Summary Links.&amp;#160; Future releases should be able to handle Lookup and Choice fields. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Easy to use.&lt;/strong&gt;&amp;#160;&amp;#160; With script comments, hopefully the auto page builder should be easy to use for all types of administrative users. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Nuts and Bolts&lt;/h3&gt;  &lt;p&gt;The automatic page builder was created on the simplicity principle.&amp;#160;&amp;#160; You feed it a publishing web and a page layout, and the script will try its best to do the rest for you.&amp;#160; From the page layout the script determines the content type.&amp;#160; The script iterates through each column (or field) in the defined content type and attempts to add data to that column on a new page based on its column type.&amp;#160; In many cases this data is random.&amp;#160; &lt;/p&gt;  &lt;h4&gt;Managed Metadata&lt;/h4&gt;  &lt;p&gt;The auto page builder supports single and multi-select taxonomy fields types.&amp;#160; It will select an random value for these fields.&amp;#160; I left some script lines commented out in the managed metadata field propagation function that can add every possible value to a multi-select taxonomy field, in case you want that type of data.&lt;/p&gt;  &lt;h4&gt;People and Groups&lt;/h4&gt;  &lt;p&gt;The auto page builder can find an select a single random user account from SharePoint user profile manager.&amp;#160; This code is commented out by default in favor of a single guaranteed good account:&amp;#160; &amp;quot;SharePoint\System”.&amp;#160;&amp;#160; (The auto page builder does not yet support groups assigned to a People and Groups field.)&lt;/p&gt;  &lt;h4&gt;Ratings&lt;/h4&gt;  &lt;p&gt;The auto page builder can attempt to add a random rating record for each page built.&amp;#160; This rating will come from the administrative local account running the script.&amp;#160; Warning!&amp;#160; Ratings are not immediately available and depend on the social rating synchronization timer job which runs every 60 minutes.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Notes on Script&lt;/h3&gt;  &lt;p&gt;Line 52:&amp;#160; The script really begins here.&amp;#160;&amp;#160; The first block is a function to handle data for taxonomy fields.&lt;/p&gt;  &lt;h4&gt;Variables to Set (I should have used args, but I use the PS ISE exclusively)&lt;/h4&gt;  &lt;p&gt;Line 56:&amp;#160; The “iterations” variable.&amp;#160; How many iterations, or pages do you wish to create?&lt;/p&gt;  &lt;p&gt;Line 57:&amp;#160; The “weburl” variable.&amp;#160; This will be the path to publishing web.&amp;#160; &lt;/p&gt;  &lt;p&gt;Line 58:&amp;#160; The “siteurl” variable.&amp;#160; This is the path to the root web.&lt;/p&gt;  &lt;p&gt;Line 59:&amp;#160; The “pagelayoutname” variable.&amp;#160; This is the Title of the page layout you want to use to create pages.&amp;#160;&amp;#160; From the page layout, the script determines the Content Type and therefore the subset of columns to try to fill with data.&lt;/p&gt;  &lt;h4&gt;Other Notes&lt;/h4&gt;  &lt;p&gt;Lines 14 – 20: This is a commented out piece of example code that will add each piece of available managed metadata to a field.&lt;/p&gt;  &lt;p&gt;Line 136:&amp;#160; There is a reference to “demohtml.txt” which is a text file with HTML markup to insert into an HTML field type.&amp;#160; An example of this file is pasted below.&lt;/p&gt;  &lt;p&gt;Lines 156-161:&amp;#160; This is a commented out piece of example code that will drop a random SPUser object into a “User” field.&lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:8760210e-520b-453e-96aa-6aaacfe2e332" class="wlWriterEditableSmartContent"&gt;&lt;p&gt;Download the script -&amp;gt; &lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/autopagebuilder_5F00_5C7DFE8C.zip" target="_blank"&gt;HERE&lt;/a&gt;&lt;/p&gt;&lt;/div&gt; &lt;/p&gt;  &lt;p&gt;The Script&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; GetRandomMetadata ($item, $site, $taxString)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="rem"&gt;# 1) Set a taxonomy field to the Title of a taxonomy field in the list&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    $taxField = [Microsoft.SharePoint.Taxonomy.TaxonomyField]$item.Fields[$taxString];&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="rem"&gt;# 2) From properties of the taxField determine the term store and term set from the site&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    $taxSession = new-object Microsoft.SharePoint.Taxonomy.TaxonomySession($site);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    $termStore = $taxSession.TermStores[$taxField.SspId];&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    $termSet = $termStore.GetTermSet($taxField.TermSetId);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="rem"&gt;# 3) Set a taxonomy field collection to collect values&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    $taxCollection = new-object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValueCollection($taxField);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="rem"&gt;# 4) Add all values to the collection (Commented out)&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="rem"&gt;#$termSet.GetAllTerms() | ForEach-Object {&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;span class="rem"&gt;#    $taxonomyFieldValue = new-object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue($taxField);&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="rem"&gt;#    $taxonomyFieldValue.TermGuid = $_.Id;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="rem"&gt;#    $taxonomyFieldValue.Label = $_.Name;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="rem"&gt;#    $taxCollection.Add($taxonomyFieldValue);&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &lt;span class="rem"&gt;#}&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    &lt;span class="rem"&gt;# 4 Alt)  Pick a random term to set.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    $allTerms = $termSet.GetAllTerms();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    &lt;span class="rem"&gt;# Gets random term in the termset collection.  (Cool factor 10!)&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    $thisTerm = $allterms | Get-Random;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;    $taxonomyFieldValue = new-object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue($taxField);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    $taxonomyFieldValue.TermGuid = $thisTerm.Id;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;    $taxonomyFieldValue.Label = $thisTerm.Name;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    $taxCollection.Add($taxonomyFieldValue);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;    $thisName = $thisTerm.Name;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;    &lt;span class="rem"&gt;#Write-Host &amp;quot;Metadata for field &amp;#39;$taxString&amp;#39; set to $thisName ...&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;    &lt;span class="rem"&gt;# 5) Set the value of the field in SharePoint&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;    &lt;span class="rem"&gt;# Note:  this handles two types of MMD fields, the single and the multiselect&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($taxField.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;TaxonomyFieldType&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        &lt;span class="rem"&gt;#Write-Host &amp;quot;Taxonomy Singleton Type Found!&amp;quot;;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;        $taxField.SetFieldValue($item, $taxonomyFieldValue);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;        $taxField.SetFieldValue($item, $taxCollection);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;&lt;span class="rem"&gt;# END *Get Random Metadata* #&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;&lt;span class="rem"&gt;# MAIN ##################################################&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;&lt;span class="rem"&gt;# Set VARS&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;$iterations = 1&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;$weburl = “http://wef.&lt;span class="kwrd"&gt;local&lt;/span&gt;/pubtest2/” &lt;span class="rem"&gt;#ensure trailing &amp;quot;/&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;$siteurl = “http://wef.&lt;span class="kwrd"&gt;local&lt;/span&gt;/”&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;$pagelayoutname = &lt;span class="str"&gt;&amp;quot;Resource&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;&lt;span class="rem"&gt;# Constants: don&amp;#39;t change&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;$loremText = &lt;span class="str"&gt;&amp;quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&lt;span class="rem"&gt;#ensure sharepoint&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;Write-Host(&lt;span class="str"&gt;&amp;quot;Loading SharePoint...&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt;((Get-PSSnapin Microsoft.Sharepoint.Powershell -ErrorAction SilentlyContinue) &lt;span class="preproc"&gt;-eq&lt;/span&gt; $null)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;    &lt;span class="rem"&gt;#load snapin&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;    Add-PSSnapin Microsoft.SharePoint.Powershell;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;&lt;span class="rem"&gt;# Get publishing web&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;$SPWeb = Get-SPWeb -Identity $weburl&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;$site = New-Object Microsoft.SharePoint.SPSite($siteurl)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;$web = $site.rootweb&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;$pSite = New-Object Microsoft.SharePoint.Publishing.PublishingSite($site)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;$pWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($SPWeb)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;$serviceContext = Get-SPServiceContext $site&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;$pages = $pWeb.GetPublishingPages($pWeb)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;&lt;span class="rem"&gt;# Determine Content Type and Page Layout&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;$pl = $pSite.GetPageLayouts($false) | Where { $_.Title &lt;span class="preproc"&gt;-eq&lt;/span&gt; $pagelayoutname }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (-not($pl)) { &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Page Layout not found!&amp;quot;&lt;/span&gt; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;$plName = $pl.Name;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;Write-Host &lt;span class="str"&gt;&amp;quot;Page Layout defined as $plName&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;$contentType = $pl.AssociatedContentType&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;$i = 1&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;&lt;span class="kwrd"&gt;while&lt;/span&gt; ($i &lt;span class="preproc"&gt;-le&lt;/span&gt; $iterations) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;Write-Host &lt;span class="str"&gt;&amp;quot;Iteration $i of $iterations&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;&lt;span class="rem"&gt;#Set URL of new page to UNIX time var with concat&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;$startTime = Get-Date -Uformat %s&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;$uTime = $startTime.ToString().Replace(&lt;span class="str"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;$PageUrl = &lt;span class="str"&gt;&amp;quot;RandomPage-&amp;quot;&lt;/span&gt; + $uTime + &lt;span class="str"&gt;&amp;quot;.aspx&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;$PageUrl = $PageUrl.Replace(&lt;span class="str"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;$page = $pages.Add($PageUrl, $pl) &lt;span class="rem"&gt;#URL plus Page Layout&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;$page.Update();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;$item = $page.ListItem;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;&lt;span class="rem"&gt;# iterate through each content type field&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;$contentType.Fields | ForEach-Object {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;    &lt;span class="rem"&gt;# ignore read-only and hidden fields&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 111:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.ReadOnlyField &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;True&amp;quot;&lt;/span&gt; -or $_.Hidden &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;True&amp;quot;&lt;/span&gt;) { &lt;span class="kwrd"&gt;return&lt;/span&gt;; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 112:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 113:  &lt;/span&gt;    &lt;span class="rem"&gt;#Set Title because it is special...&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 114:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.StaticName &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 115:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 116:  &lt;/span&gt;        $item[$_.StaticName] = $PageUrl;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 117:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 118:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 119:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 120:  &lt;/span&gt;    &lt;span class="rem"&gt;#Determine the field type to set appropriate data.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 121:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Text&amp;quot;&lt;/span&gt; -and $_.StaticName &lt;span class="preproc"&gt;-ne&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;) &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 122:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 123:  &lt;/span&gt;        &lt;span class="rem"&gt;#Set to Lorem based on $_.MaxLength variable&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 124:  &lt;/span&gt;        $item[$_.StaticName] = $loremText.Substring(0,($_.MaxLength - 1));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 125:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 126:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 127:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 128:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Note&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 129:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 130:  &lt;/span&gt;        $item[$_.StaticName] = $loremText;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 131:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 132:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 133:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 134:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;HTML&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 135:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 136:  &lt;/span&gt;        $item[$_.StaticName] = Get-Content demohtml.txt | out-string;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 137:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 138:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 139:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 140:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;TaxonomyFieldTypeMulti&amp;quot;&lt;/span&gt; -or $_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;TaxonomyFieldType&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 141:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 142:  &lt;/span&gt;        GetRandomMetadata $item $site $_.Title;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 143:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 144:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 145:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 146:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;DateTime&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 147:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 148:  &lt;/span&gt;        &lt;span class="rem"&gt;#$thisTime = Get-Date -format s&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 149:  &lt;/span&gt;        &lt;span class="rem"&gt;#$item[$_.StaticName] = $thisTime;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 150:  &lt;/span&gt;        $item[$_.StaticName] = [DateTime]::Today.ToString(&lt;span class="str"&gt;&amp;quot;yyyy-MM-ddTHH:mm:ssZ&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 151:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 152:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 153:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 154:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;User&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 155:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 156:  &lt;/span&gt;        &lt;span class="rem"&gt;# Set a random user field&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 157:  &lt;/span&gt;        &lt;span class="rem"&gt;#$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($serviceContext)&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 158:  &lt;/span&gt;        &lt;span class="rem"&gt;#$userProfiles = $profileManager.GetEnumerator();&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 159:  &lt;/span&gt;        &lt;span class="rem"&gt;#$thisProfile = $userProfiles | Get-Random;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 160:  &lt;/span&gt;        &lt;span class="rem"&gt;#$userName = $thisProfile.DisplayName;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 161:  &lt;/span&gt;        &lt;span class="rem"&gt;#[Microsoft.SharePoint.SPUser]$spuser = $web.EnsureUser($userName);         &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 162:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 163:  &lt;/span&gt;        &lt;span class="rem"&gt;# Or set a static user&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 164:  &lt;/span&gt;        [Microsoft.SharePoint.SPUser]$spuser = $web.EnsureUser(&lt;span class="str"&gt;&amp;quot;SharePoint\System&amp;quot;&lt;/span&gt;);         &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 165:  &lt;/span&gt;        $item[$_.StaticName] =  $spuser; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 166:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 167:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 168:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 169:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;URL&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 170:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 171:  &lt;/span&gt;        $urlField = New-Object Microsoft.SharePoint.SPFieldURLValue&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 172:  &lt;/span&gt;        $urlField.Description = &lt;span class="str"&gt;&amp;quot;Rightpoint&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 173:  &lt;/span&gt;        $urlField.URL = &lt;span class="str"&gt;&amp;quot;http://www.rightpoint.com&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 174:  &lt;/span&gt;        $item[$_.StaticName] =  $urlField; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 175:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 176:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 177:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 178:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;SummaryLinks&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 179:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 180:  &lt;/span&gt;        $linkField = New-Object Microsoft.SharePoint.Publishing.Fields.SummaryLinkFieldValue&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 181:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 182:  &lt;/span&gt;        $sumLink = New-Object Microsoft.SharePoint.Publishing.SummaryLink Rightpoint&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 183:  &lt;/span&gt;        $sumLink.LinkURL = &lt;span class="str"&gt;&amp;quot;http://www.rightpoint.com&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 184:  &lt;/span&gt;        $linkField.SummaryLinks.Add($sumLink)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 185:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 186:  &lt;/span&gt;        $sumLink2 = New-Object Microsoft.SharePoint.Publishing.SummaryLink Google&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 187:  &lt;/span&gt;        $sumLink2.LinkURL = &lt;span class="str"&gt;&amp;quot;http://www.google.com&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 188:  &lt;/span&gt;        $linkField.SummaryLinks.Add($sumLink2)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 189:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 190:  &lt;/span&gt;        $item[$_.StaticName] =  $linkField; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 191:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 192:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 193:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 194:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ($_.TypeAsString &lt;span class="preproc"&gt;-eq&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;RatingCount&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 195:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 196:  &lt;/span&gt;        &lt;span class="rem"&gt;# We have a social rating enabled list.  Let&amp;#39;s give the item some ratings to help display stars&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 197:  &lt;/span&gt;        $SocialRatingManager = New-Object Microsoft.Office.Server.SocialData.SocialRatingManager($serviceContext);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 198:  &lt;/span&gt;        [Object]$random = New-Object System.Random&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 199:  &lt;/span&gt;        $rating = $random.Next(1,6);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 200:  &lt;/span&gt;        $itemURI = $weburl + $item.URL;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 201:  &lt;/span&gt;        [void]$SocialRatingManager.SetRating($itemURI, $rating)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 202:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 203:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 204:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 205:  &lt;/span&gt;$item.Update();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 206:  &lt;/span&gt;Write-Host &lt;span class="str"&gt;&amp;quot;Created $($PageUrl)&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 207:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 208:  &lt;/span&gt;&lt;span class="rem"&gt;# Check-in and publish page&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 209:  &lt;/span&gt;$item.File.CheckIn(&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 210:  &lt;/span&gt;$item.File.Publish(&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 211:  &lt;/span&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; ($item.ListItems.List.EnableModeration) { $item.File.Approve(&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;); }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 212:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 213:  &lt;/span&gt;$endTime = Get-Date -Uformat %s&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 214:  &lt;/span&gt;$timings = $endTime - $startTime;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 215:  &lt;/span&gt;Write-Host &lt;span class="str"&gt;&amp;quot;Page $i of $iterations created in $timings seconds&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 216:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 217:  &lt;/span&gt;$i++&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 218:  &lt;/span&gt;} # &lt;span class="kwrd"&gt;end&lt;/span&gt; iterations&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Sample “demohtml.txt”&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;style type=&lt;span class="str"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; table.tabular{width:95%;border-bottom:1px solid #ccc;background-color:#eee;border-collapse:collapse;margin:20px}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt; table.tabular td,table.tabular th{border-top:1px solid #ccc;border-right:1px solid #ccc;padding:3px 20px 3px 3px}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt; table.tabular td:first-child,table.tabular th:first-child{border-left:1px solid #ccc}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;lt;/style&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;lt;table width=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt; cellspacing=&lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; cellpadding=&lt;span class="str"&gt;&amp;quot;3&amp;quot;&lt;/span&gt; border=&lt;span class="str"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;tabular&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &amp;lt;thead&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Result&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &amp;lt;/thead&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &amp;lt;tbody&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &amp;lt;td&amp;gt;Headings&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            &amp;lt;td&amp;gt;&amp;lt;h1 style=&lt;span class="str"&gt;&amp;quot;border:none&amp;quot;&lt;/span&gt;&amp;gt;Heading 1&amp;lt;/h1&amp;gt;&amp;lt;h2 style=&lt;span class="str"&gt;&amp;quot;border:none&amp;quot;&lt;/span&gt;&amp;gt;Heading 2&amp;lt;/h2&amp;gt;&amp;lt;h3&amp;gt;Heading 3&amp;lt;/h3&amp;gt;&amp;lt;h4&amp;gt;Heading 4&amp;lt;/h4&amp;gt;&amp;lt;h5&amp;gt;Heading 5&amp;lt;/h5&amp;gt;&amp;lt;h6&amp;gt;Heading 6&amp;lt;/h6&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &amp;lt;td&amp;gt;Paragraphs&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Normal paragraph text.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &amp;lt;td&amp;gt;Line Break&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &amp;lt;td&amp;gt;I feel a line break coming... &amp;lt;br /&amp;gt; ...up.&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;       &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            &amp;lt;td&amp;gt;Bold Text&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            &amp;lt;td&amp;gt;&amp;lt;strong&amp;gt;Bold text.&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            &amp;lt;td&amp;gt;Italic Text&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &amp;lt;td&amp;gt;&amp;lt;i&amp;gt;Italic text.&amp;lt;/i&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            &amp;lt;td&amp;gt;Color Text&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            &amp;lt;td&amp;gt;&amp;lt;p style=&lt;span class="str"&gt;&amp;quot;color:#000099&amp;quot;&lt;/span&gt;&amp;gt;Color text.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            &amp;lt;td&amp;gt;Text Size&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            &amp;lt;td&amp;gt;&amp;lt;p style=&lt;span class="str"&gt;&amp;quot;font-size:18pt&amp;quot;&lt;/span&gt;&amp;gt;Text size using points.&amp;lt;/p&amp;gt;&amp;lt;p style=&lt;span class="str"&gt;&amp;quot;font-size:18px&amp;quot;&lt;/span&gt;&amp;gt;Text size using pixels.&amp;lt;/p&amp;gt;&amp;lt;p style=&lt;span class="str"&gt;&amp;quot;font-size:larger&amp;quot;&lt;/span&gt;&amp;gt;Text size using relative sizes.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        &amp;lt;/tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        &amp;lt;tr&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    &amp;lt;/tbody&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;&amp;lt;/table&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2928" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/publishing/default.aspx">publishing</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Words and Meanings</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/01/words-and-meanings.aspx</link><pubDate>Wed, 01 Feb 2012 18:05:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2927</guid><dc:creator>cquillen</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;Last Tuesday I attended a Meetup
event hosted by David Damaree, of the Chicago-based typography firm Typekit,
where he spoke about &amp;ldquo;Naming Things.&amp;quot; The hour focused on the role of naming
and domain modeling in making good software and good design. He went through
good and bad examples from branding, user experience and code. Sounded pretty
awesome but sadly, we mostly just got to hear about the difficulties Typekit
had establishing naming conventions on their own website, and how hard it was
to decide which definition of &amp;ldquo;Font&amp;rdquo; to use. And while that &lt;i&gt;is&lt;/i&gt; tricky,
since it can mean many things; a metal type character of a single size and
style; a digital file of a character set; a database object bla bla bla&amp;hellip; I
know, I stopped listening too, and I&amp;rsquo;m a petty big fan of typography. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;So the
talk wasn&amp;rsquo;t so great, but alas, what I did find interesting was his use of the
Magritte painting &amp;ldquo;Ceci n&amp;rsquo;est pas une pipe&amp;rdquo; to illustrate how words mean
different things to different people. While the picture of a pipe isn&amp;rsquo;t actually
a pipe (I love you Magritte) and the letters P-I-P-E also isn&amp;rsquo;t actually a
pipe, it does differentiate that from a cigar.&amp;nbsp;So when you say &amp;ldquo;pipe&amp;rdquo;
while people will hopefully know that is not a cigar, you also don&amp;rsquo;t want them
to expect a different sort of pipe:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/1.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/1.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;People&amp;rsquo;s perception of what you are talking about when you say &amp;ldquo;pipe&amp;rdquo; will change depending on their understanding of the word, so what is important is to define a word and then establish consistency.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;What really drove the point home
for me though was the phrasing of the invitation. the event would have drinks
and appitizers provided by Groupon, I pictured domestic beer, cheap wine and
maybe some cocktails along with some passed hors d&amp;rsquo;oeuvres, when actually they
meant a few liter bottles of diet coke and a pile of empty pizza boxes.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/2.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/2.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Ah ha! Words mean different things
to different people, you say? I see your point, sir, I see your point.&lt;/p&gt;
&lt;p class="MsoNormal"&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://www.rightpoint.com/community/aggbug.aspx?PostID=2927" width="1" height="1"&gt;</description><enclosure url="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.27/2.gif" length="4134" type="image/gif" /></item><item><title>Business Intelligence in Retail. Insights you can count on.</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/24/business-intelligence-in-retail-insights-you-can-count-on.aspx</link><pubDate>Tue, 24 Jan 2012 18:28:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2926</guid><dc:creator>Marcello Benati</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;BI for retail will be defined by the retailers who have figured out how to maximize customer satisfaction and profitability through the right combination of quality products, friendly and efficient service, unique value, a differentiated shopping experience, and a business model that truly serves the communities they serve -- locally and globally. &lt;/p&gt;
&lt;p&gt;How will this be accomplished? It begins with an in depth understanding of the customers and then linking that insight into every decision that is made, from merchandising to marketing to distribution to store operations to finance, so that retailers can predict how to best serve their customers&amp;#39; ever-changing needs and desires.&lt;/p&gt;
&lt;p&gt;Our strategy for the future of retail BI provides for that very scenario, through our experience in designing intelligence platforms and our solutions for customer, merchandise, operations, and performance intelligence that are combined in a toolset designed to equip retailers to become truly innovative.&lt;/p&gt;
&lt;p&gt;A solution seeking to use customer behavioral data to make better merchandising or marketing decisions needs to interface with sales transaction systems, loyalty systems, in-house credit systems, coupon redemption systems, catalog and Internet customer data systems, and so forth. &lt;/p&gt;
&lt;p&gt;A system that recommends optimized price changes should interface with the price management system, the item master, the system that generates labels, etc.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The Retailers that are Realizing the Most Benefits from BI&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Retailers that are realizing the most significant returns on their investments are those that take a purposeful, pragmatic approach to establishing an intelligence platform upon which to base all other BI solutions. &lt;/p&gt;
&lt;p&gt;A single, reliable demand forecast, for instance, can also be used in merchandising, marketing, logistics, store operations, call center staffing, etc., for operational benefit.BI that remains segmented by functional area can provide some value, but retailers can realize a much larger return by building the foundation upon which the rest of the house will stand. This is true of both top-tier and midmarket retailers, regardless of segment. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Specific Areas in Which Retailers can Benefit Most Include:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;Merchandising&lt;/span&gt;&lt;/b&gt;-- This is clearly the most important area of a retailer&amp;#39;s business and an area where retailers are beginning to exploit the full value of BI. Analysis of past performance, combined with plans and forecasts of trends future customer behavior, leads to more accurate initial allocations of merchandise across channels and stores. &lt;/p&gt;
&lt;p&gt;Assortment and size optimization that are based on customer demand patterns ensure that the correct assortments, size, and case-pack distributions get sent to the correct stores. Daily price, promotion, and markdown optimization ensures that items are priced for optimal profitability, both preseason and in season. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Space automation and optimization&lt;/b&gt; ensure departmental sales and profit per square foot are maximized, and products are given the correct inventory and space on the shelf or on the rack. Optimized fulfillment ensures that products are allocated or replenished based on demand. Accurate analysis also results in a more efficient use of manpower in picking, packing, and shipping the first wave of product, while minimizing additional, costly payroll expenses to facilitate transfers between stores, vendor returns, changing signage and labels for markdowns, and otherwise correcting mistakes. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Marketing--&lt;/b&gt; By understanding customers better -- whether by profiling, segmenting, gauging propensity to respond, or using market basket analysis -- retailers can create better-defined targeted campaigns, reducing expenses (printing, paper, postage) while increasing response rates, revenues, and gross margins. Also, as retailers gain a better understanding of their customers&amp;#39; buying behavior, this analysis can then be used to create more effective merchandising plans for the next season. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Operations --&lt;/b&gt; Understanding and predicting changes in demand -- by hour, by day, by location, by promotion, by price change-- means that the store floors, the catalog call centers, and the fleet crews delivering replenishment orders from the DC to the store are all appropriately staffed. This understanding also leads to optimal productivity since store-level human capital costs can be scheduled better and managed more efficiently. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;The Integrated Solution&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;It is important to note that a good BI solution will be able to integrate with any other system and platform. That said different BI solutions need to interface with different operational systems for different purposes. &lt;/p&gt;
&lt;p&gt;A solution seeking to use customer behavioral data to make better merchandising or marketing decisions needs to interface with sales transaction systems, loyalty systems, in-house credit systems, coupon redemption systems, catalog and Internet customer data systems, and so forth. A system that recommends optimized price changes should interface with the price management system, the item master, the system that generates labels, etc. &lt;/p&gt;
&lt;p&gt;There must be a closed-loop interface between the operational systems that retailers rely upon to conduct day-to-day business and the BI systems that help them conduct that business more efficiently and profitably.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2926" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/ROI/default.aspx">ROI</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/data+mining/default.aspx">data mining</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/intelligence/default.aspx">intelligence</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/commerce/default.aspx">commerce</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Businessss+Intelligence/default.aspx">Businessss Intelligence</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Productivity/default.aspx">Productivity</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Planning/default.aspx">Planning</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Culture/default.aspx">Culture</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Retail/default.aspx">Retail</category></item><item><title>SharePoint Saturday Austin Wrap Up</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/24/sharepoint-saturday-austin-wrap-up.aspx</link><pubDate>Tue, 24 Jan 2012 14:59:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2924</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Update on February 3, 2012: I have added&amp;nbsp;the Introduction to&amp;nbsp;Content Query Web Part that I presented at this event.&amp;nbsp; Click on the &amp;quot;Attachment&amp;quot; above this text.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;----------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;strong&gt;SharePoint Saturday Austin (#SPSAusTx)&amp;nbsp;was a fantastic event!&lt;/strong&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&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;In the last year I have been to 8 SharePoint events and I have to say this was the best that I have&amp;nbsp;been to, and not just because this was my first time being a presenter &lt;/span&gt;&lt;span style="font-family:Wingdings;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;I am&amp;nbsp;an extremely&amp;nbsp;strong supporter of these free community events and have written about &lt;a target="_blank" href="http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/14/why-absolutely-everyone-should-attend-a-sharepoint-saturday-my-top-five-reasons.aspx" title="my top 5 reasons you should attend a SharePoint Saturday"&gt;my top 5 reasons you should attend a SharePoint Saturday&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;I&amp;rsquo;ll try not to be long winded&amp;hellip;so in honor of the Women of SharePoint Panel held at this event&amp;hellip;I&amp;rsquo;ll bullet point the reasons why (not in any particular order, they are all #1&amp;rsquo;s):&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Facility&lt;/b&gt; &amp;ndash; The AT&amp;amp;T Conference Center was beautiful, clean and well organized.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The sleeping rooms were fantastic and the meeting rooms were the perfect size to accommodate the large number of attendees.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Food&lt;/b&gt; &amp;ndash; The smorgasbord included healthy alternatives, Texas treats, sandwich stuff, salads, soups, yummy desserts way too much to mention everything.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It was beautifully presented and I believe the best buffet I&amp;rsquo;ve ever had.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Weather&lt;/b&gt; &amp;ndash; yes, it really stank that some of the best speakers got snowed in but it was 7 degrees when I left Chicago and 70 when I got to Austin, so that makes it on this list, sorry Christian Buckly (@buckleyplanet)&amp;nbsp;and Dux Raymond Sy&amp;nbsp;(@meetdux) you&amp;nbsp;were missed and I look forward to seeing you at the next event!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Organization&lt;/b&gt; &amp;ndash; Jim Bob Howard (@jbhoward) and Matthew Lathrop (@MatthewRAX) did a fantastic job period!&amp;nbsp; When you add the last minute&amp;nbsp;pulling-in resources to replace the speakers that Snowpocalypse kept away, it was just amazing.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;They claimed there were other issues, but they hid them well because I can&amp;rsquo;t think of anything that wasn&amp;rsquo;t right.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Entertainment&lt;/b&gt; - Austin is a great town with some great entertainment&amp;hellip;when you add a bunch of SharePoint geeks in there&amp;hellip;I just can&amp;rsquo;t think of anything better!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Networking / Social Aspects&lt;/b&gt; &amp;ndash; There was a great assortment of presenters and attendees. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;I can&amp;rsquo;t tell you how awesome it is to have a beer and talk SharePoint and not have your friends look at you like you&amp;rsquo;re a geek&amp;hellip;yes, I KNOW that makes me a geek&amp;hellip;but I will happily admit I&amp;rsquo;m a huge SharePoint geek and talking about it is just FUN for me! &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Speaker Dinner&lt;/b&gt; &amp;ndash; It was my first one, so I don&amp;rsquo;t have anything to compare it to, but the more experienced speakers said it was a good one too!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We were bussed to Salt Lick BBQ which was fantastic!&amp;nbsp; I was&amp;nbsp;thrilled to meet a Microsoft MVP Legend, Bill English (@MinnesotaBill) who promised to come speak at our Chicago User Group one day.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Women of SharePoint Women&amp;rsquo;s panel&lt;/b&gt; &amp;ndash; I had the honor of sitting next to 5 amazing women to answer some thought-provoking questions about being a Woman in a Male-Dominated technology industry.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I believe every SharePoint Saturday would benefit from having some kind of Panel Discussion, not just a women&amp;rsquo;s or leadership panel, but any kind of panel.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It was really interesting to see and hear different answers/perspectives to the same question.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;The panel included myself (@chomp1313), Nedra Allmond (@NedraAllmond), Marcy Kellar (@Marcy Kellar), Mistry Rodriguez, and Tiffany Songvilay (@OfficeOverEasy).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;Suzanne George (@SPGenie) did a fantastic job of moderating, in spite of the Chuck Norris joke.&amp;nbsp;&amp;nbsp; We had some great interactions with a wonderful audience!&lt;/span&gt;&lt;/p&gt;
&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Note:&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;the bullet point reference at the beginning of this post is referring to the fact that women have a tendency to want to over-explain in long emails ;-)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Presenters&lt;/b&gt; &amp;ndash; As always, the presenters were top notch.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There was a great mix of experienced presenters and new presenters, like me.&amp;nbsp; I really love how supportive the community is of each other.&amp;nbsp; We all work for different companies doing various things.&amp;nbsp; Some companies may even compete against each other, but there is none of that here and I love it!&amp;nbsp; This community is truly unique in the way that we all support and help each other.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Attendees&lt;/b&gt; &amp;ndash; The attendees at this event are always such a good mix of users / providers at every level.&amp;nbsp; These great conversations between sessions, at lunch and at SharePint&amp;nbsp;remind me a few key points about SharePoint in general:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; No one knows everything about every aspect of SharePoint&amp;hellip;I believe it is impossible - we all need to specialize in a few key areas and rely on others to specialize in others. That&amp;#39;s why we all work so well together.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; What seems easy to you is not easy to someone else with different experiences and vice versa&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; There are still people that are just starting out in SharePoint&amp;hellip;remember them, they are important&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; There are several different ways to reach the same goal in SharePoint, the way you succeed depends on process and the user...make sure the end user is a part of the process&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;strong&gt;Presenting&lt;/strong&gt; - This&amp;nbsp;was the first time I have&amp;nbsp;presented at&amp;nbsp;a SharePoint Event, thanks to Jim Bob Howard&amp;#39;s insistence&amp;nbsp;that with 10+ years of&amp;nbsp;SharePoint experience&amp;nbsp;I must have &lt;em&gt;something&lt;/em&gt; to say.&amp;nbsp; I had the honor of being able to present an Intro to Content Query Web Parts session.&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;There were a few technical difficulties (user error) and the crowd was extremely helpful and forgiving.&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;The positive feedback I received removes any hesitation I ever had about speaking in public&amp;hellip;which is something I never aspired to before.&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;However, SharePoint is something I&amp;rsquo;m very passionate about and I love talking about it!&amp;nbsp; I am hooked and I will be submitting again!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Well, that pretty much wraps it up.&amp;nbsp; If you&amp;rsquo;re reading this and you missed it&amp;hellip;try to get there next year&amp;hellip;it is well worth it!&amp;nbsp; Any of them are, I can honestly say I haven&amp;#39;t been to a &amp;quot;bad&amp;quot; one yet.&amp;nbsp; Here&amp;#39;s a link to the site to find the closest one to you:&amp;nbsp; &lt;a href="http://sharepointsaturday.org/default.aspx"&gt;http://sharepointsaturday.org/default.aspx&lt;/a&gt;&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;&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;&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;&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;&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;&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;&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;Past SharePoint Events I have been to since I discovered the awesome SharePoint Community 2011:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS St. Louis&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPTechCon - Boston&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;3.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS Houston&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;4.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS Chicago&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;5.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS New York&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;6.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SharePointFest Chicago&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;7.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS DC&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;8.&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;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS Austin&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2924" width="1" height="1"&gt;</description><enclosure url="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.24/Content-Query-Web-Part_2D00_AUSTIN.pptx" length="1876464" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Training/default.aspx">Training</category></item></channel></rss>
