<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.conchango.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>blogs.conchango.com</title><link>http://blogs.conchango.com/default.aspx</link><description>welcome to the &lt;a href="http://www.conchango.com" target="_blank"&gt;conchango&lt;/a&gt; blogging site</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>A Year in The Life of a Platform Architect – Month 8</title><link>http://blogs.conchango.com/gracemollison/archive/2009/07/03/a-year-in-the-life-of-a-platform-architect-month-8.aspx</link><pubDate>Fri, 03 Jul 2009 17:05:45 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15689</guid><dc:creator>Grace.Mollison</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Well its been another interesting month albeit&amp;#160; a bitter sweet type one mainly because some of the colleagues I’ve got to know in the short time I’ve been here are moving onto pastures new . You know happy for them but will miss them all the same.. Still I had no time to mull over that as Resourcing appear to have called my bluff and placed me onto another really cool project that ticks quite a few boxes although there is one I’d have rather stayed unchecked:&lt;/p&gt;  &lt;p&gt;Working with beta software – check&lt;/p&gt;  &lt;p&gt;Make use of the platform provisioning stuff I’ve been doing – check&lt;/p&gt;  &lt;p&gt;Breaking builds – check&lt;/p&gt;  &lt;p&gt;Dabbling in&amp;#160; a bit of code&amp;#160; :-)&amp;#160; - check &lt;/p&gt;  &lt;p&gt;Opportunity to learn even more – check &lt;/p&gt;  &lt;p&gt;Working with a nice bunch of people – check&lt;/p&gt;  &lt;p&gt;Unfortunately it means I need to learn to love SharePoint . I’m getting to know stsadm operations and properties much to my distress. I always felt ignorance would be bliss on the SharePoint front&amp;#160; but I can’t win them all .&lt;/p&gt;  &lt;p&gt;No cloud stuff but hey I can play with that in my spare time .&lt;/p&gt;  &lt;p&gt;So what is it they’ve done this time that I’m so happy about well I’ve been assigned to work with our Agile team on the Scrum for Team System project. When told I was going to&amp;#160; be doing this I was pretty apprehensive as our CTO was&amp;#160; on that project but being a CTO means no time to do the real fun stuff anymore I guess . He knows so much though and I was wondering are they sure about this one? Luckily though I am working alongside &lt;a href="http://blogs.conchango.com/jamesdawson" target="_blank"&gt;James&lt;/a&gt; at least till I find my feet&amp;#160; and &lt;a href="http://blogs.conchango.com/stuartpreston" target="_blank"&gt;Stuart&lt;/a&gt; is keeping a fatherly eye on the project anyway .&amp;#160; So I have two&amp;#160; &lt;strong&gt;über&lt;/strong&gt; consultants around&amp;#160; and I’m learning as well as delivering . I&amp;#160; do have a steep learning curve on the MSI installer stuff but I have good tutors and I’m getting my head around it. I started off&amp;#160; after a few days familiarisation doing some platform provisioning stuff for the target supported environments&amp;#160; but I was obviously having far too good a time with that ( bit of a comfort zone really)&amp;#160; so I’m now focusing on the MSI&amp;#160; work as we are at a point where I can start contributing on that side without impacting the deliverables.&amp;#160; Obviously&amp;#160; I’ll be noticeably slower than the current incumbents on this until I get up to speed but we needed to get beta 1 out the door so me doing stuff I could just get on with and&amp;#160; getting to know TFS 2010 made sense and it also gave me the confidence to know I may not have&amp;#160; bitten off more than I can chew . At least with the platform provisioning piece I’ve already contributed to the project&amp;#160; without feeling like a spare part . Time will tell but so far I feel its started well although the MSI stuff could prove a tough one I’ll keep you posted on that one&amp;#160; . &lt;/p&gt;  &lt;p&gt;As for the&amp;#160; project I spoke about in&amp;#160; the past couple of posts that’s been parked at least for the moment. So yep it is another thumbs up and TFS 2010 offers plenty of opportunity to be ahead of the game.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15689" width="1" height="1"&gt;</description></item><item><title>Social Media Networks &amp; Communication Services: When do you engage and How?</title><link>http://blogs.conchango.com/derekdunlop/archive/2009/07/03/social-media-networks-amp-communication-services-when-do-you-engage-and-how.aspx</link><pubDate>Fri, 03 Jul 2009 11:29:30 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15671</guid><dc:creator>Derek.Dunlop</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;b&gt;At what point do retailers embrace the social shopping sphere? From reviews, comments, payments, marketing and brand voice, where and how do they begin? There are so many social networks and sites here today gone tomorrow that retailers and brands are&amp;#160; concerned that there either too late, too early or will waste their money on something that could potentially damage their brand and reputation! Equally they feel that they are missing out on this new ‘Social Shopping’ (Look at Dell who have attributed $2million in sales thanks to Twitter) and would like to get their brand and company in there but in the most effective and timely way.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Brands and retailers do need to be aware of the burgeoning ‘social space’. It can be as it is a vital lifeblood to support their overall positive position within the marketplace, helping them to be seen as forward-thinking and innovative. It is also the vehicle that may drive many businesses forward in the coming years. Some may look at networks and&amp;#160; such as Twitter, Facebook or MySpace and think they are niche plays – and it does not really affect them. If brands want to meet their audience, they need to connect with them in the correct forums. This is not the case. For example 70% of Twitter users in the UK are over the age of 35 (comScore Media Metrix) Retailers should be aware of and monitor the social ‘chatter’ that resonates around their brand. They have to understand where the chatter is, how to track it and ultimately what to do with it. This responsibility typically sits with marketing or brand teams as they are often the official gatekeepers for the product or service. Retailers can then decide if there is a need or desire to connect with the network or forum – but what they do and how they interact is equally important:&lt;/p&gt;  &lt;p&gt;1. Sit there and do nothing = can sometimes imply apathy and lack of understanding to the community&lt;/p&gt;  &lt;p&gt;2. Push Push Push = using the community solely for gain and monetary advancement&lt;/p&gt;  &lt;p&gt;3. Defend &amp;amp; Answer = defensive stance that shows again that the brand is only interacting to trouble shoot issues&lt;/p&gt;  &lt;p&gt;A more strategic approach is to observe what’s happening on the networks and look to PULL rather than PUSH – by viewing these communities as a channel to discuss / share / collaborate and improve their business. That in turn will start to create trust and respect from users. This is the social commerce that is becoming more prevalent in many industries today. As far as monetisation is concerned, this is a new economy and so it is too early to put a firm monetary value on its aggregate worth. However, in terms of positive brand visibility, its value is easy to see. &lt;/p&gt;  &lt;p&gt;Whether you enter the ‘social space’ now or in the future, it does not make a difference - the Twitter of today could become obsolete next year. What is key is that you are aware of the most relevant social media, and ensure that you have the most the most appropriate level of interaction with them. Look within your company to see who could be a good spokesperson(s) to help channel the discussion and not be seen as an ’invasive intruder’ that is there to spam and sell. &lt;/p&gt;  &lt;p&gt;Top Tips for the embracing the social shopping sphere:&lt;/p&gt;  &lt;p&gt;1. &lt;b&gt;Look &amp;amp; Review&lt;/b&gt; the social sphere – who is on there, what is the nature of the communication, are competitors on there, what are they doing, what is the reaction, is my brand / company being discussed?&lt;/p&gt;  &lt;p&gt;2. &lt;b&gt;Decide &amp;amp; Act&lt;/b&gt; after “Look &amp;amp; Review”&amp;#160; where your participation level sits – passive, active, influencer - where this will sit within your business, who sets the tone of voice etc..&lt;/p&gt;  &lt;p&gt;3. &lt;b&gt;Pull not Push - &lt;/b&gt;Remember that this is not necessarily a PUSH marketing vehicle but gathering new currency of social commerce that you will want to keep and maintain&lt;/p&gt;  &lt;p&gt;4. &lt;b&gt;Trust &amp;amp; Reward – &lt;/b&gt;If you are an active participant trust the voice of your network and reward them – that can be through various methods and means – could be tips, help, advice&lt;/p&gt;  &lt;p&gt;5. &lt;b&gt;Innovate&lt;/b&gt; - Look to go beyond the traditional methods and where this new found network can benefit your business – product reviews / brand placement / services etc &lt;/p&gt;  &lt;p&gt;As Twitter is the media darling just now much more so that Facebook or MySpace, it’s interesting to note the activity on that medium. Of course Twitter in all essence is NOT a social network per say but in fact a communications network (as we have seen with the breaking news recently) with social features (friends &amp;amp; followers) While at the same time it’s also very interesting to see who is actually responding and building up a reciprocal network – by how many they follow&lt;/p&gt;  &lt;p&gt;It is supposed to be uber cool if you only follow a handful of cool people – but then there is the perception that you’re not really listening and you are there as a “push” medium only. &lt;/p&gt;  &lt;p&gt;Twitter is still in its infancy and will start to see more with Twitter over the next 18 months (but at the same time towards the end of the year – there will be a new kid on the block that will take the social commentary even further!!&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15671" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/community/default.aspx">community</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/multi-channel+retailing/default.aspx">multi-channel retailing</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/brand+identity/default.aspx">brand identity</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/online+retailers/default.aspx">online retailers</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/retail/default.aspx">retail</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/Diary+Of+A+Madman/default.aspx">Diary Of A Madman</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/digital+media/default.aspx">digital media</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/marketing/default.aspx">marketing</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/Loyalty/default.aspx">Loyalty</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/brand+development/default.aspx">brand development</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/internet+value/default.aspx">internet value</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/myspace/default.aspx">myspace</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/social+networks/default.aspx">social networks</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/facebook/default.aspx">facebook</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/social+shopping/default.aspx">social shopping</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/digital+living/default.aspx">digital living</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/digital+media+evangelist/default.aspx">digital media evangelist</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/e-commerce/default.aspx">e-commerce</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/eCommerce/default.aspx">eCommerce</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/recession+retail/default.aspx">recession retail</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/strategy/default.aspx">strategy</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/business+strategy/default.aspx">business strategy</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/Twitter/default.aspx">Twitter</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/micro+e-commerce/default.aspx">micro e-commerce</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/micro/default.aspx">micro</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/nano+commerce/default.aspx">nano commerce</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/tweets/default.aspx">tweets</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/social+media+etiquette/default.aspx">social media etiquette</category><category domain="http://blogs.conchango.com/derekdunlop/archive/tags/social+media/default.aspx">social media</category></item><item><title>The PC is dead long live the NC (in the cloud)</title><link>http://blogs.conchango.com/rorystreet/archive/2009/07/03/the-pc-is-dead-long-live-the-nc-in-the-cloud.aspx</link><pubDate>Fri, 03 Jul 2009 10:29:49 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15670</guid><dc:creator>rory.street</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;Cast your mind back to 1995 when the chairman of Oracle, Larry Ellison stated “The personal computer is a ridiculous device”, later followed by “It's too hard to use, too powerful, too costly...” Larry Ellison was off course championing what he thought was the PC’s replacement the NC or Network Computer. The idea behind the NC was not a bad one, everything was stored on centrally held servers (on the Internet) where you didn’t have to worry about how it was going to be backed up and you could access your information from any NC device no matter where you were in the world. The problem was his idea was probably 14 years to early and since then the PC has become slim lined and very cheap. &lt;/p&gt;  &lt;p&gt;Today we store a lot of our information online (or dare I call it the cloud?). As consumers we store our photos on &lt;a href="http://www.flickr.com/"&gt;flikr&lt;/a&gt;, backup up our files using &lt;a href="https://digitalvault.bt.com/base/login.jsp"&gt;BT Digital Vault&lt;/a&gt; and Microsoft’s SkyDrive, we download and store our music on the Internet, we watch TV and films over the Internet and we log into our PC’s or servers at home using programs such as &lt;a href="https://www.gotomypc.com/"&gt;GoToMyPC&lt;/a&gt;. Without realising it PC’s started to fulfil the role of Network Computers with the advent of faster broadband connections. But it is not just PC’s that get to play in this new interactive world there are a multitude of devices that access the Internet daily such as Smart Mobile phones, games consoles, set top boxes and even common house hold appliances. &lt;/p&gt;  &lt;p&gt;As things are going it appears more and more of the things we do on our computers will be hosted online. The companies providing us with these services will need to scale to meet these demands and to help them meet these demands, is my favourite buzz word of the year “the cloud”. As a consumer I am not too worried about where my data is stored or where my services are provided from as long as it is secure and I can get to my data. One of the biggest problems for services and goods companies is the age old problem of anticipating demand. If I overspend on my infrastructure to supply demand I have costs I will find harder to recoup because demand was not as high as I anticipated. Demand will not always be consistent and so as a company I would like to have the resources on tap I can pay for when I need them instantly, without having to fork out for large infrastructure I will only use intermittently.&lt;/p&gt;  &lt;p&gt;Eventually if (and this is a big if) cloud computing takes off in a big way we may find that we no longer need the benefits of a powerful PC. Soon the very desktops we use could be stored in a “Cloud Computing Container”. No longer would we need to worry about upgrades to our operating systems, performance or the software we use - all of this would be taken care of for us. All we would need to access our desktops is a simple Internet enabled computer or dare I say Network Computer? &lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15670" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/rorystreet/archive/tags/cloud/default.aspx">cloud</category></item><item><title>Chris Anderson talks Free at the ICA</title><link>http://blogs.conchango.com/deanwilson/archive/2009/07/03/chris-anderson-talks-free-at-the-ica.aspx</link><pubDate>Fri, 03 Jul 2009 09:02:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15669</guid><dc:creator>dean.wilson</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Yesterday lunchtime I went along to the ICA to listen to Chris Anderson, Editor in Chief of Wired and author of The Long Tail, talk about his new book Free: The Future of a Radical Price.&lt;/p&gt;&lt;p&gt;&lt;br&gt;The book is already causing waves. Anderson’s Conde Nast stable mate, Malcolm Gladwell has challenged many of Anderson’s key arguments in &lt;a href="http://www.newyorker.com/arts/critics/books/2009/07/06/090706crbo_books_gladwell?currentPage=all" title="Gladwell reviews 'Free'"&gt;a review of the book in the New Yorker&lt;/a&gt;. Subsequently &lt;a href="http://sethgodin.typepad.com/seths_blog/2009/06/malcolm-is-wrong.html" title="Godin defends the concept of Free"&gt;Seth Godin has rallied to Anderson’s defence&lt;/a&gt;. And no doubt the debate will continue.&lt;/p&gt;&lt;p&gt;&lt;br&gt;But back to the ICA…&lt;/p&gt;&lt;p&gt;&lt;br&gt;The event was a fairly relaxed affair, there was a brief intro to the book and a QA session. However, Anderson didn’t really provide any deeper insight into the arguments he outlined and the audience’s questions were fairly anodyne, but to be fair it was very hot and most people probably had the ICA bar and cold beer on their minds.&lt;/p&gt;&lt;p&gt;&lt;br&gt;However, a few points did make it to my notepad. Here’ my interpretation:&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;In the ‘Freemium’ economy we need to think about the ‘Pet for our penguin’&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Club Penguin, if you don’t already know, is a social networking site for kids. The basics i.e. a Penguin and an igloo are supplied for free, and that’s all you really need to participate. But if you want to see your stature within the community rise, say by buying a pet for your penguin, you are soon going to have to fork out for a subscription. Time for mum or dad to get the credit card out.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;The point is that anyone dealing in digital at least will to have to get used to giving things away for free and find ways to profit, through premium stuff, from the attention and engagement the free stuff generates. Take the example of music. Like it or not, musicians are powerless to stop there music changes hands for free. The smart acts are exploiting the publicity there music generates to sell a much broader experience, through touring, merchandise, books, box-sets etc. Really smart acts, such as Radiohead are effectively giving their creative efforts away (and adding to the free stuff with video mash-ups for instance), purely in order to extend the experience.&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The only distinction consumers are making is whether or not content is relevant&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;In a digital world were content is essentially free (something Gladwell, argues against in his review) consumers are less concerned about whether or not the content they are accessing has been produced by an expert, a journalist, or a peer than they are about the relevance of the content to their particular need or interest at that moment.&lt;br&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The smartest people don’t work for you&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;Anderson argues that the future for journalism and journalists will be about persuading and shepherding the best people, writing elsewhere, to write in a particular place. For free. To me, this seems to link with a greater desire for the filtered and curated content. When everything is free who decides what is worthy of attention? It’s seems like editors still have a place in the Anderson’s vision. The point made by Gladwell is that if you can pay for the editors why can’t you pay for the writers?&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br&gt;True to his belief in the Freemium economy, Anderson has ensured that free versions of the book will be available under Creative Commons, mainly by negotiating sole rights to audio versions of the book. The full version (six hours long) will be completely free. The abridge version will come at a premium – time is money after all.&lt;/p&gt;&lt;p&gt;&lt;br&gt;So in summary – some interesting arguments but I will watch with interest the debate sparked by Gladwell’s review. Funnily enough I left the ICA reminded of a recent reading by Gladwell of his latest book Outliers, which also left me wondering if the only thing I got in return for the ‘premium’ ticket was watching the author read their own book on my behalf.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15669" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Experience+Planning/default.aspx">Experience Planning</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Books/default.aspx">Books</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Chris+Anderson/default.aspx">Chris Anderson</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Free/default.aspx">Free</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Malcolm+Gladwell/default.aspx">Malcolm Gladwell</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Review/default.aspx">Review</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Event/default.aspx">Event</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Economics/default.aspx">Economics</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/ICA/default.aspx">ICA</category></item><item><title>DRY SQL</title><link>http://blogs.conchango.com/jamiethomson/archive/2009/07/02/dry-sql.aspx</link><pubDate>Thu, 02 Jul 2009 21:05:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15667</guid><dc:creator>jamie.thomson</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I recently inherited some SQL that someone else had written and had the job of “tidying it up” before it gets pushed out to production. Here’s a slightly simplified (yes, simplified) version of that SQL:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;font color="#008000"&gt;--options&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;when&lt;/span&gt; volume &amp;gt; 0 &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'profit'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'loss'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;&lt;font color="#ff00ff"&gt;sum&lt;/font&gt;&lt;/span&gt;(volume) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; total_volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t1&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;    asset_class = &lt;span style="color:#ff0000;"&gt;'options'&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;group&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;by&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;         asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;when&lt;/span&gt; volume &amp;gt; 0 &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'profit'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'loss'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;union&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;&lt;font color="#808080"&gt;all&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt; &lt;font color="#008000"&gt;--swaps&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;when&lt;/span&gt; volume &amp;gt; 0 &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'profit'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'loss'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;&lt;font color="#ff00ff"&gt;sum&lt;/font&gt;&lt;/span&gt;(volume) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; total_volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t2&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;    asset_class = &lt;span style="color:#ff0000;"&gt;'swaps'&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;group&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;by&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;         asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;when&lt;/span&gt; volume &amp;gt; 0 &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'profit'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'loss'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The SQL basically takes data from two tables (t1 &amp;amp; t2), aggregates each, carries out some inline expressions (for &lt;font face="Lucida Console"&gt;profit_or_loss&lt;/font&gt;) and finally unions it all together. On the surface it looks fine but there are a few problems here, namely that there is a lot of repeated code; it violates the principle of &lt;a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself"&gt;don’t repeat yourself&lt;/a&gt; (DRY) which preaches “single point of maintenance” and “deduplication” of code. If you take the time to check it out you’ll see that identical aggregations are carried out on the two datasets (lines 7 &amp;amp; 24) as are the same conversions for &lt;font face="Lucida Console"&gt;profit_or_loss &lt;/font&gt;(lines 3-5 &amp;amp; 19-22). Not only that but we have expressions appearing in both the SELECT clause and GROUP BY of both halves of the query (lines 12-14 &amp;amp; 29-31), another violation of DRY.&lt;/p&gt;

&lt;p&gt;A bit of refactoring is called for. First job, eliminate those expressions for &lt;font face="Lucida Console"&gt;profit_or_loss &lt;/font&gt;which appear in the GROUP BY clauses:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;font color="#008000"&gt;--options&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; ,        profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;&lt;font color="#ff00ff"&gt;sum&lt;/font&gt;&lt;/span&gt;(volume) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; total_volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    (&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         ,        &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;when&lt;/span&gt; volume &amp;gt; 0 &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'profit'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;                         &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'loss'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         ,        volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t1&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;    asset_class = &lt;span style="color:#ff0000;"&gt;'options'&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;         )t1&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;group&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;by&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;         asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt; ,        profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;union&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;&lt;font color="#808080"&gt;all&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt; &lt;font color="#008000"&gt;--swaps&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt; ,        profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;&lt;font color="#ff00ff"&gt;sum&lt;/font&gt;&lt;/span&gt;(volume) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; total_volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    (&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;         ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;         ,        &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;when&lt;/span&gt; volume &amp;gt; 0 &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'profit'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;                         &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'loss'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;         ,        volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t2&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;    asset_class = &lt;span style="color:#ff0000;"&gt;'swaps'&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;         )t2&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;group&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;by&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;         asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt; ,        profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Ok cool, we’ve moved the expression for &lt;font face="Lucida Console"&gt;profit_or_loss&lt;/font&gt; into a subquery (aka derived table) and hence expressions have gone from our GROUP BY clauses … but we’ve still got DRY violations. The aggregation (lines 5 &amp;amp; 25) and expression for &lt;font face="Lucida Console"&gt;profit_or_loss &lt;/font&gt;(lines 9-11 &amp;amp; 29-31) still appear in two places. More refactoring….&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;&lt;font color="#ff00ff"&gt;sum&lt;/font&gt;&lt;/span&gt;(volume) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; total_volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    (&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         ,        &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;when&lt;/span&gt; volume &amp;gt; 0 &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'profit'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;                         &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'loss'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;         ,        volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    (&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;                 &lt;font color="#008000"&gt;--options&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;                 ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;                 ,        volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t1&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;    asset_class = &lt;span style="color:#ff0000;"&gt;'options'&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;union&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;&lt;font color="#808080"&gt;all&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;                 &lt;font color="#008000"&gt;--swaps&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;                 ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;                 ,        volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t2&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;    asset_class = &lt;span style="color:#ff0000;"&gt;'swaps'&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;                 )t&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;         )q&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;group&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;by&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;         asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;There, much better; the aggregation only occurs once as does the expression for &lt;font face="Lucida Console"&gt;profit_or_loss&lt;/font&gt; (which in the code that I inherited occurred &lt;em&gt;four &lt;/em&gt;different times). Our SQL is DRY and its going to be a lot easier to maintain for whomever picks the code up from me.&lt;/p&gt;

&lt;p&gt;You’ll notice we’ve got 2 levels of nested subqueries (aka derived tables). I make no apologies for that - derived tables are a great mechanism for eliminating repeated code and if you take but one bit of advice away from this blog post it would be this: &lt;em&gt;&lt;strong&gt;derived tables are your friend&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Would you have refactored this the same way? Maybe you might have moved the derived tables into a dedicated view. Perhaps you might even have put the derived tables into a WITH clause like so:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;    t &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; (&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;         &lt;font color="#008000"&gt;--options&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;         ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         ,        volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t1&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;    asset_class = &lt;span style="color:#ff0000;"&gt;'options'&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;union&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;&lt;font color="#808080"&gt;all&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         &lt;font color="#008000"&gt;--swaps&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;         ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         ,        volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t2&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;    asset_class = &lt;span style="color:#ff0000;"&gt;'swaps'&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt; ),&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt; q &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt;    (&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         ,        &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;when&lt;/span&gt; volume &amp;gt; 0 &lt;span style="color:#0000ff;"&gt;then&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'profit'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;                         &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'loss'&lt;/span&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;end&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; profit_or_loss&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;         ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;         ,        volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    t&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt; )&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt;    asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt; ,        &lt;span style="color:#0000ff;"&gt;&lt;font color="#ff00ff"&gt;sum&lt;/font&gt;&lt;/span&gt;(volume) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; total_volume&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt;    q&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;group&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;by&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;         asset_class&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;font size="4"&gt;&lt;font face="Lucida Console"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt; ,        customer&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Let me know in the comments!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Further reading:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.nearinfinity.com/blogs/seth_schroeder/views_keep_your_sql_queries.html"&gt;Views keep your SQL queries DRY&lt;/a&gt; - Seth Schroeder&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15667" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/T-SQL/default.aspx">T-SQL</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/DRY/default.aspx">DRY</category></item><item><title>Conversion, conversion, conversion – EMC Conchango become Google Conversion Professionals!</title><link>http://blogs.conchango.com/ziazareemslade/archive/2009/07/02/conversion-conversion-conversion-emc-conchango-accredited-by-google.aspx</link><pubDate>Thu, 02 Jul 2009 14:26:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15665</guid><dc:creator>zia.zareem-slade</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img src="http://blogs.conchango.com/photos/conchango_bloggers/images/15686/original.aspx" title="gcp" alt="gcp" align="left" height="114" hspace="10" width="119"&gt; &lt;br&gt;This week it was announced that we, EMC Conchango, are one of the first partners to be accredited by Google in their new Conversion Professionals program. Not only are we delighted to have been selected after a rigorous process of interviews, exams and more interviews but more importantly we’re delighted that Google has got behind the whole analytics and optimisation piece. &lt;br&gt;&lt;br&gt;&lt;br&gt;Analytics and MVT (multivariate testing testing) are things we have been talking to clients about a lot over the last few years. And while we already provide services in this area it still amazes me that so many organisations overlook these tools – particularly in light of the economic situation we are in. &lt;br&gt;&lt;/p&gt;



&lt;p&gt;After all, if it was my website and someone told me that I could increase conversion by 2% – 12% then I’d be very, very interested!&amp;nbsp; The way we talk about it is that not having analytics or MVT in place is akin to not having store managers, footfall counters or clear stock positions in your stores! &lt;/p&gt;
&amp;nbsp;

&lt;object height="340" width="560"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/5F2e-5x4lfE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/5F2e-5x4lfE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="560"&gt;&lt;/object&gt;


&lt;p&gt;To see what Retail Week have to say about it then click &lt;a href="http://www.retail-week.com/technology/e-commerce/website-optimisation-firms-get-the-google-seal-of-approval/5004021.article" target="_blank"&gt;here&lt;/a&gt;&amp;nbsp; or for the full NMA article &lt;a href="http://www.nma.co.uk/news/google-sets-up%C2%A0accreditation-programme-to-safeguard-site-conversion/3001897.article" target="_blank"&gt;here&lt;/a&gt; for the full Google Conversion Professional microsite click &lt;a href="http://www.google.co.uk/intl/en/landing/conversion/" target="_blank"&gt;here &lt;/a&gt;or to talk about the services we offer in this area then email us on Experience.Planning@emc.com&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15665" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Odd+Experiences/default.aspx">Odd Experiences</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Strategy/default.aspx">Strategy</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Shopping/default.aspx">Shopping</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Ecommerce/default.aspx">Ecommerce</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Retail/default.aspx">Retail</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Experience+Planning/default.aspx">Experience Planning</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/High+Street/default.aspx">High Street</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Etail/default.aspx">Etail</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Economy/default.aspx">Economy</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Company/default.aspx">Company</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Optimisation/default.aspx">Optimisation</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Performance+Measurement/default.aspx">Performance Measurement</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Multivariate/default.aspx">Multivariate</category><category domain="http://blogs.conchango.com/ziazareemslade/archive/tags/Analytics/default.aspx">Analytics</category></item><item><title>Workflow 4.0 Persistence/ Long Running Workflows</title><link>http://blogs.conchango.com/owainwragg/archive/2009/07/02/workflow-4-0-persistence-long-running-workflows.aspx</link><pubDate>Thu, 02 Jul 2009 09:06:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15661</guid><dc:creator>Owain.Wragg</dc:creator><slash:comments>0</slash:comments><description>&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;I have recently started to look at the changes introduced with Visual Studio 2010 and .NET Framework 4 Beta 1, the first thing I have looked at is Workflow Foundation 4.0. In this post I will create a simple example which illustrates a long running workflow which persists its state to SQL Server.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;The example scenario is as follows; a request requiring approval is submitted to a workflow (via a WCF Service) and the workflow waits until at some point in the future the approval for the request is received and based on whether &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;the request is approved or not the workflow performs&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;a difference action. After the initial request has been submitted the workflow instance is persisted and unloaded and it is only reloaded when the approval for the request is submitted.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Below is the WCF service contract exposed by the RequestService, this service is called by clients who submit both requests and request approvals.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[&lt;SPAN style="COLOR:#2b91af;"&gt;ServiceContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;interface&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;IRequestService&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[&lt;SPAN style="COLOR:#2b91af;"&gt;OperationContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; AddRequest(&lt;SPAN style="COLOR:#2b91af;"&gt;Request&lt;/SPAN&gt; request);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[&lt;SPAN style="COLOR:#2b91af;"&gt;OperationContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; SubmitApproval(&lt;SPAN style="COLOR:#2b91af;"&gt;RequestApproval&lt;/SPAN&gt; requestApproval);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;As you can see the service contract is very simple and consists of only two operations, shown below is the service implementation.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;RequestService&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;IRequestService&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;readonly&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ProcessRequestWorkflowHost&lt;/SPAN&gt; processRequestHost = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ProcessRequestWorkflowHost&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; AddRequest(&lt;SPAN style="COLOR:#2b91af;"&gt;Request&lt;/SPAN&gt; request)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;processRequestHost.ProcessRequest(request);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; SubmitApproval(&lt;SPAN style="COLOR:#2b91af;"&gt;RequestApproval&lt;/SPAN&gt; requestApproval)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;processRequestHost.SubmitRequestApproval(requestApproval);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;As you can see both operations forward the request to the ProcessRequestWorkflowHost class, this class is responsible for managing the creation, loading and persistence of the workflow instances. For this example I decided to manage the workflow instances manually in order to give me more control over the persistence of the workflow instances and the resumption of the workflow instances when approvals are submitted.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;The diagram below shows the workflow that is executed to process a request submission.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;IMG src="http://blogs.conchango.com/photos/conchango_bloggers/images/15658/original.aspx"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;When the workflow is executed the WriteLine activity is called which simply writes out the passed in request’s details (the request is passed in as an argument to the workflow) to the console application which is hosting the RequestService, then the WaitForRequestApproval activity is executed. This activity is implemented in C# as shown below.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WaitForRequestApproval&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;NativeActivity&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;RequestApproval&lt;/SPAN&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;InArgument&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;&amp;gt; RequestId { &lt;SPAN style="COLOR:blue;"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR:blue;"&gt;set&lt;/SPAN&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Execute(&lt;SPAN style="COLOR:#2b91af;"&gt;ActivityExecutionContext&lt;/SPAN&gt; context)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Create the bookmark which waits for the request approval&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; name = &lt;SPAN style="COLOR:#a31515;"&gt;"Approval_"&lt;/SPAN&gt; + &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.RequestId.Get(context).ToString();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;context.CreateNamedBookmark(name, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;BookmarkCallback&lt;/SPAN&gt;(Callback));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; Callback executed when the bookmark is resumed&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;param name="context"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;param name="bookmark"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;param name="state"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Callback(&lt;SPAN style="COLOR:#2b91af;"&gt;ActivityExecutionContext&lt;/SPAN&gt; context, &lt;SPAN style="COLOR:#2b91af;"&gt;Bookmark&lt;/SPAN&gt; bookmark, &lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; state)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;RequestApproval&lt;/SPAN&gt; approval = (&lt;SPAN style="COLOR:#2b91af;"&gt;RequestApproval&lt;/SPAN&gt;)state;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;context.SetValue(&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.Result, approval);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;The WaitForRequestApproval activity defines a bookmark named “Approval_&lt;I style="mso-bidi-font-style:normal;"&gt;RequestId&lt;/I&gt;”, a bookmark defines a point at which the workflow waits for further information before execution can be continued when the bookmark is resumed the Callback method will be executed and the workflow will continue as normal.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;In our example once the bookmark has been resumed an If activity is executed (as illustrated in workflow diagram shown above), the expanded If activity is shown below.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;IMG src="http://blogs.conchango.com/photos/conchango_bloggers/images/15659/original.aspx"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;The If activity executes one of two WriteLine activities based on evaluating the condition (RequestApproval.IsApproved), these WriteLine activities simple write out the request Id and the approval status to the console. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Finally shown below is the ProcessRequestWorkflowHost class, this class controls the creation of the workflow instances, the persistence of the workflow instances, the loading of workflow instances and bookmark resumption.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ProcessRequestWorkflowHost&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;IDictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;, &lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt;&amp;gt; requestToInstanceMapping;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; ProcessRequestWorkflowHost()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Setup mappings between request and workflow instance id - do this to save managing&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// the mappings else where&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.requestToInstanceMapping = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Dictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;, &lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.requestToInstanceMapping.Add(4, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;"56A2CA8F-3C64-485E-A0BC-A4F0E880898C"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.requestToInstanceMapping.Add(5, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;"F130B19A-1B4B-43DA-B75B-6C58F0CC6419"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.requestToInstanceMapping.Add(13, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;"3B70FAFF-5FDC-4159-836F-DFD4DFF2EE4E"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.requestToInstanceMapping.Add(26, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;"BFB619F7-2BD7-4D52-99FA-97C20FA95DCE"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.requestToInstanceMapping.Add(55, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;"2D15D97F-ABCB-45C5-AC7D-F18A64F1E2E3"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; Loads a workflow instance with the specified&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; instance id&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;param name="instanceId"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Workflow instance id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Workflow instance&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowInstance&lt;/SPAN&gt; LoadInstance(&lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt; instanceId)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Setup the persistance&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;PersistenceProvider&lt;/SPAN&gt; persistenceProvider = &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.CreatePersistanceProvider(instanceId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Load the ProcessRequest workflow&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowElement&lt;/SPAN&gt; wf = &lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowXamlServices&lt;/SPAN&gt;.Load(&lt;SPAN style="COLOR:#2b91af;"&gt;File&lt;/SPAN&gt;.OpenRead(&lt;SPAN style="COLOR:#a31515;"&gt;"ProcessRequest.xaml"&lt;/SPAN&gt;)) &lt;SPAN style="COLOR:blue;"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowElement&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Retrieve the workflow instance&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowInstance&lt;/SPAN&gt; instance = &lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowInstance&lt;/SPAN&gt;.Load(wf, persistenceProvider);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; instance;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; Processes the specified Request&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;param name="request"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Request to process&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; ProcessRequest(&lt;SPAN style="COLOR:#2b91af;"&gt;Request&lt;/SPAN&gt; request)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Get the workflow instance id to use&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt; instanceId = &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.requestToInstanceMapping[request.Id];&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Setup the arguments that are passed to the workflow&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;IDictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;, &lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt;&amp;gt; input = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Dictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;, &lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;input.Add(&lt;SPAN style="COLOR:#a31515;"&gt;"Request"&lt;/SPAN&gt;, request);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Load the ProcessRequest workflow&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowElement&lt;/SPAN&gt; wf = &lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowXamlServices&lt;/SPAN&gt;.Load(&lt;SPAN style="COLOR:#2b91af;"&gt;File&lt;/SPAN&gt;.OpenRead(&lt;SPAN style="COLOR:#a31515;"&gt;"ProcessRequest.xaml"&lt;/SPAN&gt;)) &lt;SPAN style="COLOR:blue;"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowElement&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Create the workflow instance specifying the arguments and instance id&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowInstance&lt;/SPAN&gt; instance = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowInstance&lt;/SPAN&gt;(wf, input, instanceId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// When instance is idle unload and persist the isntance&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;instance.OnIdle = () =&amp;gt; &lt;SPAN style="COLOR:#2b91af;"&gt;IdleAction&lt;/SPAN&gt;.Unload;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Setup the persistance&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;PersistenceProvider&lt;/SPAN&gt; persistenceProvider = &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.CreatePersistanceProvider(instanceId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;instance.Extensions.Add(persistenceProvider);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Start the workflow instance&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;instance.Run();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; Submits the request approval&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;param name="approval"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Request approval&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; SubmitRequestApproval(&lt;SPAN style="COLOR:#2b91af;"&gt;RequestApproval&lt;/SPAN&gt; approval)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;&lt;SPAN style="COLOR:green;"&gt;// Get the workflow instance id to use&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt; instanceId = &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.requestToInstanceMapping[approval.RequestId];&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Load the workflow instance&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WorkflowInstance&lt;/SPAN&gt; instance = &lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.LoadInstance(instanceId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Resume the workflow at the bookmark&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; bookmark = &lt;SPAN style="COLOR:#a31515;"&gt;"Approval_"&lt;/SPAN&gt; + approval.RequestId.ToString();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;instance.ResumeBookmark(bookmark, approval);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; Creates the persistence provider&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;param name="instanceId"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Workflow instance the persistence provider is for&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Persistance provider&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;PersistenceProvider&lt;/SPAN&gt; CreatePersistanceProvider(&lt;SPAN style="COLOR:#2b91af;"&gt;Guid&lt;/SPAN&gt; instanceId)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; persistenceConnectionString = &lt;SPAN style="COLOR:#a31515;"&gt;"Data Source=localhost;Initial Catalog=SampleInstanceStore;Integrated Security=True;Asynchronous Processing=True"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Create and open the provider factory&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;SqlPersistenceProviderFactory&lt;/SPAN&gt; factory = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;SqlPersistenceProviderFactory&lt;/SPAN&gt;(persistenceConnectionString, &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;, &lt;SPAN style="COLOR:blue;"&gt;false&lt;/SPAN&gt;, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;TimeSpan&lt;/SPAN&gt;(0, 1, 0));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&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;factory.Open();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Create the persistance provider&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;PersistenceProvider&lt;/SPAN&gt; persistenceProvider = factory.CreateProvider(instanceId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; persistenceProvider;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9.5pt;mso-ansi-language:EN-US;mso-bidi-font-family:Consolas;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;The constructor creates a list of mappings between request ids and workflow instance ids; I have done this to save adding further code to manage the relationship between the requests and the workflow instances – so therefore at the moment this example will only work with a specified set of request ids (4, 5, 13, 26 and 55).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;The ProcessRequest method is called by the RequestService when a new request is submitted, the method creates the arguments to pass to the ProcessRequest workflow, creates a new workflow instance adds the persistence provider to the instance (enabling the instance to be persisted) and finally executes the workflow. Note that the workflow instance is only persisted when the instance becomes idle, when the OnIdle event is raised by the instance the IdleAction is set to Unload – which specifies that the workflow instance is persisted and then unloaded.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;At some point in the future the approval for the request will be submitted, the SubmitRequestApproval method is called by the RequestService passing in the request approval, firstly this method calls the LoadInstance method which retrieves the specified workflow instance from the persistence store, then the previously created bookmark is resumed therefore enabling the workflow to continue to completion.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;When developing this sample application I had a few problems getting the persistence to work it turns out this is because for certain persistence scenarios you need to use the Workflow 3.5 SQL Schema and whilst for others the Workflow 4.0 SQL Schema. In short for WorkflowServiceHost usage you need to use the 4.0 schemas but for WorkflowInstance usage the 3.5 schema. Have a look at &lt;/FONT&gt;&lt;A href="http://kennyw.com/work/workflow/350"&gt;&lt;FONT color=#800080 size=3 face=Calibri&gt;http://kennyw.com/work/workflow/350&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; for more information; it seems that this feature will be fixed in beta 2.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;I’ve attached the solution to this post; the solution also contains a readme file which explains how to setup the persistence and how to run the application.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Note: - That this post was written using Beta 1 of the .NET Framework 4.0 so therefore changes in future releases of the .NET Framework might break the example application&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15661" width="1" height="1"&gt;</description><enclosure url="http://blogs.conchango.com/owainwragg/attachment/15661.ashx" length="28099" type="application/x-zip-compressed" /><category domain="http://blogs.conchango.com/owainwragg/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.conchango.com/owainwragg/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.conchango.com/owainwragg/archive/tags/Long+Running+Workflows/default.aspx">Long Running Workflows</category><category domain="http://blogs.conchango.com/owainwragg/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.conchango.com/owainwragg/archive/tags/Workflow+4.0/default.aspx">Workflow 4.0</category><category domain="http://blogs.conchango.com/owainwragg/archive/tags/Persistence/default.aspx">Persistence</category><category domain="http://blogs.conchango.com/owainwragg/archive/tags/Windows+Workflow/default.aspx">Windows Workflow</category><category domain="http://blogs.conchango.com/owainwragg/archive/tags/.NET+Framework+4.0/default.aspx">.NET Framework 4.0</category><category domain="http://blogs.conchango.com/owainwragg/archive/tags/Beta+1/default.aspx">Beta 1</category></item><item><title>WCF Error: Large amounts of data from client gives error: The remote server returned an unexpected response: (400) Bad Request</title><link>http://blogs.conchango.com/merrickchaffer/archive/2009/07/02/wcf-system-net-webexception-large-amounts-of-data-from-client-gives-error.aspx</link><pubDate>Thu, 02 Jul 2009 08:40:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15660</guid><dc:creator>merrick.chaffer</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;&lt;FONT color=#000080&gt;The remote server returned an unexpected response: (400) Bad Request.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;Server stack trace: &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp; at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp; at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp; at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp; at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp; at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp; at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp; at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:navy;mso-bidi-font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp; at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;If you get the above error when trying to send large amounts of data from a client application to a WCF service then the following changes should be made on both the client and server application configuration files.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Client has this...&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;binding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;MyServiceEndPoint&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;closeTimeout&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;00:01:00&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;openTimeout&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;00:01:00&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;receiveTimeout&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;00:10:00&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;sendTimeout&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;00:01:00&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;allowCookies&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;false&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;bypassProxyOnLocal&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;false&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;hostNameComparisonMode&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;StrongWildcard&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;maxBufferSize&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;500000000&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;maxBufferPoolSize&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;524288&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;mso-highlight:yellow;"&gt;maxReceivedMessageSize&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;mso-highlight:yellow;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;500000000&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;messageEncoding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;Text&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;textEncoding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;utf-8&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;transferMode&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;Buffered&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;useDefaultWebProxy&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;readerQuotas&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;maxDepth&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;maxStringContentLength&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;maxArrayLength&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;maxBytesPerRead&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;maxNameTableCharCount&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;security&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;mode&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;None&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;transport&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;clientCredentialType&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;None&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;proxyCredentialType&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;None&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;realm&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;""&lt;SPAN style="COLOR:blue;"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;message&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;clientCredentialType&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;UserName&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;algorithmSuite&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;Default&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;security&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;binding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;and&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;endpoint&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;address&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;http://localhost/MyService.Service.Host/MyService.svc&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;binding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;basicHttpBinding&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;bindingConfiguration&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;mso-highlight:yellow;"&gt;MyServiceEndPoint&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;contract&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;MyService.ServiceProxy.MyServiceProxy.MyServiceContract&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;behaviorConfiguration&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;mso-highlight:yellow;"&gt;maxItemsInObjectGraphBehaviour&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;MyServiceEndPoint&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;and&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;behaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;endpointBehaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;behavior&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;mso-highlight:yellow;"&gt;maxItemsInObjectGraphBehaviour&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;dataContractSerializer&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;maxItemsInObjectGraph&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483646&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;behavior&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;endpointBehaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;behaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;STRONG&gt;Server has this...&lt;/STRONG&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;o:p&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;bindings&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;basicHttpBinding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;binding&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;name&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;LargeMessageBinding&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;maxBufferSize&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;maxBufferPoolSize&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;maxReceivedMessageSize&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;readerQuotas&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;maxDepth&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;maxStringContentLength&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;maxArrayLength&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;maxBytesPerRead&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;maxNameTableCharCount&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;2147483647&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;binding&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-highlight:yellow;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;basicHttpBinding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;bindings&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;and&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;service&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;behaviorConfiguration&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;MyService.ServiceImplementation.MyService_Behavior&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;MyService.ServiceImplementation.MyService&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;endpoint&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;address&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;""&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;binding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;basicHttpBinding&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;bindingConfiguration&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="BACKGROUND:yellow;COLOR:blue;mso-highlight:yellow;"&gt;LargeMessageBinding&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;MyServiceEndPoint&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;bindingNamespace&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;http://mynamespace.com&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;contract&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;MyService.ServiceContracts.IMyServiceContract&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;endpoint&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;address&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;"&lt;SPAN style="COLOR:blue;"&gt;mex&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;binding&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;mexHttpBinding&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;contract&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;IMetadataExchange&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;service&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-no-proof:yes;mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15660" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/C_2300_+2.0/default.aspx">C# 2.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/.NET+3.0/default.aspx">.NET 3.0</category><category domain="http://blogs.conchango.com/merrickchaffer/archive/tags/Gotcha/default.aspx">Gotcha</category></item><item><title>Megastructure Datacentres</title><link>http://blogs.conchango.com/jamessaull/archive/2009/07/01/megastructure-datacentres.aspx</link><pubDate>Wed, 01 Jul 2009 20:31:10 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15654</guid><dc:creator>James.Saull</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I &lt;a href="http://blogs.conchango.com/jamessaull/archive/2008/09/01/megastructure-data-centres.aspx"&gt;suggested last year&lt;/a&gt; that National Geographic would probably not include Cloud Datacentres in their &lt;a href="http://channel.nationalgeographic.com/series/man-made/all/Overview"&gt;megastructures&lt;/a&gt; series. I am in Dublin just as MSFT launch their “&lt;a href="http://news.zdnet.co.uk/hardware/0,1000000091,39669283,00.htm"&gt;mega datacentre&lt;/a&gt;”. Perhaps they should!&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15654" width="1" height="1"&gt;</description></item><item><title>How cloud operating systems aren’t quite there yet</title><link>http://blogs.conchango.com/jamessaull/archive/2009/07/01/how-cloud-operating-systems-aren-t-quite-there-yet.aspx</link><pubDate>Wed, 01 Jul 2009 19:25:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15651</guid><dc:creator>James.Saull</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Shrink yourself to the size of an ant and think of a classic server as a mini data centre. Banks upon banks of memory, multiple disks, many CPU cores and even network interfaces. The OS manages all of the many processes and threads, sharing the resources amongst them and when they demand more resource it makes it available to them – on demand and apparently instantly. Importantly all the resources in my mini data centre genuinely appear as one enormous pool available to all my applications at once. My application runs in a process and doesn’t care whether it consumes one core or 8. So what is a cloud OS?&lt;/P&gt;
&lt;P&gt;Cloud OSes do appear to be quite different because somehow I need to play a part traditionally played by the OS. When my application demands more resources I get involved. Typically I need to allocate more virtual machines or storage and quite likely I need to tell my application to extend itself into this new resource (i.e. install my application components and bring it into the pool/farm/cluster/you-name-it). Then when that demand passes I need to consider releasing those resources.&lt;/P&gt;
&lt;P&gt;Consider for a moment too the utility model, or to use a common analogy: “cloud computing is like the power grid – on demand, just in time, scale up and down”. When I need to consume more power, the statistically multiplexed grid allows me to draw as much as I want. There are even special burst providers like pumped storage schemes to handle the gigantic surge of kettles going on after a football game. If I need a milliamp for a second or 10 amps for an hour it makes no odds to me(!).&lt;/P&gt;
&lt;P&gt;Again the cloud seems to break this analogy. My application will consume up to the limit of pre-allocated resources and stop. The data centre might have a potential for a billion petaflops but the cloud OS can’t just grant them to my app. It is a bit like knowing that I am about to plug in my electric car and ringing the grid to provision me more current.&lt;/P&gt;
&lt;P&gt;Once upon a time the server OS used to be quite crude but they evolved and we take their sophistication for granted now. Most people struggle to even describe what an OS does. At the moment I need to resort to special software like &lt;A href="http://www.appistry.com/"&gt;Appistry&lt;/A&gt; to help me virtualise my application so that when I &lt;A href="http://aws.amazon.com/autoscaling/"&gt;auto scale&lt;/A&gt; up/down my Amazon machine images the application can do so too. How long before these capabilities are part of the cloud OS allowing applications to genuinely scale up and down very discretely? Will all the CPUs in the cloud data centre eventually present themselves as a single virtual resource with the cloud OS presenting abstractions, much like a regular process, as execution containers or in the cloud OS will the virtual machine always get in the way?&lt;/P&gt;
&lt;P&gt;It feels as if the virtual machine is a convenient way of *currently* spanning large amounts of hardware, but is it a stop gap? Will a genuine cloud OS come along that behaves like a regular server OS atop a giant data centre? It will be happy to present 24TB of apparently contiguous RAM and 1000 cores to a single “process”. It will be like NUMA and move application data across the server farm to the CPU that has been scheduled to work on it. Do we need it? Are we content for the next few decades to worry about how to span virtual machines and make them collaborate and auto-scale? Is the VM the new Process?&lt;/P&gt;
&lt;P&gt;P.S. I appreciate that in many clouds, storage capacity seems to have been the first to become a truly virtualised and discrete resource, although storage performance hasn’t (i.e. most solutions are too blunt to configure for different performance characteristics etc.)&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15651" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/jamessaull/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.conchango.com/jamessaull/archive/tags/Virtualisation/default.aspx">Virtualisation</category><category domain="http://blogs.conchango.com/jamessaull/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category></item><item><title>Big Ideas vs. Small Fires</title><link>http://blogs.conchango.com/deanwilson/archive/2009/06/30/big-ideas-vs-small-fires.aspx</link><pubDate>Tue, 30 Jun 2009 19:23:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15647</guid><dc:creator>dean.wilson</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Every once in a while you read something that effortlessly communicates the essence of a whole load of jumbled-up thoughts that have been looking for a form of expression, that makes you think ‘That’s it! That’s what I wanted to say!’&lt;/p&gt;&lt;p&gt;&lt;br&gt;Such moments for me are mixed with happiness at the thought of discovering someone who is on the same wavelength, and slight frustration that I wasn’t able to blurt out such a succinct communication myself.&lt;/p&gt;&lt;p&gt;&lt;br&gt;Anyway, 10 minutes before writing this post I had one such moment while reading the following: &lt;br&gt;&lt;a href="http://anaandjelic.typepad.com/i_love_marketing/2009/06/the-end-of-the-big-idea.html" title="The problem with the big idea"&gt;http://anaandjelic.typepad.com/i_love_marketing/2009/06/the-end-of-the-big-idea.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;For me, the concept of Small Fires neatly summarises the frustration I had at the tale end of my previous career in marketing and my subsequent decision to seek the company of people who deliver brand essence through doing.&lt;/p&gt;&lt;p&gt;&lt;br&gt;At this point I would love to link to a video counterpoint. It involves the MD of a respectable UK marketing agency trying to get across some similar thoughts*. Only problem is he didn’t quite manage to un-jumble them, and confused matters with a badly thought through war metaphor.&lt;/p&gt;&lt;p&gt;&lt;br&gt;But it seems that the ‘conversation’ as ended with the video’s removal from brandrepublic.com&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;*To be fair, they probably weren’t his in the first place.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15647" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Experience+Planning/default.aspx">Experience Planning</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Small+Fires/default.aspx">Small Fires</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Brand/default.aspx">Brand</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Brand+Experience/default.aspx">Brand Experience</category></item><item><title>Viva Cloud! Viva!</title><link>http://blogs.conchango.com/simonmunro/archive/2009/06/30/viva-cloud-viva.aspx</link><pubDate>Tue, 30 Jun 2009 13:48:48 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15646</guid><dc:creator>simon.munro</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Lets face it – most IT systems don’t really work as well as we would like.&amp;#160; Surely by now we would have figured out how to build systems where you don’t have to have a different username/password for ever system accompanied by different ‘forgot password’ functionality for the same?&amp;#160; Surely by now someone would have figured out, and packaged, a way to capture time easily, qucikly and effectively instead of that gawdawful ERP system that I am forced to use?&amp;#160; Surely someone could have fixed Outlook by now so that you don’t poke with the mouse screaming ‘What are you frikkin’ doing now, stupid email programme!?’.&amp;#160; And that is just for simple user oriented tasks.&amp;#160; What about the fancy enterprise package that requires you to run reports from three different places and paste them into Excel so that it can be ‘adjusted’ and so that somebody can make sense of the data?&amp;#160; What about core enterprise systems that are so bad at interfacing that it seems like the only way to get data in is through their painfully slow proprietary interface that feels like it is only one generation away from betamax tapes?&amp;#160; How many systems are out there that barely function and are kept going like puppies on a leash by overworked and irritated system operators.&lt;/p&gt;  &lt;p&gt;Depending on your point of view this could be a good state of affairs or a bad one.&amp;#160; Vendors of software that is at the core of the enterprise are interested in protecting their investments and annual license fees, so a system that needs a swarm of consultants and a good dose of fear that it may go wrong is, at least to them, a good thing.&amp;#160; Yet others (customers, users or technical people)&amp;#160; may view that the same problems and the same mistakes that are being made again and again should, at some point, stop.&amp;#160; Unfortunately the utopia of redeveloping all enterprise software (like a regular fresh Windows install) to make it all shiny and new is never going to happen, at all or in part – there is just too much there.&amp;#160; There is mainframe era software, ERP systems based on pre-web architectures pushed in to enterprises to dodge Y2K, dotcom era VB applications and badly designed databases, websites that still support old browsers (and the browsers themselves), hundreds and thousands of Excel spreadsheets (with macros and formulas written by long departed users) which are pretty much used to run the business.&amp;#160; All of these systems are costing a fortune to maintain and the developers, whether in-house, consulting or large vendors are rushing to add features to the existing applications and architectural reworks seem to yield little (initial) benefit.&amp;#160; An ERP vendor may need to commit $100 million to redeveloping one particular package that may not result in more license sales and not only that money does not guarantee that the final system will be better, but the competitors may be racing ahead bolting features onto their systems while a development team is tied up in architectural rework.&lt;/p&gt;  &lt;p&gt;Some of us are trying to change this pattern and may have been striving towards the vision of better software for years – inching closer and closer as time ticks by.&amp;#160; If I just think about the people that I work with; we have the agilists, the *DDers, SOLIDers, service pushers, design by contracters, the UXers and others - all are trying in their own way to push the engineering, architecture, design and interaction envelope to get rid of the crap systems out there that our customers, and as users ourselves, have to deal with daily.&amp;#160; We act as (dare I use the analogy?) as terrorist cells that plant our projects as IED’s, hoping to rock the establishment – sometimes getting media attention and starting a revolution and often leaving little more than a small crater on a rural road that eventually gets paved over with Excel spreadsheets.&lt;/p&gt;  &lt;p&gt;One of the reasons why I latched on to the cloud was that I saw patterns in developing cloud applications that in some ways nudge and in other ways force developers of cloud oriented solutions to think things through in a way that would ultimately result in better engineered and implemented solutions.&amp;#160; The cloud forces us to deal with concurrency, consistency, lack of physical access, decoupling, contracts, reliability, peak demand, security, message orientation, queues, data performance and a long list of things that we generally know about but often choose to ignore in our existing architectures and projects in exchange for pragmatism and a belief that ‘good enough’ is, well, good enough.&lt;/p&gt;  &lt;p&gt;While my views on cloud computing are broader than many of the vendors out there, I have been fairly supportive of technologies which may not technically or academically be defined as cloud but, by implementing some of the newer technical memes could at a push be branded as ‘cloud’.&amp;#160; After all since ‘the cloud’ is ill defined and without consensus, anyone can put a ‘cloud’ sticker on a product and proclaim it to be so – a few striking philosophers will not change the market forces.&amp;#160; So I have been openly supportive of the private cloud which seems, to me at least, to be a good platform for vendors to re-badge their existing products and sell them back into the same enterprise data centres that they always have.&amp;#160; The technology that supports the private cloud, using virtualization and so on, should ultimately find its way onto the public cloud where I am hoping that the changes will really be taking place.&lt;/p&gt;  &lt;p&gt;However, it seems that the private cloud package pushers are wrestling ‘the cloud’ term from broader use and moulding the principles to suit their &lt;strike&gt;world domination&lt;/strike&gt; product roadmaps.&amp;#160; It is to be expected as the marketing money and attention, at least in enterprises, it not to spend vast amounts of money turning architectures upside down for debatable benefit, but rather spending money with trusted vendors and established systems while trying to eke out as much performance and efficiency as possible.&amp;#160; So when I hear pro-privates saying thinks like &lt;em&gt;‘applications &amp;lt;need to be&amp;gt; re-thought, re-architected and re-written to take full advantage of the cloud &amp;lt;is&amp;gt; complete and utter nonsense’ , &lt;/em&gt;I completely understand where the message comes from but I slump my shoulders as I see another opportunity to build better systems slip by.&amp;#160; The vision of the cloud, to me, is not to have a bunch of Excel spreadsheets now running in a VM that lives in the cloud – I want to do away with those spreadsheets, and possibly the system that exported them in the first place – altogether and forever.&amp;#160; I don’t believe that the cloud is about taking badly designed databases, that have to have three full-time DBA’s tweaking, tuning and coaxing them along, moved to ‘the cloud’ so that those DBA’s can now work from home, or for less, or whatever the promised benefit may be.&lt;/p&gt;  &lt;p&gt;I will be the first to admit that my views don’t lend themselves towards a packable software product, I gave up on that a while ago when the products that I was involved with were so awesome and game-changing that the effort to sell and explain them, by forcing a mind-shift, was so high that it was not viable.&amp;#160; I understand how the commercial needs of selling product and the desire to make money in &lt;em&gt;this quarter &lt;/em&gt;need to be balanced against the desire for engineering elegance and people learned long ago not to bring me along for product pre-sales.&amp;#160; However, despite all my understanding, I personally and professionally believe that the previously mentioned time recording application that I use should not be hosted in the cloud – it should be dragged out, blindfolded and shot.&amp;#160; Maybe it will… when the revolution comes.&lt;/p&gt;  &lt;p&gt;Simon Munro&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/simonmunro"&gt;@simonmunro&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15646" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/simonmunro/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://blogs.conchango.com/simonmunro/archive/tags/Enterprise+Architecture/default.aspx">Enterprise Architecture</category><category domain="http://blogs.conchango.com/simonmunro/archive/tags/cloud+computing/default.aspx">cloud computing</category></item><item><title>“The ear is totally neglected. Everything is centred on the eye”</title><link>http://blogs.conchango.com/richardwand/archive/2009/06/30/the-ear-is-totally-neglected-everything-is-centred-on-the-eye.aspx</link><pubDate>Tue, 30 Jun 2009 11:33:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15644</guid><dc:creator>Richard.Wand</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;I
borrowed this quote from Daniel Barenboim’s talk on the Nature and Power of
Music. Most technological experiences, especially online, have been primarily
visual experiences.&amp;nbsp; The web gives us a visual workout but few online
experiences stimulate our hearing to create fuller sensory experiences.&amp;nbsp;
With the &lt;a href="http://www.microsoft.com/surface/" target="_blank"&gt;Microsoft Surface&lt;/a&gt;
interaction paradigm it’s time to prepare for an audio assault as sound is
getting the consideration it deserves.&amp;nbsp; Interaction Designers are digging
deep in to their auditory and visual toolkit as sound gets crafted in to the
Surface experience. The ear is back in vogue. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;OK,
so the gaming industry has been treating our senses to full immersive
experiences for some time but most other technological experiences have relied
heavily on visual alone. &amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;Surface
doesn't just encourage but mandates a fuller sensory experience.&amp;nbsp; But are
agencies ready to build auditory experiences and are clients ready to pay for
sound design?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;If
you can communicate the return on investing in sound design to your clients
then they will pay for it. Sound is not there just to titillate the
senses.&amp;nbsp; It is used to enhance a brand, stir emotion, create immersive
experiences and communicate information. When users manipulates digital
content, information is revealed through sound, visual feedback and movement.
Sound is not simply about providing a fuller sensory experience but acts as
another information layer. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;





&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;I
recently met with Andrew Diey, Founder &amp;amp; CEO of &lt;span&gt;&lt;a href="http://www.radium-audio.com/" target="_blank"&gt;Radium Audio&lt;/a&gt;&lt;/span&gt;,
a leading music and sound design company that have experience in designing
sound solutions for Surface experiences. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;Does
Andrew feel that clients are ready?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;



&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;Andrew
doesn’t see such digital auditory experiences as a huge leap.&amp;nbsp; Advertisers
know the importance of sound to enhance a brand.&amp;nbsp; This is not about
introducing something new but transferring a proven art to a new
paradigm.&amp;nbsp; Andrew believes clients are ready but it’s down to agencies to
communicate the value of sound. Andrew suggested agencies establish a manifesto
which defines the terms on which they approach immersive experience
design.&amp;nbsp; The manifesto should outline principles, policy and action plans
for future work in immersive experiences.&amp;nbsp; Most agencies have a design
manifesto but does it include sound?&amp;nbsp; If you want your client to buy in to
sound design then you need to plan for it from the beginning.&amp;nbsp; The task of
getting your client to understand the value depends on your belief and
recognition that sound is critical to the delivery of a full sensory
experience.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;Are
agencies ready?&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;
&amp;nbsp;Yes.&amp;nbsp; It hasn’t been about not having the sound design know-how but
more so about not having an environment where sound design is treated with the
same importance as visual design.&amp;nbsp; Most agencies that specialise is online
solutions may not be experienced in sound but with experienced sound designers
such as Radium Audio there is no reason for agencies not to be ready. Sound is
part of an interaction designers domain to define audio feedback that
complements the interaction and visual design. The brief is then given to the sound
designer, internal or external, to weave their&amp;nbsp; magic and create seamless
experiences between the audio and interaction. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;At EMC Conchango we
have in-house sound design capabilities but we are not professional Sound
Designers. For superior production and bespoke sound design we look to work
with professional sound designers. We employ experienced Art Directors and
Creative Designers to achieve our creative vision.&amp;nbsp; Our approach to audio
is the same.&amp;nbsp; To craft an immersive auditory experience we need to work
with the best.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoPlainText"&gt;&lt;span style="font-size:10pt;font-family:'Arial','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;So
there is no reason why we should not be entering a new sensory era of
compelling and immersive experience that combine sight and sound. It’s now up to us
to be heard...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15644" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/richardwand/archive/tags/interactive+media/default.aspx">interactive media</category><category domain="http://blogs.conchango.com/richardwand/archive/tags/microsoft+surface/default.aspx">microsoft surface</category><category domain="http://blogs.conchango.com/richardwand/archive/tags/multi+touch/default.aspx">multi touch</category><category domain="http://blogs.conchango.com/richardwand/archive/tags/innovation/default.aspx">innovation</category><category domain="http://blogs.conchango.com/richardwand/archive/tags/information/default.aspx">information</category><category domain="http://blogs.conchango.com/richardwand/archive/tags/emc+conchango/default.aspx">emc conchango</category></item><item><title>Azure worker role development tips</title><link>http://blogs.conchango.com/jamiethomson/archive/2009/06/29/azure-worker-role-development-tips.aspx</link><pubDate>Mon, 29 Jun 2009 13:29:41 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15635</guid><dc:creator>jamie.thomson</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Just lately I’ve been doing a lot of messing around with Windows Azure the main focus of which has been exploring Azure storage (tables, queues, blobs) and how those things can be manipulated from Azure worker roles. One output from that “messing around” has been my &lt;a href="http://tweetpoll.cloudapp.net/"&gt;Tweetpoll&lt;/a&gt; application (read more: &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2009/05/06/tweetpoll-my-first-windows-azure-application-is-live.aspx"&gt;Tweetpoll my first Windows Azure application is live&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Since then I’ve found some blog resources that would have been useful during development had I found them earlier so I’m linking to them from here mainly so that I can easily find them again but also so that other people might be made aware of them because there’s some really good content here.&lt;/p&gt;  &lt;p&gt;Firstly, &lt;a href="http://blogs.msdn.com/domgreen"&gt;Dom Green&lt;/a&gt; has developed a library that provides rich application tracing capabilities on top of Azure’s bog standard logging mechanisms. Read more at &lt;a href="http://blogs.msdn.com/domgreen/archive/2009/06/29/azuretrace-managing-all-your-azure-logging-needs.aspx"&gt;AzureTrace … managing all your Azure Logging Needs&lt;/a&gt;. I’ve put together something slightly similar myself recently but its not as feature rich as Dominic’s and, as anyone at &lt;strike&gt;Conchango&lt;/strike&gt; &lt;a href="http://www.emc.com/services/index.htm"&gt;EMC Consulting&lt;/a&gt; will tell you, I’m no .Net expert by any stretch of the imagination so I’ll be working to put Dom’s library into my own stuff forthwith.&lt;/p&gt;  &lt;p&gt;Secondly, Dom &lt;a href="http://blogs.msdn.com/domgreen/archive/2009/02/08/building-reliable-azure-processes.aspx"&gt;linked&lt;/a&gt; to a great series of articles from &lt;a href="http://blogs.msdn.com/neilkidd/default.aspx"&gt;Neil Kidd&lt;/a&gt; which cover how we could (and should) build reliable Azure worker roles. Those links:&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a href="http://blogs.msdn.com/neilkidd/archive/2008/12/08/building-a-reliable-windows-azure-process-part-1.aspx"&gt;Part 1 – Building a Reliable Windows Azure Process&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/neilkidd/archive/2008/12/08/reliable-azure-processes-part-2-was-part-1-thread-safe.aspx"&gt;Part 2 – Was Part 1 Thread Safe?&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/neilkidd/archive/2008/12/10/reliable-azure-processes-part-3-dealing-with-errors.aspx"&gt;Part 3 – Dealing With Errors&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/neilkidd/archive/2008/12/15/reliable-azure-processes-part-4-scaling-down.aspx"&gt;Part 4 – Scaling Down&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Thank you Dom. Thank you Neil. There’s some really useful material here that I’ll be devouring constantly over the coming weeks and months.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@JamieT&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15635" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/windows+azure/default.aspx">windows azure</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/azure/default.aspx">azure</category></item><item><title>Developing the Smart Metering Proposition</title><link>http://blogs.conchango.com/deanwilson/archive/2009/06/26/developing-the-smart-metering-proposition.aspx</link><pubDate>Fri, 26 Jun 2009 08:51:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15617</guid><dc:creator>dean.wilson</dc:creator><slash:comments>0</slash:comments><description>I’ve been really impressed by the work a small team here has been doing with Microsoft on Smart Metering, and it has really got me thinking.&lt;br&gt;&lt;br&gt;I was discussing my interest in the subject over a pint with a friend last week. I consider this friend to be very technology aware (he’s generally ahead of me in terms of technology adoption at least) but to him smart metering was a novelty. &lt;br&gt;&lt;br&gt;Smart metering is already happening. It’s big in the states but is starting to take hold in the UK too. You can purchase a smart meter for electricity from Eon (amongst other places) or if you fancy something a bit more ‘designed’ try looking at &lt;a href="http://www.DIYKyoto.com" title="DIY Kyoto"&gt;DIYKyoto.com&lt;/a&gt;. There has also been a fair bit of press on the subject.&lt;br&gt;&lt;br&gt;Smart metering, along with Nike+, Wii fit and Fiat’s Ecodrive, fits in to the growing trend of &lt;a href="http://blogs.conchango.com/experienceplanning/archive/2009/06/25/living-by-numbers.aspx" title="Liviing by numbers blog post"&gt;Life by Numbers&lt;/a&gt;, or as I like to call it Stats for Everyday Folk. But it seems that there is still some way to go before it becomes a talking point in the same way that these other examples have. It’s still yet to reach its tipping point.&lt;br&gt;&lt;br&gt;Working on concepts to develop Smart Metering through more sophisticated interface design and functionality is definitely a great way to raise its profile but we also need to support this activity with some other thinking.&lt;br&gt;&lt;br&gt;Firstly, I think we need to focus on the essence of what is attractive about smart metering, which is fairly close to the essence of Nike+, i.e. personalised feedback. Returning to the conversation I had in the pub, for my friend the mere fact that he might be able to monitor his own energy usage in terms of what it was costing him in real-time, and instantly be able to do something about it, was enough.&lt;br&gt;&lt;br&gt;Secondly, we should also be thinking about the context in which Smart Metering will exist in the next five to ten years. Energy providers have been set the target of rolling out Smart Metering to every home in the UK by 2020. By that time will the ‘Millennials’, the kids who have known a world without internet access, be paying the bills? And how? Will they have more of a relationship with the Smart Meter in their lives? Or will it still just be a box under the stairs like it is for us?&lt;br&gt;&lt;br&gt;And thirdly, as we develop concepts for Smart Metering we should think more like marketers and consider the proposition we are developing, and the benefits it brings to consumers, as well as interfaces and functionality.&lt;br&gt;&lt;br&gt;By doing these things we can better understand the role that providers have to play in facilitating the relationship that consumers have with the numbers being generated.&amp;nbsp; And for providers who are concerned about loyalty and engagement that can only be a good thing.&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15617" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Experience+Planning/default.aspx">Experience Planning</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Smart+Metering/default.aspx">Smart Metering</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Insight/default.aspx">Insight</category><category domain="http://blogs.conchango.com/deanwilson/archive/tags/Trends/default.aspx">Trends</category></item><item><title>Living by numbers</title><link>http://blogs.conchango.com/experienceplanning/archive/2009/06/25/living-by-numbers.aspx</link><pubDate>Thu, 25 Jun 2009 18:43:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15614</guid><dc:creator>Experience.Planning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;An interesting article from Wired on how Nike ‘Unleashed the power of personal metrics’ is highlighted in our latest Experience Planning newsletter.&lt;br&gt;&lt;br&gt;It’s worth taking some time to read this article. Not only because it is a cracking good yarn told well, but because it:&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Highlights how insight in to human behaviour really helps to explain why simple ideas become remarkable&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Picks up on a trend that is likely to grow and have a considerable influence on the ways consumers relate to brands digitally simply through exposure to the numbers generated by day-to-day activities&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br&gt;Relating to insight in to human behaviour there are several powerful insights:&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;5 is a magic number – It only takes five runs with Nike+ and the runner is hooked on what their data tells them about themselves&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;People change their behaviour, often positively, when they are being observed, whether it is by a boss a community or even just ones self (self-tracking)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Personalised feedback is immensely powerful in terms of its ability to create positive feedback loops&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;But it is the observed trend of Living by Numbers that is potentially more interesting. Alternatively we might refer to this trend as Stats for Everyday Folk.&lt;br&gt;&lt;br&gt;The idea of analysing data to understand and improve performance is nothing new (and by the way we have a whole team dedicate to the subject). What is new is the emergence of tools, software and hardware, that expose the numbers behind the things that we do on a daily basis in ways that help us to see if what we are doing really does match up to what we would like to see happening.&lt;br&gt;&lt;br&gt;As well as Nike several other brands have started to plug-in to and explore this trend e.g. &lt;a href="https://www.wesabe.com" title="Wesabe"&gt;Wesabe&lt;/a&gt; in the financial sector, &lt;a href="http://www.nintendo.com/wiifit/launch/?ref=http://www.google.co.uk/search?q=nintendo+wii+fit&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-GB:official&amp;amp;client=firefox-a" title="Wii Fit"&gt;Nintendo with Wii Fit&lt;/a&gt;, and &lt;a href="http://www.fiat.co.uk/ecodrive/#ecodrive/intro" title="Fiat 500 ecodrive"&gt;Fiat with the Fiat 500 and Ecodrive&lt;/a&gt;. Currently a small team within EMC Conchango is working with Microsoft to explore the development of Smart Metering technology and churning out some really innovative concepts that may well change our energy consumption behaviour in the next 10 years and beyond (check out &lt;a href="http://blogs.conchango.com/julianharris/archive/2009/06/10/your-energy-use-in-the-eco-age-of-thrift-smart-meters-the-smart-grid-and-home-automation.aspx" title="Julian's post on Smart Metering"&gt;Julian Harris’ recent blog post&lt;/a&gt;). &lt;br&gt;&lt;br&gt;These examples are all genuinely interesting in their own right, and herald an exciting step change in the way that we relate to everyday life and the way that brands facilitate that relation. But we should probably note about these examples is that their subject matter lends itself well to generating numbers e.g. distance travelled, money spent, fuel consumed.&lt;br&gt;&lt;br&gt;So having identified the trend let’s set ourselves a challenge - while we are on the look out for ways to positively expose numbers and generate personalised feedback let’s turn over a few stones and see if we can’t expose the numbers hiding in some less obvious places. &lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15614" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/experienceplanning/archive/tags/Insight/default.aspx">Insight</category><category domain="http://blogs.conchango.com/experienceplanning/archive/tags/Experience+Planning/default.aspx">Experience Planning</category><category domain="http://blogs.conchango.com/experienceplanning/archive/tags/Smart+Metering/default.aspx">Smart Metering</category><category domain="http://blogs.conchango.com/experienceplanning/archive/tags/Trends/default.aspx">Trends</category></item><item><title>SDS is an Option for Azure Persistence</title><link>http://blogs.conchango.com/simonmunro/archive/2009/06/25/sds-is-an-option-for-azure-persistence.aspx</link><pubDate>Thu, 25 Jun 2009 15:28:52 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15610</guid><dc:creator>simon.munro</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;It was pointed out to me recently that my critical position on SQL Data Services and support for Azure in general are inconsistent, so I thought that a bit of clarification is required.&lt;/p&gt;  &lt;p&gt;SQL Server is my database of choice and have been using it since version 4.21, which was long before it became mainstream and I even spent a couple of years on Oracle to make sure that I had broader database experience and breathed a sigh of relief when I returned to the SQL Server world.&amp;#160; As a fan of SQL Server I am really supportive of any efforts by Microsoft to put SQL Server into the cloud and was very supportive of their SDS initiative; imagine having a database platform that was both cloud capable and on-premise – it would be the only one in the market.&amp;#160; As information has been made available about SDS, it seems that it has hit the scale-out problem of the SQL (relational) model and has no way of managing consistency and partition tolerance easily (at all?).&amp;#160; The cloud idea of scalability by adding additional nodes as required has been lost on the SDS team and they seem to remain quiet on the issue (my &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/01cf09ea-34dd-4431-97bd-c9ed41ded1eb"&gt;question on the forums&lt;/a&gt; from April 2009 is still unanswered).&lt;/p&gt;  &lt;p&gt;Now I don’t have a problem with the (lack of) scalability of SDS per se, rather the misleading marketing and evangelising that SDS is a relational database for the cloud and the implication that you develop as you normally would for a SQL database, without clearly outlining the risks associated with the lack of simple scalability.&amp;#160; In a &lt;a href="http://www.msteched.com/online/view.aspx?tid=1878a3f2-53a9-4c74-a4d7-d2cc7e4de70c"&gt;Tech-Ed video earlier this year&lt;/a&gt; members of the SDS team &lt;strong&gt;jovially&lt;/strong&gt; discuss the approaches to handle scalability on SDS which comes down to two things 1) Database sharding and 2) Microsoft is working on tools/frameworks to make it easier to shard a database.&amp;#160; In my opinion (SQL/Relational) database sharding as a starting point is bad design (you get pain and suffering without the ACID benefits of SQL) and waiting for Microsoft to develop some tools and frameworks is hopeful and risky.&lt;/p&gt;  &lt;p&gt;Theoretical and academic discussions aside there is one simple problem with building an Azure app that uses SDS as its primary persistence mechanism.&amp;#160; If your business gets mentioned on Oprah and suddenly makes it big, it will hit the wall.&amp;#160; You can spin up lots of Windows Azure Hosted Services but only one SDS service and the load on that lonely stressed-out instance of SDS will render the application useless.&amp;#160; Part of the attraction of the cloud in general and Azure in particular is the ability to lower startup costs by hosting on the bare minimum and being able to scale as needed and on demand (almost).&amp;#160; If you do hit the wall on SDS you have two options 1) a rewrite of the data access layer to use sharding or the mythical framework that is on its way or 2) move the entire application on premise (which may be difficult because of the dependency on the Azure fabric) – neither options will be quick and easy to implement and opportunities will be missed.&lt;/p&gt;  &lt;p&gt;The Azure platform (hosted services and storage) does not have the same scalability problems and is (seemingly) engineered with regard to scale-out as has been learned in stateless web farms and message oriented systems over the years.&amp;#160; Azure also forces developers to architect their applications in such a way that the scalability is built in by placing restrictions on access to disk, other processes and removing most of the urge to implement cloud unfriendly practices.&amp;#160; The focus on worker processes, queues, Azure storage and RESTful storage styles biases implementations to more service oriented styles which, almost by definition, can handle scalability.&amp;#160; I find that this is what is the most attractive about Azure – provided we can get developers to think a little bit differently about how to process data, Azure provides the platform for massive (and painless) scalability.&lt;/p&gt;  &lt;p&gt;In all the cloud discussions, not only at Microsoft, persistence is the elephant in the room that everyone seems to &lt;strong&gt;ignore&lt;/strong&gt;.&amp;#160; Current applications and architectures have such a high dependency on ACID data operations and all of the goodness that comes from using a SQL database.&amp;#160; Although it is generally known that SQL databases don’t scale out very well it seems that the competitor products are immature (at least in addressing a larger problem space) so they rather keep quiet and don’t point fingers at the entrenched database vendors who, in turn, don’t want to highlight scalability problems.&amp;#160; My issue is that these problems are ignored at the cost of the customer who eventually comes across problems that everybody seemed to know about the whole time.&amp;#160; So it is imperative that Microsoft talk openly and honestly with customers about the architectural considerations that need to be made on Azure and not just target small businesses who don’t have the skills in-house to ask the uncomfortable questions.&lt;/p&gt;  &lt;p&gt;I have no doubt that Microsoft has the engineering skills to provide tools, technologies and frameworks to build cloud oriented data storage mechanisms, even if it is on a SQL model (&lt;a href="http://www.microsoft.com/Sqlserver/2008/en/us/madison.aspx"&gt;Madison&lt;/a&gt; is, after all, a data sharding architecture).&amp;#160; There are clever people like Pat Helland who has a lot of experience on building distributed systems (although he is working more with unstructured data now – I think).&amp;#160; I sincerely hope that Microsoft gives the engineers a chance to build what is needed and not just leave it up to the marketers and the customers – after all the potential technical barrier is far greater than whether or not Outlook renders html with Word or not.&lt;/p&gt;  &lt;p&gt;So, if you are a small business and evaluating Azure and SDS, take note of the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Data consistency (as offered for free by SQL databases) &lt;a href="http://blogs.conchango.com/simonmunro/archive/2009/03/06/consistency-is-an-unnecessary-obsession.aspx"&gt;is not always needed&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Any Azure application should make use of a number of persistence mechanisms depending on the need&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;       &lt;div align="left"&gt;SDS – where consistency is required&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;Azure storage (Tables/Blobs) for high volume and high throughput operations&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;Cache – to reduce the load on the primary persistence services&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;Client side data – particularly with fatter clients like Silverlight&lt;/div&gt;     &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;     &lt;div align="left"&gt;Azure applications should make use of worker processes as much as possible and queue updates/requests against the storage mechanism if possible&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Sharding should be considered as a last resort and should not be generally applied.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Considerations should be made for cloud and on-premise storage – stale and historical data can (and should) be moved to less congested storage mechanisms.&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Disclaimer:&amp;#160; My opinions are formed by experience and publicly accessible information.&amp;#160; I have no access to MVP, partner or private beta materials and Microsoft (for obvious reasons) doesn’t talk to me directly.&lt;/p&gt;  &lt;p&gt;Simon Munro&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/simonmunro"&gt;@simonmunro&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15610" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/simonmunro/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.conchango.com/simonmunro/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.conchango.com/simonmunro/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://blogs.conchango.com/simonmunro/archive/tags/cloud+computing/default.aspx">cloud computing</category><category domain="http://blogs.conchango.com/simonmunro/archive/tags/SQL+Data+Services/default.aspx">SQL Data Services</category></item><item><title>“The Authentication Service is Unknown” error after hard disk switch </title><link>http://blogs.conchango.com/rorystreet/archive/2009/06/25/the-authentication-service-is-unknown-error-after-hard-disk-switch.aspx</link><pubDate>Thu, 25 Jun 2009 09:32:48 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15608</guid><dc:creator>rory.street</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;A few days ago my Dell Latitude D830 suddenly died on me and would not turn itself back on. The IT department removed my hard disk and placed it inside a new D830. All seemed to work perfectly until I rebooted and started to get the above error. I was unable to connect to the network, certain programs wouldn't work and I wasn't even able to look at the event log to see what was wrong!
&lt;/p&gt;&lt;p&gt;So taking out my personal laptop I Googled the error and came up with some rather interesting results. It appears that when Vista starts up, if any of the programs hang or fail it can lead to some pretty strange behaviour. The first error I received was the "People near me service has failed. A system call that should never fail has failed".  It appears the culprit was the winsock service and the fastest way to solve the problem was to open a command line window as Administrator and use the following command.
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Netsh winsock reset
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Reboot your machine and like magic, the problem is solved. 
&lt;/p&gt;&lt;p&gt;You can find more about the problem here &lt;a href="http://social.technet.microsoft.com/Forums/en-US/itprovistasecurity/thread/f4ce24aa-ae9d-4927-8b0f-52f3ddc4fbd9"&gt;http://social.technet.microsoft.com/Forums/en-US/itprovistasecurity/thread/f4ce24aa-ae9d-4927-8b0f-52f3ddc4fbd9&lt;/a&gt;
	&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15608" width="1" height="1"&gt;</description></item><item><title>UPDATE FROM the Sybase code museum</title><link>http://blogs.conchango.com/davidportas/archive/2009/06/24/update-from-the-sybase-code-museum.aspx</link><pubDate>Wed, 24 Jun 2009 21:57:59 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15605</guid><dc:creator>David.Portas</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;UPDATE FROM is dead … or it should be. &lt;a href="http://sqlblog.com/blogs/hugo_kornelis/archive/2008/03/10/lets-deprecate-update-from.aspx"&gt;Hugo Kornelis&lt;/a&gt; has done a good job of explaining why.&lt;/p&gt;  &lt;p&gt;Apart from a badly thought out and non-portable syntax, UPDATE FROM suffers a notorious bug/feature. I say “notorious” but it’s probably not notorious enough because it is still common to see people get tripped up by it. If I write:&lt;/p&gt;  &lt;p&gt;UPDATE Alpha    &lt;br /&gt;SET z = Beta.z     &lt;br /&gt;FROM Alpha     &lt;br /&gt;JOIN Beta     &lt;br /&gt;ON Alpha.x = Beta.x ;&lt;/p&gt;  &lt;p&gt;and if Beta.x is not unique then Alpha.z will get updated with some &lt;em&gt;random&lt;/em&gt; value from one of the matching rows in Beta.z. This is documented in &lt;a href="http://technet.microsoft.com/en-us/library/ms177523.aspx"&gt;Books Online&lt;/a&gt; as follows:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“The results of an UPDATE statement are undefined if the statement includes a FROM clause that is not specified in such a way that only one value is available for each column occurrence that is updated, that is if the UPDATE statement is not deterministic.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/bb510625.aspx"&gt;MERGE&lt;/a&gt; handles the same situation more wisely and safely: it returns a runtime error if the join is non-deterministic:&lt;/p&gt;  &lt;p&gt;MERGE INTO Alpha    &lt;br /&gt;USING Beta     &lt;br /&gt;ON Alpha.x = Beta.x     &lt;br /&gt;WHEN MATCHED THEN UPDATE     &lt;br /&gt;SET z = Beta.z ;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Msg 8672, Level 16, State 1, Line 42      &lt;br /&gt;The MERGE statement attempted to UPDATE or DELETE the same row more than once. This happens when a target row matches more than one source row. A MERGE statement cannot UPDATE/DELETE the same row of the target table multiple times. Refine the ON clause to ensure a target row matches at most one source row, or use the GROUP BY clause to group the source rows.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;MERGE is also standard SQL, works in other DBMSs and frequently results in more efficient execution plans than UPDATE FROM.&lt;/p&gt;  &lt;p&gt;UPDATE FROM isn’t originally Microsoft’s fault because it’s a legacy of SQL Server’s ancient historical roots at Sybase. But it is Microsoft’s fault they haven’t deprecated it yet. You can vote for deprecating UPDATE FROM on Connect:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=332437"&gt;http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=332437&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15605" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/davidportas/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogs.conchango.com/davidportas/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>DB2 9.7 and Database Type Safety</title><link>http://blogs.conchango.com/davidportas/archive/2009/06/24/db2-9-7-and-database-type-safety.aspx</link><pubDate>Wed, 24 Jun 2009 21:01:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15604</guid><dc:creator>David.Portas</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;DB2 has some new features that are aimed at customers who want to transition from Oracle to DB2:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www-05.ibm.com/ch/events/symposium/pdf/9_M_Obrecht_IBM_Symposium_2009.pdf" href="http://www-05.ibm.com/ch/events/symposium/pdf/9_M_Obrecht_IBM_Symposium_2009.pdf"&gt;http://www-05.ibm.com/ch/events/symposium/pdf/9_M_Obrecht_IBM_Symposium_2009.pdf&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;IBM are emphasising the improved snapshot isolation, PL/SQL support and packages (“modules” in IBM’s terms).&lt;/p&gt;  &lt;p&gt;One “feature” that caught my eye is support for &lt;i&gt;implicit conversion&lt;/i&gt;. This is a surprise to me. In most areas of software engineering strong typing is considered not just desirable but pretty essential to program correctness and early identification of bugs. I don’t think that reducing or removing type safety is a good way to improve database languages.&lt;/p&gt;  &lt;p&gt;In SQL Server, Oracle and other DBMSs we already have to live with implicit typing (type coercion) and the problems it causes. SQL Server won’t complain at compile time if I write the following two lines in the same procedure or script:&lt;/p&gt;  &lt;p&gt;SELECT col1 FROM tbl WHERE col2 = &lt;font color="#ff0000"&gt;CAST(1 AS INT);&lt;/font&gt;     &lt;br&gt;SELECT col1 FROM tbl WHERE col2 = &lt;font color="#ff0000"&gt;CAST('2' AS VARCHAR(10));&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The effect is that SQL Server recklessly and silently casts strings as numbers and won’t even give a runtime error until the data itself causes the conversion to break. Getting it right therefore requires much more effort than it would do if types were checked at compile time.&lt;/p&gt;  &lt;p&gt;Erland Sommarskog has posted a feedback item requesting that stricter compile time checking be incorporated in a future version of SQL Server. Please rate it if you agree:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=260762" href="http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=260762"&gt;http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=260762&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15604" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/davidportas/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Cambridge User Group Meeting : SQL Server 2008 Night – 6th July 2008</title><link>http://blogs.conchango.com/jamesrowlandjones/archive/2009/06/24/cambridge-user-group-meeting-sql-server-2008-night-6th-july-2008.aspx</link><pubDate>Wed, 24 Jun 2009 09:31:52 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15599</guid><dc:creator>James.Rowland-Jones</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;My colleague &lt;a href="http://sqlblogcasts.com/blogs/simons/Default.aspx" target="_blank"&gt;Simon Sabin&lt;/a&gt; is holding another user group meeting in Cambridge on the 6th July. The theme is SQL 2008 and should be a lot of fun.&lt;/p&gt;  &lt;p&gt;If you plan to attend make sure you register – it’s free to attend it’s just so the guys have an idea on numbers etc &lt;a href="http://sqlserverfaq.com/events/183/SQL-Server-User-Group-Cambridge-SQL-Server-2008.aspx"&gt;http://sqlserverfaq.com/events/183/SQL-Server-User-Group-Cambridge-SQL-Server-2008.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;He is holding the meeting at &lt;a href="http://www.redgate.com" target="_blank"&gt;Redgate&lt;/a&gt; HQ &lt;a href="http://www.red-gate.com/about/Map_colour.pdf"&gt;http://www.red-gate.com/about/Map_colour.pdf&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15599" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/jamesrowlandjones/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.conchango.com/jamesrowlandjones/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item><item><title>UK UPA Careers Event - Thursday June 25th 2009</title><link>http://blogs.conchango.com/michelleflynn/archive/2009/06/24/uk-upa-careers-event-thursday-june-25th-2009.aspx</link><pubDate>Wed, 24 Jun 2009 08:25:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15598</guid><dc:creator>Michelle.Flynn</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Tomorrow night &lt;A class="" href="http://www.conchango.com/index-3.php" target=_blank&gt;EMC Conchango&lt;/A&gt; will be exhibiting at the &lt;A class="" href="http://ukupa.org.uk/" target=_blank&gt;UK User Professionals' Association&lt;/A&gt; &lt;A class="" href="http://ukupa.org.uk/events/archives/000669.html" target=_blank&gt;careers event&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Date&lt;/STRONG&gt;: Thursday 25th June 2009&lt;BR&gt;&lt;B&gt;Time&lt;/B&gt;: 6.30 for 7pm.&lt;BR&gt;&lt;B&gt;Location&lt;/B&gt;: LBi, Truman Brewery, 146 Brick Lane, London, E1 6RU&lt;BR&gt;The LBi Office is just north of the Truman Brewery overhead bridge - on the right just before the Vibe Bar (which is on your left)&lt;BR&gt;&lt;B&gt;Nearest tubes&lt;/B&gt;: Aldgate East, Liverpool Street, or Old Street&lt;/P&gt;
&lt;P&gt;The event is for all those working in or otherwise interested in User Experience. It is an informal and relaxed event, offering the opportunity for you to network, seek talented practitioners, meet those soon to graduate or find a new role...there will be many opportunities to hear from different perspectives and get to know your peers.&lt;/P&gt;&lt;A class="" name=more&gt;&lt;/A&gt;
&lt;P&gt;The evening will feature several sponsors including EMC Conchango, LBi, Fortune Cookie, Flow, Bunnyfoot and Aquent – companies and agencies who will be displaying some of their work and will be there to tell you all about their approach and experiences and to answer any questions you have.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Introducing the Reverse Job Board&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;There&amp;nbsp;will be a job board advertising people looking for a job. Simply take an A5 piece of card, state what skills and experience you can offer and what kind of job/ company you’re looking for. You don’t have to put your real name or contact details on there, just make sure to let us know your alias either before the event or after by emailing careers@ukupa.org.uk and let us know if you’re interested in being contacted by companies and/or recruitment consultants and we shall do the rest.&lt;/P&gt;
&lt;P&gt;Remember to make it readable, memorable and that you tell us your alias so we can put you in touch with the right people afterwards. If you don’t have time to prepare a card before-hand, we’ll have some spare cards available to use on the day.&lt;/P&gt;
&lt;P&gt;There will be a short introduction and discussion panel at 7pm. Drinks and snacks will be provided to keep you going so you can focus on socialising!&lt;/P&gt;
&lt;P&gt;Hope to see you there.&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15598" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/michelleflynn/archive/tags/careers/default.aspx">careers</category><category domain="http://blogs.conchango.com/michelleflynn/archive/tags/conchango/default.aspx">conchango</category><category domain="http://blogs.conchango.com/michelleflynn/archive/tags/UPA+Careers+Events/default.aspx">UPA Careers Events</category><category domain="http://blogs.conchango.com/michelleflynn/archive/tags/events/default.aspx">events</category><category domain="http://blogs.conchango.com/michelleflynn/archive/tags/EMC+Conchango/default.aspx">EMC Conchango</category></item><item><title>Enterprise Mashups</title><link>http://blogs.conchango.com/jamiethomson/archive/2009/06/23/enterprise-mashups.aspx</link><pubDate>Tue, 23 Jun 2009 22:16:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15591</guid><dc:creator>jamie.thomson</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Of late one may have noticed that I have become very interested in high-brow, generally vaporous, disciplines such as &lt;a href="http://blogs.conchango.com/jamiethomson/archive/tags/RESTful/default.aspx"&gt;RESTful data services&lt;/a&gt;, &lt;a href="http://blogs.conchango.com/jamiethomson/archive/tags/data+interoperability/default.aspx"&gt;data interoperability&lt;/a&gt; and &lt;a href="http://blogs.conchango.com/jamiethomson/archive/tags/cloud+computing/default.aspx"&gt;cloud computing&lt;/a&gt; whilst coincident with that has been the inexorable rise of the term “&lt;a href="http://blogs.conchango.com/jamiethomson/archive/tags/mashups/default.aspx"&gt;mashup&lt;/a&gt;” in the information technology lexicon.&lt;/p&gt;  &lt;p&gt;“Mashup” means different things to different people but to me its simply the practice of combining data from multiple places with the aim of discovering or passing on knowledge that wasn’t known before. Well hey, that sounds a lot like what I do in my day job; the main difference being that I don’t generally hear the term “mashup” being bandied about the London meeting rooms that I frequent to the same extent that it does in the funky web 2.0 and swanky startup world; the term I hear (and use) is the considerably less cool “data integration”. Fundamentally though I don’t think there’s that much difference between the two so maybe enterprise data integration people like myself have something to learn from these so-called mashup players.&lt;/p&gt;  &lt;p align="left"&gt;One of my favourite mashup tools out there is one &lt;a href="http://blogs.conchango.com/jamiethomson/archive/tags/yahoo+pipes/default.aspx"&gt;I’ve spoken about before&lt;/a&gt; – &lt;a href="http://pipes.yahoo.com"&gt;Yahoo Pipes&lt;/a&gt;. If you haven’t had a look at this it really is worth taking a glance. Yahoo Pipes enables you to extract data from multiple web-based data sources, transform it using a series of operations like sorting, joining, unioning and filtering before finally outputting that transformed data in one of a number of different formats; its a data pipeline for web-based data (A pipeline? Oh, there’s something else I’ve &lt;a href="http://blogs.conchango.com/jamiethomson/archive/tags/pipeline/default.aspx"&gt;talked about before&lt;/a&gt; – noticing a pattern here?). Here is an example of a Yahoo Pipe: &lt;a href="http://pipes.yahoo.com/pipes/pipe.info?_id=ZKJobpaj3BGZOew9G8evXg"&gt;Yahoo Finance Stock Quote Watch List Feed w/Chart&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Extracting. Transforming. Sorting. Unioning. Filtering. Outputting. This Yahoo Pipes thing is starting to sound awfully like ETL tools such as &lt;a href="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx"&gt;SQL Server Integration Services (SSIS)&lt;/a&gt; wouldn’t you say? They even look a little bit like each other with their boxes joined up with lines between them:&lt;/p&gt;  &lt;p align="left"&gt;&lt;img src="http://blogs.conchango.com/blogs/jamiethomson/image_191E6589.png"&gt; &lt;/p&gt;  &lt;p align="left"&gt;&lt;img src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISNuggetConditionallyemailafilecontain_C5A5/image_4.png"&gt; &lt;/p&gt;  &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;  &lt;p align="left"&gt;&lt;i&gt;I’m now reminded of what my good friend &lt;/i&gt;&lt;a href="http://twitter.com/andybritcliffe"&gt;&lt;i&gt;Andy Britcliffe&lt;/i&gt;&lt;/a&gt;&lt;i&gt; of &lt;a href="http://www.sharpcloud.com"&gt;Sharpcloud &lt;/a&gt;once said to me upon reading my blog post (and viewing the embedded video) &lt;/i&gt;&lt;a href="http://blogs.conchango.com/jamiethomson/archive/2007/06/19/SSIS_3A00_--Consuming-web-services-in-SSIS-2008.aspx"&gt;&lt;i&gt;Consuming web services in SSIS 2008&lt;/i&gt;&lt;/a&gt;&lt;i&gt; a full two years ago. I distinctly remember Andy’s words on that occasion: “SSIS is the ultimate mashup tool”! I didn’t disagree!&lt;/i&gt;&lt;/p&gt;  &lt;p align="left"&gt;Most mashup tools share one common characteristic in that they invariably require someone with some technical nous to set them up in advance so that they can be used by the less tech-savvy amongst us and the same applies in enterprises as well; data is distributed &lt;i&gt;by &lt;/i&gt;the IT guys &lt;i&gt;to &lt;/i&gt;the information workers and this distribution of data typically takes months whereas the consumers of that data want it available in hours. In both arenas I sense a shift occurring; now the consumers of the data are being &lt;i&gt;empowered&lt;/i&gt; to find and interrogate data for themselves and in the enterprise this is happening through the adoption of tools such as &lt;a href="http://www.qlikview.com/"&gt;Qlikview&lt;/a&gt;, &lt;a href="http://www.visokio.com/omniscope"&gt;Omniscope&lt;/a&gt; and (in the near future) Microsoft’s Gemini. I find this to be a fascinating development not because it means there may be less work for me to do (admittedly that would be nice) but because information workers now have the opportunity to be much more productive in their daily jobs and I expect those who invest in learning these new technologies to be the cream that rises to the top of enterprises in the near future.&lt;/p&gt;  &lt;p align="left"&gt;Up until recently I hadn’t been all that interested in Microsoft’s Gemini project, indeed I was very sceptical of it, but as I started to formulate some of the thoughts that I’m writing about here I began to realise how important it will be when it gets released sometime (hopefully) in early 2010. I earlier described mashups as being “the practice of combining data from multiple places with the aim of discovering or passing on knowledge that wasn’t known before” and that description fits very well with Gemini. If you don’t know what Gemini is take a look at this video:&lt;/p&gt;  &lt;p align="left"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/N3l1VDOASUU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/N3l1VDOASUU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;That demo glosses over the main point I’m making which is that here we see data that is originally pulled from multiple sources and combined in a familiar place (Excel) where the end user can consume it. The person speaking in the video is Donald Farmer and he has a blog entry with many other links to Gemini resources at &lt;a href="http://www.beyeblogs.com/donaldfarmer/"&gt;Microsoft Project Gemini links&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;At the top of this email I also talked about how I’m interested in data services, that is data available over the web that we can consume via an API and use for our own knowledge discovery and I was introduced to such a data service just yesterday when listening to Jon Udell’s “&lt;a href="http://itc.conversationsnetwork.org/series/innovators.html"&gt;Interviews with Innovators&lt;/a&gt;” podcast. In the &lt;a href="http://itc.conversationsnetwork.org/shows/detail4149.html"&gt;most recent episode&lt;/a&gt; Jon interviewed Stephen Willmott whose company &lt;a href="http://www.3scale.net/"&gt;3scale Networks&lt;/a&gt; has taken it upon themselves to make data held by the United Nations freely available via a data service to anyone that would like to consume it. For example, if you want to know the United Kingdom population’s annual growth rate since 1991, that data is available, for free, at &lt;a href="http://undata-api.appspot.com/data/query/Population%20annual%20growth%20rate%20%28percent%29/United%20Kingdom?user_key=XXXX"&gt;http://undata-api.appspot.com/data/query/Population%20annual%20growth%20rate%20(percent)/United%20Kingdom?user_key=XXXX&lt;/a&gt;&amp;nbsp; (you need to &lt;a href="http://www.undata-api.org/plans"&gt;sign-up&lt;/a&gt; for a free user-key and substitute it for XXXX in order for this query to work) and is returned like so:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/jamiethomson/image_01C0236B.png"&gt;&lt;img src="http://blogs.conchango.com/blogs/jamiethomson/image_thumb_2FE9F958.png" style="border-width:0px;display:inline;margin-left:0px;margin-right:0px;" title="image" alt="image" width="683" align="left" border="0" height="358"&gt;&lt;/a&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;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;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;“Wouldn’t it be cool” I thought, “if I could consume that data inside of Excel using Gemini”, perhaps in this example to combine it with birth rates over the same period to discover if there is a correlation between the two. At the time though I didn’t know if Gemini made it possible to consume data directly from data sources so I went straight to ask the man who would know, the aforementioned Donald Farmer. I contacted Donald over Twitter and here is the conversation that ensued:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Me: @&lt;a href="http://twitter.com/donalddotfarmer"&gt;donalddotfarmer&lt;/a&gt; Is there a list of data sources types from which #Gemini can get data? Interested in data from web APIs e.g. undata-api.org (&lt;a href="http://twitter.com/jamiet/status/2292293763"&gt;link&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Donald: @&lt;a href="http://twitter.com/jamiet"&gt;jamiet&lt;/a&gt; I'll need to check out that site in particular, but we do support Atom feeds. (&lt;a href="http://twitter.com/donalddotfarmer/status/2296286323"&gt;link&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Me: @&lt;a href="http://twitter.com/donalddotfarmer"&gt;donalddotfarmer&lt;/a&gt; Ahh that's good news. How about POX/RSS? Does Gemini allow us to parse it or use XQuery? (&lt;a href="http://twitter.com/jamiet/status/2296349687"&gt;link&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Donald: @&lt;a href="http://twitter.com/jamiet"&gt;jamiet&lt;/a&gt; No we don't support XQuery - we just consume Atom feeds as they come - the users can then filter and sort in Gemini (&lt;a href="http://twitter.com/donalddotfarmer/status/2296520167"&gt;link&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Me: @&lt;a href="http://twitter.com/donalddotfarmer"&gt;donalddotfarmer&lt;/a&gt; OK, so Atom only right now. Looking forward to getting hands dirty, think I know what 1st feature request will be :) (&lt;a href="http://twitter.com/jamiet/status/2296665400"&gt;link&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Lots of techy abbreviations in there so let me summarise. Gemini will be able to consume data from web services that deliver it in the popular &lt;a href="http://tools.ietf.org/html/rfc4287"&gt;Atom XML dialect&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Atom_%28standard%29"&gt;more on Wikipedia&lt;/a&gt;) which is great news and no great surprise given that &lt;a href="http://dev.live.com/blogs/devlive/archive/2008/02/27/213.aspx"&gt;Microsoft announced in February 2008&lt;/a&gt; that Atom would be their XML syndication format of choice going forward (see my blog post &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2008/02/28/windows-live-dev-announcements.aspx"&gt;Windows Live Dev announcements&lt;/a&gt; for a more complete commentary). I happen to know that the United Nations data provided by Stephen Willmott is not currently delivered in Atom format but no matter, at least things are moving in the right direction and as I alluded during my last tweet to Donald I’ll be asking for support for other syndication formats in the future.&lt;/p&gt;  &lt;p&gt;This has turned into a rather rambling blog post so I’ll call a halt here. As always though I’d be interested to know other people’s thoughts on data services, usage of that data in enterprises or anything else I’ve mentioned herein so if you have any thoughts please leave comments in &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2009/06/23/enterprise-mashups.aspx#comments"&gt;the space below&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;-Jamie&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15591" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx">SQL Server Integration Services</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx">SSIS</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/yahoo+pipes/default.aspx">yahoo pipes</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/mashups/default.aspx">mashups</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/cloud+computing/default.aspx">cloud computing</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/RESTful/default.aspx">RESTful</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/data+interoperability/default.aspx">data interoperability</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/gemini/default.aspx">gemini</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/data+services/default.aspx">data services</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/omniscope/default.aspx">omniscope</category><category domain="http://blogs.conchango.com/jamiethomson/archive/tags/qlikview/default.aspx">qlikview</category></item><item><title>Geo Data Visualization – Here and There</title><link>http://blogs.conchango.com/johnbrookmyre/archive/2009/06/23/geo-data-visualization-here-and-there.aspx</link><pubDate>Tue, 23 Jun 2009 21:47:01 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15590</guid><dc:creator>john.brookmyre</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I have come across a visualization technique called &lt;a href="http://schulzeandwebb.com/hat/"&gt;Here and There&lt;/a&gt; by &lt;a href="http://schulzeandwebb.com/"&gt;Schulze and Webb&lt;/a&gt; from Alexis Kennedy (as ever thanks), other blogs and Wired Magazine (UK, June 2009). See below what it looks like:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="left"&gt;&lt;img title="Here &amp;amp; There looking uptown." style="display:block;float:none;margin-left:auto;margin-right:auto;" height="963" src="http://kottkegae.appspot.com/images/uptown.jpg" width="600" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As mentioned in Wired, it is like street view on a roller coaster – eye level and birds eye view. It is definitely innovative but it is not immediately clear what this gives above the “old world” of Google Maps and Google Earth. It is cool but what benefits can it offer - Some ideas that are suggested on &lt;a href="http://schulzeandwebb.com/blog/2009/05/08/if-gps-had-here-there/"&gt;S&amp;amp;W’s blog&lt;/a&gt; are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;see through the city into the distance &lt;/li&gt;    &lt;li&gt;real-time activities like: &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;traffic volume overlaid on the distant city map&lt;/li&gt;      &lt;li&gt;taxis or other services&lt;/li&gt;      &lt;li&gt;bottle necks&lt;/li&gt;      &lt;li&gt;all the things you can do with Google Earth / maps&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;All the same it is always nice to see a new way of visualising. Comments, thoughts and ideas would be appreciated!&lt;/p&gt;  &lt;p&gt;John&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1a2e2da2-ed4f-400a-b025-6334d2f8b89a" style="padding-right:0px;display:inline;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Data+Visualisation" rel="tag"&gt;Data Visualisation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Data+Visualization" rel="tag"&gt;Data Visualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Geo" rel="tag"&gt;Geo&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Wired" rel="tag"&gt;Wired&lt;/a&gt;,&lt;a href="http://technorati.com/tags/John+Brookmyre" rel="tag"&gt;John Brookmyre&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Information+Visualisation" rel="tag"&gt;Information Visualisation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Information+Visualization" rel="tag"&gt;Information Visualization&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15590" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/User+Interface/default.aspx">User Interface</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/User+Experience/default.aspx">User Experience</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/John+Brookmyre/default.aspx">John Brookmyre</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Data+Visualization/default.aspx">Data Visualization</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Data+Visualisation/default.aspx">Data Visualisation</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/EMC+Consulting/default.aspx">EMC Consulting</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Presentation+styles/default.aspx">Presentation styles</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Presentation+Techniques/default.aspx">Presentation Techniques</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Maps/default.aspx">Maps</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Google+Earth/default.aspx">Google Earth</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Future+Trends/default.aspx">Future Trends</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Future/default.aspx">Future</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Information+Visualisation/default.aspx">Information Visualisation</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Information+Visualization/default.aspx">Information Visualization</category><category domain="http://blogs.conchango.com/johnbrookmyre/archive/tags/Knowledge+management/default.aspx">Knowledge management</category></item><item><title>The 3rd Fantastic Tavern - Total Experience Design</title><link>http://blogs.conchango.com/mattbagwell/archive/2009/06/23/the-3rd-fantastic-tavern-total-experience-design.aspx</link><pubDate>Tue, 23 Jun 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15583</guid><dc:creator>matthew.bagwell</dc:creator><slash:comments>2</slash:comments><description>&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;Following the success of the &lt;A href="http://blogs.conchango.com/mattbagwell/archive/2009/02/20/the-morning-after-the-inaugural-meeting-of-the-fantastic-tavern.aspx"&gt;&lt;FONT color=#800080&gt;1&lt;SUP&gt;st&lt;/SUP&gt;&lt;/FONT&gt;&lt;/A&gt; and &lt;A href="http://blogs.conchango.com/mattbagwell/archive/2009/05/18/the-twitter-effect-at-the-fantastic-tavern-what-happened.aspx"&gt;&lt;FONT color=#800080&gt;2&lt;SUP&gt;nd&lt;/SUP&gt;&lt;/FONT&gt;&lt;/A&gt; Fantastic Taverns, we are back for the 3&lt;SUP&gt;rd&lt;/SUP&gt; time.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;Date: &amp;nbsp;&amp;nbsp;&amp;nbsp; Thursday 9&lt;SUP&gt;th&lt;/SUP&gt; July&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;Time: &amp;nbsp;&amp;nbsp;&amp;nbsp; 6:30 onwards&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;Venue: &lt;A href="http://www.theroebuck.net/"&gt;&lt;FONT color=#800080&gt;The Roebuck&lt;/FONT&gt;&lt;/A&gt;, 50 Great Dover Street SE1 4YG&lt;SPAN style="COLOR:#666666;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:#666666;FONT-FAMILY:'Calibri','sans-serif';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;It’s no longer the case that digital experience is an adjunct to marketing, sales or brand experience planning and strategies. Digital agencies have moved from the cheap seats at the back of the room to the top table, arguably providing the 'glue' that holds all these threads together. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;But what follows? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;The Fantastic Tavern returns to explore the emergence of Total Experience Design. By combining specialist skills in new ways, can the architects of digital experience now go wider and deeper than any other 'traditional' agency? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;What does this mean for creatives as their big ideas extend into a proliferation of touchpoints? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;How do clients buy the service and who owns total experience within the enterprise? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;How can total experience be measured from channel to channel? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;Once again, the creative meister (@mattbagwell) brings together leading exponents of this exciting discipline to fuel the debate. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;Can ted really be done by one agency? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;What are the practices they need to follow?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;How can we help clients buy and prepare for the change in mind set required for success? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;What are the skills and roles we will need in our creative teams in the near future? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';"&gt;We may not find all the answers, but one thing is true. Change happened and total experience design may be the best way to harness it.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Calibri size=3&gt;If you would like to attend please email &lt;A href="mailto:michelle.flynn@emc.com"&gt;michelle.flynn@emc.com&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT face=Calibri size=3&gt;Also we are keen to continue growing this community so please let&amp;nbsp;anyone you think would like to join us for debate (as well as beers ad nibbles) know about this event.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=15583" width="1" height="1"&gt;</description><category domain="http://blogs.conchango.com/mattbagwell/archive/tags/conchango/default.aspx">conchango</category><category domain="http://blogs.conchango.com/mattbagwell/archive/tags/experience/default.aspx">experience</category><category domain="http://blogs.conchango.com/mattbagwell/archive/tags/The+Fantastic+Tavern/default.aspx">The Fantastic Tavern</category><category domain="http://blogs.conchango.com/mattbagwell/archive/tags/EMC+Conchango/default.aspx">EMC Conchango</category><category domain="http://blogs.conchango.com/mattbagwell/archive/tags/_2300_TFT/default.aspx">#TFT</category></item></channel></rss>