<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogical.se/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 /><link>http://blogical.se/blogs/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Do you want to win a book?</title><link>http://blogical.se/blogs/mikael_sand/archive/2012/05/15/do-you-want-to-win-a-book.aspx</link><pubDate>Tue, 15 May 2012 17:57:15 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29861</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/BugLoSE_7BB4EBE0.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BugLoSE" border="0" alt="BugLoSE" src="http://blogical.se/blogs/mikael_sand/BugLoSE_thumb_06724336.png" width="190" height="80" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, I have this little raffle within &lt;a target="_blank"&gt;my company&lt;/a&gt;, where I run the local BizTalk User Group called BugLoSE. The subject of the raffle/competition is “upcoming subjects for BugLoSE” and I thought I would invite “non Logicans” as well.&lt;/p&gt;  &lt;p&gt;So send me suggestions and you might be the lucky one to pick from one of the books behind &lt;a href="http://www.packtpub.com/books/all?tid=16&amp;amp;availability%5BAvailable%5D=Available&amp;amp;keys=&amp;amp;book_limit=50" target="_blank"&gt;this link&lt;/a&gt;. (Note that the link displays page one of three). You can e-mail me directly at: firstname(dot)lastname(at)logica(dot)com.&lt;/p&gt;  &lt;p&gt;The books are from Packt Publishing, a publisher that has risen to a very high spot when it comes to &lt;a href="http://blogical.se/blogs/mikael_sand/archive/2012/04/22/biztalk-server-2010-cookbook-a-review.aspx" target="_blank"&gt;books&lt;/a&gt; about &lt;a href="http://blogical.se/blogs/mikael_sand/archive/2011/12/14/microsoft-biztalk-server-2010-patterns-a-review.aspx" target="_blank"&gt;integration&lt;/a&gt; and &lt;a href="http://blogical.se/blogs/mikael_sand/archive/2011/10/20/microsoft-biztalk-2010-line-of-business-systems-integration-a-review.aspx" target="_blank"&gt;Microsoft technologies&lt;/a&gt;. Also (if you do not win), they have a “&lt;a href="http://www.packtpub.com/news/packt-microsoft-carnival" target="_blank"&gt;Brighten your May at Packt’s Microsoft Carnival&lt;/a&gt;” at the moment.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29861" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/BugLoSE/default.aspx">BugLoSE</category></item><item><title>BizTalk Server 2010 Cookbook–a review</title><link>http://blogical.se/blogs/mikael_sand/archive/2012/04/22/biztalk-server-2010-cookbook-a-review.aspx</link><pubDate>Sun, 22 Apr 2012 19:38:25 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29833</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.packtpub.com/biztalk-server-2010-for-developers-and-administrators-cookbook/book" target="_blank"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="biztalk-server-2010-cookbook" border="0" alt="biztalk-server-2010-cookbook" align="left" src="http://blogical.se/blogs/mikael_sand/biztalk-server-2010-cookbook_4708C281.jpg" width="198" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;It is hard to &lt;em&gt;not&lt;/em&gt; point out the fact that this is a cookbook, and there already is a book about &lt;a href="http://www.apress.com/9781430232643" target="_blank"&gt;BizTalk recipes&lt;/a&gt;. It is also hard not to point out the fact that I love cooking but hate using cookbooks…&lt;/p&gt;  &lt;p&gt;This is a cookbook I really, really like though.&lt;/p&gt;  &lt;p&gt;I imagine that you, like me, have a collection of really good BizTalk blog post links in you browser of choice. When you use BizTalk, and when you read up on what others have written, then you bookmark certain posts for safe-keeping. You just know that “this is a good thing to remember for another day”.&lt;/p&gt;  &lt;p&gt;This book is like the best collection of links you could possibly have! A really good blog in book-form, or a blog-oriented book. First of all: buy this book. It is a given in any BizTalk developer team. The €25 spent on the book will be paid for over and over again as you save time during development and testing.&lt;/p&gt;  &lt;p&gt;BizTalk Server 2010 Cookbook uses a very practical approach to problem solving. This is the only downside to the book. Sometimes it it too focused on how to solve something and not enough is spent on understanding it. Then again &lt;a href="http://soa-thoughts.blogspot.se/" target="_blank"&gt;the author&lt;/a&gt; points you to further reading at the end of each recipe. So if you want to know more about something, you can find it easily. Personally I would like it to have been part of the book but I guess that is not up to me to decide.&lt;/p&gt;  &lt;p&gt;The practical approach splits each recipe into different parts. First an introduction to present the challenges or the problem. Then follows a “How to” section, a “how it works” and the aforementioned “There is more”.&lt;/p&gt;  &lt;p&gt;Do not be fooled by the subtitle of the book “Quick answers to common problems” as the word “problem” might be associated with “bug” or “issue” and this is not the case. It is rather a case of “How to quickly, understand and perform common tasks” but that is a really bad strapline I agree.&lt;/p&gt;  &lt;p&gt;The publisher has a &lt;a href="http://www.packtpub.com/biztalk-server-2010-for-developers-and-administrators-cookbook/book#chapter_0" target="_blank"&gt;complete listing of the books content&lt;/a&gt; and I encourage you read it but I would like to point out some of my personal favorites: BizTalk Server Automation: Patterns, Monitoring using Log4Net and Securing Message Exchange. The last one is in my opinion the best text on the subject I have seen. After reading it I feel that the usage of certificates in BizTalk is no longer hard, and I can understand it. Something I must admit to being part of my ignorance up until now.&lt;/p&gt;  &lt;p&gt;So once again: Buy this book. It is smart, practical, well written and really useful.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29833" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Other+bloggers/default.aspx">Other bloggers</category><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/BizTalk+2010/default.aspx">BizTalk 2010</category><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Book/default.aspx">Book</category></item><item><title>I’m going to Amsterdam</title><link>http://blogical.se/blogs/mikael_sand/archive/2012/03/30/i-m-going-to-amsterdam.aspx</link><pubDate>Fri, 30 Mar 2012 18:22:41 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29799</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Today I registered for TechEd Europe 2012. Last time was in cold autumn Berlin. This time it will be warm summer Amsterdam. Time to stock up on motivation, knowledge, contacts and also some “Bitter Cookies” and Heineken.&lt;/p&gt;  &lt;p&gt;Last time I &lt;a href="http://blogical.se/blogs/mikael_sand/archive/2010/11.aspx" target="_blank"&gt;blogged my proverbial a$$ off&lt;/a&gt; and I can guarantee I will do the same this time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/TEE12__BB_240x360-1_631EB50D.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;padding-top:0px;" title="TEE12__BB_240x360 (1)" border="0" alt="TEE12__BB_240x360 (1)" src="http://blogical.se/blogs/mikael_sand/TEE12__BB_240x360-1_thumb_2D39BFF3.jpg" width="160" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29799" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/TechEd+2012/default.aspx">TechEd 2012</category></item><item><title>BugLoSE will host second meeting</title><link>http://blogical.se/blogs/mikael_sand/archive/2012/03/27/buglose-will-host-second-meeting.aspx</link><pubDate>Tue, 27 Mar 2012 19:35:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29795</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The first meeting was a success. Not as good as &lt;a href="http://biztalkusergroup.se/" target="_blank"&gt;BUGS&lt;/a&gt; I can tell you that, but the feedback had a lot of nice words in it at least.&lt;/p&gt;  &lt;p&gt;Next Thursday is Holy Thursday, which by Swedish work ethic means that no one attends a meeting after 12. Therefore the meeting is held next&amp;nbsp;Thursday (the 12th)&amp;nbsp;at the same time.&lt;/p&gt;  &lt;p&gt;The topic is: A lot of useful hints and tricks that are in BizTalk but that you might know of or seldom use.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29795" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/UserGroup/default.aspx">UserGroup</category></item><item><title>BizTalk User Group Logica Sweden</title><link>http://blogical.se/blogs/mikael_sand/archive/2012/03/19/biztalk-user-group-logica-sweden.aspx</link><pubDate>Mon, 19 Mar 2012 07:32:10 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29777</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;…or BugLoSE for short.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/BugLoSE_571D6C9A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;padding-top:0px;" title="BugLoSE" border="0" alt="BugLoSE" src="http://blogical.se/blogs/mikael_sand/BugLoSE_thumb_2BD8D593.png" width="190" height="80" /&gt;&lt;/a&gt;I have started a BizTalk user group within Logica aimed at educating the Swedish-speaking part of the company I work for, on how to use my favorite product.&lt;/p&gt;  &lt;p&gt;The first meeting will be held online this Thursday (the 22nd) at 12 CET. It will be about BizTalk and clustering; a semi-advanced topic that seems to be quite high in demand.&lt;/p&gt;  &lt;p&gt;Following a regular bi-weekly basis, we will continue to host these event online and cover different topics.&lt;/p&gt;  &lt;p&gt;If you are a Logica employee, contact me if you would like to attend or have any questions.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29777" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Logica/default.aspx">Logica</category><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/BugLoSE/default.aspx">BugLoSE</category><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/UserGroup/default.aspx">UserGroup</category></item><item><title>Exposing JSON/REST endpoints from BizTalk</title><link>http://blogical.se/blogs/mikael/archive/2012/03/07/exposing-json-rest-endpoints-from-biztalk.aspx</link><pubDate>Wed, 07 Mar 2012 13:14:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29757</guid><dc:creator>wmmihaa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Solutions for &lt;u&gt;consuming&lt;/u&gt; REST services from BizTalk has been around for a while, and &lt;a href="http://www.masteringbiztalk.com/blogs/jon"&gt;Jon Flanders&lt;/a&gt; has an excellent &lt;a href="http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,90f1db62-b42f-4be3-b9d7-36cd4319c97c.aspx"&gt;post about it&lt;/a&gt;.&amp;nbsp; However, very little has been told about &lt;u&gt;exposing&lt;/u&gt; REST endpoints, and even less using &lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt;. If you don’t know about JSON, it’s a lightweight data format, commonly used by JavaScript and JQuery. Part from being less verbose then XML, it can be parsed to a object on the client which makes it easier to navigate (as oppose to using XPath). This can come to good rescue for UI devs who apparently don’t understand XPath ;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/SNAGHTML3e7893f_223E6675.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/SNAGHTML3e7893f_thumb_08D6633B.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SNAGHTML3e7893f" alt="SNAGHTML3e7893f" border="0" height="112" width="640" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/SNAGHTML3e6150a_28853D03.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/SNAGHTML3e6150a_thumb_483416CB.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SNAGHTML3e6150a" alt="SNAGHTML3e6150a" border="0" height="110" width="640" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/SNAGHTML3da61a3_6BED3E65.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/SNAGHTML3da61a3_thumb_6776BD9E.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SNAGHTML3da61a3" alt="SNAGHTML3da61a3" border="0" height="107" width="640" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I haven’t yet been in a situation where I’ve had to expose REST/JSON endpoints from BizTalk, but as &lt;a href="http://kentweare.blogspot.com/"&gt;Kent Weare&lt;/a&gt; was being hackled by &lt;a href="http://weblogs.asp.net/bsimser"&gt;Bil Simser&lt;/a&gt; (MS Word MVP), I was eager to help out.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/channelstack_0B2FE539.jpg"&gt;&lt;img src="http://blogical.se/blogs/mikael/channelstack_thumb_2ADEBF01.jpg" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="channelstack" alt="channelstack" border="0" height="164" width="640" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I begun by creating a custom &lt;a href="http://msdn.microsoft.com/en-us/library/aa717047.aspx"&gt;WCF MessageInspector&lt;/a&gt;. My plan was to parse the incoming JSON message to an XML message, and also to change the HTTP verb from GET to POST if the client sent a GET request (BizTalk requires POST). As it turns out, the HTTP verb/Method, can not be changed in the &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.idispatchmessageinspector.aspx"&gt;IDispatchMessageInspector&lt;/a&gt;. If it was to be changed it would have to be earlier in the channel stack.&lt;/p&gt;  &lt;p&gt;Prior to the MessageInspector is the OperationSelector, so I went on creating one implementing the &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.idispatchoperationselector.aspx"&gt;IDispatchOperationSelector&lt;/a&gt; interface. After moving the logic from the inspector to the SelectOperation method in the OperationSelector, I ran into a new problem. The method was never called. It seems BizTalk is adding it’s own OperationSelector through its HostFactory. As I wanted to host the Receive Location in a In-Process host (no IIS), making my own HosFactorythis wouldn’t work either…&lt;/p&gt;  &lt;p&gt;I was forced to dig even deeper in the WCF channel stack. Next step was a custom Encoder. Luckily I found a sample in the &lt;a href="http://msdn.microsoft.com/en-us/library/ms751486.aspx"&gt;SDK&lt;/a&gt; which was pretty easy to use. The only problem was I couldn’t access the HTTP verb. However after all this, I was willing to accept this trade-off.&lt;/p&gt;  &lt;p&gt;Next up was the serialization and deserialization of JSON. Bil Simser pointed me to the &lt;a href="http://json.codeplex.com/"&gt;JSON.Net&lt;/a&gt; project on codeplex, which made it very easy:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;XmlDocument doc = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();
doc.LoadXml(xmlString);

&lt;span class="kwrd"&gt;string&lt;/span&gt; jsonString = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;

&lt;h3&gt;How to use the sample:&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Download the sample &lt;a href="http://blogical.se/files/folders/downloads/entry29758.aspx"&gt;here&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Either run the bLogical.JsonXmlMessageEncoder.Setup.msi or build and add the bLogical.JsonXmlMessageEncoder to the global assembly cache (GAC). &lt;/li&gt;

  &lt;li&gt;Open BizTalk Administration Console. Browse to Adapters and right-click the WCF-Custom Receive Handler. Select Properties. &lt;/li&gt;

  &lt;li&gt;Click the Import button, and select the WcfExtensions.config file found in the project. &lt;/li&gt;

  &lt;li&gt;Deploy the FortisAlberta project to BizTalk. &lt;/li&gt;

  &lt;li&gt;Import the FortisAlberta.BindingInfo.xml to the FortisAlberta Application &lt;/li&gt;

  &lt;li&gt;Start the FortisAlberta Application. &lt;/li&gt;

  &lt;li&gt;Run the WebApplication1 project, and submit an OutageReport. &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;How to configure a Receive Location manually&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Add a Request/Response Receive Port and Location. &lt;/li&gt;

  &lt;li&gt;Set the transport to WCF-Custom (no need to host it in IIS). &lt;/li&gt;

  &lt;li&gt;Set the binding to &lt;b&gt;customBinding&lt;/b&gt;, and remove the existing binding elements. &lt;/li&gt;

  &lt;li&gt;Add the &amp;quot;jsonXmlMessageEncoder&amp;quot; and the &amp;quot;http transport&amp;quot; extensions. &lt;/li&gt;

  &lt;li&gt;Enable the port. &lt;/li&gt;

  &lt;li&gt;You can use the XmlToJSONConverter that comes with the project to generate the expected JSON format from an XML instance, or use any of the online conversion sites like &lt;a href="http://jsontoxml.utilities-online.info/"&gt;this one&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/SNAGHTML3d49ea3_4A8D98C9.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/SNAGHTML3d49ea3_thumb_1829C54A.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SNAGHTML3d49ea3" alt="SNAGHTML3d49ea3" border="0" height="480" width="351" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;How to call the service&lt;/h3&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    jQuery.support.cors = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
    &lt;span class="kwrd"&gt;var&lt;/span&gt; jsonRequest = &lt;span class="str"&gt;&amp;#39;{&amp;quot;Tweet&amp;quot;:{&amp;quot;Author&amp;quot;:&amp;quot;wmmihaa&amp;quot;,&amp;quot;Text&amp;quot;:&amp;quot;BizTalk Rock!&amp;quot;}}&amp;#39;&lt;/span&gt;;

    &lt;span class="kwrd"&gt;function&lt;/span&gt; ReportOutage() {
        $.ajax({
            type: &lt;span class="str"&gt;&amp;#39;POST&amp;#39;&lt;/span&gt;,
            url: &lt;span class="str"&gt;&lt;a href="http://yourdomain.com/submitTweet"&gt;http://yourdomain.com/submitTweet&lt;/a&gt;&lt;/span&gt;,
            data: jsonRequest,
            contentType: &lt;span class="str"&gt;&amp;quot;application/json; charset=utf-8&amp;quot;&lt;/span&gt;,
            dataType: &lt;span class="str"&gt;&amp;quot;json&amp;quot;&lt;/span&gt;,
            success: &lt;span class="kwrd"&gt;function&lt;/span&gt; (msg) {
                alert(msg);
            },
            error: &lt;span class="kwrd"&gt;function&lt;/span&gt; (xhr, ajaxOptions, thrownError) {
                alert(&lt;span class="str"&gt;&amp;#39;error: &amp;#39;&lt;/span&gt; + thrownError);
            }
        });
    }
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Please not the JSON above: &lt;/p&gt;

&lt;p&gt;“&lt;b&gt;{&amp;quot;Tweet&amp;quot;:{&amp;quot;Author&amp;quot;:&amp;quot;wmmihaa&amp;quot;,&amp;quot;Text&amp;quot;:&amp;quot;XML Rocks!&amp;quot;}}&lt;/b&gt;”. This is going to be translated to: &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Tweet&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;wmmihaa&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;XML Rocks!&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Tweet&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;As there are no namespace, you’d need to add one in the receive pipeline. Alternatively, you could add the namespace in JSON: &lt;/p&gt;

&lt;p&gt;&lt;b&gt;{&amp;quot;ns0:Tweet&amp;quot;:{&amp;quot;@xmlns:ns0&amp;quot;:&amp;quot;http://yourns.Tweet&amp;quot;,&amp;quot;Author&amp;quot;:&amp;quot;wmmihaa&amp;quot;,&amp;quot;Text&amp;quot;:&amp;quot;XML Rocks!&amp;quot;}}&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Which would come out as:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ns0:Tweet&lt;/span&gt; &lt;span class="attr"&gt;xmlns:ns0&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://yourns.Tweet&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;wmmihaa&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;XML Rocks!&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ns0:Tweet&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3&gt;How to call the service without using parameters&lt;/h3&gt;

&lt;pre class="csharpcode"&gt;function ReportOutage() {
    $.ajax({
        type: &amp;#39;POST&amp;#39;,
        url: &amp;quot;http://yourdomain.com/submitTweet&amp;quot;,
        data: &amp;#39;{}&amp;#39;, // empty parameter
        contentType: &amp;quot;application/json; charset=utf-8&amp;quot;,
        dataType: &amp;quot;json&amp;quot;,
        success: function (msg) {
            alert(msg);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(&amp;#39;error: &amp;#39; + thrownError);
        }
    });&lt;/pre&gt;



&lt;p&gt;Empty parameters are casted to a message that looks like this: &lt;b&gt;&amp;lt;EmptyJsonMessage/&amp;gt;. &lt;/b&gt;As you won’t have an equivalent schema in BizTalk, you can’t parse it using an XmlReceive pipeline. If you want to process the message in an orchestration, you’d need to set the message type of the incoming message to System.Xml.XmlDocument.&lt;/p&gt;

&lt;h3&gt;Restrictions&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Does not support HTTP GET. &lt;/li&gt;

  &lt;li&gt;Does not support Uri parameters, Eg. http://server/Customers&lt;b&gt;&lt;font style="background-color:#ffff00;"&gt;?id=16&lt;/font&gt;&lt;/b&gt;. &lt;/li&gt;

  &lt;li&gt;The encoder supports both XML and JSON, &lt;u&gt;but not both&lt;/u&gt;. It will be restricted to the media type set on the encoder. &lt;/li&gt;

  &lt;li&gt;In this sample the response can not be handled in a streaming manner. If the size of the response message is bigger then what is read from the client, this is likely to cause a problem. I haven’t experienced this myself, but if you get into this problem, contact me and I’ll look into it. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;HTH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29757" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://blogical.se/blogs/mikael/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogical.se/blogs/mikael/archive/tags/REST/default.aspx">REST</category><category domain="http://blogical.se/blogs/mikael/archive/tags/JSON/default.aspx">JSON</category></item><item><title>How the per-core licensing model will (by my guess) affect how we build BizTalk environments today</title><link>http://blogical.se/blogs/johan/archive/2012/02/10/how-the-per-core-licensing-model-will-by-my-guess-affect-how-we-build-biztalk-environments-today.aspx</link><pubDate>Fri, 10 Feb 2012 14:37:06 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29683</guid><dc:creator>Johan Hedberg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;SQL Server 2012 comes with a &lt;a href="http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-licensing.aspx"&gt;new licensing model&lt;/a&gt;. Instead of per processor socket you will pay per core. Licenses are sold in two core packs with a minimum of four core licenses needed per physical processor (even if that processor only has two cores). The price per core is about one quarter (1/4) of the price per processor today. This means that the price for anything but quad core processor architectures will either go up, in the case of hexa core processors, or will give you less value then what you are paying for, in the case of dual core processors.&lt;/p&gt;  &lt;p&gt;As far as how you would design your environments to keep the value without increasing the cost that means going with quad core as far as possible instead of for example hexa core. Especially if you are not sure you need that extra bit of processing power.&lt;/p&gt;  &lt;p&gt;Although this change is explicitly announced for SQL Server and so far does not extend to BizTalk Server, the way the development of processors is and has been moving over the last couple of years it stands to reason that this may very well be (and by my guess will be) extended to other products in the future. The change is inevitable.&lt;/p&gt;  &lt;p&gt;Therefore, today I would opt for quad core processors over hexa core if I use physical servers, in both SQL and BizTalk, to get a smooth transition to new licensing models.&lt;/p&gt;  &lt;p&gt;Or at the very least, think twice before you go on old preferences and choose as many cores as possible just to get the most value out of the current licensing model.&lt;/p&gt;  &lt;p&gt;Virtualization stays pretty much the same, that is, either pay for the virtual cores or for the physical cores (under the same rules as stated above).&lt;/p&gt;  &lt;p&gt;At this point in time this is not new information. For licensing technicians this is a well known fact, but for other technicians or architects, this information might not have surfaced yet.&lt;/p&gt;  &lt;p&gt;HTH,   &lt;br /&gt;/Johan&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29683" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/johan/archive/tags/Licensing/default.aspx">Licensing</category></item><item><title>Using the bitwise operator for subscriptions (part 2)</title><link>http://blogical.se/blogs/mikael_sand/archive/2012/02/10/using-the-bitwise-operator-for-subscriptions-part-2.aspx</link><pubDate>Fri, 10 Feb 2012 09:16:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29680</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In &lt;a href="http://blogical.se/blogs/mikael_sand/archive/2012/02/09/using-the-bitwise-operator-for-subscriptions-part-1.aspx" target="_blank"&gt;part 1&lt;/a&gt; I defined what the bitwise operator is and how you can use it in your .net code. Now, let us see how we can use the same functionality in BizTalk to route messages.&lt;/p&gt;  &lt;h2&gt;How to use&amp;#160; the bitwise operator in BizTalk&lt;/h2&gt;  &lt;p&gt;One of the great things about &lt;a href="http://www.logica.com" target="_blank"&gt;my job&lt;/a&gt; is that I get to move around a lot. Different customers has different uses for BizTalk and this leads to new ways to use it. This scenario is not unique, but was new to me anyway.&lt;/p&gt;  &lt;p&gt;BizTalk receives a message and needs to route it to different receivers. The receivers will be assigned using some form of “lookup” based on the message type. Message type A must be sent to system 1, 2 and 4. Message type B must be sent to system 3 and 4, and so on.&lt;/p&gt;  &lt;p&gt;As usual, the preferred solution makes no use of an orchestration, should be reconfigured without redeployment and adding a new receiver should be very easy and should only impact the current deployment in a minor way.&lt;/p&gt;  &lt;p&gt;This is a good time to use the bitwise operator!&lt;/p&gt;  &lt;h2&gt;Setup in BizTalk&lt;/h2&gt;  &lt;p&gt;This is just a simple proof of concept and, as such not complete. Keep that in mind and please provide feedback if anything is missing.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/Schema_thumb1_1A15479B.png" target="_blank"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Schema_thumb1" border="0" alt="Schema_thumb1" align="left" src="http://blogical.se/blogs/mikael_sand/Schema_thumb1_thumb_0BD6CEAB.png" width="244" height="219" /&gt;&lt;/a&gt;The schema&lt;/strong&gt;: The bitwise operator will solve the task. To use that, and also avoid using an orchestration, BizTalk has to be able to route messages based on a value in the file. In order to do that, a promoted property is used. In this case a field called “ReceiverField”.&lt;/p&gt;  &lt;p&gt;It is important to remember that in this particular case, &lt;em&gt;the promoted property must be an unsignedInt&lt;/em&gt;. This makes sense since you cannot use bitwise on a combination of positive and negative numbers. If you use Int, the operator will not show up in the administration console.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Receive port&lt;/strong&gt;: Now set up the ports. First we need receive to pick up the incoming data. In this a simple file receive location is used, but there is nothing stopping you form using other protocols. The bitwise handling will still work. The important thing to remember is to use the xmlreceive pipeline (as opposed to the passthru).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sendport for different systems&lt;/strong&gt;: Now for the magic part. Add a sendport for each of the systems you need to send the information to. Make sure to configure filters to reflect the particular number you have assigned to that system.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/FilterSendPort2_thumb_32A4E4EB.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="FilterSendPort2_thumb" border="0" alt="FilterSendPort2_thumb" src="http://blogical.se/blogs/mikael_sand/FilterSendPort2_thumb_thumb_5972FB2B.png" width="244" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the picture above, the filter is configured to send files received on the previously configured receive port and then the bitwise operator is used to look for the number two in the receiver field in the previously created schema.&lt;/p&gt;  &lt;p&gt;Add another port for another system:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/FilterSendPort_system3_thumb_4B34823B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="FilterSendPort_system3_thumb" border="0" alt="FilterSendPort_system3_thumb" src="http://blogical.se/blogs/mikael_sand/FilterSendPort_system3_thumb_thumb_51E78BBE.png" width="244" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The important thing to notice here is that there really is not any major difference. The only important difference is the number for the receiver field, which is not set to a 4.&lt;/p&gt;  &lt;p&gt;Start all the ports create a testfile to be dropped in the receive folder. Set the value of the receiver field to “2”. Drop it in the receive folder. The only the send port marked with a “2” will pick it up.&lt;/p&gt;  &lt;p&gt;Try again and change the value to “4”, only the second port will pick it up. Lastly set the value to “6”, now both ports will pick it up!&lt;/p&gt;  &lt;h2&gt;The upsides&lt;/h2&gt;  &lt;p&gt;The most important gain is of course the routing but there are some other benefits as well. Firstly, you can put different format mapping for different systems in their respective ports. This is also true for pipelines, so if one of the systems is using custom formatting, that is not a problem.&lt;/p&gt;  &lt;p&gt;Next, adding another system is simple as all you have to do is add another send port, and configure it to look for the next number (double the last).&lt;/p&gt;  &lt;h2&gt;The downsides&lt;/h2&gt;  &lt;p&gt;This logic cannot be used in orchestrations. You cannot use the bitwise operator as a part of an activation filter in the orchestration, sadly.&lt;/p&gt;  &lt;p&gt;Another thing that might be a problem is the code, or handling, by which you assign the number in the “RecievierField”. If BizTalk is responsible for assigning this value, you have to make sure that adding another system is just as simple as adding another send port. Maybe you have a database that matches message types and assign the number. BizTalk can then simply use a database functiod in a map to look it up.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29680" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Using the bitwise operator for subscriptions (part 1)</title><link>http://blogical.se/blogs/mikael_sand/archive/2012/02/09/using-the-bitwise-operator-for-subscriptions-part-1.aspx</link><pubDate>Thu, 09 Feb 2012 19:14:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29674</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Did you know that there is a “bitwise” operator that you can use when you define subscriptions in BizTalk? I surely did not! I just stumbled upon it an since I could not find any really good article on it I thought I would give it a try:&lt;/p&gt;  &lt;h2&gt;What is the Bitwise operator?&lt;/h2&gt;  &lt;p&gt;This is certainly best answered by others; like &lt;a href="http://en.wikipedia.org/wiki/Bitwise_operation" target="_blank"&gt;wikipedia&lt;/a&gt; or &lt;a href="http://www.dotnetperls.com/enum-flags" target="_blank"&gt;this guy&lt;/a&gt;, or &lt;a href="http://msdn.microsoft.com/en-us/library/sbf85k1c(v=vs.100).aspx" target="_blank"&gt;Microsoft&lt;/a&gt; of course.&lt;/p&gt;  &lt;p&gt;If you want the short, short version; it is a good way to let one number represent a combination of other numbers, so that you know if a particular number is present… well that did not explain a lot. Let me try a longer version.&lt;/p&gt;  &lt;h2&gt;What problem does bitwise solve?&lt;/h2&gt;  &lt;p&gt;Bitwise is often used with enums in .net and if you want to use bitwise on an enum you mark it with the [Flags] attibute. The bitwise operator is a single ampersand (&amp;amp;), not to be confused with another logical operator (&amp;amp;&amp;amp;).&lt;/p&gt;  &lt;p&gt;Imagine you are designing role based access management in a web application. You decide to have three different kinds of users (or roles); &lt;em&gt;standard user&lt;/em&gt;,&lt;em&gt; project managers&lt;/em&gt; and &lt;em&gt;administrators&lt;/em&gt;.     &lt;br /&gt;The standard user has access to information about his/her current projects. The project manager can add/remove users to projects, and lastly the administrator can add projects and users.&lt;/p&gt;  &lt;p&gt;When a web page is accessed, the user membership is checked and the information (perhaps in tabs) is displayed to the user depending on the user’s role.&lt;/p&gt;  &lt;p&gt;How would you solve the fact that there might be users that are both standard users and project managers (depending on project)? Or, how about a user being administrator, project manager &lt;em&gt;and &lt;/em&gt;standard user? How do you assign one number that combines different roles and give the user a particular access number?&lt;/p&gt;  &lt;p&gt;Of course there are a lot of ways to do this but that does not prove my point, so I will assume that the way to do it is using [Flags] enum and the bitwise operator.&lt;/p&gt;  &lt;h3&gt;The enum values&lt;/h3&gt;  &lt;p&gt;To make this work you have to assign values to your enum in a specific way: The value of the enum is double that of the last value in the series, except for the second one, which is the number one.&lt;/p&gt;  &lt;pre&gt;enum MyRoles : uint
 {
   Anon = 0,
   StdUsr = 1,
   ProjectMgr = 2,
   Admin = 4
 }&lt;/pre&gt;

&lt;p&gt;So, a standard user has an access number of 1 and a project manager has the number 2. A user that is both a standard user and a project manager; the user gets an access number of 3 (1+2 = 3). This number is unique in the series and this will hold true for all combinations, even if you would have hundreds of roles.&lt;/p&gt;

&lt;p&gt;Based on this logic, there is an easy way to find out if a user is in a particular role by using the &amp;amp;-operator. If you want to know if the user is a project manager, the code is simple:&lt;/p&gt;

&lt;pre&gt;if ((MyUser.AccessNumber &amp;amp;
      MyRoles.ProjectMgr) == MyRoles.ProjectMgr)
&lt;/pre&gt;
&lt;p&gt;If the the expression returns true, the user is a project manager.&lt;/p&gt;

&lt;p&gt;To be clear; there is a much simpler way of defining the same expression in .Net 4.0. Here; the bitwise operator is used under the convers.&lt;/p&gt;

&lt;pre&gt;if ( MyUser.AccessNumber.HasFlag(
     MyRoles.ProjectMgr))&lt;/pre&gt;

&lt;p&gt;Continued in &lt;a href="http://blogical.se/blogs/mikael_sand/archive/2012/02/10/using-the-bitwise-operator-for-subscriptions-part-2.aspx"&gt;part 2&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29674" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>BizTalk Server and named SQL Server Analysis Services instances</title><link>http://blogical.se/blogs/johan/archive/2012/01/09/biztalk-server-and-named-sql-server-analysis-services-instances.aspx</link><pubDate>Mon, 09 Jan 2012 21:21:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29158</guid><dc:creator>Johan Hedberg</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;The documentation for BizTalk Server 200X is very clear, and has been since BizTalk Server 2006. See the 2010 versions of &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/1837.aspx"&gt;technet wiki&lt;/a&gt; and &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=11503"&gt;download&lt;/a&gt;. It states:&lt;/p&gt;  &lt;p&gt;“&lt;em&gt;Named instances of SQL Server 200X Analysis Services are not supported&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;But why is that? I set out to investigate if I could find a reason for it still being true.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Examining the history&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the beginning, there was a limitation with SQL Server 2000 Analysis Services (SSAS). It was not instance or cluster aware (much like SSIS today). Some time later with the help of service packs (if I can recall and use my search engine correctly) SSAS became cluster aware, but only supported running on the default instance. Thus the requirements and the reason that was true with BizTalk Server 2006 is crystal - due to the support of the underlying technology, namely SQL Server 2000, named instance of Analysis Service was not supported.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Present&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I later versions of SQL Server, and the latest of SQL Server 2008 R2 specifically, there is no such limitation. Analysis Services is both cluster and instance aware and can be installed in a named instance. So the underlying limitation just isn’t there. But what about BizTalk? Does it have some built in limitation to how it uses Analysis Services that doesn’t allow working against a named instance?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The scenario&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Two BizTalk Server Group installations – connected to their respective database instance - side-by-side. Both SQL Server instances has the database, agent and analysis services services installed. In the default instance I have a BizTalk Server Group configured with BAM tracking and Analysis, and a deployed activity and view when we start our journey. For the named instance I wanted to configure the same thing to see that there were no issue with &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;running Analysis Service in a named instance, and&lt;/li&gt;    &lt;li&gt;running it side by side with the default instance and its Analysis Services on the same SQL Server machine.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Configuring BizTalk Server against a named instance of SQL Server 2008 R2 Analysis Services&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First configuring the feature using BizTalk Server Configuration.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_2_5E96B71F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_2" border="0" alt="BTS2_BAM_config_seperateAS_2" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_2_thumb_4C4DF05D.png" width="244" height="200" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then applying the configuration and view the result.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_2_configDone_5E2A842A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_2_configDone" border="0" alt="BTS2_BAM_config_seperateAS_2_configDone" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_2_configDone_thumb_04F89A6B.png" width="244" height="210" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No issues.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Deploy BAM activities and views&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Using bm.exe to deploy my BAM activity and view to my named instance.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_2_deployOK_2BC6B0AB.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_2_deployOK" border="0" alt="BTS2_BAM_config_seperateAS_2_deployOK" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_2_deployOK_thumb_24A77433.png" width="244" height="75" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No issues.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Using Tracking Profile Editor to connect my activity to an orchestration.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_btt_4B758A73.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_btt" border="0" alt="BTS2_BAM_config_seperateAS_btt" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_btt_thumb_7243A0B3.png" width="244" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No issues.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Running some data through the integration&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;BizTalk Server behaves as expected. After running some sample data through the integration I could open my BAMPrimaryImportDb and run a Select against it to view my data.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_Select_5632E1C8.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_Select" border="0" alt="BTS2_BAM_config_seperateAS_Select" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_Select_thumb_23CF0E49.png" width="244" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Running my BAM_AN_&amp;lt;View&amp;gt; SSIS package&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This was one of my prime candidates beforehand of where it could possibly go wrong. However as I used Business Intelligence Development Studio to inspect the package I could see that it was configured with datasources for the databases that it worked with, including the Analysis Services database, and it clearly points to the correct configured instance.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_BIstudio_BAM_AN_OrderView_4A9D2489.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_BIstudio_BAM_AN_OrderView" border="0" alt="BTS2_BAM_config_seperateAS_BIstudio_BAM_AN_OrderView" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_BIstudio_BAM_AN_OrderView_thumb_7575889B.png" width="191" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Running it caused no incidents that I could detect. After having run the package and processed the cube I was ready to look at the data in the cube to see if it got there as expected.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Viewing the Live Workbook&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The first thing to check was the live workbook (useless as I find this feature I wanted to see if it could read the data as expected).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_ExcelLiveWoorkbook_1C439EDC.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_ExcelLiveWoorkbook" border="0" alt="BTS2_BAM_config_seperateAS_ExcelLiveWoorkbook" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_ExcelLiveWoorkbook_thumb_70FF07D4.png" width="244" height="241" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It could. And again, if we view the data connection properties here it point to my named instance.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_ExcelLiveWoorkbook_ConnectionProperties_54EE48E9.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_ExcelLiveWoorkbook_ConnectionProperties" border="0" alt="BTS2_BAM_config_seperateAS_ExcelLiveWoorkbook_ConnectionProperties" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_ExcelLiveWoorkbook_ConnectionProperties_thumb_7BBC5F29.png" width="204" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(sorry about the swedish locale here, but you get the point)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Viewing data in the BAM portal&lt;/strong&gt;&lt;/p&gt;            &lt;p&gt;Next up, what about the BAM portal – would it be able to understand the named instance of SSAS and retrieve my data?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_BAMPortalView_228A756A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_BAMPortalView" border="0" alt="BTS2_BAM_config_seperateAS_BAMPortalView" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_BAMPortalView_thumb_42394F32.png" width="244" height="206" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_BAMPortalActivitySearch_5415E2FF.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="BTS2_BAM_config_seperateAS_BAMPortalActivitySearch" border="0" alt="BTS2_BAM_config_seperateAS_BAMPortalActivitySearch" src="http://blogical.se/blogs/johan/BTS2_BAM_config_seperateAS_BAMPortalActivitySearch_thumb_6FBA6EF5.png" width="244" height="176" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Yes. Both the Activity Search and the Aggregations show the data expected.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I can find no reason why SQL Server 2008 R2 Analysis Service cannot be used on a named instance with BizTalk Server 2010. Granted, this was just a small test and I certainly haven’t investigated this through every aspect (as per the usual disclaimer), but it “Works on my Machine”.&lt;/p&gt;  &lt;p&gt;Do you know a reason that this will not work? Are you running this configuration yourself and can confirm further that it does work? Let me know…&lt;/p&gt;  &lt;p&gt;HTH   &lt;br /&gt;/Johan&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29158" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/johan/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://blogical.se/blogs/johan/archive/tags/BAM/default.aspx">BAM</category><category domain="http://blogical.se/blogs/johan/archive/tags/Installation/default.aspx">Installation</category></item><item><title>Why BizTalk Server 2010 R2 should be BizTalk Server 2013</title><link>http://blogical.se/blogs/johan/archive/2012/01/03/why-biztalk-server-2010-r2-should-be-biztalk-server-2013.aspx</link><pubDate>Tue, 03 Jan 2012 18:33:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29045</guid><dc:creator>Johan Hedberg</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;That BizTalk Server 2010 will have a successor and that the working title of that release is BizTalk Server 2010 R2 was &lt;a href="http://blogs.msdn.com/b/biztalk_server_team_blog/archive/2011/12/08/biztalk-server-2010-r2.aspx"&gt;announced at the BizTalk Server team blog&lt;/a&gt; in december 2011 and re-announced by folks like &lt;a href="http://kentweare.blogspot.com/2011/12/biztalk-server-2010-r2-announced.html"&gt;Kent Weare&lt;/a&gt;, &lt;a href="http://geekswithblogs.net/cyoung/archive/2011/12/09/biztalk-server-2010-r2-announced.aspx"&gt;Charles Young&lt;/a&gt;, &lt;a href="http://blogs.digitaldeposit.net/saravana/post/2011/12/09/BizTalk-Server-2010-R2-announcement-my-thoughts-and-more-compelling-reasons-customers-should-buy-BizTalk360.aspx"&gt;Saravana Kumar&lt;/a&gt;, &lt;a href="http://soa-thoughts.blogspot.com/2011/12/biztalk-server-2010-r2-continuing-story.html"&gt;Steef-Jan Wiggers&lt;/a&gt; among others. &lt;/p&gt;  &lt;p&gt;What some of them hints at but doesn’t discuss further is that the version naming “2010 R2” might not stick. There are good grounds for such guesses. Historically &lt;a href="http://blogs.msdn.com/b/biztalk_server_team_blog/archive/2009/04/28/microsoft-announces-general-availability-of-biztalk-server-2009.aspx"&gt;BizTalk Server 2009&lt;/a&gt; was initially called &lt;a href="http://blogical.se/blogs/johan/archive/2008/04/23/biztalk-server-2006-r3.aspx"&gt;BizTalk Server 2006 R3&lt;/a&gt; before &lt;a href="http://blogs.msdn.com/b/nabeelp/archive/2008/09/05/biztalk-server-2009-biztalk-server-2006-r3.aspx"&gt;the renaming&lt;/a&gt;&amp;#160;&lt;a href="http://www.microsoft.com/presspass/features/2008/sep08/09-05BizTalk.mspx"&gt;was announced&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/biztalk_server_team_blog/archive/2010/09/22/biztalk-server-2010-released-for-manufacturing.aspx"&gt;BizTalk Server 2010&lt;/a&gt; was called &lt;a href="http://www.brianloesgen.com/blog/2009/11/21/biztalk-server-2009-r2-announced.html"&gt;BizTalk Server 2009 R2&lt;/a&gt; when first announced &lt;a href="http://blogs.msdn.com/b/arjunbahree/archive/2010/03/24/biztalk-server-2009-r2-renamed-to-biztalk-server-2010.aspx"&gt;before it too was renamed&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;One might argue that the R2 is a good suffix in this release since it is a minor release, without an abundance of new functionality. That’s true. &lt;/p&gt;  &lt;p&gt;One might argue that there is only so much to a name, the important thing is that Microsoft is showing that it will continue to maintain and carefully evolve the product. Not so I say.&lt;/p&gt;  &lt;p&gt;There is one very important thing that goes into that name that should not be overlooked or underestimated – the support lifecycle. &lt;a href="http://support.microsoft.com/gp/lifepolicy"&gt;Microsoft’s support lifecycle policy&lt;/a&gt; says that products will have 5+5 (mainstream+extended) support. However, that applies to major versions. An excerpt:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Minor releases follow the same Support Lifecycle as the major product release.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;An example of this is Windows Server 2003 R2 which has the same Mainstream Support phase and Extended Support phase dates as the parent product, Windows Server 2003. Likewise, Windows Server 2008 R2 follows the same Support Lifecycle dates as the initial release of Windows Server 2008”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If the product will be BizTalk Server 2010 R2 (and assuming it will follow the general rule), it will not get an extended support lifecycle end date. Except for what is stated in the general policy you can see examples of this scheme throughout the product chain. &lt;a href="http://support.microsoft.com/lifecycle/?p1=9774"&gt;BizTalk Server 2006&lt;/a&gt; and &lt;a href="http://support.microsoft.com/lifecycle/?p1=12829"&gt;2006 R2&lt;/a&gt; are the closest examples, but also &lt;a href="http://support.microsoft.com/lifecycle/?p1=12925"&gt;Windows Server 2008&lt;/a&gt; and &lt;a href="http://support.microsoft.com/lifecycle/?p1=14134"&gt;2008 R2&lt;/a&gt;, and &lt;a href="http://support.microsoft.com/lifecycle/?p1=13165"&gt;SQL Server 2008&lt;/a&gt; and &lt;a href="http://support.microsoft.com/lifecycle/?p1=14917"&gt;2008 R2&lt;/a&gt; both follow suit. In all these cases the R2 version does not start a new 5+5 year period. Where as with &lt;a href="http://support.microsoft.com/lifecycle/?p1=12829"&gt;BizTalk Server 2006 R2&lt;/a&gt; to &lt;a href="http://support.microsoft.com/lifecycle/?p1=14042"&gt;BizTalk Server 2009&lt;/a&gt; and again to &lt;a href="http://support.microsoft.com/lifecycle/?p1=15637"&gt;BizTalk Server 2010&lt;/a&gt;, we got new lifecycle support dates.&lt;/p&gt;  &lt;p&gt;One of the major asks around BizTalk Server before the announcement was for Microsoft to clearly show its continued support for BizTalk Server as a product – they did that, but here is hoping that they will strengthen that statement further by giving us a BizTalk Server 2013 (or 2012).&lt;/p&gt;  &lt;p&gt;HTH   &lt;br /&gt;/Johan&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29045" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/johan/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://blogical.se/blogs/johan/archive/tags/Maintenance/default.aspx">Maintenance</category><category domain="http://blogical.se/blogs/johan/archive/tags/Licensing/default.aspx">Licensing</category></item><item><title>The rogue agent that brought BizTalk to its knees</title><link>http://blogical.se/blogs/johan/archive/2012/01/02/the-rogue-agent-that-brought-biztalk-to-it-s-knees.aspx</link><pubDate>Mon, 02 Jan 2012 21:16:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:29027</guid><dc:creator>Johan Hedberg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;To help others that might find themselves in a similar situation I am posting this odd experience we had with a BizTalk environment during the fall of 2011.&lt;/p&gt;
&lt;p&gt;We had&amp;nbsp;a pretty standard setup with good hardware to back it up all the way, set up after best practices. We were using the &lt;a href="http://bbw.codeplex.com/"&gt;BizTalk Benchmark Wizard (BBW)&lt;/a&gt; to benchmark our environment and were comming up short at around 70 msg/s. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/BBW20111107.png"&gt;&lt;img style="width:308px;height:204px;" border="0" src="http://blogical.se/blogs/johan/BBW20111107.png" width="357" height="254" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We should have had values that were around 900 msg/s. Overall, from scrutinizing the performance logs using Performance Analysis of Logs (&lt;a href="http://pal.codeplex.com/"&gt;PAL&lt;/a&gt;) as well as our own best judgement, we at first couldn&amp;#39;t find anything alarming. Processor, Memory, disk, network etc. All good. We also ran things like the BizTalk Best Practice Analyzer (&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=15963"&gt;BizTalk BPA&lt;/a&gt;), the MessageBoxViewer tool (&lt;a href="http://blogs.technet.com/b/jpierauc/archive/2007/12/18/msgboxviewer.aspx"&gt;MBV&lt;/a&gt;), the &lt;a href="http://msdn.microsoft.com/en-us/library/gg634550.aspx"&gt;Monitor BizTalk Server &lt;/a&gt;SQL Server Agent job, but it all&amp;nbsp;came back looking&amp;nbsp;good. The environment just seemed... slow.&lt;/p&gt;
&lt;p&gt;As it turns out the&amp;nbsp;processor was especially&amp;nbsp;interesting knowing what turned out to be the final finding. The processors (two of them per server each of them with&amp;nbsp;6 cores per processor) was on an average very low, but as it turns out there was one process that was taking the equivalent of 1 full core of power (its Process % Processor time was at 100), but since it didn&amp;#39;t stay on one core it was hard to spot the problem. PAL doesn&amp;#39;t have an alert for this, and finding the one process and performance counter among all of them is not so easy.&lt;/p&gt;
&lt;p&gt;The process was the &amp;quot;HP Insight Server Agents&amp;quot; (cqmgserv.exe). The theory goes that as it was failing, recovering&amp;nbsp;and retrying it was pumping the machine full of events and clogging up the underlying bus. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/cqmgserv.exe.png"&gt;&lt;img border="0" src="http://blogical.se/blogs/johan/cqmgserv.exe.png" width="218" height="231" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The closest we got to a match in the form of a support document from HP was &lt;a href="http://h200003.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&amp;amp;cc=en&amp;amp;taskId=110&amp;amp;prodSeriesId=397634&amp;amp;prodTypeId=15351&amp;amp;prodSeriesId=397634&amp;amp;objectID=c00568181"&gt;this&lt;/a&gt;. Once the service was disabled the tests ran as expected att around 1000 msg/s. Later the service was updated to a newer version and started again without causing the same issues.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogical.se/blogs/johan/BBW20111107_2.png"&gt;&lt;img style="width:305px;height:194px;" border="0" src="http://blogical.se/blogs/johan/BBW20111107_2.png" width="350" height="264" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The purpose of this post is not to lay the blame on HP&amp;#39;s door&amp;nbsp;but instead to enlighten readers that similar situations can occur and to&amp;nbsp;highlight the value of a tool like&amp;nbsp;&lt;a href="http://bbw.codeplex.com/"&gt;BBW&lt;/a&gt;, since without it this exception would have likely never got caught and this server would have gone into production delivering much less value on the investment than it should.&lt;/p&gt;
&lt;p&gt;HTH&lt;br /&gt;/Johan&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=29027" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/johan/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://blogical.se/blogs/johan/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Truncate BizTalk Servers database log files to clear up space</title><link>http://blogical.se/blogs/johan/archive/2011/12/22/truncate-biztalk-servers-database-log-files-to-clear-up-space.aspx</link><pubDate>Thu, 22 Dec 2011 20:50:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28826</guid><dc:creator>Johan Hedberg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;First: A Disclaimer. Do NOT attempt this in your production environment.You risk loosing data.&lt;/p&gt;
&lt;p&gt;We had an issue in a test environment where the &lt;a class="" href="http://technet.microsoft.com/en-us/library/aa546765.aspx"&gt;Backup BizTalk job&lt;/a&gt; was not configured and had caused the log files to fill the disk to it&amp;#39;s limit. The data in the environment wasn&amp;#39;t important and destroying a coherent backup chain and point in time restore was not a big deal. We just needed to get the environment back fast to allow test to continue.&lt;/p&gt;
&lt;p&gt;I quickly wrote and ran the script below that does the job of truncating BizTalk Servers log files&amp;nbsp;to make the environment functional again. Be aware that this will break the coherence of the log backup chain. To get a point in time that you can restore to you could opt to take a full backup immediatly following this operation if that is important to you. Before running this script you should stop all services that uses the database and make sure that all connections are closed if you want to make sure that your databases&amp;nbsp;are left in a&amp;nbsp;transactionally coherent state.&lt;/p&gt;USE&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;master&lt;br /&gt;ALTER&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DATABASE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkMgmtDb &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SET&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;RECOVERY&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SIMPLE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;WITH&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; NO_WAIT&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;ALTER&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DATABASE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkDTADb &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SET&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;RECOVERY&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SIMPLE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;WITH&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; NO_WAIT&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;ALTER&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DATABASE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkMsgBoxDb &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SET&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;RECOVERY&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SIMPLE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;WITH&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; NO_WAIT&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;GO&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt; 
&lt;p dir="ltr"&gt;Use&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkMgmtDb&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DBCC&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; SHRINKFILE&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;N&amp;#39;BizTalkMgmtDb_log&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; 0&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; TRUNCATEONLY&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;)&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;GO&lt;/p&gt;Use&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkDTADb&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DBCC&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; SHRINKFILE&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;N&amp;#39;BizTalkDTADb_log&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; 0&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; TRUNCATEONLY&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;)&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;GO&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt; 
&lt;p dir="ltr"&gt;Use&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkMsgBoxDb&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DBCC&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; SHRINKFILE&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;&lt;font face="Tms Rmn" color="#ff0000" size="2"&gt;N&amp;#39;BizTalkMsgBoxDb_log&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; 0&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; TRUNCATEONLY&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;)&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;GO&lt;/p&gt;
&lt;p dir="ltr"&gt;USE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;master&lt;br /&gt;ALTER&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DATABASE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkMgmtDb &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SET&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;RECOVERY&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;FULL&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;WITH&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; NO_WAIT&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;font face="Tms Rmn" color="#808080" size="2"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;ALTER&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DATABASE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkDTADb &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SET&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;RECOVERY&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;FULL&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;WITH&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; NO_WAIT&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;ALTER&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;DATABASE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; BizTalkMsgBoxDb &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;SET&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;RECOVERY&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;FULL&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;WITH&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" size="2"&gt;&lt;font face="Tms Rmn" size="2"&gt; NO_WAIT&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;GO&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Arial" color="#000000"&gt;Keep in mind that this is just a sample, add and deduct databases as needed, change the name of log files etc.&amp;nbsp;Once done restart the BizTalk Services and you should be good to go.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff" size="2"&gt;&lt;font face="Arial" color="#000000"&gt;You really should, as a first, second and third option, configure the &lt;a class="" href="http://technet.microsoft.com/en-us/library/aa546765.aspx"&gt;Backup BizTalk job&lt;/a&gt; to stop unchecked log file growth.&amp;nbsp;The backup job will&amp;nbsp;make sure that log files don&amp;#39;t grow&amp;nbsp;out of control. You will however&amp;nbsp;need to set something up to clear away the backup files created instead. Here is &lt;a class="" href="http://blogical.se/blogs/johan/archive/2009/11/10/cleaning-up-biztalk-database-backups.aspx"&gt;one option for doing that&lt;/a&gt;.&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;There is&amp;nbsp;also something&amp;nbsp;you can do to reduce the size of the log files -&amp;nbsp;enable compression. You can read more about that &lt;a class="" href="http://connectedthoughts.wordpress.com/2010/06/22/biztalk-server-2010-backup-compression/"&gt;here&lt;/a&gt;.&lt;font face="Tms Rmn" color="#0000ff"&gt;&lt;font face="Tms Rmn" color="#0000ff"&gt;&lt;font face="Tms Rmn" color="#0000ff"&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font size="2"&gt;This log file growth happens because BizTalk Servers databases by default uses the FULL recovery mode. Setting the BizTalk Server databases in SIMPLE mode permanently is a so-so idea. If you really do not need and will never&amp;nbsp;do backups and understand that restore or recover in this case will mean re-install and start from scratch, then ok. If that is not the case, then SIMPLE mode is a bad idea. You can read more about why &lt;a class="" href="http://blogs.msdn.com/b/biztalk_core_engine/archive/2007/01/12/disaster-recovery-part-2.aspx"&gt;here&lt;/a&gt;. I&amp;#39;ll give a hint though - DTC transactions.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;HTH&lt;br /&gt;/Johan&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Tms Rmn" color="#0000ff"&gt;&lt;font face="Tms Rmn" color="#0000ff"&gt;&lt;font face="Tms Rmn" color="#0000ff"&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28826" width="1" height="1"&gt;</description></item><item><title>Used and unused hosts sql script</title><link>http://blogical.se/blogs/johan/archive/2011/12/22/used-and-unused-hosts-sql-script.aspx</link><pubDate>Thu, 22 Dec 2011 19:34:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28823</guid><dc:creator>Johan Hedberg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This is just a log post of a script I put together. When setting up a plattform we are not always certain what hosts and handlers the customer wants. We usually set it up according to common requirements and best practices. In that case it&amp;#39;s also interesting to see what hosts are indeed used and not used once the solution is deployed, so you know which ones can be removed if requested. This is a sql script for that. Although this information can be found out using the Administration Console these kind of reports are not easy to get out and there is no one view for it. It&amp;#39;s much easier to access the database BizTalkMgmtDb&amp;nbsp;directly for these things.&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; h1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Name &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_Host h1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;where&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; h1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Name &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;not&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;in(&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;distinct&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; h&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Name &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Host &lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;--, a.Name as Adapter, rp.nvcName as Port&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_host h &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_receivehandler rh &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; h&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;id &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; rh&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;HostId&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_receivelocation rl &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; rl&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;ReceiveHandlerId &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; rh&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Id&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; bts_receiveport rp &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; rp&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;nID &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; rl&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;ReceivePortId&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_adapter a &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; a&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;id &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; rh&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;AdapterId&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;UNION&lt;br /&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;distinct&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; h&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Name &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Host &lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;--, a.Name as Adapter, sp.nvcName as Port&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_Host h&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_SendHandler sh &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; h&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Id &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sh&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;HostId&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; bts_sendport_transport spt &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; spt&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;nSendHandlerID &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sh&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Id&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; bts_sendport sp &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sp&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;nID &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; spt&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;nSendPortID&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_Adapter a &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sh&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;AdapterId &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; a&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Id&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;UNION&lt;br /&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;distinct&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; h&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Name &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Host &lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;--, &amp;#39;*Orchestration&amp;#39; as Adapter, o.nvcName as Port&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; adm_Host h&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; bts_orchestration o &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; h&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Id &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; o&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;nAdminHostID&lt;br /&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;--UNION&lt;br /&gt;--select distinct h.Name as Host, * --, &amp;#39;*Tracking&amp;#39; as Adapter, NULL as Port&lt;br /&gt;--from adm_Host h&lt;br /&gt;--where h.HostTracking = 1&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#000000"&gt;HTH&lt;br /&gt;/Johan&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28823" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/johan/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://blogical.se/blogs/johan/archive/tags/Maintenance/default.aspx">Maintenance</category><category domain="http://blogical.se/blogs/johan/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Updates to bLogical.BizTalkManagement powershell BizTalk Server database restore commandlets</title><link>http://blogical.se/blogs/johan/archive/2011/12/19/updates-to-blogical-biztalkmanagement-powershell-biztalk-server-database-restore-commandlets.aspx</link><pubDate>Mon, 19 Dec 2011 14:19:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28774</guid><dc:creator>Johan Hedberg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I&amp;#39;ve uploaded a new version of the &lt;a class="" href="http://blogical.se/files/folders/downloads/entry22218.aspx"&gt;bLogical.BizTalkManagement restore powershell commandlets&lt;/a&gt; originally &lt;a class="" href="http://blogical.se/blogs/mikael/archive/2011/02/22/powershell-cmdlet-for-biztalk-db-restore.aspx"&gt;posted by Mikael&lt;/a&gt;. The updates are minor and adress the parsing of filenames and cleanup of the code to get rid of some god intentions that never became more then intentions, aka unused code.&lt;/p&gt;
&lt;p&gt;If you have no idea what I am talking about, feel free to read the &lt;a class="" href="http://blogical.se/blogs/mikael/archive/2011/02/22/powershell-cmdlet-for-biztalk-db-restore.aspx"&gt;original article&lt;/a&gt; and&amp;nbsp;&lt;a class="" href="http://blogical.se/files/folders/downloads/entry22218.aspx"&gt;give them a try&lt;/a&gt;. We are using these heavily for customers instead of log shipping and it really makes the whole process of restoring your databases&amp;nbsp;easy.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28774" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/johan/archive/tags/Maintenance/default.aspx">Maintenance</category><category domain="http://blogical.se/blogs/johan/archive/tags/Administration/default.aspx">Administration</category><category domain="http://blogical.se/blogs/johan/archive/tags/BizTalk+Server+2010/default.aspx">BizTalk Server 2010</category></item><item><title>Azure Service Bus EAI/EDI December 2011 CTP – Content Based Routing</title><link>http://blogical.se/blogs/mikael/archive/2011/12/18/azure-service-bus-eai-edi-december-2011-ctp-content-based-routing.aspx</link><pubDate>Sun, 18 Dec 2011 14:11:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28750</guid><dc:creator>wmmihaa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In this blog post we are going look at how to manage routing in the new Azure ServiceBus EAI CTP. &lt;/p&gt;  &lt;p&gt;As a scenario, I’m going to send a request for information (RFI) to some of my fellow MVP’s. To do that, I’m going to create a One-Way Xml Bridge, to receive the messages. After receiving the RFI message I tend to route it to one of three queues.&lt;/p&gt;  &lt;h3&gt;1. Create a ServiceBus project&lt;/h3&gt;  &lt;p&gt;If you haven’t already downloaded the SDK, you can do this &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=17691"&gt;here&lt;/a&gt;. After you’ve installed the SDK, you can sign in to the &lt;a href="https://portal.appfabriclabs.com/"&gt;labs environment&lt;/a&gt; using a Windows Live ID.&lt;/p&gt;  &lt;p&gt;Open Visual Studio 2010, and select Create Project. In the list of project templates, select &lt;i&gt;ServiceBus&lt;/i&gt;, and &lt;i&gt;Enterprise Application Integration&lt;/i&gt;. Give it a name and click Ok.&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/1_53EBBDFE.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/1_thumb_60E59E0F.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="1" alt="1" width="640" border="0" height="443" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;2. Create a Message Type&lt;/h3&gt;  &lt;p&gt;Right-click the project and select &lt;i&gt;Add-&amp;gt;New Item. &lt;/i&gt;At this time there are two types of artifacts you can add; Schemas and Maps. Select &lt;i&gt;Schema&lt;/i&gt; and sett an appropriate name. In my case I set the name to RFI.xsd. Continue building up your schema. Notice, you don’t have to promote any nodes as you’d have to do in BizTalk.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/2a_4D583E6E.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/2a_thumb_6AEA196D.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="2a" alt="2a" width="640" border="0" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;3. Designing the Bridge&lt;/h3&gt;  &lt;p&gt;Double-click the BridgeConfiguration.bcs and drag a &lt;i&gt;Xml One-Way Bridge&lt;/i&gt; from the toolbox to the canvas. This is going to be your entry point to your process, similar to a Receive Location in BizTalk. Set the name appropriately, and notice the Router Address which is going to be your endpoint in Azure ServiceBus.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/4_4D288EAE.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/4_thumb_4B679D0D.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="4" alt="4" width="640" border="0" height="378" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;4. Add Queues&lt;/h3&gt;  &lt;p&gt;As stated before, the incoming RFI message is going to be routed to any of the three queues. You might not your message relayed to a queue, and could there for use any of the other Destinations such as &lt;i&gt;Relay&lt;/i&gt;- or &lt;i&gt;External Service EndPoints. &lt;/i&gt;Either way, the principle of routing is the same.&lt;/p&gt;  &lt;p&gt;Connect the &lt;i&gt;Bridge&lt;/i&gt; with all &lt;i&gt;Destinations&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/5_62466E89.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/5_thumb_56447E55.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="5" alt="5" width="624" border="0" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;5. Configure the Bridge&lt;/h3&gt;  &lt;p&gt;Next we’ll define the incoming message type(s). Double-click your Bridge (ReceiveRFI in my case). Click the plus button in the Message Types stage. Select the Message Type you created earlier, and click the arrow button on the right.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/6_5493B281.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/6_thumb_13F16612.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="6" alt="6" width="640" border="0" height="439" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;6. Enrich the Message&lt;/h3&gt;  &lt;p&gt;This is the interesting step, where we are going to promote some fields in the payload so that we can route on these in the next step.&lt;/p&gt;  &lt;p&gt;First open your schema and select the node you care to use for routing (in my case &lt;i&gt;Receive&lt;/i&gt;). Copy the &lt;i&gt;Instance XPath&lt;/i&gt; from the Property window.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/8_12ACCD33.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/8_thumb_714D2796.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="8" alt="8" width="640" border="0" height="475" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then double-click the Bridge, select either of the Enrich stages, and then click the &lt;i&gt;Property Definition&lt;/i&gt; button in the Property window. There are two Enrich stages, as you might be using a Transformation, in which case you might want to promote fields from either the original message or the transformed message.&lt;/p&gt;  &lt;p&gt;For more information about transformations, have a look at Kent’s &lt;a href="http://middlewareinthecloud.com/2011/12/17/azure-service-bus-eaiedi-december-2011-ctp-new-mapper/"&gt;post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/7_5A3EA65A.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/7_thumb_750ACC66.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="7" alt="7" width="566" border="0" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Set the Type to XPath, and paste the XPath expression in the Identifier text box. Select the Message Type and set the name of the property. Finish be setting the data type and click the Add button (+). Close the dialog by clicking the Ok button. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/9_6587BA97.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/9_thumb_3DE13E6D.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="9" alt="9" width="494" border="0" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;7. Set the routing conditions&lt;/h3&gt;  &lt;p&gt;As you have promoted your property (or properties), you’re now ready to set the Filter Conditions on each of the Connectors. Select one of the selectors and type the Filter in the Property window. Eg. receiver=’SteefJan’ or customerId=1234. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/10_15CE8F4E.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/10_thumb_5BDF4C61.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="10" alt="10" width="640" border="0" height="299" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;8. Create the Queues&lt;/h3&gt;  &lt;p&gt;Before we deploy the solution, you need to create the queues. There are several tools for this, but with the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=17691"&gt;samples&lt;/a&gt; comes a MessageReceiver project you can use. &lt;/p&gt;  &lt;p&gt;Type &lt;font face="Courier New"&gt;MessageReceiver.exe &amp;lt;Your namespace&amp;gt; owner &amp;lt;Your issuer key&amp;gt; &amp;lt;Queue name&amp;gt; Create&lt;/font&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;After creating the queues verify they are created in the &lt;a href="https://portal.appfabriclabs.com/"&gt;portal&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/11_28A312F8.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/11_thumb_1F66D7B7.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="11" alt="11" width="640" border="0" height="265" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;9. Deploy your solution&lt;/h3&gt;  &lt;p&gt;Right-click the project and select &lt;i&gt;Deploy&lt;/i&gt;. Supply the secret.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/12_3E3D4B95.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/12_thumb_6B523863.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="12" alt="12" width="640" border="0" height="314" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;10. Test the solution&lt;/h3&gt;  &lt;p&gt;Along with the MessageReceiver tool, you’ll find a MessageSender project as well. Just type:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;MessageSender.exe &amp;lt;Your namespace&amp;gt; &amp;lt;Your issuer key&amp;gt; &amp;lt;Your endpoint&amp;gt; &amp;lt;Path to sample file&amp;gt; application/xml&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Use the MessgeReceiver to get the messages from the queues: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/14_29D7860A.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/14_thumb_3494DD5F.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="14" alt="14" width="640" border="0" height="317" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;HTH&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28750" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogical.se/blogs/mikael/archive/tags/EAI/default.aspx">EAI</category><category domain="http://blogical.se/blogs/mikael/archive/tags/ServiceBus/default.aspx">ServiceBus</category></item><item><title>Using User-defined tables as stored procedure parameter</title><link>http://blogical.se/blogs/mikael/archive/2011/12/15/using-user-defined-tables-as-stored-procedure-parameter.aspx</link><pubDate>Thu, 15 Dec 2011 12:47:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28599</guid><dc:creator>wmmihaa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The WCF-SQL adapter provides support for multiple inserts through the &lt;i&gt;Consume Adapter Service &lt;/i&gt;feature:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/image_06EBD8F2.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/image_thumb_269AB2BA.png" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" alt="image" width="541" border="0" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;However, sometimes you might want to validate the data on the SQL side before before making the insert. For instance, if you have a collection of Customers, where some of them might already exist in the database, and should only be updated. In such a case, you’d have to first make a database lookup, to determine the state of the Customer and then make either an insert or update.&lt;/p&gt;  &lt;p&gt;In such a case, using &lt;a href="http://msdn.microsoft.com/en-us/library/bb522526.aspx"&gt;user-defined table types&lt;/a&gt; might be your solution. User-defined tables are similar to ordinary tables, but can be passed in as a parameter.&lt;/p&gt;  &lt;p&gt;In my sample, I have a &lt;i&gt;Contacts&lt;/i&gt; table, and I’m receiving a collection of &lt;i&gt;Persons&lt;/i&gt; where some entities are new and some are to be updated. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/image_2D4DBC3D.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/image_thumb_78412D0C.png" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" alt="image" width="644" border="0" height="159" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Create the User-Defined Table Type&lt;/h3&gt;  &lt;p&gt;The user-defied table type will serve as our contract. &lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; TYPE [dbo].[InsertContactRequest] &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt;
(
    [PersonNo] [&lt;span class="kwrd"&gt;varchar&lt;/span&gt;](50) &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;,
    [FirstName] [&lt;span class="kwrd"&gt;varchar&lt;/span&gt;](50) &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;,
    [LastName] [&lt;span class="kwrd"&gt;varchar&lt;/span&gt;](50) &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;,
    [Phone] [&lt;span class="kwrd"&gt;varchar&lt;/span&gt;](50) &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;,
    &lt;span class="kwrd"&gt;PRIMARY&lt;/span&gt; &lt;span class="kwrd"&gt;KEY&lt;/span&gt; &lt;span class="kwrd"&gt;CLUSTERED&lt;/span&gt; ([PersonNo] &lt;span class="kwrd"&gt;ASC&lt;/span&gt;)&lt;span class="kwrd"&gt;WITH&lt;/span&gt; (IGNORE_DUP_KEY = &lt;span class="kwrd"&gt;OFF&lt;/span&gt;)
)&lt;/pre&gt;

&lt;h3&gt;Create the Stored Procedure&lt;/h3&gt;

&lt;p&gt;The stored procedure takes the user-defined table type as a parameter (@insertContactRequest), then updates all existing rows and inserting all new once.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;PROCEDURE&lt;/span&gt; [dbo].[sp_InsertContacts] @insertContactRequest InsertContactRequest READONLY
&lt;span class="kwrd"&gt;AS&lt;/span&gt;
&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;
    
    &lt;span class="kwrd"&gt;UPDATE&lt;/span&gt; dbo.Contacts 
    &lt;span class="kwrd"&gt;SET&lt;/span&gt; Phone = r.Phone
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt; dbo.Contacts c
    &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; @insertContactRequest r &lt;span class="kwrd"&gt;on&lt;/span&gt; r.PersonNo = c.PersonNo

    &lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; dbo.Contacts (PersonNo, FirstName, LastName, Phone)
    &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; r.PersonNo, r.FirstName, r.LastName, r.Phone
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt;    @insertContactRequest r
    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt;    r.PersonNo &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt;(&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; PersonNo &lt;span class="kwrd"&gt;FROM&lt;/span&gt; dbo.Contacts)
       
END&lt;/pre&gt;

&lt;h3&gt;Generate BizTalk artefacs&lt;/h3&gt;

&lt;p&gt;1. In you Visual Studio, right-click the BizTalk project and select &lt;i&gt;Add-&amp;gt;Add Generated Items&lt;/i&gt;. Select &lt;i&gt;Consume Adapter Service.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/image_5B0F7334.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/image_thumb_2FCADC2D.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" width="644" border="0" height="446" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2. In the &lt;i&gt;Consume Adapter Service &lt;/i&gt;dialog, click the configure button to set the credentials. Click Ok, and then &lt;i&gt;Connect&lt;/i&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/image_089092F8.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/image_thumb_134DEA4D.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" width="542" border="0" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3. In the tree-view, select &lt;i&gt;Strongly Typed Procedures&lt;/i&gt;, and select your stored procedure in the right pane. Click &lt;i&gt;Add&lt;/i&gt; and Ok to generate the schemas.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/image_79E5E712.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/image_thumb_1994C0DB.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" width="644" border="0" height="456" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4. Make your transformation, and complete your solution.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/image_6011B0E3.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/image_thumb_5FA57DEE.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" width="644" border="0" height="456" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/files/folders/downloads/entry28598.aspx"&gt;Here is the sample source.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HTH&lt;/p&gt;

&lt;p&gt;(Kudos Daniel Östberg)&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28599" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogical.se/blogs/mikael/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogical.se/blogs/mikael/archive/tags/BizTalk+2010/default.aspx">BizTalk 2010</category></item><item><title>Microsoft BizTalk server 2010 patterns - a review</title><link>http://blogical.se/blogs/mikael_sand/archive/2011/12/14/microsoft-biztalk-server-2010-patterns-a-review.aspx</link><pubDate>Wed, 14 Dec 2011 13:36:43 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28526</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;blockquote&gt;   &lt;p&gt;”There is no Hello World in BizTalk”     &lt;br /&gt;- &lt;a href="http://www.linkedin.com/in/danrosanova"&gt;Dan Rosanova&lt;/a&gt; (author of the book)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/4606EN_Biztalk20server20201020patterns_FrontCover_45431EBD.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="4606EN_Biztalk%20server%202010%20patterns_FrontCover" border="0" alt="4606EN_Biztalk%20server%202010%20patterns_FrontCover" align="left" src="http://blogical.se/blogs/mikael_sand/4606EN_Biztalk20server20201020patterns_FrontCover_thumb_347B740F.jpg" width="263" height="299" /&gt;&lt;/a&gt;I really want to like &lt;a href="http://www.packtpub.com/microsoft-biztalk-server-2010-patterns/book"&gt;this book&lt;/a&gt;. Right off the bat the title is awesome with a capital A. Right up my alley as it were. For a long time there has been a lack of literature about the more practical details around patterns and anti-patterns and how they are implemented in BizTalk. I am not saying that there has not been anything about patterns, there is a ton of them, but nothing really about how to implement them in a BizTalk solution, and how to do that in practice. Enter this book.&lt;/p&gt;  &lt;p&gt;Oh, how I would like to like his book. I am however somewhat disappointed, but you should definitely buy it.&lt;/p&gt;  &lt;h2&gt;Insightful author&lt;/h2&gt;  &lt;p&gt;There are chapters and headings that underline how very insightful the author is about BizTalk and its implementation. Headers that are very helpful in summarizing all the disparate definitions that you might already have about BizTalk. One particular header is “When to use BizTalk”, which does the best job ever to answer that question. Another is “Visual Studio solution structure” that explains in very practical and well-grounded points how the author feels the solution has to be structured. In my opinion; if you do not already have a solution structure document, use this one.&lt;/p&gt;  &lt;h2&gt;Author style&lt;/h2&gt;  &lt;p&gt;The text oozes with practical knowledge and a lot of humor as well. There is no doubt in my mind what so ever that the author, does not only know what he is talking about, but also that there is quite a lot that has been left out of the book in order to shorten the text. He does a &lt;i&gt;very&lt;/i&gt; good job of taking a practical approach to development and architecture. He makes use of the same example solution throughout the book. This makes you feel for the solution as you might do for a real life solution. You started it and have seen it grow from a mere file-copy solution to being a core process handler in the enterprise. Another good point in doing this is that he shows the importance of doing the architecture right from the start. To really think ahead and figure out what might be next in order not to “paint yourself into a corner”. I think there is too little of this in the book. I would have liked more of a discussion about what might be the best solution within the current context. As all of you know; the problem usually is not to find a solution, but to find the best one within a certain context. That is the beauty of BizTalk in my opinion.&lt;/p&gt;  &lt;p&gt;Also, once I would like to read a BizTalk book that assumes I know BizTalk and can tell the difference between a pipeline and a map, and know how to use custom xslt. This book does not, and spends few too many pages about the basics. I think this is due to the editor or publisher. They think you need that in order to make the book complete. I would say you do not. Anyone that would pick up this book feels confident about the basics. The title says so.&lt;/p&gt;  &lt;h2&gt;Practical approach&lt;/h2&gt;  &lt;p&gt;The author takes a very practical approach, and together with the code supplied you can easily follow along and learn hands on as well. Once again I would like to point out that some parts might focus too much on the practical but some people really like that so it is just an opinion.&lt;/p&gt;  &lt;p&gt;Then there is another thing about the book as a whole. Due to the fact that the author wants you to see the solution grow as it might in a real life scenario, the disposition of the book is partly totally off the wall. The same chapter covers Unit testing and BAM, and another mixes configuring WCF-receive and BRE.&lt;/p&gt;  &lt;h2&gt;So tell me, what should I do?&lt;/h2&gt;  &lt;p&gt;So, bottom line: Should you buy this book? Of course you should! The technical aspect of it together with the experience of the author is an opportunity you should not miss. Another point I would like to reiterate is that it fills a gap in the integration literature and I would especially recommend it to people that have worked with BizTalk for two years and changed projects during that time. It might be time to move ahead and have an option during the next ICC meeting.&lt;/p&gt;  &lt;p&gt;Though I would like to discuss certain parts about solution structure with the author, there are a lot of tips and tricks I will use in the future.&lt;/p&gt;  &lt;p&gt;More info on the author: &lt;a href="http://www.novaenterprisesystems.com/Blog/"&gt;blog&lt;/a&gt;, &lt;a href="https://twitter.com/#!/DanRosanova"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28526" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Book/default.aspx">Book</category><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Review/default.aspx">Review</category></item><item><title>How to pass BizTalk certification (70-595)</title><link>http://blogical.se/blogs/mikael_sand/archive/2011/12/13/how-to-pass-biztalk-certification-70-595.aspx</link><pubDate>Tue, 13 Dec 2011 18:44:49 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28501</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;As you may know, there is an MCTS-exam called 70-595, for us that work with BizTalk. The formal name is: “&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-595&amp;amp;Locale=en-us#tab2"&gt;Developing Business Process and Integration Solutions by Using Microsoft BizTalk Server 2010&lt;/a&gt;”. Many seem to think that passing this test is hard and also a challenge, but if you do pass, it gives you a sense of pride and accomplishment. You have also received a sign of approval from Microsoft about your knowledge and abilities. If you are lucky, and work for &lt;a href="http://www.logica.com"&gt;the right employer&lt;/a&gt;, you might even receive a bonus for passing. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;How do I book a test date?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.prometric.com/default.htm"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image001" border="0" alt="clip_image001" align="left" src="http://blogical.se/blogs/mikael_sand/clip_image001_51E0E55B.png" width="240" height="100" /&gt;&lt;/a&gt;Firstly you need to find a &lt;a href="http://prometric.com/default.htm"&gt;Prometric&lt;/a&gt;-licensed test center. Microsoft works in collaboration with Prometric worldwide and they are responsible for making sure that everyone gets to take the test under the same conditions. They, in turn, certify locations (or test centers) all over the world. You need to find one of those. If I were you I would check the local education center that your company usually uses.&lt;/p&gt;  &lt;p&gt;If you live in Sweden I can recommend &lt;a href="http://www.addskills.se/certifiering--test/certifieringstest/070-595-ts-developing-business-process-and-integration-solutions-by-using-microsoft-biztalk-server-2010/"&gt;AddSkills&lt;/a&gt;. You can book a date right from their site, and even send the invoice directly to your employer. The cost for taking the test varies, but at AddSkills the current rate is 1 950 SEK for the Gothenburg and Stockholm test centers. Others might be more expensive. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Is the test hard?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/clip_image002_5F46F861.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image002" border="0" alt="clip_image002" align="left" src="http://blogical.se/blogs/mikael_sand/clip_image002_thumb_17856F7A.jpg" width="117" height="92" /&gt;&lt;/a&gt;Yes, it is hard. The point of the test to show that you are better than a beginner and that you also have some working experience with the product. I have heard different rumors about different Microsoft exams. Some seem to be easy-peasy, and others are hard as nails. This might be the case but I can tell you that the BizTalk is in the latter category rather than the former.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What is the process of the exam itself?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;There used to be practice tests available, that closely mimicked the actual test’s process. I have not been able to find any tests for BizTalk 2010 but I will assume that, since they were available it is OK for me to write a bit about the process.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/clip_image003_0946F68A.gif"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image003" border="0" alt="clip_image003" align="left" src="http://blogical.se/blogs/mikael_sand/clip_image003_thumb_24EB8280.gif" width="90" height="90" /&gt;&lt;/a&gt;&lt;b&gt;Most importantly&lt;/b&gt;: No cheating! If you are caught cheating, you will be banned from taking further tests and the community will shun you. You will be forced to live out in the forest with only the birds and the voices in your head to keep you company. So please don’t cheat.&lt;/p&gt;  &lt;p&gt;You will be placed in front of a computer configured to conform to some sort of minimum standard. You are only allowed to use the tools that the computer supplies and also a scratch-pad, provided by the test center. You are not allowed to bring anything but yourself into the test room. To further reduce the risk of cheating the testing room will be monitored via CCTV.&lt;/p&gt;  &lt;p&gt;The test is entirely based on multiple choice. Some of the questions have answers in the form of RadioButtons (one correct answer), and others CheckBoxes (more than one might be correct).&lt;/p&gt;  &lt;p&gt;There is a “mark for review” system. This means that you can mark a question for review, if you feel you might want to rethink that later. After you have answered all the questions you have an opportunity to view all the questions again. The ones you have marked for review is very clearly marked.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/clip_image004_68BFB6D7.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image004" border="0" alt="clip_image004" align="left" src="http://blogical.se/blogs/mikael_sand/clip_image004_thumb_2F3CA6E0.jpg" width="190" height="240" /&gt;&lt;/a&gt;The total time for the test is two and a half hours, which is ample time in my view. If you are worried that you might not be able to finish on time, you can use the review-system to mark questions you are not so sure about or you feel might take a long time to answer. Then run thru the test once and answer all the “easy” ones. This way you know that you will at least get those.&lt;/p&gt;  &lt;p&gt;My method has been to take one question at a time and really focus on just that question. Read it, analyze it and try to get to the bare bone of the question. Give it the answer you feel is the best one and if you are unsure; mark it for review. Then drop that question and focus hard on the next one. I run thru the test in this manor until there are no more questions. By then, I am ready for a short break. After the break I review all the questions marked for review. This time, focusing even harder on the text and the different answers, as there might be pitfalls. Personally I don’t believe in reviewing all the questions, it’s just a waste of time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/clip_image005_27B13773.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image005" border="0" alt="clip_image005" align="left" src="http://blogical.se/blogs/mikael_sand/clip_image005_thumb_031FA9EF.jpg" width="186" height="149" /&gt;&lt;/a&gt;When you are done, you submit the test and after 10 &lt;i&gt;agonizing seconds&lt;/i&gt; you will receive your score: pass or fail. If you pass, don’t forget to pick up your test result sheet from the test center. This paper will tell you your score and how well you performed in the different categories (see below).&lt;/p&gt;  &lt;p&gt;In case of success, don’t forget to celebrate and treat yourself to something as a reward for all that hard work.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What do I need to study?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;That actually has an official answer from Microsoft located &lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-595&amp;amp;Locale=en-us#tab2"&gt;here&lt;/a&gt;. I heartily recommend reading that article &lt;i&gt;thoroughly&lt;/i&gt; and &lt;i&gt;several times&lt;/i&gt;. Note that they have used the wording “including but not limited to”, so even if the list of things to know might be long, it might not be complete. &lt;/p&gt;  &lt;p&gt;Here it is, together with the relative percentage of that subject compared to the whole exam.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Configuring and Architecture: 20 % &lt;/li&gt;    &lt;li&gt;Developing BizTalk Artifacts: 20 % &lt;/li&gt;    &lt;li&gt;Debugging and exception handling: 17 % &lt;/li&gt;    &lt;li&gt;Integrating Web Services and WCF: 14 % &lt;/li&gt;    &lt;li&gt;Implementing extended capabilities: 13 % &lt;/li&gt;    &lt;li&gt;Deploying, tracking and supporting: 16 % &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Something worth mentioning is that there is a lot of focus on Web Services and Wcf. It is about as important as developing BizTalk artifacts, which is pretty darn “core BizTalk”.&lt;/p&gt;  &lt;p&gt;Something else worth noting is the point called “Implementing extended capabilities”. That is worth 13 % but includes RFID, EDI, BRE &lt;i&gt;and&lt;/i&gt; BAM. It is safe to say that you might not have to know all the ins and outs of BAM or RFID to pass, but to dismiss them altogether is naïve.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;My advice&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The best advice I can give you about what to focus on when studying for the exam is this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Read the article from Microsoft once more and note all the concepts listed under each category (like what core adapters are mentioned or that you must know how to configure basic tracking).&lt;/li&gt;    &lt;li&gt;Divide all the concepts into three categories:     &lt;ol&gt;       &lt;li&gt;I have heard/not heard of this and have only a vague/no idea of how to use it (like RFID perhaps).&lt;/li&gt;        &lt;li&gt;I have a fairly good idea of how to use this but feel I might need to know more (like Role Links).&lt;/li&gt;        &lt;li&gt;I know this and feel I really don’t need to study for it (like configuring a FILE send port).&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;b&gt;How do I study for the exam?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;There is really no simple solution for this as there is no self-paced learning kit or anything like that. There might be a book on this subject in the making, according to rumors. I have no idea about release date or anything though.&lt;/p&gt;  &lt;p&gt;Until that book is released I recommend this &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/5058.aspx"&gt;summary&lt;/a&gt;, found at Microsoft. It is made by the ever productive &lt;a href="http://soa-thoughts.blogspot.com/"&gt;Steef-Jan&lt;/a&gt; and lists all the free available resources that Microsoft has put out.&lt;/p&gt;  &lt;p&gt;I would also recommend the book &lt;a href="http://www.informit.com/store/product.aspx?isbn=0672331187"&gt;Microsoft BizTalk Server 2010 Unleached&lt;/a&gt;, partly written by a colleague of mine, &lt;a href="http://blogs.eliasen.dk/technical"&gt;Jan Eliasen&lt;/a&gt;. You should, of course, read the book from cover to cover but if you are more target oriented you can obviously skip the more extensive aspects about BRE, everything about Windows Azure and the short part about the ESB toolkit.&lt;/p&gt;  &lt;p&gt;Also read the blog post about the exam written by fellow blogical-blogger and MCT &lt;a href="http://blogical.se/blogs/johan/archive/2011/04/29/the-70-595-exam-and-the-first-rule-of-fight-club.aspx"&gt;Johan Hedberg&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;In closing…&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I passed my test. Will you prove yourself? Just kidding! Have fun studying; you will learn a lot of useful things about our favorite product.&lt;/p&gt;  &lt;p&gt;Also, please &lt;a href="http://blogical.se/blogs/mikael_sand/contact.aspx"&gt;provide feedback&lt;/a&gt; if you disagree or feel I have said too much about anything. I am only trying to help, not violate the NDA.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28501" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Biztalk/default.aspx">Biztalk</category><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/certification/default.aspx">certification</category></item><item><title>I did it so you don't have to: Connecting to Dynamics CRM Online from BizTalk Server</title><link>http://blogical.se/blogs/mikael/archive/2011/12/11/i-did-it-so-you-don-t-have-to-connecting-to-dynamics-crm-online-from-biztalk-server.aspx</link><pubDate>Sun, 11 Dec 2011 13:31:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28410</guid><dc:creator>wmmihaa</dc:creator><slash:comments>0</slash:comments><description>&lt;b&gt;&lt;/b&gt;  &lt;p&gt;If you’re a consultant like me, you’ve probably got similar calls from some key account manager, as I did yesterday:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;KAM&lt;/b&gt;: &lt;i&gt;Hi Mikael. I’m just about to close this super big deal, with this super important Customer.&lt;/i&gt;     &lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;Really! Good for you.      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;KAM&lt;/b&gt;: &lt;i&gt;Yeah, we’re really close. But to rap it up, I was wondering if you could help me out a bit…      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;Sure. What do you have in mind?&lt;/i&gt;     &lt;br /&gt;&lt;b&gt;KAM&lt;/b&gt;: &lt;i&gt;Could you come with me to meeting with the customer on Monday? (this happens on Thursday 6PM)      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;Me&lt;/b&gt; (getting suspicious): &lt;i&gt;mmm…What do you want me to do?      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;KAM&lt;/b&gt;: &lt;i&gt;A demo!      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;Demo of what?      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;KAM&lt;/b&gt;: &lt;i&gt;The customer want us to show how to integrate Dynamics CRM Online with SAP using BizTalk.      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;What?      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;KAM&lt;/b&gt;: &lt;i&gt;Yes, yes. The customer wants us to show it live!&lt;/i&gt; &lt;i&gt;You know, they want to see you do it…&lt;/i&gt;     &lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;ARE YOU HIGH? (I didn’t actually say that, but I was thinking it)      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;It will not happen! I haven&amp;#39;t worked with SAP since 3-4 year ago. I’ve never worked with CRM Online (or off-line for that matter). I’m fully booked tomorrow, and I want to spend the weekend with my family as X-mas is coming up.      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;KAM&lt;/b&gt;: &lt;i&gt;But we need to close this deal…&lt;/i&gt;     &lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;NO!      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;KAM&lt;/b&gt;: &lt;i&gt;Please…      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;No way!      &lt;br /&gt;&lt;/i&gt;(Yada, yada, yada)     &lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;: &lt;i&gt;Ok, I’ll give it a try (&lt;b&gt;I’M SUCH AN IDIOT!!!!!&lt;/b&gt;)       &lt;br /&gt;&lt;/i&gt;&lt;/p&gt;  &lt;h3&gt;So here it is: How to connect to Dynamics CRM Online from BizTalk Server&lt;/h3&gt;  &lt;p&gt;To begin with, if you want to integrate with CRM Online, you have two options. Either use an un-typed web-service API or use a tool called &lt;a href="http://blog.abodit.com/2011/03/crmsvcutil-exe-with-microsoft-dynamics-crm-2011-online-problem/"&gt;CrmSvcUtil.exe&lt;/a&gt; to create a proxy class for you. Each of these comes with some challenges and limitations:&lt;/p&gt;  &lt;p&gt;Using an un-typed web service, can of course be somewhat messy, but the SDK provides you with the schemas you need (more on that later). The biggest challenge, however, is to authenticate to the service as it assumes you’re using Windows Live Id. Authenticating against the service would require an additional four calls to the service to finally get the authentication tokens needed to create the security header. An then figure out a way to to add the headers in a pipeline. The steps needed are described by Girish Raja &lt;a href="http://code.msdn.microsoft.com/CRM-Online-2011-WebServices-14913a16"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The proxy created using the CrmSvcUtil is quite nice, since it’s typed, but of course I can’t use it in a send port. I would&amp;nbsp; have to make the call using the inline-send approach from within an expression shape in an orchestration. And thereby loose the built in re-send functionality and more, that ships with BizTalk.&lt;/p&gt;  &lt;p&gt;As none of these approaches was acceptable, I begun looking for other alternatives. What I really wanted was an authentication behavior, that I could add to my WCF-Custom send port adapter.&amp;nbsp; &lt;/p&gt;  &lt;h3&gt;Building the Custom WCF Behavior&lt;/h3&gt;  &lt;p&gt;What I needed was a Message Inspector that would build up the security header as Girish Raja did in his sample, and then add that header to the SOAP envelope. This class is called &lt;i&gt;LiveIdAuthenticationMessageInspector&lt;/i&gt; and inherits from &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iclientmessageinspector.aspx"&gt;IClientMessageInspector&lt;/a&gt;&lt;i&gt;&lt;/i&gt;. This gives two methods to my class: &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iclientmessageinspector.beforesendrequest.aspx"&gt;BeforeSendRequest&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iclientmessageinspector.afterreceivereply.aspx"&gt;AfterReceiveReply&lt;/a&gt;.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; BeforeSendRequest(&lt;span class="kwrd"&gt;ref&lt;/span&gt; System.ServiceModel.Channels.Message request, 
    System.ServiceModel.IClientChannel channel)
{
    &lt;span class="kwrd"&gt;string&lt;/span&gt; securityHeader = HeaderHelper.GetSecurityHeader(&lt;span class="kwrd"&gt;this&lt;/span&gt;._username, &lt;span class="kwrd"&gt;this&lt;/span&gt;._password, &lt;span class="kwrd"&gt;this&lt;/span&gt;._crmUri);
            
    request.Headers.Add(MessageHeader.CreateHeader(&lt;span class="str"&gt;&amp;quot;Security&amp;quot;&lt;/span&gt;,
        WSSecurityUsernameTokenProfileNamespace,
        &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty,
        &lt;span class="kwrd"&gt;new&lt;/span&gt; SecurityHeaderSerializer(securityHeader),&lt;span class="kwrd"&gt;true&lt;/span&gt;));

    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
}&lt;/pre&gt;

&lt;p&gt;In the BeforeSendRequest method is where I can add the security header to the message before the message is sent out. The the BeforeSendRequest method I call a helper class returning the actual header. The GetSecurityHeader method is going through four steps to build up the header:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Get Windows Live Device Credentials &lt;/li&gt;

  &lt;li&gt;Register Device Credentials and get binaryDAToken &lt;/li&gt;

  &lt;li&gt;Get Security Token by sending WLID username, password and device binaryDAToken &lt;/li&gt;

  &lt;li&gt;Build up the security header with the token from previous step. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;(This sample does not cache the tokens! I strongly suggest you add some caching logic before you run this in production)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;After the header is created it is added to the request, using a custom serializer, as it would otherwise be HTML encoded. &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AfterReceiveReply(&lt;span class="kwrd"&gt;ref&lt;/span&gt; System.ServiceModel.Channels.Message reply, &lt;span class="kwrd"&gt;object&lt;/span&gt; correlationState)
{
    Trace.WriteLine(&lt;span class="str"&gt;&amp;quot;[bLogical] LiveIdAuthenticationMessageInspector:AfterReceiveReply called&amp;quot;&lt;/span&gt;);
    &lt;span class="kwrd"&gt;int&lt;/span&gt; index = reply.Headers.FindHeader(&lt;span class="str"&gt;&amp;quot;Security&amp;quot;&lt;/span&gt;, WSSecurityUsernameTokenProfileNamespace);
    reply.Headers.RemoveAt(index);
}&lt;/pre&gt;

&lt;p&gt;When BizTalk (or any other WCF client) receives the response it will throw an exception, as it doesn’t understand the Security header. I might have gone away with adding the http:&lt;a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" title="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&gt;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&lt;/a&gt; schema to BizTalk, but as I don’t need it, I just removed it from the header on the way back.&lt;/p&gt;

&lt;p&gt;Part from the Message Inspector, I also added an EndpointBehavior and a BehaviorExtensionElement. The LiveIdAuthenticationBehaviorExtensionElement needs to be registered in the configuration using the behavior in BizTalk&lt;/p&gt;

&lt;p&gt;After you have registered the behavior, you can focus on the normal BizTalk tasks like building orchestrations and mappings. To get started with consuming the CRM Services, have a look at Richards &lt;a href="http://seroter.wordpress.com/2011/02/10/the-good-bad-and-ugly-of-integrating-dynamics-crm-2011-and-biztalk-server-2010/"&gt;post&lt;/a&gt;. The only thing I’d like to emphasis is that the correct schemas are part of the SDK (sdk\schemas). After you run the &lt;i&gt;Consume WCF Service &lt;/i&gt;Wizard, remove all schemas and replace them with the the once in the SDK. Better yet, put all those schemas in a separate schema project, and reference that project from other projects where you’re using them. &lt;/p&gt;

&lt;h4&gt;1. Add the behavior to the Global Assembly Cache&lt;/h4&gt;

&lt;p&gt;Open up the &lt;i&gt;LiveIdAuthentication&lt;/i&gt; project, build and add it to the global assembly cache.&lt;/p&gt;

&lt;h4&gt;2. Register the behavior in the configuration&lt;/h4&gt;

&lt;p&gt;(sorry about the formatting). &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;extensions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;behaviorExtensions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;liveIdAuthentication&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;LiveIdAuthentication.LiveIdAuthenticationBehaviorExtensionElement, LiveIdAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=698ceec8cebc73ae&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;behaviorExtensions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;extensions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;You can do this either in a config file (machine.config or BTSNTSvc[64].exe.config) or in BizTalk (WCF-Custom Send handler):&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/image_167D68DB.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/image_thumb_03C86F24.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" height="484" width="376" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I prefer the later as I would otherwise need to make the changes to all the servers in the group. Just copy the extension element above, into a config file, and import the file from the Transport Properties dialog above. Or you can point to the app.config file in the sample.&lt;/p&gt;

&lt;h4&gt;3. Add the Endpoint Behavior&lt;/h4&gt;

&lt;p&gt;Open the send port and click the &lt;i&gt;Configure &lt;/i&gt;button to open the WCF Transport Porperties. Select the &lt;i&gt;Behavior&lt;/i&gt; tab and right-click the Endpoint behavior node, and select &lt;i&gt;Add extension. &lt;/i&gt;Select the &lt;i&gt;&lt;b&gt;liveAuthentication&lt;/b&gt;&lt;/i&gt; extensions. Select the extension and set the properties.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael/image_49D92C37.png"&gt;&lt;img src="http://blogical.se/blogs/mikael/image_thumb_2951EC85.png" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" height="484" width="348" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;You’re done.&lt;/p&gt;

&lt;p&gt;Use this code as you like, and on your own risk. If you make improvements, I’d appreciate if you notify me. One thing I know could be done better, would be to cache the tokens and re-use them for the next call.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/files/folders/downloads/entry28440.aspx"&gt;Download the Dynamics CRM LiveId Authentication Behavior sample here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;HTH&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28410" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://blogical.se/blogs/mikael/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogical.se/blogs/mikael/archive/tags/Adapters/default.aspx">Adapters</category><category domain="http://blogical.se/blogs/mikael/archive/tags/Dynamics+CRM+Online/default.aspx">Dynamics CRM Online</category></item><item><title>Finally MCTS again!</title><link>http://blogical.se/blogs/mikael_sand/archive/2011/12/08/finally-mcts-again.aspx</link><pubDate>Thu, 08 Dec 2011 09:31:26 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28370</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;border-top:0px;border-right:0px;padding-top:0px;" border="0" src="http://blogical.se/blogs/mikael_sand/Images/MCTS(rgb)_1422.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Earlier this year Microsoft retired the old certification for BizTalk 2006 and so I was no longer a Technology Specialist.&lt;/p&gt;  &lt;p&gt;Well I finally got around to it, took &lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-595&amp;amp;Locale=en-us#tab1" target="_blank"&gt;the test&lt;/a&gt;, and scored a healthy 91%.&lt;/p&gt;  &lt;p&gt;I have received some questions as to how you should prepare for the exam and based on that I have a couple pointers:&lt;/p&gt;  &lt;h2&gt;If you are an experienced BizTalk developer you really don’t need to study.&lt;/h2&gt;  &lt;p&gt;This is not a bad thing. It just shows that the exam is made to show that you have working experience and if you do; you will pass.&lt;/p&gt;  &lt;h2&gt;Read an excellent book&lt;/h2&gt;  &lt;p&gt;The unequivocal one is of course &lt;a href="http://www.amazon.com/Microsoft-BizTalk-Server-2010-Unleashed/dp/0672331187" target="_blank"&gt;BizTalk 2010 Unleashed&lt;/a&gt;. Use it to read up on things you feel you don’t know; like perhaps the BRE or Wcf-adapters or BAM or Orchestrations or EDI or…&lt;/p&gt;  &lt;p&gt;Based on what you have used the last year, you should skip those parts and read up on the parts you have not used. If you spent the better part of 2011 developing integrations using advanced maps and Wcf; read up on BAM and orchestrations.&lt;/p&gt;  &lt;h2&gt;See how others have prepared&lt;/h2&gt;  &lt;p&gt;The ever productive &lt;a href="http://soa-thoughts.blogspot.com/" target="_blank"&gt;Steef-Jan Wiggers&lt;/a&gt; has written a TechNet Wiki called &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/5058.aspx"&gt;BizTalk Server 2010 Exam 70-595 Preparation&lt;/a&gt;. It is about resources that is available for free from Microsoft. It comes highly recommended.&lt;/p&gt;  &lt;h2&gt;Buy beer&lt;/h2&gt;  &lt;p&gt;Do you know someone that is a MCTS for BizTalk 2010? If so; you can invite him/her to some kind of “after work event”. Buy the person some good beers and then start asking nicely about the exam.&lt;/p&gt;  &lt;p&gt;As an MCTS you get special training, and these special pills, so you can’t remember specifics about the exam. We can however talk generally about it: What skills are measured? How much is there about BRE compared to other topics? Is it hard?&lt;/p&gt;  &lt;p&gt;Just saying…&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28370" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/BizTalk+2010/default.aspx">BizTalk 2010</category><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/certification/default.aspx">certification</category></item><item><title>How I diagnosed en elusive ‘is not a valid Win32 application’ exception</title><link>http://blogical.se/blogs/johan/archive/2011/12/06/how-i-diagnosed-en-elusive-is-not-a-valid-win32-application-exception.aspx</link><pubDate>Tue, 06 Dec 2011 21:06:40 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28347</guid><dc:creator>Johan Hedberg</dc:creator><slash:comments>4</slash:comments><description>&lt;p&gt;We were using BizTalk Server 2010 and the MQ Client (MQSC) adapter from Host Integration Server 2010 (HIS 2010). We had been getting an exception on and off on servers without really knowing why it appeared on some servers and not on others. We even opened a case with Microsoft, but they are only human like the rest of us and can’t magically diagnose and solve errors remotely based on vague input, so that really didn’t lead anywhere other then things like “Make sure you are running the adapter in a 64-bit process”. The exception message was this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;The adapter &amp;quot;MQSC&amp;quot; raised an error message. &lt;br /&gt;Details &amp;quot;Could not load file or assembly &amp;#39;Microsoft.BizTalk.Adapter.Mqsc.ImqWrapper.dll&amp;#39; &lt;br /&gt;or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)&amp;quot;.&lt;/pre&gt;

&lt;p&gt;It’s enough to say that we investigated the error in a number of ways, including making sure that the specific dll mentioned was present. But as we all know the “or one of its dependencies” can hide any number of referenced dlls. So we made sure that the machines that worked and the ones that didn’t had the same assemblies available, which they did. Still no luck in narrowing it down. Luckily the exception happened right when you enabled a receive location so it was easy to identify and therefore to reproduce and troubleshoot.&lt;/p&gt;

&lt;p&gt;I resorted to using &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645"&gt;Process Monitor&lt;/a&gt; (not to be confused with &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653"&gt;Process Explorer&lt;/a&gt;, although also a great tool not the best in this scenario). I started the tool, found the PID for the process running my MQSC adapter process (see &lt;a href="http://blogical.se/blogs/johan/archive/2008/01/25/how-to-find-the-host-that-btsntsvc-exe-belongs-to.aspx"&gt;this post&lt;/a&gt; for details on identifying the BTSNTSvc process that belong to a certain host and get the PID) and set a filter for just that PID to reduce the noise. Finally I enabled the receive location. That gave me this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/clip_image001_572AB8F0.gif"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image001" border="0" alt="clip_image001" src="http://blogical.se/blogs/johan/clip_image001_thumb_5C2CF69F.gif" width="244" height="100" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see in the image BizTalk Server is probing for an assembly in different locations, and it’s not the Microsoft.BizTalk.Adapter.Mqsc.ImqWrapper.dll. It’s the imqb23vn.dll from the WebSphere MQ installation. It’s trying to locate the assembly and finding it in the WebSphere MQ\Bin64 folder. However it gets an Access Denied when trying to access it, so it then continues on to the WebSphere MQ\Bin folder, where it locates the 32-bit version, which is does have access to, and so it loads it.&lt;/p&gt;

&lt;p&gt;The exception message then is not saying that a 32-bit process is trying to use an assembly meant for a 64-bit process, but the opposite; that the assembly we are trying to load cannot be loaded as the application that is loading it (in this case BTSNTSvc64.exe) is a 64-bit process, aka not a valid win32 application.&lt;/p&gt;

&lt;p&gt;Setting the correct permission on the file and hooking onto the process once again to see what it is doing verified the theory. The image below shows how it loads the correct 64-bit version of the imqb23vn.dll and the continues on to the next assembly which has the same issue and causes the exception once again. The exact same exception, but this time caused by another underlying referenced assembly:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogical.se/blogs/johan/clip_image0014_22A9E6A8.gif"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image001[4]" border="0" alt="clip_image001[4]" src="http://blogical.se/blogs/johan/clip_image0014_thumb_71C72F3C.gif" width="244" height="167" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Setting appropriate access permissions on the entire folder made the process complete without exceptions and the adapter able to successfully connect to the MQ queue and pick up the messages on it and deliver them to the messagebox. Why the folders ended up getting different permissions in this way is still a mystery… &lt;/p&gt;

&lt;p&gt;HTH,
  &lt;br /&gt;/Johan&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28347" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/johan/archive/tags/64-bit/default.aspx">64-bit</category><category domain="http://blogical.se/blogs/johan/archive/tags/BizTalk+Server+2010/default.aspx">BizTalk Server 2010</category><category domain="http://blogical.se/blogs/johan/archive/tags/MQ/default.aspx">MQ</category><category domain="http://blogical.se/blogs/johan/archive/tags/HIS/default.aspx">HIS</category></item><item><title>Recordings from Enfo Integration Days are available</title><link>http://blogical.se/blogs/mikael/archive/2011/11/28/recordings-from-enfo-integration-days-are-available.aspx</link><pubDate>Mon, 28 Nov 2011 18:00:36 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:28222</guid><dc:creator>wmmihaa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Every year my employer hosts a two day event all related to integration or service orientation. Around 450 people attended this year, which I assumes makes it the biggest event of the year in the integration space, with more then 25 sessions on four different tracks. All Microsoft related session were recorded and are now available. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=5cLQBMeS-aU"&gt;Microsoft BizTalk Server and Microsoft’s Middleware vision&lt;/a&gt; (Marcus Gullberg, Microsoft) –SWEDISH&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=IqDPmW2Fdts"&gt;Microsoft BizTalk Server &amp;amp; Windows Azure AppFabric&lt;/a&gt; (Mikael Håkansson, Enfo Zystems) –SWEDISH&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=cPK4rr8HsYY"&gt;Windows Azure AppFabric Platform futures&lt;/a&gt; (Johan Hedberg, Enfo Zystems) –SWEDISH&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=RyAQ-9JQtl0"&gt;BaseLine for BizTalk Hands On&lt;/a&gt; (Martin Rydman &amp;amp; Mikael Håkansson, Enfo Zystems ) –SWEDISH&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=Q-ONkEVD-tw"&gt;Using AppFabric Cache to Maximize the Performance of Your Windows Azure and On Premises WCF Applications&lt;/a&gt; (Paolo Salvatori, Microsoft) –ENGLISH&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=PymrPY9jdqQ"&gt;How to integrate BizTalk Server with Windows Azure Service Bus Messaging. &lt;/a&gt;(Paolo Salvatori, Microsoft) –ENGLISH&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy, an we hope you join us next year.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogical.se/blogs/mikael/image_7BDB1DF6.png" alt="" /&gt;&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=28222" width="1" height="1"&gt;</description></item><item><title>The “problem” with BizTalk</title><link>http://blogical.se/blogs/mikael_sand/archive/2011/11/07/the-problem-with-biztalk.aspx</link><pubDate>Mon, 07 Nov 2011 17:30:00 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:27979</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://xkcd.com/" target="_blank"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;border-top:0px;border-right:0px;padding-top:0px;" border="0" src="http://imgs.xkcd.com/comics/the_general_problem.png" width="500" height="209" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Every time I suggest BizTalk as an alternative in a “bid” or project I feel like the guy to the right. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogical.se/blogs/mikael_sand/wlEmoticon-smile_1A786C3C.png" /&gt;&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=27979" width="1" height="1"&gt;</description><category domain="http://blogical.se/blogs/mikael_sand/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Running MMC as the BizTalk service user</title><link>http://blogical.se/blogs/mikael_sand/archive/2011/11/01/running-mmc-as-the-biztalk-service-user.aspx</link><pubDate>Tue, 01 Nov 2011 14:37:39 GMT</pubDate><guid isPermaLink="false">19a535f3-07d9-4378-9c5a-8d019d91e842:27938</guid><dc:creator>Mikael Sand</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I guess you have, at some point, installed a certificate for the the BizTalk service user. The ability for BizTalk to use certificate to encrypt/decrypt messages is very powerful in some scenarios.&lt;/p&gt;  &lt;p&gt;The recommended way of doing this is to simply log on to the machine as the service account. This is not always possible due to policies and restrictions at the client; so an intense mail conversation might ensue. It is usually resolved in some way.&lt;/p&gt;  &lt;p&gt;One way to resolve it might be to try to us “runas” to execute mmc as the BizTalk service user.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;runas /profile /user:BtsUsr &amp;quot;C:\Windows\SysWOW64\mmc.exe&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;However, this is not possible as the following error is presented:&lt;font face="Courier New"&gt; “740: The requested operation requires elevation.”&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The solution to this might be to disable the UAC on the machine, but that is usually not possible either.&lt;/p&gt;  &lt;p&gt;The solution I found to be the best is the following:&lt;/p&gt;  &lt;p&gt;1. Add the BizTalk Service User the Local Admin group.&lt;a href="http://blogical.se/blogs/mikael_sand/BtsUsrAsAdmin_569406F1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="BtsUsrAsAdmin" border="0" alt="BtsUsrAsAdmin" src="http://blogical.se/blogs/mikael_sand/BtsUsrAsAdmin_thumb_016C6B04.png" width="220" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Then navigate to the appropriate system-folder (System32 or SysWow64).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogical.se/blogs/mikael_sand/RunAsDiffUser_5627D3FC.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="RunAsDiffUser" border="0" alt="RunAsDiffUser" src="http://blogical.se/blogs/mikael_sand/RunAsDiffUser_thumb_360CC73F.png" width="175" height="63" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Find and select MMC.exe, hold down shift and right-click to get the “Run as different user” option.&lt;/p&gt;  &lt;p&gt;4. Choose to run as different user and supply the credentials for the BizTalk Service user.&lt;/p&gt;  &lt;p&gt;6. Click Ok to elevate the process and boom you are in!&lt;/p&gt;  &lt;p&gt;Of course you have to remove the service account from the Local Admin group as soon as possible after installation.&lt;/p&gt;  &lt;p&gt;The strange thing is that the “runas”-approach still does not work but who cares.&lt;/p&gt;&lt;img src="http://blogical.se/aggbug.aspx?PostID=27938" width="1" height="1"&gt;</description></item></channel></rss>
