tag:blogger.com,1999:blog-321724102024-03-13T13:30:57.862+01:00Integrating to the max...BizTalk StylePLEASE NOTE: This blog is not maintained anymore!
I founded:
https://www.itconnector.eu
A work in new roles:
Freelance Cloud Architect | Technology Innovation consultant | Speaker
Assisting in connecting devices, services, platforms, organizations.
Cloud architect, with a focus on API economics, DevSecOps
Innovation/Integration specialist, focused on delivering business value.
Unknownnoreply@blogger.comBlogger133125tag:blogger.com,1999:blog-32172410.post-52388293497032391282021-05-28T15:51:00.008+02:002021-05-28T16:47:38.435+02:00Introducing: ITConnector.eu. Our Cloud Integration team consists of talented professionals who are committed to delivering value and achieving results for customers and are focused on delivering high-quality services.<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-lyuadIcpO-s/YLEARO5FyZI/AAAAAAAAlRM/o12TnTZ3cdcxnQlQ4slQR53vBwwXaONMwCLcBGAsYHQ/s1390/itconnector.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-left: 1em;"><br /></a></div><p style="text-align: center;"><b>Introducing: ITConnector</b></p><p style="text-align: left;">Cloud integrations are an important part of adopting newer IT technologies in your business. Our Cloud Integration team consists of talented professionals who are committed to delivering value and achieving results for customers and are focused on delivering high-quality services.</p><div style="text-align: left;"><div>We do this through support in:</div><div><ul style="text-align: left;"><li>Azure Cloud Enterprise Integration</li><li>Automation and Connections through APIs</li><li>Fast, Efficient and Smarter Processes and Systems and People Connect</li><li>Deploy your ERP faster with the right integration strategy</li></ul></div></div><p style="text-align: left;"></p><p></p><p>You can follow Sander / ITConnector with these links: </p><p></p><ul><li><a href="https://www.itconnector.eu">https://www.itconnector.eu</a></li><li><a href="https://nl.linkedin.com/in/sandernefs">https://nl.linkedin.com/in/sandernefs</a></li></ul><p></p><p>Company site:</p><p><a href="https://1.bp.blogspot.com/-lyuadIcpO-s/YLEARO5FyZI/AAAAAAAAlRM/o12TnTZ3cdcxnQlQ4slQR53vBwwXaONMwCLcBGAsYHQ/s1390/itconnector.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-left: 1em;"><img alt="Https://www.itconnector.eu" border="0" data-original-height="715" data-original-width="1390" height="330" src="https://1.bp.blogspot.com/-lyuadIcpO-s/YLEARO5FyZI/AAAAAAAAlRM/o12TnTZ3cdcxnQlQ4slQR53vBwwXaONMwCLcBGAsYHQ/w640-h330/itconnector.png" title="Https://www.itconnector.eu" width="640" /></a></p><p></p><p><br /></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-19257547615572473942015-05-19T04:52:00.001+02:002015-05-19T05:23:03.181+02:00Focus and innovation - recap of the last 2 years<p dir="ltr">It's been a long time since <u>my</u> last post. </p>
<p dir="ltr">Hereby a partial explanation for that, with the note that this blog will remain active for the purpose of being a resource for historical references. </p>
<p dir="ltr">My IT career started with programming, and adventures within holland, as well as overseas. When I realised programming is something you can specify, I figured that providing added value is crucial for a long term career and decided to focus on process centric roles. </p>
<p dir="ltr">I started with webservice integration and eventually from that to process integration using BizTalk. The great feeling when discussing high level processes and implementing solutions within days, even highly scalable and interfacing with LOB systems is great.</p>
<p dir="ltr">After several years of implementing solutions like these, I started questioning if all of this work was justified by the business case, if the solution was actually contributing, if the choices had been valid. In other words, I needed to understand the choices made.</p>
<p dir="ltr">When you are hired to do a job, a lot of stuff has been done. If that job is to implement a product, chances are, questioning if that product is the best product for the long term strategic goals is not a great question if this isn't the best product. </p>
<p dir="ltr">I decided I should be able to make decisions based on the business case, before a product is chosen, and be able to facilitate the proces when tese choices are made. To do this, I made some career choices 2 years ago;<br>
- work for a company with a broad portfolio<br>
- work in a role where I'm able to be a customer advocate<br>
- learn about techniques such as lean, theory of constraints to digg deeper, optimize processes, analyse problems<br>
- create and validate business cases<br>
which are product agnostic<br>
- work on cloud computing projects<br>
- work for a startup and create an integration based platform leveraging and evaluating vendors and technologies (amqp, rabbitmq, zeromq, mule, neuronesb, jitterbit, azure sb, wssb, ensemble, postgresql, mongodb, and more)<br>
- start an integration team, not focusing on a product, but on how we can leverage capabilities<br>
- expand my horizon</p>
<p dir="ltr">My goal was to do this during the next few years, I got the freedom to do this all within months. 2 years ago, I worked on BizTalk in an Azure VM, a platform supporting deployment on premises and Azure code, create an Azure service bus extension for a client to have a internal messaging solution,  alot of exciting stuff. Blogging this here didn't felt like a good fit, and as this knowledge isn't as static as with BizTalk, it would have been outdated within months, so I shared this to our customers and internally. As alot of companies already said that they're doing this stuff, what's the added value of telling how to do this...another reason is that sometimes a competitive advantage is nice.</p>
<p dir="ltr">Having done all of this allowed me to look at the bigger picture, generate ideas, try out concepts. </p>
<p dir="ltr">It allowed me to go through this process again, even faster, broader. The last 8 months I've been side tracked, and worked on Internet of things projects and ideas even more out of my comfort zone. A colleague was fiddling with a Raspberry Pi, and we liked chatting about cool things we could do...someday. Within our BI team, a case was spotted where measuring data with sensors, would provide insights in a process which could then be optimized. They found an Excellent intern, who worked already with Arduino's and gave him the assignment to create a POC.</p>
<p dir="ltr">We were interested and offered to help. No help was needed we got in response. We wanted to do something with our ideas, and organized an internal hackathon, just having fun. We used Cloud9 to host a NodeJs chat application (i created this while waiting for new tires in the garage), I created Azure topics and my colleague used python/Nodejs on his Pi to subscribe to a message with a magic keyword which switched on a lamp.</p>
<p dir="ltr">Only a month later the intern asked if we could help, the next day a demo was due, and communication between the Arduino and Sql wasn't working. I created an API using NodeJs in 2 hours as I had no clue what an Arduino was. However, it worked like a charm. </p>
<p dir="ltr">I later took an Arduino with me to test some more. It started with the Arduino and added a messaging layer (service bus) In between to be able to scale the solution. I learned how the Arduino worked and wanted to know about other platforms....I've now worked with a lot of devices, platforms, and a sense of what options are out there, and how to scale and choose the right solution. </p>
<p dir="ltr">How, because I start with the business case, the need to be able to scale, the talk before the walk. As cloud computing is here to stay a logical fit is to leverage this in the IoT space, messaging, analytics, realtime dashboarding etc, all very much required in good solutions. What is the best product, platform, communication method, when to choose what and why? Almost the same method of thinking I learned 2 years ago helps me to make the right choices. Based on simple criteria, product independent, based on support, skillset, costs etc.</p>
<p dir="ltr">We're excited on working with cloud, it's a way to be cost effective, we're excited to work with devices, also because they are cost effective. But we're making the choices not because it is the coolest way, because it's the best solution that provides the added value for our customers. </p>
<p dir="ltr">So i'm really glad I'm able to think outside the box, and I couldn't have without having learned to think in terms of goals, long term solutions, added value and the question what the best solution would be. Without automatically thinking with a product hat on. BizTalk is a great product, I still use it sometimes, but I've also advised customers to go for a different vendor, the customer needs advice which helps him in the long term.</p>
<p dir="ltr">My journey to go from a technical guy with vision on integration to a guy with focus on strategy and IT was a journey I made and is difficult to explain without all of this background stuff.</p>
<p dir="ltr">So I'm going to be silent, at least, blogging wise on this blog.</p>
<p dir="ltr">My suggestion to anyone, who faced the struggle of wanting to know what's out there, realize that there are ways to expand the horizon, and hypes are not perse the way to do this. </p>
<p dir="ltr">I have learned more in the last to years than I thought I would, all by taking control and listening to myself and my gut feeling. </p>
<p dir="ltr">Hopefully this explains a little why this blog is not being updated, what I've been working on, my interests, and why I'm so active on so many different subjects on twitter and yammer...I'm not thinking in boxes, but in means to solve a business case. Technology is great, solving the real problem is even better.<br></p>
<p dir="ltr">I feel that this blog isn't the right place to describe what I'm working on, most of it is NDA, or rocket science 😉. Follow my twitter to get an idea of stuff I'm working on (snefs)</p>
<p dir="ltr">Cheers,</p>
<p dir="ltr">Sander</p>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-32172410.post-78217956201630892332014-05-30T20:13:00.001+02:002014-05-30T20:13:46.746+02:00Azure implementation guidelines<p>In My post ‘<a title="http://snefs.blogspot.nl/2013/10/service-bus-management-here-way.html" href="http://snefs.blogspot.nl/2013/10/service-bus-management-here-way.html">Service Bus Management</a>’ I pointed out a way of implementing a DTAP strategy for managing the Service Bus environment. There’s now a great post available from Microsoft which goes into more detail about other aspects of managing the Azure subscriptions and other artefacts which is quite useful when setting up your Azure environments.</p> <p>Follow this link to the <a href="http://blogs.msdn.com/b/thecolorofazure/archive/2014/05/13/azure-implementation-guidelines.aspx">‘Azure Implementation Guidelines’</a></p> <p>HTH,</p> <p>Sander</p> Unknownnoreply@blogger.com12tag:blogger.com,1999:blog-32172410.post-62012061126487158412014-05-23T17:34:00.001+02:002014-05-23T17:37:07.466+02:00Increase your API usability by teaming up NuGet and Visual Studio<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c8178449-b18f-4fe8-981c-37bcf7b26df6" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">Tags van Technorati: <a href="http://technorati.com/tags/NuGet" rel="tag">NuGet</a></div> <p>In my <a href="http://snefs.blogspot.nl/2014/04/add-project-reference-enter-2014using.html">previous</a> post I described a way to use NuGet for packaging libraries, often used in projects. This post is an addendum to my post <a href="http://snefs.blogspot.nl/2014/04/add-project-reference-enter-2014using.html">‘enter 2014 with NuGet’</a> look at the additional features possible. In this post i’m looking into Visual Studio features (project templates) and the NuGet package feature <a href="http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx">PowerShell</a>.</p> <p>I’ve been working on an API (see my next posts, Service Bus Series - ‘the case for service bus’), and during the development I wanted to make sure that explaining the API to another co-worker was a nicer experience than just going through the code. To ensure that the developers could easily connect and understand the usage of the API, I decided to create sample projects using templates. Templates are a great way to provide the user with a sample project from within Visual Studio. I wanted more… and with the features available in NuGet packages, i’ve found a way that worked for my scenario. I’ve been using the principles;</p> <ol> <li><strong><font color="#0080ff">Each project in Visual Studio can be exported as a template</font></strong> <li><strong><font color="#0080ff">New Projects can be created based on a template, the user get the template in his overview of available project types</font></strong> <li><strong><font color="#0080ff">Exporting templates results in a .Zip file in the <UserProfile> \ Documents \ Visual Studio <version> \ Templates \ Project Templates directory .</font></strong> <li><strong><font color="#0080ff">NuGet allows by means of a 'Tools' content type to perform custom actions, which are executed when creating a reference of the NuGet package from PowerShell</font></strong></li></ol> <p>By combining #1-3 with #4 we can create a NuGet package which adds a project template to the user of the NuGet package. This can be simply done by following the steps mentioned below;</p> <p> </p> <blockquote> <p><a href="http://lh5.ggpht.com/-RrweJnZ_ApU/U39qTq_7jwI/AAAAAAAACWw/QFcqWVjpA6k/s1600-h/image%25255B81%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-ktQJ9oGdeUU/U39qUWfIb7I/AAAAAAAACW4/9iPnXrzChY0/image_thumb%25255B43%25255D.png?imgmax=800" width="899" height="403"></a> </p></blockquote> <p> </p> <ul> <li><strong>Export Template</strong></li></ul> <blockquote> <p><a href="http://lh6.ggpht.com/-zCF9enrAvg4/U39qU_yHqyI/AAAAAAAACTI/VLg6DVK8sps/s1600-h/image%25255B4%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-4TTz9cuuHa4/U39qVZf3OlI/AAAAAAAACTU/ipmcpqBlhA0/image_thumb%25255B2%25255D.png?imgmax=800" width="391" height="368"></a> </p></blockquote> <blockquote> <p>In Visual Studio select ‘File’ \ ‘Export Templates’ (in the solution which contains the project to be exported as template)</p></blockquote> <ol> <ol> <li>Select the type ‘Project template’ <li>Select the project</li></ol></ol> <blockquote> <p><a href="http://lh3.ggpht.com/-Usrl4NOw3Fo/U39qV3cU3bI/AAAAAAAACTc/CgNBdi3oEeA/s1600-h/image%25255B32%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-wMUcya8yqM0/U39qWosODRI/AAAAAAAACTg/hdH36zvOjpg/image_thumb%25255B18%25255D.png?imgmax=800" width="945" height="494"></a> </p></blockquote> <blockquote> <p>3. Go Through the wizard steps</p></blockquote> <blockquote> <p><a href="http://lh5.ggpht.com/-58MRBmETX0Y/U39qXKmtPwI/AAAAAAAACTo/pGR9_5kxF9I/s1600-h/image%25255B12%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-yosV65SzGYM/U39qXU0SWBI/AAAAAAAACTw/XTrWPnM_Ik4/image_thumb%25255B6%25255D.png?imgmax=800" width="945" height="482"></a> </p> <p>Note: This .zip file can be used in a different Visual Studio environment</p></blockquote> <p> </p> <ul> <li><a name="_Toc386533393"><strong>NuGet package with a content Template</strong></a></li></ul> <blockquote> <p>Files can be added into a NuGet package, using the Content folder. In the NuGet package Explorer we can add a template; <p>1. Add a content folder</p></blockquote> <blockquote> <p><a href="http://lh6.ggpht.com/-P6A3AMNOF5I/U39qX8O7-HI/AAAAAAAACT4/lrRg-m_Et4I/s1600-h/image%25255B21%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-5yVH0aMtCu8/U39qYW0MyzI/AAAAAAAACUA/vr_jLy9pHm0/image_thumb%25255B11%25255D.png?imgmax=800" width="575" height="280"></a> </p></blockquote> <blockquote> <p>2. Add the content</p></blockquote> <blockquote> <p><a href="http://lh4.ggpht.com/--kMiATdQLk0/U39qY5JtjuI/AAAAAAAACUI/4VLZ23iemRU/s1600-h/image%25255B30%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-Qp-eSe4whvc/U39qZQMHqOI/AAAAAAAACUQ/DfqxYmpHcd4/image_thumb%25255B16%25255D.png?imgmax=800" width="954" height="475"></a> </p> <p>3. Browse to the exported template</p> <p> <a href="http://lh4.ggpht.com/-ArjEYluF49E/U39qZ1BBXxI/AAAAAAAACUY/LUR1v1k7Wz8/s1600-h/image%25255B17%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-9--oG6rOmp4/U39qaZE4pSI/AAAAAAAACUk/GvUDzZUYMYI/image_thumb%25255B9%25255D.png?imgmax=800" width="948" height="185"></a></p></blockquote> <blockquote> <p>4. The endresult in the package explorer</p></blockquote> <blockquote> <p><a href="http://lh4.ggpht.com/-JOQtHoZ--8I/U39qbI4kOXI/AAAAAAAACUs/nz2b74gmbWg/s1600-h/image%25255B31%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-YPfHfN15GH4/U39qbu9SoaI/AAAAAAAACU0/GyQqYpMovGo/image_thumb%25255B17%25255D.png?imgmax=800" width="954" height="170"></a> </p></blockquote> <p> <ul> <li><strong>NuGet and PowerShell</strong></li></ul> <blockquote> <p>The final step is the configuration of a PowerShell script, which allows the Content to be installed in the folder of the user so that the project template is available. For this we need to perform the steps;</p> <p>1. Add a tools folder</p></blockquote> <blockquote> <p><a href="http://lh4.ggpht.com/--w2yq-FR72c/U39qb7kliVI/AAAAAAAACU4/YWdoSvwKJiY/s1600-h/image%25255B35%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-BgHqMC107k8/U39qcQiRu3I/AAAAAAAACVE/7SYSBZmkcO4/image_thumb%25255B19%25255D.png?imgmax=800" width="182" height="179"></a> </p> <p>2. Add Install.ps1 (which is executed when you install the package</p></blockquote> <blockquote> <p><a href="http://lh6.ggpht.com/-B3zZmx6G_TM/U39qcz5L8wI/AAAAAAAACVM/Kli9X0ooRy8/s1600-h/image%25255B40%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-I-IDwDwpm2Q/U39qdVIixaI/AAAAAAAACVU/Y0SxqeMsytc/image_thumb%25255B22%25255D.png?imgmax=800" width="504" height="357"></a> </p></blockquote> <blockquote> <p>2. Add Install.ps1 (which is executed when you install the package) and add the following script</p></blockquote> <blockquote> <p><a href="http://lh3.ggpht.com/-aqRo4CWWR6E/U39qeOxXUxI/AAAAAAAACXA/2rA1jsbVRjo/s1600-h/image%25255B82%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-ZnYgk1pYvMM/U39qekMZWNI/AAAAAAAACXI/oFuxbJ-kMXY/image_thumb%25255B44%25255D.png?imgmax=800" width="892" height="167"></a> </p></blockquote> <blockquote> <p>Note: This script will install the package into the user templates folder, and assumes (<strong>visual studio version</strong>, <strong>zipfile name</strong>)</p></blockquote> <blockquote> <p>Note 2: the complete script is copied below;</p></blockquote> <blockquote> <p>param($installPath, $toolsPath, $package, $project)<br>$documents = [System.IO.Path]::Combine((Get-Item env:USERPROFILE).Value, "Documents\Visual Studio 2013\Templates\ProjectTemplates")<br>$templateFile = "Contoso.ServiceBus.API.zip"<br>$template = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($project.FileName), $templateFile)<br>$templateDestination = [System.IO.Path]::Combine($documents, $templateFile)<br>Copy-Item $template $templateDestination</p></blockquote> <ul> <li><strong>The endresult</strong></li></ul> <blockquote> <p>Assuming the package is exported into the NuGet repository, the NuGet package source is configured, a new solution has been created, we can now use the package.</p></blockquote> <blockquote> <p>1. Manage NuGetPackages and click install</p></blockquote> <blockquote> <p><a href="http://lh4.ggpht.com/-cH7WbEU19bo/U39qfqx6HZI/AAAAAAAACVs/FU8uaMyq5uk/s1600-h/image%25255B53%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-voho5HggEJk/U39qgG5P33I/AAAAAAAACV0/_aEYbSMSOMg/image_thumb%25255B29%25255D.png?imgmax=800" width="871" height="159"></a> </p></blockquote> <blockquote> <p>The PowerShell script is executed;</p></blockquote> <blockquote> <p><a href="http://lh3.ggpht.com/-eutE1wfsxOA/U39qgpGRhbI/AAAAAAAACV8/mrUmVeGeS2k/s1600-h/image%25255B57%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-coO_0HqB6f4/U39qhEBjUhI/AAAAAAAACWE/mIgMEikIzuA/image_thumb%25255B31%25255D.png?imgmax=800" width="359" height="252"></a> </p></blockquote> <p> </p> <blockquote> <p>2. From now on we can create a sample project based on the template</p></blockquote> <blockquote> <p><a href="http://lh4.ggpht.com/-LhBmBtQVSFk/U39qhhP2_NI/AAAAAAAACWM/-flwym4zxjs/s1600-h/image%25255B61%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-aKobqrW8Fy4/U39qiELzo4I/AAAAAAAACWU/Mb97MFDW78o/image_thumb%25255B33%25255D.png?imgmax=800" width="629" height="64"></a> </p></blockquote> <blockquote> <p><a href="http://lh6.ggpht.com/-2BJTEHKBBHI/U39qin_8f0I/AAAAAAAACWc/OsHw8wNfg0k/s1600-h/image%25255B72%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-YLNIFVCnAHw/U39qjFGJo2I/AAAAAAAACWk/9p86J1dAedM/image_thumb%25255B38%25255D.png?imgmax=800" width="626" height="401"></a> </p></blockquote> <p> </p> <p>If you are commited to re-using packages, and want to create an API or reusable library, this can be quite helpful. Although integrating NuGet in TFS is different, all the features presented are available, so improving the Dev-Ops integration using TFS is a nice way to improve this proces. </p> <p>For me, this allowed me to provide more assistence to the end user of the API. I’ve currently devided the API into an package and created another package with the Templates. This post just gives an overview of the power that you have with NuGet.</p> <p> </p> <p>HTH,</p> <p>Sander.</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-48489421631586251762014-04-10T10:49:00.001+02:002014-04-10T10:50:48.229+02:00New Azure Portal – Preview<p>The new <a href="https://portal.azure.com/" target="_blank">Azure Portal (in preview)</a> is really great. Bundles a lot of the functionality that is sometimes hard to retrieve</p> <ul> <li>Azure Health (e.g. BizTalk Services / Service Bus)</li> <li>Billing information</li> <li>View your resources (at this moment only Resource Groups / WebSites / Team Projects / SQL Databases / MySQL Databases)</li> <li>Notifications (the alert functionality)</li> <li>The concept of ‘Journeys’ (preselection filters you’ve implicitly placed so that you can quickly look at the dashboard the way you want)</li></ul> <p>Some screenshots to show how much more insight this provides…</p> <p><strong>Azure Health</strong></p> <p><a href="http://lh3.ggpht.com/-ElPX7Lm7CeY/U0ZbE3HNJwI/AAAAAAAACRI/ISJDr4b1s4Y/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-JQx6FZD9xf8/U0ZbFjo09vI/AAAAAAAACRQ/8ogtxh8TBDk/image_thumb%25255B1%25255D.png?imgmax=800" width="1092" height="385"></a></p> <p> </p> <p><strong>Billing information</strong></p> <p><a href="http://lh5.ggpht.com/-Cg6VTjJl2Nk/U0ZbGDiiWwI/AAAAAAAACRY/JZaa7fbjVw0/s1600-h/image%25255B8%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-oAxsoBS-dNY/U0ZbG38_64I/AAAAAAAACRc/v6KmV9Kk924/image_thumb%25255B4%25255D.png?imgmax=800" width="1091" height="348"></a></p> <p><strong>View your resources (at this moment only Resource Groups / WebSites / Team Projects / SQL Databases / MySQL Databases)</strong></p> <p><a href="http://lh6.ggpht.com/-ecJ1crQ30vk/U0ZbHcBGyoI/AAAAAAAACRo/puprJiAlMLU/s1600-h/image%25255B22%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-n7qMmJE9D2M/U0ZbINTq9pI/AAAAAAAACRw/6Q0JdGt5RL4/image_thumb%25255B12%25255D.png?imgmax=800" width="1091" height="416"></a></p> <p><strong>Notifications</strong></p> <p><a href="http://lh5.ggpht.com/-GXxVANTBRfo/U0ZbIkZ0IpI/AAAAAAAACR0/hdhLGt_cwl0/s1600-h/image%25255B21%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-tvYmxUNb67A/U0ZbJDmHALI/AAAAAAAACSA/L8_bzKM6ui4/image_thumb%25255B11%25255D.png?imgmax=800" width="538" height="732"></a></p> <p><strong>Journeys (preselection filters you’ve implicitly placed so that you can quickly look at the dashboard the way you want)</strong></p> <p><a href="http://lh6.ggpht.com/-gQDMc5UM-Mw/U0ZbJvmd-WI/AAAAAAAACSE/wv9-jRSxK2g/s1600-h/image%25255B16%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-43R-lE5pBDg/U0ZbKNRCz6I/AAAAAAAACSQ/9YG8VbZawj0/image_thumb%25255B8%25255D.png?imgmax=800" width="541" height="557"></a></p> <p> </p> <p>The portal brings a lot of features together that had to be done using different areas, like the billing portal, which only showed a few billing details, where an excel file was the only way to retrieve details, and the Azure health, which was located somewhere else.</p> <p>So far, a great portal for a preview!</p> <p> </p> <p>Cheers,</p> <p>Sander</p> Unknownnoreply@blogger.com5tag:blogger.com,1999:blog-32172410.post-37734751647999248452014-04-09T21:01:00.001+02:002014-04-10T08:21:29.220+02:00Add project reference? Enter 2014….Using NuGet for packaging projects and dependencies<p> </p> <p>[UPDATE] Sample solution available on OneDrive (<a title="https://onedrive.live.com/?cid=5eaaef40eefdaddb&id=5EAAEF40EEFDADDB%21109" href="https://onedrive.live.com/?cid=5eaaef40eefdaddb&id=5EAAEF40EEFDADDB%21109">https://onedrive.live.com/?cid=5eaaef40eefdaddb&id=5EAAEF40EEFDADDB%21109</a>)</p> <p>A solution consists of projects, projects uses components, components are of a specific version, changing the components thus requires a versioning strategy….which one are you using? All solutions which are architected into several tiers, have a form of layering with (which I hope) an abstraction of re-usable components. A project which is used to implement automated order approvals (AOA), with a requirement to implement logging, and retrieve something out of the database will likely have the minimum of 3 projects</p> <ul> <li>Solution AOA <ul> <li>Project - AOA.Core <li>Project - AOA.DataProject <li>Project - Common.Logging</li></ul></li></ul> <p>Let’s assume, that the Logging library is also used by another solution: BOB</p> <ul> <li>Solution BOB <ul> <li>Project – BOB.Core <li>Project – BOB DataProject <li><font color="#ff0000">Project - Common.Logging</font></li></ul><!--EndFragment--></li></ul> <p>When the requirements of logging change, and the project BOB needs a specific change due to legislation requirements. What options do we have to make sure that either the AOA solution does not break because it’s automatically using the latest version?</p> <ol> <li>Using the latest version of all the projects / components (e.g. using a build server) <ul> <li>Project approach: using project references to existing / local projects <li><font color="#ff0000">Risk: the latest version has breaking changes</font></li></ul> <li>Using a specific version by copying the dll to a local solution folder <ul> <li>Project approach: using local dll references <li><font color="#ff0000">Risk: Managing the versions will lead to an enormous spreadsheet</font></li></ul> <li>Using a SharedAssemblies folder which contains the latest version <ul> <li>Project approach: using Shared dll references <li><font color="#ff0000">Risk: Managing the versions will lead to an enormous spreadsheet</font></li></ul><!--EndFragment--></li></ol> <p>Basically, we don’t know which version is used, we don’t control any of this, and the solutions provided are not sufficient. Enter NuGet….</p> <p><a href="http://lh3.ggpht.com/-mqo3RFD5xf4/U0WYoWwM2KI/AAAAAAAACQw/EIrP1LWRgsA/s1600-h/image%25255B15%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-QZhcmv-xBwg/U0WYo2XxwAI/AAAAAAAACQ4/jxCUZPjR6YI/image_thumb%25255B7%25255D.png?imgmax=800" width="1094" height="599"></a></p> <p>So NuGet can be used to overcome this problem, by packaging components, versioning and even manage dependencies. When a project has a dependency and another component, it is possible to define this relationship in a NuGet package, and by doing this, retrieving the NuGet package, will automatically retrieve the dependent package. This allows you to ensure that the correct versions are retrieved, and the self-created dll-hell can be mitigated.</p> <p>How can we do this? (example feed and solution can be found at: <a title="https://onedrive.live.com/?cid=5eaaef40eefdaddb&id=5EAAEF40EEFDADDB%21109" href="https://onedrive.live.com/?cid=5eaaef40eefdaddb&id=5EAAEF40EEFDADDB%21109">https://onedrive.live.com/?cid=5eaaef40eefdaddb&id=5EAAEF40EEFDADDB%21109</a>)</p> <p>Our client Contoso is developing a solution, which makes use of the Contoso.SB.Library. This library provides functionality in conjunction with the Azure Service Bus Library, providing automatic property promotion used to enable ‘automatic’ topics/subscriptions (just a example, of a solution that might exist <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Knipogende emoticon" src="http://lh6.ggpht.com/-J7szaU1ZSSs/U0WYpgaGVCI/AAAAAAAACLU/YcRrJUZHeXE/wlEmoticon-winkingsmile%25255B2%25255D.png?imgmax=800">). </p> <p><a href="http://lh4.ggpht.com/-KOPkwMuf3QE/U0WYqCBekwI/AAAAAAAACLc/s40Nx28gvm0/s1600-h/1.%252520ProjectReference%25255B3%25255D.png"><img title="1. ProjectReference" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="1. ProjectReference" src="http://lh3.ggpht.com/-LOLcl64KZD8/U0WYqsVH2KI/AAAAAAAACLk/zef5Aawff9E/1.%252520ProjectReference_thumb%25255B1%25255D.png?imgmax=800" width="499" height="497"></a></p> <p>This API is referenced by using a project reference, so the latest version of the SB.Library is always used….we would like to have more control. For this we can create a custom package, using the tool ‘<a href="http://npe.codeplex.com/">NuGet Package Explorer</a>’. Using this tool, it is possible to create a NuGet package of the Contoso.SB.Library, and be able to manage the used 3rd-party references, versioning and implement a changemanagement process.</p> <p>We can create a new project</p> <p><a href="http://lh4.ggpht.com/-84XvDwQch-A/U0WYrAwSV_I/AAAAAAAACLw/pdTYpHVLFrE/s1600-h/2.%252520PackageExplorer%25255B9%25255D.png"><img title="2. PackageExplorer" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="2. PackageExplorer" src="http://lh3.ggpht.com/-EYkpFDtC8Nc/U0WYr6xKqpI/AAAAAAAACL4/QGBcTAM4iu8/2.%252520PackageExplorer_thumb%25255B4%25255D.png?imgmax=800" width="1068" height="926"></a></p> <p>We then need to define the properties (my colleague <a href="http://www.linkedin.com/in/sfkuiper">Sybren Kuiper</a> is working on a NuGet Packager which automatically retrieves this information from the project file), at this moment, we need to do this manually.</p> <p><a href="http://lh6.ggpht.com/--Of4qgCssHI/U0WYsaUbivI/AAAAAAAACMA/y-3RJG_PngU/s1600-h/3.%252520PackageLibrary%25255B5%25255D.png"><img title="3. PackageLibrary" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="3. PackageLibrary" src="http://lh5.ggpht.com/-W_MeE9AsNP0/U0WYtLyXqcI/AAAAAAAACMI/XquSdi6PtVg/3.%252520PackageLibrary_thumb%25255B3%25255D.png?imgmax=800" width="1065" height="831"></a></p> <p>The Contoso.SB.Library uses the ServiceBus.v1_1 NuGet Package, so we need to add this dependency. This means that adding a reference to the Contoso.SB.Library will automatically retrieve the ServiceBus.v1_1 package.</p> <p><a href="http://lh4.ggpht.com/-5eLuoRgHvx4/U0WYt04bTyI/AAAAAAAACMM/w34IO2HmXHg/s1600-h/4.%252520PackageLibraryAddReference%25255B3%25255D.png"><img title="4. PackageLibraryAddReference" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="4. PackageLibraryAddReference" src="http://lh4.ggpht.com/-FxlqseWaWOA/U0WYuI7mL_I/AAAAAAAACMU/cBqjNcA1t68/4.%252520PackageLibraryAddReference_thumb%25255B1%25255D.png?imgmax=800" width="1079" height="609"></a></p> <p>Here you see the dependency defined in the Contoso.SB.Library</p> <p><a href="http://lh6.ggpht.com/-bHJo8_AX6as/U0WYu_NZNFI/AAAAAAAACMg/Xd8xEzDWavc/s1600-h/5.%252520PackageLibraryDependencies%25255B4%25255D.png"><img title="5. PackageLibraryDependencies" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="5. PackageLibraryDependencies" src="http://lh4.ggpht.com/-bnwgVpKfwM8/U0WYvu-ccsI/AAAAAAAACMo/XRrWqZGkzj8/5.%252520PackageLibraryDependencies_thumb%25255B2%25255D.png?imgmax=800" width="1079" height="864"></a></p> <p>At this moment we only have a skeleton, we can now add the Library by adding a Lib Folder:</p> <p><a href="http://lh5.ggpht.com/-XICgV463UNM/U0WYwUmu1RI/AAAAAAAACMw/650gS1_Z8Zw/s1600-h/6.%252520PackageLibraryAddLib%25255B4%25255D.png"><img title="6. PackageLibraryAddLib" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="6. PackageLibraryAddLib" src="http://lh5.ggpht.com/-BlSH2zIDW2Y/U0WYxCkb9EI/AAAAAAAACM4/W8VPfZ_27kA/6.%252520PackageLibraryAddLib_thumb%25255B2%25255D.png?imgmax=800" width="1075" height="857"></a></p> <p>And add the Dll by adding an existing file </p> <p><a href="http://lh4.ggpht.com/-YSv5WraDxUI/U0WYxyKnNqI/AAAAAAAACM8/-sj4YGHyRM0/s1600-h/7.%252520PackageLibraryAddExisting%25255B3%25255D.png"><img title="7. PackageLibraryAddExisting" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="7. PackageLibraryAddExisting" src="http://lh5.ggpht.com/-l9JlM2GK94Y/U0WYyOL7q5I/AAAAAAAACNI/UkaQI8tfOrE/7.%252520PackageLibraryAddExisting_thumb%25255B1%25255D.png?imgmax=800" width="1081" height="861"></a></p> <p>Select the dll…</p> <p><a href="http://lh6.ggpht.com/-ki5pK-2keYA/U0WYzNRgNnI/AAAAAAAACNQ/3I8dIf2TwVU/s1600-h/8.%252520PackageLibraryAddExisting2%25255B3%25255D.png"><img title="8. PackageLibraryAddExisting2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="8. PackageLibraryAddExisting2" src="http://lh4.ggpht.com/-4kLKUWxfjjg/U0WYz4ijaQI/AAAAAAAACNY/z-xPhYRNm10/8.%252520PackageLibraryAddExisting2_thumb%25255B1%25255D.png?imgmax=800" width="1098" height="806"></a></p> <p>And save the package…</p> <p><a href="http://lh4.ggpht.com/-BQJbY5os74E/U0WY0uEUqyI/AAAAAAAACNc/LtDSDM9Gjc4/s1600-h/9.%252520PackageSave%25255B3%25255D.png"><img title="9. PackageSave" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="9. PackageSave" src="http://lh6.ggpht.com/-F6t9g0r8U8A/U0WY1J2QCvI/AAAAAAAACNk/zlkAhMG4xZw/9.%252520PackageSave_thumb%25255B1%25255D.png?imgmax=800" width="1111" height="885"></a></p> <p>We can publish the package to a feed, such as NuGet.Org, but we can also simply use a file share to build our own private NuGet repository. In this case the repository is ‘C:\Temp\NuGetFeed’, this should offcourse be a UNC Path.</p> <p><a href="http://lh6.ggpht.com/-oq4IPzAtBy4/U0WY1j-ufjI/AAAAAAAACNs/XX_CzPnhqwc/s1600-h/10.%252520FeedSave%25255B3%25255D.png"><img title="10. FeedSave" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="10. FeedSave" src="http://lh6.ggpht.com/-94oTwMThOr0/U0WY2RuXLnI/AAAAAAAACN0/UeluQZVpGS8/10.%252520FeedSave_thumb%25255B1%25255D.png?imgmax=800" width="1120" height="483"></a></p> <p><strong>!!BACK TO VISUAL STUDIO!!</strong></p> <p><strong></strong> </p> <p>Click on: <u>Tool\NuGet Package Manager \ Package Manager Settings</u></p> <p><a href="http://lh4.ggpht.com/-9hBPqG85uKc/U0WY29av_CI/AAAAAAAACOA/xb1MDGQz94k/s1600-h/11.%252520FeedConfig1%25255B5%25255D.png"><img title="11. FeedConfig1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="11. FeedConfig1" src="http://lh6.ggpht.com/-7EKMJf-5wrc/U0WY333d90I/AAAAAAAACOI/er939YxdID4/11.%252520FeedConfig1_thumb%25255B3%25255D.png?imgmax=800" width="1085" height="756"></a></p> <p>Add a new feed, and specify the path, for example our repository in ‘C:\Temp\NuGetFeed’:</p> <p><a href="http://lh3.ggpht.com/-hlThs52ZJoI/U0WY4VF8EII/AAAAAAAACOM/hromvRUAv-c/s1600-h/12.%252520FeedConfig2%25255B5%25255D.png"><img title="12. FeedConfig2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="12. FeedConfig2" src="http://lh5.ggpht.com/-UMdwRdEIGjQ/U0WY4yl4CYI/AAAAAAAACOY/hkSt3EDaMqA/12.%252520FeedConfig2_thumb%25255B3%25255D.png?imgmax=800" width="1091" height="629"></a></p> <p>In the solution we can now manage the NuGet packages for the solution;</p> <p><a href="http://lh5.ggpht.com/-v43HxJd2Whw/U0WY5zDsYOI/AAAAAAAACOc/e_p2e4i_PxQ/s1600-h/13.%252520MAnageNuGet%25255B5%25255D.png"><img title="13. MAnageNuGet" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="13. MAnageNuGet" src="http://lh5.ggpht.com/-xr1n975fFqA/U0WY6SnKgNI/AAAAAAAACOo/pmT2UQmWvHo/13.%252520MAnageNuGet_thumb%25255B3%25255D.png?imgmax=800" width="739" height="1030"></a></p> <p>And add a reference to the Service Bus Library Functions, notice the dependencies (my colleague <a href="http://www.linkedin.com/in/sfkuiper">Sybren Kuiper</a> is working on a NuGet HelpFile builder, which automatically generates a SandCastle help file, from the project file, which is then used in the NuGet package so that the help is available in this window), at this moment, we need to do this manually.</p> <p><a href="http://lh3.ggpht.com/--w7FCgMcXf0/U0WY6xBOj9I/AAAAAAAACOw/N8s8PmOhKfs/s1600-h/14.%252520NuGetReference%25255B3%25255D.png"><img title="14. NuGetReference" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="14. NuGetReference" src="http://lh6.ggpht.com/-mm8WAccwi4U/U0WY7jlGIQI/AAAAAAAACO4/5fjZRrzr_oU/14.%252520NuGetReference_thumb%25255B1%25255D.png?imgmax=800" width="1096" height="727"></a></p> <p>As we can see, the dependency leads to the installation of the ServiceBus.v1_1, <strong>the version WE specified!</strong></p> <p><a href="http://lh5.ggpht.com/-6DcFzAHYFE8/U0WY8YjOhSI/AAAAAAAACO8/l5Sn5mkABe4/s1600-h/15.%252520NuGetReference2%25255B3%25255D.png"><img title="15. NuGetReference2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="15. NuGetReference2" src="http://lh5.ggpht.com/-XLMXMz1-udE/U0WY8xfAzqI/AAAAAAAACPE/2fbPSM-pYLY/15.%252520NuGetReference2_thumb%25255B1%25255D.png?imgmax=800" width="1101" height="735"></a></p> <p>Restrictions may apply</p> <p><a href="http://lh6.ggpht.com/-wMfuf3dEVI4/U0WY9ODonXI/AAAAAAAACPM/HdsoHEWJcMM/s1600-h/16.%252520LicenseAccept%25255B5%25255D.png"><img title="16. LicenseAccept" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="16. LicenseAccept" src="http://lh3.ggpht.com/-wangGUDQ8Jo/U0WY9r1vA5I/AAAAAAAACPY/OhK_cmgDthM/16.%252520LicenseAccept_thumb%25255B3%25255D.png?imgmax=800" width="1096" height="732"></a></p> <p><strong>So far….the same reference, only more work? No…</strong></p> <p>What we did, was abstracted the versioning and dependencies out of the solution. This means that the package is in control of the dependencies and not the project. This allows for a managed release of components, AND, new versions are available in a notification menu. This can be automated, used in a TFS build, etc. </p> <p><a href="http://lh6.ggpht.com/-X_P8FOdHrcA/U0WY-Q57cNI/AAAAAAAACPc/i0fLJW4dNB8/s1600-h/image%25255B14%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-RvsNdNzTkvg/U0WY-237NEI/AAAAAAAACPo/vjgaayM3WMQ/image_thumb%25255B6%25255D.png?imgmax=800" width="1080" height="712"></a></p> <p><strong>What happens if we release a new version of the component? (using the NuGet Package Explorer)…</strong></p> <p><a href="http://lh6.ggpht.com/-kBx2do3Oiok/U0WY_Qyf8kI/AAAAAAAACPw/FAMhOcvKLWU/s1600-h/17.%252520UpdatePackage%25255B4%25255D.png"><img title="17. UpdatePackage" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="17. UpdatePackage" src="http://lh5.ggpht.com/-z0G_3PtMdh4/U0WZAAJz0vI/AAAAAAAACP4/XOjqXDI-npw/17.%252520UpdatePackage_thumb%25255B2%25255D.png?imgmax=800" width="1080" height="866"></a></p> <p>We can save the new version, where the name is generated based on the specified version (at this moment manually). This allows us to have control of which version is used in our project, as we can always go back to a previous version. In this case we would like to see that the project using version 1.0.0 still works, and that we get an update that there a new version. So we are going to save the new version, alongside the existing version.</p> <p><a href="http://lh3.ggpht.com/-YVsZdDbROE8/U0WZAwweleI/AAAAAAAACP8/ZKWWbBCcy2Y/s1600-h/18.%252520UpdateVersion%25255B4%25255D.png"><img title="18. UpdateVersion" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="18. UpdateVersion" src="http://lh4.ggpht.com/-iOdHAExvZvo/U0WZBoL8jXI/AAAAAAAACQI/TlibYSunaVg/18.%252520UpdateVersion_thumb%25255B2%25255D.png?imgmax=800" width="1073" height="632"></a></p> <p><strong>!!BACK TO VISUAL STUDIO!!</strong></p> <p>If we manage the NuGet Packages for the solution, we now see that there is an installed version <strong>1.0.0 </strong>and that there is an update, when it was published, and the new version <strong>1.0.1.</strong> This can be automated, so that we have an overview of the used versions. In this case, we can simply click ‘Update’ to retrieve the new version.</p> <p><a href="http://lh3.ggpht.com/-yELIalE9TxY/U0WZCD3JybI/AAAAAAAACQM/oaAelX8HigY/s1600-h/19.%252520UpdateVersion2%25255B4%25255D.png"><img title="19. UpdateVersion2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="19. UpdateVersion2" src="http://lh4.ggpht.com/-qMwv0Ed4ykc/U0WZC9hTKJI/AAAAAAAACQY/xgikCxhAlLE/19.%252520UpdateVersion2_thumb%25255B2%25255D.png?imgmax=800" width="1072" height="716"></a></p> <p>To be able to communicate with the Service Bus, we need several references, and by using the NuGet Packaging solution, we can ensure that we always have the version we need.</p> <p><a href="http://lh3.ggpht.com/-3BLJ_cB9_6M/U0WZDYbwkCI/AAAAAAAACQc/ovu7_Ad62lc/s1600-h/20.%252520ReferencesEndResult%25255B4%25255D.png"><img title="20. ReferencesEndResult" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="20. ReferencesEndResult" src="http://lh6.ggpht.com/-urVc7_D4pGI/U0WZD6SVnTI/AAAAAAAACQo/oLA6flKhRGc/20.%252520ReferencesEndResult_thumb%25255B2%25255D.png?imgmax=800" width="880" height="559"></a></p> <p> </p> <p>There you go, versioning strategy in place….governance fase 1 completed…get the TFS guy and set up the rest….</p> <p>Some tips:</p> <ul> <li>The NuGet packages can provide significant added value to components which are used in project, however not always during development <li>Conditional dependencies can be usefull <li>Added source/content such as sample can also be delivered using Project Templates which are problably more helpfull</li></ul> <p> <p>HTH, <p>Sander Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-32172410.post-66689280961340853902013-12-18T10:52:00.001+01:002013-12-18T10:52:20.045+01:00Starting you Azure project<p>Is this your project approach?</p> <p>Azure Project X == Azure Subscription X<br>Azure Project X Budget == Azure Billing Alert on Azure subscription X<br>Azure Project X Monitoring == setup (SCOM) Azure monitoring<br>Azure Project DEV == prepared to support the application after Go-Live?</p> <p>Azure Subscriptions<br><a href="http://blog.kloud.com.au/2013/07/30/good-practices-for-manag…">http://blog.kloud.com.au/2013/07/30/good-practices-for-manag…</a></p> <p>Azure Billing<br><a href="http://msdn.microsoft.com/en-us/library/windowsazure/dn47977…">http://msdn.microsoft.com/en-us/library/windowsazure/dn47977…</a></p> <p>Azure SCOM<br><a href="http://blogs.technet.com/b/dcaro/archive/2012/05/03/how-to-monitor-your-windows-azure-application-with-system-center-2012-part-2.aspx">http://blogs.technet.com/b/dcaro/archive/2012/05/03/how-to-monitor-your-windows-azure-application-with-system-center-2012-part-2.aspx</a></p> <p>Regards,</p> <p>Sander</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-18536917308373188792013-12-13T17:00:00.000+01:002013-12-13T17:00:02.010+01:00The Enterprise Continuum – separation of concerns<p style="margin: 14px 0px" align="justify"><font face="Helvetica"><font style="font-size: 10.5pt; background-color: #fafafa">There are so many options, and ways of developing a solution that I would like to share some of the guidelines we are developing internally. At this moment, I will do this on the blog you are reading, focusing on the solution architectures. In parallel I’m working for my company on the enterprise architectural guidelines, and I’m trying to follow TOGAF principles to lay down the architecture. I’m hoping to be able to define the architecture context, general architecture, and relate it to the solution architecture. </font></font> <p style="margin: 14px 0px" align="justify"><font style="background-color: #fafafa"><font face="Helvetica"><font style="font-size: 10.5pt">In the perfect world, with all the time to do this….this should result in Architectural concepts, which will be posted on: </font></font><font style="font-size: 10.5pt"><a style="href: "http://theenterprisecontinuum.blogspot.nl/""><font color="#000080" face="Helvetica">http://theenterprisecontinuum.blogspot.nl/</font></a><font face="Helvetica"> focused from the top-down approach of setting architectural requirements such as ‘every project must leverage a monitoring capability’, and this blog: </font><a style="href: "http://snefs.blogspot.com/"" href="http://snefs.blogspot.com"><font color="#000080" face="Helvetica">http://snefs.blogspot.com</font></a></font><font face="Helvetica"><font style="font-size: 10.5pt"> where I will post the solution for this concept.</font></font></font></p> <p> <p>The first post (which is basically the same as this):</p> <p><a title="http://theenterprisecontinuum.blogspot.nl/2013/12/hi-there-what-can-you-expect-on-this.html" href="http://theenterprisecontinuum.blogspot.nl/2013/12/hi-there-what-can-you-expect-on-this.html">http://theenterprisecontinuum.blogspot.nl/2013/12/hi-there-what-can-you-expect-on-this.html</a></p> <p> </p> <p>Cheers,</p> <p>Sander</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-20555052348802216202013-12-08T14:10:00.001+01:002013-12-08T14:10:21.219+01:00Azure Service Bus – Error handling strategy<p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">At this moment there are several ways to build exciting new applications. In several projects, we are using a hybrid/cloud architecture, specifically Windows Azure. In my upcoming posts I would like to share some of the guidelines we are developing internally, in this case specifically a way of handling errors in Azure queues/topic-subscriptions.</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">A lot of the Azure (integration) Architectures (and even between web-worker roles) will likely use some elements of the Azure Service Bus, or Azure Queues. Going through the different architectures is not part of this post, so I will suffice with a slide from the <a href="http://channel9.msdn.com/Blogs/Subscribe/Service-Bus-Messaging-Deep-Dive">Service Bus Deep Dive</a> presentation;</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh5.ggpht.com/-mcwRrO83838/UqRvqHiU_eI/AAAAAAAACIQ/kF7COEcoQnw/s1600-h/clip_image002%25255B4%25255D%25255B3%25255D.jpg"><img title="clip_image002[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image002[4]" src="http://lh3.ggpht.com/-SfItxmz9G5E/UqRvql_gv9I/AAAAAAAACIU/V6EOx_zQpYU/clip_image002%25255B4%25255D_thumb%25255B1%25255D.jpg?imgmax=800" width="536" height="322"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Within our company <a href="http://www.caesar.nl/">Caesar</a>, several internal systems have been created and where possible purchased. One of them, CRM4.0 was outdated, or not suited for all our requirements (among them Accessibility online). We decided to migrate our CRM system to the Cloud, using Dynamics CRM. As not all systems are migrate and we are in the process of analyzing the requirements and alternatives, we needed a solution for updating our internal systems which use CRM information. </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">As Dynamics CRM provides means to push updates to Windows Azure, we have implemented the following solution;</font></font></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Dynamics CRM send Contacts to the Azure Service Bus Topic ‘</font><b style="mso-bidi-font-weight: normal"><font style="font-size: 11pt">Contacts’</font></b></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: "Courier New""><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">For each system subscription, we have a subscription (e.g. contacts-systemA)</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Dynamics CRM send Accounts to the Azure Service bus Topic ‘<b style="mso-bidi-font-weight: normal">Accounts</b>’</font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">An internal (windows) Services picks up messages from the subscriptions and sends them to the LOB systems</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">The following architecture explains this architecture:</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh5.ggpht.com/-0dFjYuAcF98/UqRvqyiVTFI/AAAAAAAACIc/mJEYhuCZ6fU/s1600-h/clip_image004%25255B4%25255D%25255B2%25255D.jpg"><img title="clip_image004[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image004[4]" src="http://lh6.ggpht.com/-tGHYnnz76Ew/UqRvraec4gI/AAAAAAAACIk/ul41OEmcPEY/clip_image004%25255B4%25255D_thumb.jpg?imgmax=800" width="605" height="336"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">This worked fine, however, sometimes we had a problem processing messages. After diving into the problem we identified that malformed messages/incomplete accounts/contacts were send, which caused an error, which leaded to the Abandon, the message would remain on the queue, and thus, eventually the problem would occur…..we implemented a maximum number of errors strategy, so ultimately the processing service would stop. Implementing error handling, transient fault handling, and Email Listener did not prevent anything; we did not know when an error would occur and what the error would be. </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">We stretched the capabilities of the CRM Plugin and CRM configuration which allows you to send all fields, perform validations, however, several things can go wrong:</font></font></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Technically</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: "Courier New""><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Transient faults – network hick-ups, Azure updates which terminate connections, these call all be handled by implementing the EntLib Transient Fault Handling block</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: "Courier New""><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Environment Configuration - Azure Topic/Subscriptions have not been created in the environment, these can all be prevented by using a strategy such as proposed in my earlier post</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: "Courier New""><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Management - Azure Storage account configuration is modified/removed, these risks can be minimized by implementing an solid Azure security policy (and not promoting everybody to co-administrator)</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: "Courier New""><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Server (processing service) is not available, this should be monitored and causes business issues, but due to the asynchronous setup of this architecture, does <span style="mso-spacerun: yes"> </span>not cause any issues in the system which are not solved when restarting this service</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Functional error</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: "Courier New""><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Entity consistency</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 108pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level3 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: wingdings; mso-bidi-font-family: wingdings"><span style="mso-list: ignore"><font face="Wingdings"><font style="font-size: 11pt">§</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Contacts/Accounts are not valid as not all mandatory fields are set, these can be resolved by managing the CRM Plugin</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><font color="#ff0000"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: "Courier New""><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="color: ; mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Entity dependencies</font></font></span></font></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 108pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level3 lfo1"><font color="#ff0000"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: wingdings; mso-bidi-font-family: wingdings"><span style="mso-list: ignore"><font face="Wingdings"><font style="font-size: 11pt">§</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="color: ; mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Contact insert is not processed in the internal system, Contact update will fail</font></font></span></font></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 108pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level3 lfo1"><font color="#ff0000"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: wingdings; mso-bidi-font-family: wingdings"><span style="mso-list: ignore"><font face="Wingdings"><font style="font-size: 11pt">§</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="color: ; mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Account insert is not processed, relation with account cannot be made, this contact insert will fail</font></font></span></font></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Given the problem, some can be solved by implementing readily available frameworks and components, however, for some errors, a strategy is in order. Let’s look at the aforementioned problem in relation to the operations. Processing messages has been implemented earlier by using the </font></font><font style="font-size: 11pt"><a style="href: "http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.receivemode.aspx""><font color="#0563c1" face="Calibri"><u>peek-lock</u></font></a></font><font face="Calibri"><font style="font-size: 11pt"> model where a message is only marked as processed by the following operations on the brokered message:</font></font></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Complete (everything went fine)</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Abandon (an error occurred while processing)</font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Defer (meta-data can be added to the message, so that the message can be picked up at a later time)</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><a href="http://lh4.ggpht.com/-JAX6CGli9U8/UqRvryBs3eI/AAAAAAAACIs/Bbi9X_28WHg/s1600-h/clip_image006%25255B4%25255D%25255B2%25255D.png"><img title="clip_image006[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image006[4]" src="http://lh4.ggpht.com/-6HJoKCDUNaI/UqRvsSva6EI/AAAAAAAACI0/kvEx_TK8_uo/clip_image006%25255B4%25255D_thumb.png?imgmax=800" width="605" height="437"></a><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"> </p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="5" face="Calibri">Will this solve a functional error? <strong>No!</strong> </font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">So what we need is a strategy…which allows messages to be stored in a location, related to the queue/topic-subscription, but will not be processed, is ‘dead’, and is queues for further investigation, hence:</font></font></span></p> <blockquote> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font size="5">“All messages, which cannot be processed, are placed in the DeadLetter queue”</font></font></span></b></p></blockquote> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"></font></span></b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span style="font-family: ; color: ; line-height: 10pt; mso-bidi-font-family: tahoma; mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh3.ggpht.com/-2w8vVKlrNXI/UqRvs083V4I/AAAAAAAACI8/tcxZr2fIIIM/s1600-h/clip_image008%25255B4%25255D%25255B2%25255D.png"><img title="clip_image008[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image008[4]" src="http://lh5.ggpht.com/-u1oWxwmXkUw/UqRvtAg46RI/AAAAAAAACJE/NFV-0s87oh8/clip_image008%25255B4%25255D_thumb.png?imgmax=800" width="400" height="153"></a></span><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="mso-ansi-language: en-us"></span></b></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></b></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh6.ggpht.com/-vkLQkg6PQ2s/UqRvtnJr-zI/AAAAAAAACJM/ejLFD-HojYE/s1600-h/clip_image010%25255B4%25255D%25255B3%25255D.png"><img title="clip_image010[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image010[4]" src="http://lh6.ggpht.com/-U6dtkjAlnjE/UqRvuMah8SI/AAAAAAAACJU/Pa88BZLGcbE/clip_image010%25255B4%25255D_thumb%25255B1%25255D.png?imgmax=800" width="514" height="289"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">This will result in the following state:</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><a href="http://lh5.ggpht.com/-GTBuaOxZIPI/UqRvud-PLSI/AAAAAAAACJc/e7z3EGhe3Zo/s1600-h/clip_image012%25255B4%25255D%25255B2%25255D.png"><img title="clip_image012[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image012[4]" src="http://lh4.ggpht.com/-KWTSKRNzxAs/UqRvu_fA0hI/AAAAAAAACJk/4cc9H7bZ8-M/clip_image012%25255B4%25255D_thumb.png?imgmax=800" width="560" height="418"></a><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">This however, poses several new challenges, what to do with the dead-letter messages, how to restart messages, in the next post I will explain my effort to implement a monitoring solution by using and evaluating several existing frameworks and technologies. </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">To be continued….</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"></font></span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri">HTH,</font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"></font></span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri">Sander Nefs</font></span></p> Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-32172410.post-79646735943204142902013-12-01T23:08:00.001+01:002013-12-01T23:39:46.501+01:00Architecture - ISO/IEC/IEEE 42010:2011<p dir=ltr>After following the <a href="https://www.iasaglobal.org/assnfe/CourseView.asp?MODE=VIEW&clCourseID=1&csCategory=&csFrom=&csTo=&csKeyWord=&csSortBy=1&clPageNumber=1">IASA Architecture Core</a> course, I like to continue with my personal learning and improvement, and focus on my architectural skills, among others. This year, by following a course on the <a href="http://en.wikipedia.org/wiki/Theory_of_constraints">Theory of Constraints</a>, which is a really interesting theory which will help analyze the core issue behind a problem, and have followed the <a href="http://en.wikipedia.org/wiki/Metaplan">MetaPlan</a> training which allows for a structured goal oriented brainstorm. For next year, I enrolled in a training on TOGAF. In my preparation for this, I stumbled upon the Open2Study website, where you can follow a lot of courses for free. I enrolled this weekend into the <a href="https://www.open2study.com/courses/introduction-to-enterprise-architecture">EntrArch</a> course, which includes TOGAF. In one of the additional resources, it referred to a lot of very useful articles.</p>
<p dir=ltr>So after diving into a lot of them, for learning more about architectural styles, frameworks and more. I can recommend the following;</p>
<p dir=ltr><a href="http://www.opengroup.org/togaf/">TOGAF</a></p>
<p dir=ltr><a href="http://msdn.microsoft.com/en-us/library/bb466232.aspx">A Comparison of the Top Four Enterprise-Architecture Methodologies</a></p>
<p dir=ltr><a href="http://www.iso-architecture.org/ieee-1471/afs/frameworks-table.html">Survey of Architecture Frameworks</a> </p>
<p dir=ltr> </p>
<p dir=ltr>Cheers,</p>
<p dir=ltr>Sander</p>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-32172410.post-87643941480346589492013-11-29T16:39:00.001+01:002013-11-29T16:39:43.909+01:00BizTalk User Group NL 28-11-2013<p>On 28-11-2013 the BizTalk User Group (<a href="http://www.linkedin.com/groups?home=&gid=2078809&trk=anet_ug_hm">LinkedIn group BTUG NL</a>) meeting took place in Amsterdam, which was organized by <a href="http://www.estreme.nl/">Estreme</a>. The purpose of the BizTalk User Group is to have regular meetings with members in the community on the topic of integration. Since Azure provides more and more integration capabilities, by means of the Azure Service Bus, and the Go-Live of Windows Azure BizTalk Services (WABS), the meetings are diverse and very interesting. <p>As Azure is very broad, the BTUG focuses on the following elements of the Microsoft Integration stack: <ul> <li>On Premise (WCF/SSIS/BizTalk/Windows Server Service Bus etc)</li> <li>Cloud - Windows Azure (Windows Azure BizTalk Services / Service Bus etc).</li></ul> <p><strong>Announcements</strong></p> <ul> <li>An upcoming event in January is the BizTalk Saturday, focused on Windows Azure BizTalk Services</li> <li>Next year, a BTUG Beach event is organized, an informal community event</li> <li>The next upcoming meeting will be held in March</li></ul> <p><b>Feedback BizTalk Summit - Steef - Jan Wiggers<br></b>Steef - Jan Wiggers provided a summary after attending the BizTalk Summit. This showed that BizTalk is here to stay with an improved release cadence:</p> <ul> <li>Annual cumulative updates</li> <li>2 - yearly platform updates</li> <li>Next year there will be a BizTalk 2013 R2</li> <li>In 2015, a new version will be released</li> <li>Improvements included in the upcoming releases are in the area of JSON support, HealthCare / SWIFT adapter-additions and an updated SB Adapter</li></ul> <p>Windows Azure BizTalk Services is now live and can be used in production and is improved in the areas of monitoring, archiving, EDI support and management by using PowerShell Command Let. <p><b>KAS Integrator - Johan Vrielink<br></b> <p>At KAS Bank BizTalk has been implemented to handle transactions for stock exchanges. The KAS Integrator is a framework built on top of BizTalk which allows fully automated configuration of the environment. There are several services defined, on top of BizTalk, and a management portal which provides business rules, publish / subscription configurations, which has some similarities with the EDI partnering, which was pretty interesting. A customer with a clear vision and story was very great to have presenting a session. It showed some typical demands in the market; the automated configuration of middleware, ability to minimize development efforts for interfaces and gave great insight in how to think about challenges in future projects, e.g. by using PowerShell. <p><b>Integration Challenge : Custom Service Bus - Rob Kits<br></b>During the integration challenge, non-BizTalk products / solutions are shown and compared to BizTalk, which allows you to think about integration in a broader sense, where not every problem can be solved with a single tool. In this case it was a custom solution that used in locations where gas is distributed. In this environment, it is necessary that operators can configure/adjust/monitor the environment, and middleware such as BizTalk is too complex. It was based on PLC technology presented a solution that was brilliant in its simplicity. It again showed that an integration problem must be based on the needs and requirements, and not always with the potential features provided. I found that to be a nice analogy with cloud technology, where one of the advantages is that you pay for what you need, not necessarily what the technology can do. <p><b>Synchronous Service Bus - Martin Rienstra<br></b>BizTalk is not a golden hammer and certainly not suitable for all issues. At a client, about 80 interfaces were implemented in an intranet environment using a request-response pattern (synchronously). As BizTalk is designed with the principle of guaranteed delivery using the asynchronous pub/sub architecture (polling), BizTalk is not designed for low latency solutions. This does not mean BizTalk is not capable of handling these, this is possible, by using separate hosts, scaling out, separating the databases, however, there is due to the architecture, unpredictable latency. <p>The BizTalk product team has recognized this and stated that this is due to the architecture in BizTalk and will not be resolved, this kind of issues can be addressed by using different technologies. <p>Martin had previously looked at the Service virtualization platform MSE (Microsoft Service Engine), but this product is no longer developed (in this space there is only <a href="http://www.prweb.com/releases/2012/5/prweb9483718.htm">Sentinet</a>). The requirements; configurable, manageable, and re-using the BizTalk maps. The solution consisted of an interesting mix of WCF custom behaviors allowing dynamic service to be generated using a configuration, which uses BizTalk artifacts (mappings / assemblies etc), with the great advantage that the existing BizTalk used solution could be reused. The disadvantage is that the services should run on BizTalk the machine because of the usage of BizTalk artefacts. <p><b>Summary</b> <p>A great event and very interesting content, in future meetings we can expect a lot of great Integration Challenges, and I’m trying to arrange a session where one of my colleagues from <a href="https://twitter.com/CaesarExperts">Caesar</a> will explain differences and comparisons between Sonic vs BizTalk vs Azure as I’ve seen a lot of interesting things after comparing BizTalk and Sonic; <ul> <li>Sonic has the choice between durable subscriptions and non-durable (using queues), where BizTalk always uses durable subscriptions, Azure provides in this context durable (Topic) and non-durable subscriptions (Queues)</li> <li>Routing can be done schema based, where Sonic does this without enforcing a schema, where BizTalk requires a schema</li> <li>Similarities between logical and physical separation of concerns (where Sonic works with an ESB Container and Broker concept) and BizTalk uses a Logical and Physical port)</li> <li>And more….</li></ul> <p> </p> <p>Great to see everyone and I hope a lot of events like this will follow.</p> <p> </p> <p>Regards,</p> <p>Sander</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-44888223881051760582013-11-22T23:36:00.001+01:002013-11-22T23:36:24.089+01:00‘ETW2.0’ - High performance tracing using EntLib SLAB<p>Are you writing an application that has high performance requirements, are you wondering how Azure Diagnostics works, do you want to write your own logging framework….this might help you out.</p> <p>Not so long ago, the <a href="http://blogs.msdn.com/b/asgisv/">Application Server Group ISV Partner Advisory Team</a> posted an excellent <a href="http://blogs.msdn.com/b/asgisv/archive/2010/05/11/best-practices-for-instrumenting-high-performance-biztalk-solutions.aspx">article</a> on how to instrument specifically BizTalk applications, by leveraging the <a href="http://msdn.microsoft.com/en-us/library/aa363668(VS.85).aspx">ETW</a> infrastructure.</p> <p>This allowed for significant high performance tracing and was measured against other frameworks as you can see in the diagram below;</p> <p><a href="http://lh6.ggpht.com/-ADCgmg8vITA/Uo_cRGPmQHI/AAAAAAAACFM/o2wcZ6TXHZk/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-w7kNIYm7-9Y/Uo_cRkzpHvI/AAAAAAAACFQ/TmPrcLncW9M/image_thumb%25255B1%25255D.png?imgmax=800" width="545" height="148"></a></p> <p>In the latest <a href="http://msdn.microsoft.com/en-us/library/dn169621.aspx">EntLib</a> releases, this has been included in the <a href="http://msdn.microsoft.com/en-us/library/dn440729(v=pandp.60).aspx">Semantic Logging Application Block (SLAB)</a>.</p> <p>What’s really interesting is that there are 2 patterns which you can implement:</p> <p>1. In Process, where the Host which performs the log data is written to the ETW Infrastructure and the Listener is subscribed to the ETW data </p> <p><a href="http://msdn.microsoft.com/en-us/library/Dn440729.b0ed8e01eafdad9bfc09baf937112d53(l=en-us,v=pandp.60).png"><img title="Figure 1 - The Semantic Logging Application Block In-Process Scenario" alt="Follow link to expand image" src="http://i.msdn.microsoft.com/dynimg/IC688972.png" width="544" height="312"></a></p> <p>2. Out of Process, where the Listener can be a Service outside of your application (most suitable for OnPremise usage)</p> <p><a href="http://msdn.microsoft.com/en-us/library/Dn440729.c77ac7756c6029e5c154328fa5101ec9(l=en-us,v=pandp.60).png"><img title="Follow link to expand image" alt="Follow link to expand image" src="http://i.msdn.microsoft.com/dynimg/IC688974.png" width="534" height="596"></a></p> <p> </p> <ul> <li>EventSource</li></ul> <p>With the Semantic logging application block, the idea is that the logging infrastructure is predefined (e.g. Start / Stop events which are logged) and that the application only provides the data/parameter used to log. You need to create an EventSource which contains all the LogEvents you would like to log. This means that, as well as with unit testing….you need to think, before you build. An example is shown below;</p> <p><a href="http://lh5.ggpht.com/-Z-GFzSShzLw/Uo_cR6pSA_I/AAAAAAAACFU/m0sUQtH_xmE/s1600-h/image%25255B19%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-GomWawQhanc/Uo_cSacF1jI/AAAAAAAACFc/2_pmGlhdxT8/image_thumb%25255B11%25255D.png?imgmax=800" width="737" height="273"></a></p> <ul> <li>Sink</li></ul> <p>The great thing, and the reason I like this framework is that you are able to create the sinks, and due to the Out-Of-Process model, can leverage sinks which in itself are not high performance. Out of the box there are a number of sinks: SQL database, Windows Azure table, flat files and some others.</p> <p>1. Example SQL Server Sink</p> <p><a href="http://lh3.ggpht.com/-RNCYz3MQ4Bs/Uo_cSjS1vyI/AAAAAAAACFk/cqYGWjqgQVk/s1600-h/image%25255B59%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-eI7yhnvzmSE/Uo_cTEBElNI/AAAAAAAACFs/7Om5x-u_RoE/image_thumb%25255B33%25255D.png?imgmax=800" width="735" height="108"></a></p> <p>2. Example SQL Server Result</p> <p><a href="http://lh5.ggpht.com/-jZgtznuURoI/Uo_cTmIPczI/AAAAAAAACF0/sz0Iy53ltaQ/s1600-h/image%25255B58%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-AgmX44JYzrA/Uo_cT22OGWI/AAAAAAAACF8/iCqA-fjhp0w/image_thumb%25255B32%25255D.png?imgmax=800" width="736" height="144"></a></p> <ul> <li>Result and extension points</li></ul> <p>Writing using the EventSource will write to the ETW Infrastructure, which has almost no performance impact. The Out-Of-Process listener will pick up the messages in a windows service (can also be downloaded from the EntLib download link), the Sink writes the data to the destination of your choice.</p> <p>In a post of <a href="http://www.ithero.nl/post/2013/09/04/Using-MongoDB-for-Message-Body-Tracking-in-the-ESB-Toolkit-for-BizTalk-2013.aspx">Tomasso Groenendijk</a> the option of using MongoDb is explained, with the idea of having a high performance tracing mechanism. With SLAB the same functionality is available.</p> <p>Additionally, writing large amounts of data can be something you don’t want to do on you database used for your primary process, so creating a MongoDb Sink is still a viable option, however, for different purposes.</p> <ul> <li>Getting started with SLAB</li></ul> <p>You can use the SLAB quite easily by using NuGet and search for Semantic, which will display the Application Block and the available Sinks for Windows Azure Tables and SQL Server as wel.</p> <p><a href="http://lh5.ggpht.com/-JCquXAGpeL0/Uo_cUbSAXmI/AAAAAAAACGI/927xLgxtNK4/s1600-h/image%25255B23%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-BCde3-AuYFg/Uo_cU-XvzxI/AAAAAAAACGM/mce5B4oO0PE/image_thumb%25255B13%25255D.png?imgmax=800" width="586" height="142"></a></p> <p>The <a href="http://www.microsoft.com/en-us/download/confirmation.aspx?id=40286">hands-on labs</a> and <a href="http://msdn.microsoft.com/en-us/library/dn440729(v=pandp.60).aspx">documentation</a> should get you going quickly. As the EntLib settings can be configured outside of your code (recommended), diving in the EntLib config might not be as much fun as you would expect. For this, there is an EntLib configuration tool available.</p> <ul> <li>Getting started with EntLib Config</li></ul> <p>The <a href="http://www.microsoft.com/en-us/download/details.aspx?id=38789">following link,</a> contains a EntLib 6 configuration add-in which helps you create the Configuration settings for some of the Application blocks and the Windows Service for out-of-process logging.</p> <p>1. Select the configuration console</p> <p><a href="http://lh5.ggpht.com/-t9cXIK8ZqJw/Uo_cVFTBxlI/AAAAAAAACGU/4QJQFf_JX3o/s1600-h/image%25255B27%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-Nz9NrjoZZzg/Uo_cVRoFAjI/AAAAAAAACGc/7e5Jwx4Y3tQ/image_thumb%25255B15%25255D.png?imgmax=800" width="559" height="36"></a></p> <p><a href="http://lh4.ggpht.com/-BYTLwnB38vI/Uo_cVwiReNI/AAAAAAAACGk/v0ZEW-RGbIA/s1600-h/image%25255B40%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-IwhVbMaZQcY/Uo_cWdM5zaI/AAAAAAAACGs/fAWiGhSeAR8/image_thumb%25255B22%25255D.png?imgmax=800" width="364" height="231"></a></p> <p>2. Click on the Config file and open the editor</p> <p><a href="http://lh4.ggpht.com/-5lpHPhNX1NM/Uo_cWiDCg2I/AAAAAAAACG4/ocjocsGOtMk/s1600-h/image%25255B35%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-8qqEygQoWSg/Uo_cW2u4deI/AAAAAAAACHA/vb3lCT_Kb-c/image_thumb%25255B19%25255D.png?imgmax=800" width="364" height="146"></a></p> <p>3. Select the block and visually configure the block</p> <p><a href="http://lh6.ggpht.com/-7rKEPpeLq-I/Uo_cXeatM2I/AAAAAAAACHE/TG8KkKhDP94/s1600-h/image%25255B39%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-K4N_O9ibehw/Uo_cYAdP7HI/AAAAAAAACHQ/s46CaLD3SZo/image_thumb%25255B21%25255D.png?imgmax=800" width="369" height="218"></a></p> <p>4. Example <a href="http://msdn.microsoft.com/en-us/library/dn440719(v=pandp.60).aspx">TransientFaulthandling</a> Config</p> <p><a href="http://lh6.ggpht.com/-H6DwjJnGvgM/Uo_cYTEtBDI/AAAAAAAACHU/bl8JjE9BrYw/s1600-h/image%25255B50%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-Y0VakTRVFpc/Uo_cY4f8zNI/AAAAAAAACHc/MFMlVI5kyZI/image_thumb%25255B28%25255D.png?imgmax=800" width="827" height="149"></a></p> <p>5. Usage TransientFaultHandling Config</p> <p><a href="http://lh3.ggpht.com/-JHJ6K9vOloE/Uo_cZHgrMYI/AAAAAAAACHk/dDVpbxPkDi4/s1600-h/image%25255B49%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-ZiVOAZguQhc/Uo_cZgzd_BI/AAAAAAAACHs/LeI7dCSfll8/image_thumb%25255B27%25255D.png?imgmax=800" width="826" height="185"></a></p> <p> </p> <p> </p> <p> </p> <p>Cheers,</p> <p>Sander</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-61487643759463517602013-10-15T15:15:00.001+02:002014-05-30T20:07:49.185+02:00Service bus management – here's a way<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;"><strong>UPDATE</strong>: this post contains a lot of additional great suggestions </span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://blogs.msdn.com/b/thecolorofazure/archive/2014/05/13/azure-implementation-guidelines.aspx">http://blogs.msdn.com/b/thecolorofazure/archive/2014/05/13/azure-implementation-guidelines.aspx</a></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;"></span> </div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">How to create a consistent DTAP environment, which standards to adhere to, what naming conventions to apply, how to document these….all questions….the </span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">answers….a little cloudy. In this post I show how I use the tool Service Bus Explorer to my </span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">advantage for some of these questions. </span></span></span></div>
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Goal: create a consistent environment for DTAP</span></span></span> <div class="MsoListParagraphCxSpMiddle" style="line-height: 12pt; margin: 0cm 0cm 0pt 18pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Challenges</span></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="line-height: 12pt; margin: 0cm 0cm 0pt 54pt; mso-add-space: auto; mso-list: l1 level2 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: ignore;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">1.</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Naming conventions on Windows Azure (sb / queues / topics etc)</span></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="line-height: 12pt; margin: 0cm 0cm 0pt 54pt; mso-add-space: auto; mso-list: l1 level2 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: ignore;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">2.</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Isolation of environment and thus billing</span></span></span></div>
<div class="MsoListParagraphCxSpLast" style="line-height: 12pt; margin: 0cm 0cm 8pt 54pt; mso-add-space: auto; mso-list: l1 level2 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: ignore;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">3.</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Repeatable steps / Configurable using a tool / xml configuration</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;"><strong></strong></span></span></span> </div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;"><strong>#1: Naming conventions</strong></span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Are they out there for Azure? This is a future subject for a WindowsAzure live chat session. </span></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="line-height: 12pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">My #1 rule: make sure that the naming convention you think of are consistent </span></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="line-height: 12pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">An example convention: <Customer><Project><Type><Artefact> (Contoso.Broker.Transform.FormatA2FormatB) would not translate well to an Azure queue or service bus due to the long name, so we need to split this up into smaller pieces, a way could be</span></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="line-height: 12pt; margin: 0cm 0cm 0pt 72pt; mso-add-space: auto; mso-list: l1 level2 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: ignore;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">1.</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Create a subscription for the customer</span></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="line-height: 12pt; margin: 0cm 0cm 0pt 72pt; mso-add-space: auto; mso-list: l1 level2 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: ignore;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">2.</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Start the entity name with the project</span></span></span></div>
<div class="MsoListParagraphCxSpLast" style="line-height: 12pt; margin: 0cm 0cm 8pt 72pt; mso-add-space: auto; mso-list: l1 level2 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: ignore;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">3.</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">The Azure Portal already takes care of separating the artefact types, so pre- postfixing it (<b style="mso-bidi-font-weight: normal;">sb</b>brokerorders / broker<b style="mso-bidi-font-weight: normal;">q</b>orderinqueue or brokerorderin<b style="mso-bidi-font-weight: normal;">queue) </b>would not improve or help in maintainability, this is up to you.</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt 54pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;"> </span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;"><strong>#2: Isolated billing</strong></span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">The only way to really isolate the billing, is to create several subscriptions. This is my recommendation anyway, as migrating subscriptions is something that you do through a support call and is thus out of your control in situations mentioned in my </span></span></span><a href="http://snefs.blogspot.nl/2013/09/setting-up-your-azure-subscriptions.html"><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="color: #0563c1; font-size: 11pt;"><u>previous post</u></span></span></span></a></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Dedicated service bus namespaces will show up in a different line in the exported bill as shown in the exported bill below</span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span style="mso-fareast-language: nl; mso-no-proof: yes;"></span><span lang="EN-US" style="mso-ansi-language: en-us;"></span><br /></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh5.ggpht.com/-H6HVid8eCoU/Ul0_o3hMsRI/AAAAAAAACAk/V2uAPAkLVo0/s1600-h/image%25255B3%25255D.png"><img alt="image" border="0" src="http://lh5.ggpht.com/-LUqyz1DrGFA/Ul0_pSH28iI/AAAAAAAACAo/Qmt623EC2A4/image_thumb%25255B1%25255D.png?imgmax=800" height="38" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="546" /></a></div>
<span lang="EN-US" style="line-height: 12pt; mso-ansi-language: en-us; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: ar-sa; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: calibri; mso-fareast-language: en-us; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><br clear="all" style="page-break-before: always;" /></span> <div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;"><strong>#3: Repeatable steps / configurable using a tool / xml configuration</strong></span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">My approach is shown in below and is applied on service bus namespaces and Queues. However, this is because the tool I’ve chosen is Service Bus Explorer, I’ve suggested this type of abilities to several vendors as they were open to feedback, so who know, this type of approach might become possible for all tools / portals. </span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Consider my list of service namespaces:</span></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="line-height: 12pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Sbprojecttest</span></span></span></div>
<div class="MsoListParagraphCxSpLast" style="line-height: 12pt; margin: 0cm 0cm 8pt 36pt; mso-list: l1 level1 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Sbprojectdev</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span style="mso-fareast-language: nl; mso-no-proof: yes;"></span><span lang="EN-US" style="mso-ansi-language: en-us;"></span><br /></div>
<blockquote>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh6.ggpht.com/-zrUGFtDooro/Ul0_p33BEwI/AAAAAAAACA0/z36uFBMBXpg/s1600-h/image%25255B7%25255D.png"><img alt="image" border="0" src="http://lh3.ggpht.com/-CrocXaK6wWE/Ul0_qUsoMmI/AAAAAAAACA8/copqMcOxa2E/image_thumb%25255B3%25255D.png?imgmax=800" height="180" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /></a></div>
</blockquote>
<div class="MsoListParagraph" style="line-height: 12pt; margin: 0cm 0cm 8pt 36pt; mso-list: l1 level1 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><a href="http://code.msdn.microsoft.com/windowsazure/Service-Bus-Explorer-f2abca5a"><span style="font-family: Calibri;"><span style="color: #0563c1; font-size: 11pt;"><u>Download service bus explorer</u></span></span></a></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">There is a precompiled version already included in the release, you can also start visual studio and build this one.</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"></span></span> </div>
<blockquote>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh4.ggpht.com/-GLwO3agmCP8/Ul0_q70roEI/AAAAAAAACBE/RTRvxalKISI/s1600-h/image%25255B15%25255D.png"><img alt="image" border="0" src="http://lh6.ggpht.com/-POxvMRu30A0/Ul0_rhsWK_I/AAAAAAAACBM/TqzGDL-cP1Q/image_thumb%25255B7%25255D.png?imgmax=800" height="258" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="361" /></a></div>
</blockquote>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"></span></span> </div>
<div class="MsoListParagraph" style="line-height: 12pt; margin: 0cm 0cm 8pt 36pt; mso-list: l1 level1 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Open the ServiceBusExporer.Exe.Config</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Add the different namespaces you want to manage from ServiceBusExplorer as shown in the picture below.</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span style="mso-fareast-language: nl; mso-no-proof: yes;"></span><span lang="EN-US" style="mso-ansi-language: en-us;"></span><br /></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;"> </span></span></span></div>
<blockquote>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<img alt="image" border="0" src="http://lh6.ggpht.com/-RJRbynyc6ag/Ul0_sH4oqAI/AAAAAAAACBU/CADgP8bHhiA/image_thumb%25255B8%25255D.png?imgmax=800" height="241" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="239" /></div>
</blockquote>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Start Service Bus Explorer and connect to a service bus namespace (from the config)</span></span></span></div>
<div class="MsoListParagraph" style="line-height: 12pt; margin: 0cm 0cm 8pt 36pt; mso-list: l1 level1 lfo2; text-indent: -18pt;">
<a href="http://lh4.ggpht.com/-TGFwI1hHmwo/Ul0_sit4nnI/AAAAAAAACBc/aiivtBP4CNk/s1600-h/image%25255B20%25255D.png"><img alt="image" border="0" src="http://lh6.ggpht.com/-MjQPEivvQPw/Ul0_tLkIjCI/AAAAAAAACBk/O-Qhf3ShwGU/image_thumb%25255B10%25255D.png?imgmax=800" height="229" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="410" /></a></div>
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;"></span></span></span></span> <div class="MsoListParagraph" style="line-height: 12pt; margin: 0cm 0cm 8pt 36pt; mso-list: l1 level1 lfo2; text-indent: -18pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Connect to the environment</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span style="mso-fareast-language: nl; mso-no-proof: yes;"></span><span lang="EN-US" style="mso-ansi-language: en-us;"></span><br /></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh3.ggpht.com/-LuPnPaCmsBs/Ul0_tuWTHTI/AAAAAAAACBs/5iGu99NlK0Q/s1600-h/image%25255B24%25255D.png"><img alt="image" border="0" src="http://lh3.ggpht.com/-tTVgE9eXXoE/Ul0_uEphmYI/AAAAAAAACB0/1eb55WbqtgE/image_thumb%25255B12%25255D.png?imgmax=800" height="213" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="517" /></a><span lang="EN-US" style="line-height: 12pt; mso-ansi-language: en-us; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: ar-sa; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: calibri; mso-fareast-language: en-us; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><br clear="all" style="mso-special-character: line-break; page-break-before: always;" /></span></div>
<br />
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Create the queues we would like to deploy consistently</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span style="mso-fareast-language: nl; mso-no-proof: yes;"></span><span lang="EN-US" style="mso-ansi-language: en-us;"></span><br /></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh5.ggpht.com/-0sdar54D7Cc/Ul0_uytAPqI/AAAAAAAACCA/sAA-nRrFRPw/s1600-h/image%25255B38%25255D.png"><img alt="image" border="0" src="http://lh3.ggpht.com/-TApMwNomFmU/Ul0_vSN80sI/AAAAAAAACCI/g2ujExTYJ8o/image_thumb%25255B20%25255D.png?imgmax=800" height="188" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="268" /></a><span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;"></span></span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Export the entities</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh4.ggpht.com/-Yx03L7ZyznI/Ul0_v32HMfI/AAAAAAAACCQ/Llpv3AYpdZk/s1600-h/image%25255B37%25255D.png"><img alt="image" border="0" src="http://lh6.ggpht.com/-PWq5aJ8C-04/Ul0_wZz3tKI/AAAAAAAACCY/c_FTPndlBgA/image_thumb%25255B19%25255D.png?imgmax=800" height="206" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="267" /></a><span lang="EN-US" style="line-height: 12pt; mso-ansi-language: en-us; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: ar-sa; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: calibri; mso-fareast-language: en-us; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><br clear="all" style="mso-special-character: line-break; page-break-before: always;" /></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">View the exported settings</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh5.ggpht.com/-XiyJh6_ofdo/Ul0_w_-M8MI/AAAAAAAACCg/L1tJop4NWt0/s1600-h/image%25255B34%25255D.png"><img alt="image" border="0" src="http://lh3.ggpht.com/-uuWb-F9t_JE/Ul0_xaeA3NI/AAAAAAAACCo/nARXCqQAW9A/image_thumb%25255B16%25255D.png?imgmax=800" height="504" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="535" /></a></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">This is the first step, this config file is now exported as Xml. We can view all the settings and use a tool or program to manipulate this configuration file. We can add this configuration file into TFS etc. </span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">Connect to a different service bus namespace (e.g. sbprojecttest)</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">We can see that at this point, there are no queues….</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh3.ggpht.com/-JrWHbyFRHg4/Ul0_xxwaT5I/AAAAAAAACCw/E2CX4qK6_eY/s1600-h/image%25255B48%25255D.png"><img alt="image" border="0" src="http://lh3.ggpht.com/-3Sgj7QG-ZFE/Ul0_yel8aPI/AAAAAAAACC4/ue2bIgTaevw/image_thumb%25255B26%25255D.png?imgmax=800" height="241" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="373" /></a></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">We will import the entities using the configuration file </span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh3.ggpht.com/-CJo6lInsokc/Ul0_yn2j0nI/AAAAAAAACDA/1NkbRbH4jwE/s1600-h/image%25255B47%25255D.png"><img alt="image" border="0" src="http://lh6.ggpht.com/-FERD5WAeYS8/Ul0_zI4k_CI/AAAAAAAACDI/F_c7uwAASrs/image_thumb%25255B25%25255D.png?imgmax=800" height="374" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="376" /></a></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">The import will create the queues with the specified settings in the configuration file</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh5.ggpht.com/-uY9XDEKcbvM/Ul0_ziU5fVI/AAAAAAAACDQ/35tHn3pTMVY/s1600-h/image%25255B52%25255D.png"><img alt="image" border="0" src="http://lh5.ggpht.com/-XiLRVVgDkG8/Ul0_0CVnujI/AAAAAAAACDY/8HKvcxRuxOU/image_thumb%25255B28%25255D.png?imgmax=800" height="346" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="559" /></a></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"></span></span> </div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-family: Symbol;"><span style="font-size: 11pt;">·</span></span><span style="line-height: normal;"><span style="font-family: Times New Roman;"><span style="font-size: 7pt;"> </span></span></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: 11pt;">In Azure, we now have 2 service bus namespaces, with a consistent configuration</span></span></span></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span style="mso-fareast-language: nl; mso-no-proof: yes;"></span><span lang="EN-US" style="mso-ansi-language: en-us;"></span><br /></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh6.ggpht.com/-VgA35fNaUR4/Ul0_0v6-_wI/AAAAAAAACDg/YM8vSe94iYQ/s1600-h/image%25255B59%25255D.png"><img alt="image" border="0" src="http://lh4.ggpht.com/-aDH1cGHjasY/Ul0_1K_2-lI/AAAAAAAACDo/nk-FayMyVPE/image_thumb%25255B31%25255D.png?imgmax=800" height="126" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="555" /></a></div>
<div class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<a href="http://lh4.ggpht.com/-e70ttT5cP6U/Ul0_1s8oWfI/AAAAAAAACDw/tkyt60PgB6A/s1600-h/image%25255B62%25255D.png"><img alt="image" border="0" src="http://lh5.ggpht.com/-AYB5KEJUoM0/Ul0_2IPzPqI/AAAAAAAACD4/ZyBbqGFeXKs/image_thumb%25255B34%25255D.png?imgmax=800" height="133" style="background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="554" /></a></div>
<div align="left" class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
</div>
<div align="left" class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-size: 11pt;"><span style="font-family: Calibri;"><strong>Note</strong>: Yes, you can always use PowerShell. For my case, I wanted an approach I can easily explain to anyone capable of using a computer without installing anything. Additionally, you need to create these scripts yourself, as it is now, there are differences in On Premise Service Bus and Azure Service Bus, so that didn’t work for my scenario. Additionally, I only needed to retrieve the service bus namespace connectionstring and configure this in the Service Bus Explorer, and didn’t had to retrieve the publishsettings etc.</span></span></span></div>
<div style="background: white; line-height: normal; margin: 0cm 0cm 0pt;">
<span lang="EN" style="mso-ansi-language: en; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Segoe UI"; mso-hansi-theme-font: minor-latin;"><span style="font-family: Calibri;"><span style="font-size: 11pt;"><strong>Note 2</strong>: <b style="mso-bidi-font-weight: normal;"><u>Managing</u></b> and <b style="mso-bidi-font-weight: normal;"><u>Using</u></b> the Queues should be separated (IMHO). By using a tool like Service Bus Explorer to create a consistent environment using config files or by using powershell. If your code creates a queue when it’s now there, shouldn’t an alarm go off? Aren’t the queues durable, and always available, I </span></span></span><span lang="EN" style="mso-ansi-language: en; mso-ascii-theme-font: major-latin; mso-bidi-font-family: "Segoe UI"; mso-hansi-theme-font: major-latin;"><span style="font-family: Calibri Light;"><span style="font-size: 10.5pt;">assume yes and like to monitor for this particular situation, as it’s probably a showstopper.</span></span></span></div>
<div style="background: white; line-height: normal; margin: 0cm 0cm 0pt;">
<span lang="EN" style="mso-ansi-language: en; mso-ascii-theme-font: major-latin; mso-bidi-font-family: "Segoe UI"; mso-hansi-theme-font: major-latin;"><span style="font-family: Calibri Light;"></span></span> </div>
<div align="left" class="MsoNormal" style="line-height: 12pt; margin: 0cm 0cm 8pt;">
<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-size: 11pt;"><span style="font-family: Calibri;"><strong>Note3</strong>: You can also create a dedicated subscription for DEV/TEST/ACC for each service bus namespace (depending how much you like to manage). For production it would be best to always create a dedicated subscription.</span></span></span></div>
<br />
HTH,<br />
Sander</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-59058065719629449882013-10-08T11:04:00.001+02:002013-10-08T22:28:24.388+02:00Exposing an REST Endpoint (POST) which processes Xml<p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">For my project I needed to expose an Endpoint, which accepts an HTTP Post with Xml as input/output. As I like to start small I’ve tried to start with a small test project. In this project, I wanted to learn how to expose an endpoint, how to set everything up and what options are there. </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">This, because there are a lot of resources on all sort of specific issues, but the ones I faced were scattered in several blogposts. </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">So for my project I developed a WCF Service, which was created using a WCF Webrole so that I can also publish it in Azure.</font></font></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Create a new WCF Webrole</font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Create a new Cloud service</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh3.ggpht.com/-cHfXcx4NDIQ/UlPKXMVD9qI/AAAAAAAAB64/VKnOpsWVLbQ/s1600-h/clip_image002%25255B3%25255D.jpg"><img title="clip_image002" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image002" src="http://lh3.ggpht.com/-_BTPKVaAK7E/UlPKXSH-6fI/AAAAAAAAB68/QmXVO30fkt0/clip_image002_thumb.jpg?imgmax=800" width="184" height="61"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 8pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Create a new web role</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh5.ggpht.com/-8Y2EI61i_AU/UlPKXr-HGTI/AAAAAAAAB7E/agXpBESHkNw/s1600-h/clip_image004%25255B3%25255D.jpg"><img title="clip_image004" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image004" src="http://lh5.ggpht.com/-Ydx6e6omj9M/UlPKYX2graI/AAAAAAAAB7M/HWD4Q0CsE3s/clip_image004_thumb.jpg?imgmax=800" width="234" height="102"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 8pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Which should result in a similar structure</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh6.ggpht.com/-EtJW6tKX300/UlPKYrPYEEI/AAAAAAAAB7U/eRAvRfRk8E8/s1600-h/clip_image006%25255B3%25255D.jpg"><img title="clip_image006" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image006" src="http://lh4.ggpht.com/-MuO--NoE-cs/UlPKY2L5VXI/AAAAAAAAB7g/bl1HkBt0ZVU/clip_image006_thumb.jpg?imgmax=800" width="130" height="127"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Configure the endpoint to use WCF-WebHTTP and allow a help page</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">At this point, you have a WCF Service, which is not yet exposed a WCF-WebHTTP endpoint. We can do this by:</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 8pt 72pt; line-height: 12pt; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level2 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">simply changing the Web.Config</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh4.ggpht.com/-GragD7EyDG8/UlPKZY33s0I/AAAAAAAAB7o/-n7HfgQmllg/s1600-h/clip_image008%25255B3%25255D.jpg"><img title="clip_image008" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image008" src="http://lh4.ggpht.com/-e8xgb0z8Ltc/UlPKZ9dpidI/AAAAAAAAB7w/MHAkb3rdPLc/clip_image008_thumb.jpg?imgmax=800" width="331" height="66"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh5.ggpht.com/-K5rkNnAFZd4/UlPKackMmnI/AAAAAAAAB74/ufUS2fZLsGQ/s1600-h/clip_image010%25255B3%25255D.jpg"><img title="clip_image010" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image010" src="http://lh5.ggpht.com/-LYvbXmuMDnU/UlPKaubbupI/AAAAAAAAB8A/PrZablgj3-U/clip_image010_thumb.jpg?imgmax=800" width="146" height="52"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 11pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Add a method which accepts Xml and decorate it with the ‘WebInvoke’ attribute</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh3.ggpht.com/-FuZAgtGmtsc/UlPKbOVzIUI/AAAAAAAAB8E/a0MXtlj_p5A/s1600-h/clip_image012%25255B3%25255D.jpg"><img title="clip_image012" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image012" src="http://lh3.ggpht.com/-6LV5OpQFz18/UlPKbgn1kKI/AAAAAAAAB8M/z6Ja8pvzvpw/clip_image012_thumb.jpg?imgmax=800" width="385" height="39"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18.6pt; line-height: 12pt; text-indent: 35.4pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">View the help page</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">After deploying the webservice, we can navigate to the help page</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh5.ggpht.com/-iDgkEzfBLDw/UlPKb1C2ivI/AAAAAAAAB8U/BoWED9OK1eg/s1600-h/clip_image014%25255B3%25255D.jpg"><img title="clip_image014" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image014" src="http://lh5.ggpht.com/-cfCS2FpBh5Q/UlPKcW2gCkI/AAAAAAAAB8c/-O8JG9_eLUw/clip_image014_thumb.jpg?imgmax=800" width="356" height="127"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Now we can view specific methods, and for each method the parameters are shown</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">I want to look into each specific option…</font></font></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 18pt; line-height: 12pt; mso-add-space: auto"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">DataContract with CompositeType</font></font></span></b><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt; mso-add-space: auto"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">This allows specifying a custom type, this is serialized into Xml and can be used and tested using the WCF Test client and is quite straightforward</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh3.ggpht.com/-i9SVjmpMOiA/UlPKcpkhKiI/AAAAAAAAB8k/CeXSj7V2pl8/s1600-h/clip_image016%25255B3%25255D.jpg"><img title="clip_image016" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image016" src="http://lh4.ggpht.com/-umpUqefQ4P4/UlPKc1IJUWI/AAAAAAAAB8s/h2gucT-R1nw/clip_image016_thumb.jpg?imgmax=800" width="351" height="175"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">We can use Fiddler to test this. Set the following:<span style="mso-tab-count: 1"> </span></font><b style="mso-bidi-font-weight: normal"><font style="font-size: 11pt">Content-Type: text/xml</font></b></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh6.ggpht.com/-IOuiUYXieWA/UlPKdbUd5jI/AAAAAAAAB80/bNDzzaCdxZg/s1600-h/clip_image018%25255B3%25255D.jpg"><img title="clip_image018" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image018" src="http://lh4.ggpht.com/-42fUk_7fon0/UlPKdiUuJmI/AAAAAAAAB88/4Y1cXwMA21k/clip_image018_thumb.jpg?imgmax=800" width="225" height="173"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span style="color: ; mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh4.ggpht.com/-dPJv1TZHXhQ/UlPKdzPxr2I/AAAAAAAAB9E/YhTY8tNzpNU/s1600-h/clip_image020%25255B3%25255D.jpg"><img title="clip_image020" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image020" src="http://lh5.ggpht.com/-OQMJIvzAO9I/UlPKeeEk1JI/AAAAAAAAB9M/UJaJd-ltGYY/clip_image020_thumb.jpg?imgmax=800" width="260" height="54"></a></span><span lang="EN-US" style="color: ; mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span lang="EN-US" style="color: ; mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt" color="#ff0000">Primitive types</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Primitive types, can be processed using supported formats out of the box, which are JSON / XML. </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh5.ggpht.com/-tZB8J7yER3Q/UlPKelHbtLI/AAAAAAAAB9U/Tg8UTMo5qUQ/s1600-h/clip_image022%25255B3%25255D.jpg"><img title="clip_image022" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image022" src="http://lh3.ggpht.com/-VUG_yBUrbg8/UlPKfG73x4I/AAAAAAAAB9c/Co8UV6i9plQ/clip_image022_thumb.jpg?imgmax=800" width="403" height="209"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Format <b style="mso-bidi-font-weight: normal">JSON</b> supports sending plain data, we can do this using Fiddler, by setting Content-type: application/json</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh4.ggpht.com/-9R0rFfZpot8/UlPKfRjXNDI/AAAAAAAAB9k/6iY98WvD_e0/s1600-h/clip_image024%25255B3%25255D.jpg"><img title="clip_image024" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image024" src="http://lh3.ggpht.com/-z0xNNhldmrE/UlPKfquloLI/AAAAAAAAB9s/RR_kkiz2CnA/clip_image024_thumb.jpg?imgmax=800" width="233" height="193"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh6.ggpht.com/-4hYSwLQ4dMk/UlPKgOuae9I/AAAAAAAAB90/_SNwFczcl-c/s1600-h/clip_image026%25255B3%25255D.jpg"><img title="clip_image026" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image026" src="http://lh4.ggpht.com/-Lb54v-NxqAI/UlPKgUbz--I/AAAAAAAAB98/BTeqkv02LCk/clip_image026_thumb.jpg?imgmax=800" width="409" height="59"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">We see however, that the response is of the type XML format, so when using JSON, we need to explicitly set the response format.</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">We can also see that (although I’m not the single point of truth), the Format <b style="mso-bidi-font-weight: normal">XML</b> does not support sending plain data, format <b style="mso-bidi-font-weight: normal">Xml</b> uses a serializer, thus expects the input wrapped in an Xml string. </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">So a request must be submitted (according to the help page) as</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh3.ggpht.com/-IO6YJEy5oI8/UlPKgqcFj6I/AAAAAAAAB-E/irtfsvpc254/s1600-h/clip_image028%25255B4%25255D.jpg"><img title="clip_image028" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image028" src="http://lh5.ggpht.com/-IURqEl_UtMk/UlPKg-syroI/AAAAAAAAB-M/k7JTyfZqmqk/clip_image028_thumb%25255B1%25255D.jpg?imgmax=800" width="516" height="41"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">A test using the xml format, using Fiddler, can be done by setting Content-type: <span style="mso-spacerun: yes"> </span>text/xml. </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh5.ggpht.com/-I9aLRAUXyfA/UlPKhA3VJqI/AAAAAAAAB-U/BpwW8mv0k4s/s1600-h/clip_image030%25255B3%25255D.jpg"><img title="clip_image030" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image030" src="http://lh6.ggpht.com/-zEpsO9jWdyc/UlPKhvng6cI/AAAAAAAAB-c/geFRyjik17o/clip_image030_thumb.jpg?imgmax=800" width="334" height="239"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">There is one option you can apply on the ServiceContract level, and that is, setting the </font><b style="mso-bidi-font-weight: normal"><font style="font-size: 11pt">XmlSerializerFormat.</font></b></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh5.ggpht.com/-oGPL3heknCQ/UlPKh48uk8I/AAAAAAAAB-k/kiSukKfsawA/s1600-h/clip_image032%25255B3%25255D.jpg"><img title="clip_image032" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image032" src="http://lh5.ggpht.com/-jdkn9EgLWq0/UlPKiUtE1PI/AAAAAAAAB-s/ulAaU-FLzVk/clip_image032_thumb.jpg?imgmax=800" width="159" height="60"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">This makes life a little bit easier….</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh4.ggpht.com/-ieGc87bOzxc/UlPKitJGyhI/AAAAAAAAB-4/Hb2pQec5B4w/s1600-h/clip_image034%25255B3%25255D.jpg"><img title="clip_image034" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image034" src="http://lh4.ggpht.com/-XkJrS-y6txc/UlPKjHkEAyI/AAAAAAAAB-8/Zdb6lVf1F2c/clip_image034_thumb.jpg?imgmax=800" width="247" height="169"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">However, this does not work….and I gave up…..for a day. My conclusions so far were:</font></font></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Working with primitive types is not that simple </font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-ascii-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: wingdings"><span style="mso-char-type: symbol; mso-symbol-font-family: wingdings"><font face="Wingdings"><font style="font-size: 11pt">L</font></font></span></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Formats are limited (for my purpose) and I need to write a custom format</font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">If such a simple approach already leads to this type of issues, how will I ever manage to process Xml</font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="mso-ansi-language: en-us"></span><span lang="EN-US" style="color: ; mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt" color="#4f81bd"><strong>Xml Documents</strong></font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="color: ; mso-ansi-language: en-us"></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">The next day…i thought about my plan...All I wanted, was to start with the basics and build my way up, to send/receive Xml. I did this trying to start with primitive types and then use an XmlDocument etc. However, it didn’t worked as I wanted, so I thought…..let’s start from scratch, using XmlDocuments.</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh3.ggpht.com/-AuaqO7uC8Uo/UlPKjcjacAI/AAAAAAAAB_E/Cm4M2s47NZI/s1600-h/clip_image036%25255B3%25255D.jpg"><img title="clip_image036" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image036" src="http://lh5.ggpht.com/-jadVKTR7mCo/UlPKjvjbPXI/AAAAAAAAB_M/XJ2VToqOGrI/clip_image036_thumb.jpg?imgmax=800" width="360" height="74"></a></span></p><span lang="EN-US" style="mso-ansi-language: en-us"></span> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Using Fiddler to submit a request, using Content-Type: text/xml..</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh6.ggpht.com/-5lH7o0oGDUk/UlPKkNF6SXI/AAAAAAAAB_U/5UXaXirOVlI/s1600-h/clip_image038%25255B3%25255D.jpg"><img title="clip_image038" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image038" src="http://lh3.ggpht.com/-Tkm9tx19kXE/UlPKkfuG0fI/AAAAAAAAB_c/VEiTz-Mrplw/clip_image038_thumb.jpg?imgmax=800" width="151" height="165"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Response…bad request?</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh4.ggpht.com/-Xkom_kPe-ec/UlPKkx9BE6I/AAAAAAAAB_o/Kf4S5GLnwBs/s1600-h/clip_image040%25255B3%25255D.jpg"><img title="clip_image040" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image040" src="http://lh3.ggpht.com/-0E1c-wfgEf0/UlPKlMDXpSI/AAAAAAAAB_s/ybPwghCFFFk/clip_image040_thumb.jpg?imgmax=800" width="116" height="166"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">No….wrong code…you should always set the XmlSerializerFormat! (Unless using the Composite type!)</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh6.ggpht.com/-YybJ62K80UQ/UlPKlrg43LI/AAAAAAAAB_0/d9P4q4mDszc/s1600-h/clip_image042%25255B3%25255D.jpg"><img title="clip_image042" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image042" src="http://lh5.ggpht.com/-93PuBeB7f1o/UlPKlyfKJ-I/AAAAAAAAB_8/bo0101fAIs4/clip_image042_thumb.jpg?imgmax=800" width="199" height="69"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Victory!</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span style="mso-fareast-language: nl; mso-no-proof: yes"><a href="http://lh6.ggpht.com/-kEuTsVVvzuk/UlPKmKneO2I/AAAAAAAACAE/Buv9EaDiuk0/s1600-h/clip_image043%25255B3%25255D.png"><img title="clip_image043" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image043" src="http://lh3.ggpht.com/-SuZSaDIxQ5s/UlPKmaAO7SI/AAAAAAAACAQ/dt8BvWavwpY/clip_image043_thumb.png?imgmax=800" width="368" height="100"></a></span><span lang="EN-US" style="mso-ansi-language: en-us"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">So I learned 5 things:</font></font></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">The WebHTTP Help (</font></font></span><font face="Consolas"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white"><font color="#0000ff"><font style="font-size: 9.5pt"><</font></font></span><font style="font-size: 9.5pt"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white"><font color="#a31515">webHttp</font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white"><font color="#0000ff"> </font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white"><font color="#ff0000">helpEnabled</font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white"><font color="#0000ff">=</font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white">"</span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white"><font color="#0000ff">true</font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white">"</span></font><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; line-height: 10pt; mso-ansi-language: en-us; mso-highlight: white"><font style="font-size: 9.5pt" color="#0000ff"> /></font></span></font><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">) is incredibly useful </font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">WCF-WebHTTP works with primitive types using the XML format by default,this implies the XmlSerializer, when you don’t want this, you need to implement your custom format</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt 18pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><a href="http://msdn.microsoft.com/en-us/library/ee476510.aspx"><font face="Calibri"><font style="font-size: 11pt" color="#0563c1"><u>http://msdn.microsoft.com/en-us/library/ee476510.aspx</u></font></font></a></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt; text-indent: 18pt"><span lang="EN-US" style="mso-ansi-language: en-us"><a href="http://blogs.msdn.com/b/endpoint/archive/2010/02/01/returning-custom-formats-from-wcf-webhttp-services.aspx"><font face="Calibri"><font style="font-size: 11pt" color="#0563c1"><u>http://blogs.msdn.com/b/endpoint/archive/2010/02/01/returning-custom-formats-from-wcf-webhttp-services.aspx</u></font></font></a></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Processing Xml can be done by creating a custom CompositeType, or by using an XmlDocument</font></font></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">The Content-Type is something you need to set right</font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 8pt 36pt; line-height: 12pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 11pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">As always, Fiddler is a great tool </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">HTH,</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Sander</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 8pt; line-height: 12pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> </font></font></span></p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-20614355359468778462013-09-26T22:15:00.001+02:002013-09-26T22:34:42.884+02:00Setting up your Azure Subscriptions – learned the hard way<p>For a project i’ve been developing a Pilot using Azure VM’s. The VM was all nicely configured, IIS/network/TFS integration/all running smoothly. 2 weeks ago, i could see i would hit spending limit, within a couple of days. </p> <p>I created a support ticket, with questions about the spending limit, where i found out that removing it could only be done by the account owner (on holiday), resetting it was not possible, and that hitting your limit (what i did), would remove the Virtual machine, disable access to the subscription, so that you are effectively…toast…</p> <p>The good news…this won’t happen to you! Scott Guthrie announced a number of <a href="http://weblogs.asp.net/scottgu/archive/2013/09/26/windows-azure-new-virtual-machine-active-directory-multi-factor-auth-storage-web-site-and-billing-improvements.aspx">Windows Azure Improvements</a> today, which would have solved my scenario, and prevents this from happening again, so really nice updates, however in my case….with a disabled subscription….this does not help…</p> <p>….for me it meant i had to find a workaround…my plan was to create a new dedicated project subscription, and migrate my VM to that subscription….there was only 1 slight problem, for testing purposes i had created a <strong>Windows Active Directory</strong>.</p> <p><strong>“...An Azure Active Directory is created and shared among all your subscriptions where you are the Service Administrator of...”</strong></p> <p><strong>This imposes a challenge:</strong> </p><p>#1 When migrating data between subscriptions, the first requirement the <strong>support team</strong> issues is having the same <strong>service administrator </strong>for the source and target subscription </p><p>#2 When you create a brand new subscription, and use the same <strong>service administrator </strong>account the <strong>Active Directory </strong>is also in the new subscription </p><p>#3 When migrating data between subscriptions<strong>, the target subscription must be empty</strong> </p><p>#1+#2 != #3 </p><p>Lessons learned: </p><ul> <li>Use a dedicated project subscription</li> <li>Use a dedicated dev / poc subscription</li> <li>Think about the service administrator which is linked to your account, use different service administrators for your DEV / Project subscriptions</li> <li>Be aware that when you create an Active Directory, it cannot be removed without creating a support ticket</li> <li>A support ticket is not free, and can take some time to process</li> <li>Make sure that you have planned your Azure configuration in advance</li></ul> <p> </p> <p>HTH,</p> <p>Sander</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-46719912112064455792013-09-16T18:27:00.001+02:002013-09-16T18:27:08.714+02:00BizTalk Services Questions and answers<p>After attending the UKCSUG and BTUG I have some answered questions to some challenges I faced during my implementation with BizTalk Services. Hereby my findings;</p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><font color="#505050"><b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt">Challenges</font></span></b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt"> </font></span></font></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">I'm wondering how to cope with some of the following challenges in this scenario, and would like to know resource information available which addresses some of these challenges; </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><font color="#505050"><u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt">Validating / Signing of messages</font></span></u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt"> </font></span></font></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">A requirement is to validate the incoming message by inspecting an signature in the message body, and signing the outgoing message. I now that a </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">custom inspector would help, however, i have no idea where to store these certificates as these would be used inside the BizTalk Service. </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Q: Is this functionality possible within BizTalk Services?</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl; mso-themecolor: accent5; mso-themeshade: 191"><font style="font-size: 11.5pt" color="#2f5496">A: In the custom inspector this functionality can be added, this however means that the certificate must be stored somewhere. This cannot be stored within the BizTalk Service, however could be stored in a BLOB storage container.</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050"> </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Handling errors when connecting to an Endpoint using BizTalk Services. </font></span></u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Detect an error and if one occurs, execute a mapping to return a custom Error message to the client. </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Q: Is this possible by using an OnEnterInspector in the Enrich stage? (Overruling the response by setting custom headers or something which triggers an different mapping than the happy flow)?</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl; mso-themecolor: accent5; mso-themeshade: 191"><font style="font-size: 11.5pt" color="#2f5496">A: This could be done by ensuring that the correct MessageType is set on the response</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050"> </font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050"> </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><font color="#505050"><u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt">In case of a protocol error, i would like to be able to perform a retry</font></span></u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt"> </font></span></font></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Send a POST request Using the HTTP protocol, handle technical errors gracefully by doing a retry. This means that the response for an endpoint needs to be evaluated, </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Q: should this be implemented using custom bindings/behaviors for the endpoint, or will this be added as a feature in the future?</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl; mso-themecolor: accent5; mso-themeshade: 191"><font style="font-size: 11.5pt" color="#2f5496">A: This could be done by implementing a custom WCF Service, which could then promote a MessageType based on the response. This would require some extensive testing / debugging as this is not readily available. It is at this moment not in preview, the AS/2 – EDI uses a mechanism ‘error queue’ which runs outside the BizTalk Service</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><font color="#505050"><u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt">When communicating with the backend, what approach would be wise for managing certificates</font></span></u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt"> </font></span></font></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">My requirement is to place a call to an endpoint using TLS, this would mean i need to manage the certificate for the endpoint after the bridge. At this point, i'm only aware configuring a certificate to communicate with the bridge. </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Q: Would this be possible by custom WCF behaviors?</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl; mso-themecolor: accent5; mso-themeshade: 191"><font style="font-size: 11.5pt" color="#2f5496">A: This could be done by implementing a custom WCF Service, which could retrieves the certificate from a BLOB store</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><font color="#505050"><u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt">Custom components</font></span></u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt"> </font></span></font></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font color="#505050"><font style="font-size: 11.5pt">As a reference i have found this blog on using inspects, which helps with some of my questions (</font></font></span><font style="font-size: 11.5pt"><a href="http://blog.codit.eu/post/2013/06/03/wabs-part3.aspx"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font color="#1414b4">http://blog.codit.eu/post/2013/06/03/wabs-part3.aspx</font></span></a></font><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">) </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Note: At the moment I'm using BizTalk, however, i am working on a platform and would like to migrate to BizTalk Services as soon as possible. Any insight in the roadmap would help a lot.</font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl; mso-themecolor: accent5; mso-themeshade: 191"><font style="font-size: 11.5pt" color="#2f5496">A: Not known publicly </font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><font color="#505050"><u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt">Migration path</font></span></u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt"> </font></span></font></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">For now, we are evaluating BizTalk and would like to migrate to BizTalk Services at a later stage. For now, this would mean that we need to purchase a license and again purchase a subscription when we migrate. </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Q: Are there any intermediate licensing options where we can use BizTalk for a certain period with the migration to BizTalk services in mind (e.g. 1 year license model + subscription).</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl; mso-themecolor: accent5; mso-themeshade: 191"><font style="font-size: 11.5pt" color="#2f5496">A: It is possible to purchase the premium subscription, this comes with a license of 1 year. Other than that, the licenses cannot be mixed. </font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050"> </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><font color="#505050"><u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt">Pricing</font></span></u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt"> </font></span></font></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">At this moment the costs of BizTalk Services are discounted with 50%, that quite a lot and could make/brake a use case cost-wise, depending on when BizTalk Services is out of preview. </font></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Q: Is there any way to provide use BizTalk Services with a transaction based subscription, where we pay for the amount of transaction done through BizTalk Services?</font></span></i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"></span></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><i><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl; mso-themecolor: accent5; mso-themeshade: 191"><font style="font-size: 11.5pt" color="#2f5496">A: Not known publicly, however the prices are being evaluated.</font></span></i></p> <p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"><font style="font-size: 11.5pt" color="#505050">Additional information</font></span></u><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-language: nl"></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Top feature</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">AS2/EDI</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">AS2/EDI Bridge</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Generated Bridge</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Errors to dedicated queue</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Bridge == Custom Code</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">1 Live ID is linked to 1 Trading management portal</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Everything is executed in memory</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span style="font-family: ; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">MiniSAP (</font></font><font style="font-size: 11pt"><a href="http://www.sdn.sap.com/irj/scn/nw-downloads"><font color="#1414b4" face="Calibri">http://www.sdn.sap.com/irj/scn/nw-downloads</font></a></font><font face="Calibri"><font style="font-size: 11pt">)</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span style="font-family: ; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">Yossih Dahan (WABS reflections)</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span style="font-family: ; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">Challenges</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Separation of projects (maps / schemas)</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span style="font-family: ; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">Complex Schemas (imports)</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span style="font-family: ; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">Retrieve information / state using PowerShell</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span style="font-family: ; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">Mapping (no XSLT)</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Routing (first match) like WCF-Routing</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span style="font-family: ; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">Roadmap</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span style="font-family: ; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">Hopefully this year live</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span style="font-family: ; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><font face="Calibri"><font style="font-size: 11pt">From ServiceBus</font></font></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Settings in Code </font></font></span><font style="font-size: 11pt"><span style="font-family: ; mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-char-type: symbol; mso-symbol-font-family: wingdings"><span style="mso-char-type: symbol; mso-symbol-font-family: wingdings"><font face="Wingdings">è</font></span></span></font><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt"> Configurable (connection strings etc)</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Mapping (breaking change)</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 108pt; line-height: normal; text-indent: -18pt; mso-list: l0 level3 lfo1; tab-stops: list 108.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: wingdings; mso-bidi-font-family: wingdings; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Wingdings"><font style="font-size: 10pt">§</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Mapper does not use XSLT (feature support JSON/Object2Object)</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 108pt; line-height: normal; text-indent: -18pt; mso-list: l0 level3 lfo1; tab-stops: list 108.0pt"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: wingdings; mso-bidi-font-family: wingdings; mso-bidi-font-size: 11.0pt"><span style="mso-list: ignore"><font face="Wingdings"><font style="font-size: 10pt">§</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri"><font style="font-size: 11pt">Migration tool available</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Calibri"><font style="font-size: 11pt"> </font></font></p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-19631930806198504422013-09-09T12:53:00.000+02:002013-09-10T14:15:29.242+02:00UK Connected Systems User Group – BizTalk Services questions<p>This Wednesday I’m attending the <a href="https://www.eventbrite.com/event/7484286703">CSUG – The Hybrid Organisation</a> (sold out!). During my evaluation of several Integration products (BizTalk / BizTalk Services / Neuron ESB / MuleESB) I had some concerns/questions on BizTalk Services. <p>My goal is to get answers on the following scenario <ul> <li>a) I receive a HTTP Post with an Xml Body payload <li>b) This contains a signature which i need to validate <li>c) Transform the Xml body payload to another Xml message <li>d) Perform a HTTP Post with the new Xml message to an external HTTP url and sign the message <li>e) Route the response back, similar to the aforementioned steps, where an error needs to be mapped to a dedicated error response</li></ul> <p><strong>Challenges</strong> <p>I'm wondering how to cope with some of the following challenges in this scenario, and would like to know resource information available which addresses some of these challenges; <p><u>Validating / Signing of messages</u> <p>A requirement is to validate the incoming message by inspecting an signature in the message body, and signing the outgoing message. I now that a <p>custom inspector would help, however, i have no idea where to store these <strong>private</strong> certificates as these would be used inside the BizTalk Service (in the BizTalk Services portal I can only store public certificates). <blockquote> <p><em>Q: Is this functionality possible within BizTalk Services?</em></p></blockquote> <p><u>Handling errors when connecting to an Endpoint using BizTalk Services. </u> <p>Detect an error and if one occurs, execute a mapping to return a custom Error message to the client. <blockquote> <p><em>Q: Is this possible by using a OnEnterInspector in the Enrich stage? (overruling the response by setting custom headers or something which triggers an different mapping than the happy flow)?</em></p></blockquote> <p><u>In case of a protocol error, i would like to be able to perform a retry</u> <p>Send a POST request Using the HTTP protocol, handle technical errors gracefully by doing a retry. This means that the response for an endpoint needs to be evaluated, <blockquote> <p><em>Q: should this be implemented using custom bindings/behaviors for the endpoint, or will this be added as a feature in the future?</em></p></blockquote> <p><u>When communicating with the backend, what approach would be wise for managing certificates</u> <p>My requirement is to place a call to an endpoint using TLS, this would mean i need to manage the certificate for the endpoint after the bridge. At this point, i'm only aware configuring a certificate to communicate with the bridge. <blockquote> <p><em>Q: Would this be possible by custom WCF behaviors?</em></p></blockquote> <p><u>Custom components</u> <p>As a reference i have found this blog on using inspects, which helps with some of my questions (<a href="http://blog.codit.eu/post/2013/06/03/wabs-part3.aspx">http://blog.codit.eu/post/2013/06/03/wabs-part3.aspx</a>) <p>Note: At the moment I'm using BizTalk, however, i am working on a platform and would like to migrate to BizTalk Services as soon as possible. Any insight in the roadmap would help a lot. <p><u>Migration path</u> <p>For now, we are evaluating BizTalk and would like to migrate to BizTalk Services at a later stage. For now, this would mean that we need to purchase a license and again purchase a subscription when we migrate. <blockquote> <p><em>Q: Are there any intermediate licensing options where we can use BizTalk for a certain period with the migration to BizTalk services in mind (e.g. 1 year license model + subscription).</em></p></blockquote> <p><u>Pricing</u> <p>At this moment the costs of BizTalk Services are discounted with 50%, that quite a lot and could make/brake a use case cost-wise, depending on when BizTalk Services is out of preview. <blockquote> <p><em>Q: Is there any way to provide use BizTalk Services with a transaction based subscription, where we pay for the amount of transaction done through BizTalk Services?</em></p></blockquote> <p> <p> <p>Hopefully, more answers at the end of this week! <p> <p>Regards, <p>Sander</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-49712616619486917052013-09-08T11:39:00.000+02:002013-09-12T08:00:30.795+02:00BizTalk deployment framework – things to think about<div dir="ltr" style="text-align: left;" trbidi="on">
Update (12-09-2013): slides can be found here <a href="http://www.slideshare.net/SanderNefs/biz-talk-deployment-framework-stripped">http://www.slideshare.net/SanderNefs/biz-talk-deployment-framework-stripped</a><br />
<br />
As a consultant, my role is to give advice, work on projects and help out customers. As I don’t want to be the Single Point of Truth, my approach is to transfer my knowledge in workshops/sessions with the internal developers or people who I think should know about certain technologies. <br />
In the past i’ve used the <a href="http://biztalkdeployment.codeplex.com/">BizTalk Deployment Framework</a> (BTDF) quite often. I have experienced that getting to know the concepts and working with it, is a <strong>developers choice</strong>, however this choice <strong>impacts the way administrators need to work.</strong><br />
This post summarizes my experiences and contains some of the slides i used when having workshops on the BTDF, with some caveats, and thinks to think about. <br />
First of all, why? Why would i need a new framework, what is wrong with the way i do my deployments right now? <strong>Nothing</strong>, however, in certain cases, you might run into some limitations, in the slide below some pros and cons of applying the classic deployment vs using the BTDF.<br />
<a href="http://lh4.ggpht.com/-SIx-WJxd3Mw/UixHg4xMD4I/AAAAAAAAB2k/HKAAselLyRs/s1600-h/image%25255B11%25255D.png"><img alt="image" border="0" height="396" src="http://lh6.ggpht.com/-rkgTkPh9mSQ/UixHhuSTSEI/AAAAAAAAB2s/Q2hrN6tI0oE/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="526" /></a><br />
As we can see, the main advantages are having a consistent approach, automated deployments and a way to perform multi server deployments. However, keep in mind, to achieve this, we need to learn a complex framework, where you can make mistakes, which will not give you all the pros! <strong>So learning it, before applying it is crucial, and as always, it is not a golden hammer!</strong><br />
Below an overview of important features<br />
<a href="http://lh3.ggpht.com/-O7Q-nJu1c2c/UixHiP-iMkI/AAAAAAAAB2w/FiALRpoM_rw/s1600-h/image%25255B43%25255D.png"><img alt="image" border="0" height="396" src="http://lh5.ggpht.com/-axSVbbw1CDw/UixHivB-NPI/AAAAAAAAB28/7NlJY08zMMA/image_thumb%25255B16%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="527" /></a><br />
Note: The reason for deviating from a standard product and using the out-of-the-box features by choosing a tool, framework should be that it add features that are not possible in the standard product.<br />
My #1 requirement for a tool, framework, utility is the support provided. My experiences with the BTDF are just amazing. I’ve posted a feature suggestion to include some of the VS.Net menu items as startmenu items upon deployment, and a couple of days later it was in the new 5.1 release! (authors: <b><a href="http://www.tfabraham.com/">Thomas F. Abraham</a> / <b><a href="http://www.traceofthought.net/">Scott Colestock</a>)</b></b><br />
<strong>Considerations</strong><br />
Before applying it, after having in depth knowledge of the problems you can overcome by the framework. Ensure that the people involved in the project/integration platform are familiar with the BTDF, know about the advantages, agree on the usage, are willing to use it. The BTDF works different, so unless you are the dev/admin you need to agree that this is the framework for you!<br />
<a href="http://lh3.ggpht.com/-OdShTYRSSFs/UixHjNdmnvI/AAAAAAAAB3E/pKGdoz4rVso/s1600-h/image%25255B63%25255D.png"><img alt="image" border="0" height="396" src="http://lh3.ggpht.com/-VUzpnzpzoDA/UixHj2IPqCI/AAAAAAAAB3M/HETHTwUyEqs/image_thumb%25255B28%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="527" /></a><br />
<strong>Usage</strong><br />
In stead of deploying your solution and creating an MSI by exporting this application from the BizTalk Administration console. The BTDF will generate an MSI based on a .target file which contains steps such as packaging the bindings, settings, dll’s etc. The BTDF MSI in different as it packages the BTDF along with it. So when deploying on a machine, you are actually deploying using the BTDF in a different mode. <br />
So design time we are working from visual studio, we generate the MSI (or it is generated by the <a href="http://snefs.blogspot.nl/2011/09/setting-up-build-server-with-biztalk.html">BuildServer</a>) and deployment it ont he target machine.<br />
<a href="http://lh6.ggpht.com/-pnpgGj1PsRI/UixHkVUQgUI/AAAAAAAAB3U/prLyd2bl5QY/s1600-h/image%25255B64%25255D.png"><img alt="image" border="0" height="396" src="http://lh5.ggpht.com/-7TnfuhnY5K8/UixHlBcElII/AAAAAAAAB3c/Nicw1uqkC3M/image_thumb%25255B29%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="527" /></a><br />
<strong>Usage</strong><br />
Assuming we have a BizTalk project with artefacts, we can add a new BTDF project after following the steps mentioned below;<br />
<a href="http://lh4.ggpht.com/-cXnhS6-tDIk/UixHl2C0aFI/AAAAAAAAB3k/PFJ98zL6q0k/s1600-h/image%25255B66%25255D.png"><img alt="image" border="0" height="394" src="http://lh4.ggpht.com/-abYrMDi6reE/UixHmYEGK5I/AAAAAAAAB3s/xZ08ZCh_Qjo/image_thumb%25255B31%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /></a><br />
Right….nothing is shown? Correct, the BTDF project is not a known type in VS.Net. We need to manually add the artefacts used. <br />
<a href="http://lh4.ggpht.com/-XUhEi8z-8pc/UixHm0z4xKI/AAAAAAAAB30/a3yVIXq6OtA/s1600-h/image%25255B67%25255D.png"><img alt="image" border="0" height="394" src="http://lh6.ggpht.com/-EakVeV8_1HY/UixHnut7qMI/AAAAAAAAB38/2xCG7xOjBss/image_thumb%25255B32%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /></a><br />
There are 3 concepts extremely important, on which we need to focus, but which is something you should learn before making any decisions in your project.<br />
<ul>
<li>SettingsFile generator</li>
</ul>
<blockquote>
This is the ‘master’ configuration file, this contains all the settings used, possibly for your different environment. So when following an DTAP strategy, this possible contains all the settings for each environment.<br />
<u>Caveat:</u> this means your environments must be static, known in advance, and should not change often, as this file needs to be administrated and is per solution/application!</blockquote>
<ul>
<li>Masterbindings</li>
</ul>
<blockquote>
You can implement the BTDF in various ways, one is to have a Masterbinding (binding with macros), which is used to generate environment spefiic bindings;<br />
Masterbinding (macros ABC) + settingsfile with environment values ABC = binding with replaced values for ABC.<br />
In this post, i am not going to use Masterbindings, but alternative bindings, similar to ‘classic bindings with BizTalk’.</blockquote>
<ul>
<li>MSBuild</li>
</ul>
<blockquote>
MSBuild is a xml configuration based framework used by the BTDF. The project file created, is basically a configuration file for MSBuild tasks.</blockquote>
<a href="http://lh5.ggpht.com/-8hXSCKPJi7c/UixHnxbZWQI/AAAAAAAAB4E/4etGpoom710/s1600-h/image%25255B69%25255D.png"><img alt="image" border="0" height="394" src="http://lh6.ggpht.com/--OOkPP7qbh0/UixHov83nPI/AAAAAAAAB4M/Fi-tFHnFY54/image_thumb%25255B34%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /></a><br />
The Deployment.btdfproj works with <strong>Propertygroups</strong><br />
<a href="http://lh3.ggpht.com/-5ZwN9E0wIsE/UixHpMd6_5I/AAAAAAAAB4U/UFquNTlM8cs/s1600-h/image%25255B73%25255D.png"><img alt="image" border="0" height="397" src="http://lh6.ggpht.com/-QZKb-igZ5vo/UixHp8Te1tI/AAAAAAAAB4c/651cARajgjg/image_thumb%25255B36%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="528" /></a><br />
You can override, configure custom properties, in the example below i am overwriting the output path so that all my build files are generated on a specified locations.<br />
The ItemGroup contains the Artefact specific configuration<br />
<a href="http://lh6.ggpht.com/-GJ-1VDaAQUs/UixHqc9Ik-I/AAAAAAAAB4k/zdICWQvuwO8/s1600-h/image%25255B84%25255D.png"><img alt="image" border="0" height="392" src="http://lh3.ggpht.com/-ffWqq5HTg8M/UixHrK-uKMI/AAAAAAAAB4s/_pONSdpXEWg/image_thumb%25255B41%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="522" /></a><br />
<strong>Dedicated bindings</strong><br />
So as stated, i’m not using Masterbindings, as i don’t like to use macros etc within my team. I would like them to export a binding file, and add it to the project. We have this flexibility too! Follow the steps mentioned below;<br />
<a href="http://lh6.ggpht.com/-92EfvEAUzQM/UixHrmIHLII/AAAAAAAAB40/RhslZfDWJ7g/s1600-h/image%25255B88%25255D.png"><img alt="image" border="0" height="394" src="http://lh5.ggpht.com/-NQkCnfv_teM/UixHsZDjjPI/AAAAAAAAB48/wjwHH-CFgAk/image_thumb%25255B43%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /></a><br />
<a href="http://lh4.ggpht.com/-FYZWPe6hy4E/UixHs6SEPzI/AAAAAAAAB5E/iwgSUm9m1Os/s1600-h/image%25255B95%25255D.png"><img alt="image" border="0" height="394" src="http://lh4.ggpht.com/-CZhm-rb6d3s/UixHtQUmnxI/AAAAAAAAB5M/7GOdsdIv1A0/image_thumb%25255B46%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /></a><br />
<a href="http://lh5.ggpht.com/-jCsbfRFuQpA/UixHt1LBIYI/AAAAAAAAB5U/8qzk9t-NghI/s1600-h/image%25255B96%25255D.png"><img alt="image" border="0" height="395" src="http://lh6.ggpht.com/-rBRN6Hu2GCc/UixHueBsVOI/AAAAAAAAB5c/s7xhKMgsvJs/image_thumb%25255B47%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="525" /></a><br />
<strong>2 Step redeployment</strong><br />
The last thing to mention, is one of the features that can explain why an automated framework is good. Let’s consider an application, which contains a ‘Common’ application.<br />
<a href="http://lh6.ggpht.com/-lNW-LzeaU2E/UixHvPptn6I/AAAAAAAAB5k/piMbaequD78/s1600-h/image%25255B100%25255D.png"><img alt="image" border="0" height="396" src="http://lh3.ggpht.com/--OyePYuHR2c/UixHvjxUWmI/AAAAAAAAB5s/TbL5P26fJ54/image_thumb%25255B49%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="526" /></a><br />
Our deployment options are limited with the ‘classic’ approach<br />
<a href="http://lh6.ggpht.com/-XOZX-7xyiM4/UixHwEBxnOI/AAAAAAAAB50/FK8eRwpv_vw/s1600-h/image%25255B108%25255D.png"><img alt="image" border="0" height="396" src="http://lh5.ggpht.com/-bp8bdJQKKEA/UixHw4XddkI/AAAAAAAAB58/CK0BZA5zfhs/image_thumb%25255B53%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="526" /></a><br />
How does the BTDF solution helps us? We have 2 steps<br />
1) Undeploy <br />
Removes the application from BizTalk<br />
2) Uninstall<br />
Removes the artefacts from the machine + configuration.<br />
In our case…..we <strong>only </strong>need to really do step #2 for the Common. Replace it and deploy, we do not need to Uninstall everything (which already worked). So now we can, we can Undeploy all the applications from BizTalk, and leave the dll’s components, configuration on the system.<br />
For the common we need to<br />
<strong>Step #1: Undeploy all applications</strong><br />
<blockquote>
<strong>Step #2: Uninstall the application Common</strong><br />
Step #3: Deploy the application Common</blockquote>
Step #4: Redeploy all other applications<br />
The advantage of the BTDF is that we can script this, so we can actually perform a much more complex deployment and do it in a consistent way, as described in the slide below<br />
<a href="http://lh3.ggpht.com/-gNAkSvn-rxM/UixHxQY9OKI/AAAAAAAAB6E/IzhNZ6sMIGs/s1600-h/image%25255B114%25255D.png"><img alt="image" border="0" height="394" src="http://lh4.ggpht.com/-s3BrmypkfgM/UixHyGpbvrI/AAAAAAAAB6M/UmaEWL2C8YA/image_thumb%25255B57%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /></a><br />
<strong>Start learning the BTDF</strong><br />
So, how to start learning the BTDF? Follow the lab ‘Helloworld’ with the steps mentioned below;<br />
<a href="http://lh3.ggpht.com/-UbG6WCD59Ww/UixHyv1QvsI/AAAAAAAAB6U/f9zQY4Yk7dc/s1600-h/image%25255B118%25255D.png"><img alt="image" border="0" height="394" src="http://lh3.ggpht.com/-eGNqgvLGFNk/UixHzMiSOXI/AAAAAAAAB6c/zkGJVSlINhs/image_thumb%25255B59%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /></a><br />
<strong></strong><br />
Note: I cannot provide the original slides, hopefully these prints suffice..<br />
<br />
HTH,<br />
<strong>Sander</strong></div>
Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-32172410.post-26563525224933404042013-08-27T21:40:00.001+02:002013-08-27T23:22:08.005+02:00Windows Azure Virtual Machine Single instance scheduled maintenance<p> </p><p>Dear Customer, </p><p>Upcoming maintenance will affect single instance deployments of Windows Azure Virtual Machine….”impact single instance deployments of Virtual Machines that are <u>not</u> using availability sets…” </p><p><strong>When do i have problems? in the </strong><a href="http://social.msdn.microsoft.com/Forums/windowsazure/en-US/d271283b-614b-4e0c-a037-60cc4b775632/maintenance-of-single-instance-virtual-machines-weekend"><strong>weekend</strong></a><strong>? Nope…during the week!</strong><strong><a href="http://lh3.ggpht.com/-0Vh7TKydbKo/Uhz7xG4Sb2I/AAAAAAAABxE/Wk-H1TN8JJw/s1600-h/image%25255B21%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-sSBlGnwkf08/Uhz7yfnaI1I/AAAAAAAABxM/BOkZXaClkao/image_thumb%25255B10%25255D.png?imgmax=800" width="511" height="628"></a></strong></p> <p><strong>What is my problem, roles, temporary storage, reboots?</strong></p> <ul> <li>Temporary storage?</li></ul> <blockquote> <p><a title="http://social.msdn.microsoft.com/Forums/windowsazure/en-US/d0665a80-89fe-4ea9-b136-7ba1fb5d37fe/maintenance-singleinstance-reboot-temporary-disk-d" href="http://social.msdn.microsoft.com/Forums/windowsazure/en-US/d0665a80-89fe-4ea9-b136-7ba1fb5d37fe/maintenance-singleinstance-reboot-temporary-disk-d">http://social.msdn.microsoft.com/Forums/windowsazure/en-US/d0665a80-89fe-4ea9-b136-7ba1fb5d37fe/maintenance-singleinstance-reboot-temporary-disk-d</a></p></blockquote> <blockquote> <p>Unclear!</p></blockquote> <ul> <li>Roles</li></ul> <blockquote> <p>“Please note that Cloud Services using Web or Worker roles aren’t impacted by this maintenance operation. “</p> <p>No!</p></blockquote> <ul> <li>Reboots</li></ul> <blockquote> <p>“Single instance virtual machine deployments that are <u>not</u> in <a href="http://click.email.microsoftemail.com/?qs=664f7e06482640062f7844512d92d3e2d4ed0797e251ad2341d6b762e2266140849748a10ddd9400">availability sets</a> will reboot once during this maintenance operation. “</p></blockquote> <p> </p><p><strong>So….i need an availability set!</strong> </p><ul> <li>Aiai…do i have one? Go to your virtual machine, ‘Configure’ and determine if any availability sets are mentioned<a href="http://lh3.ggpht.com/-bUZuKWjPRiU/Uhz7y3RThAI/AAAAAAAAB0M/0BUVUWiiBCE/s1600-h/image%25255B76%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-18SjyJCbigg/Uhz79IJeLiI/AAAAAAAAB0U/c2sHFWkoI9s/image_thumb%25255B37%25255D.png?imgmax=800" width="477" height="270"></a> <p> </p> </li><li>If this is not the case, we need to create an availability set, this is very easy, select ‘Create an Availability set’ and type in a name' (note: the machine must be running!)</li></ul> <blockquote> <p><a href="http://lh4.ggpht.com/-OsJv7l_ikL4/Uhz79Qb-8yI/AAAAAAAAB0Y/4gc43x8Ax7A/s1600-h/image%25255B77%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-bstyUuiYT9s/Uhz7-DXBejI/AAAAAAAAB0k/P2ETjyTUEMs/image_thumb%25255B38%25255D.png?imgmax=800" width="471" height="237"></a></p></blockquote> <ul> <li>Click Save and confirm</li></ul> <blockquote> <p><a href="http://lh4.ggpht.com/-XBcGH_o8KnI/Uhz7-h0BkPI/AAAAAAAABxw/bWqmzlSNr7I/s1600-h/image%25255B27%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-b-Xd9UVRV_s/Uhz8Ar9rGVI/AAAAAAAABx8/8_pLLDbpzQo/image_thumb%25255B12%25255D.png?imgmax=800" width="118" height="90"></a></p></blockquote> <p> </p> <ul> <li>Watch the magic happen</li></ul> <p><a href="http://lh5.ggpht.com/-MgzgDP8SoIg/Uhz8BM8kz9I/AAAAAAAAB0s/uN3WjAyCRkI/s1600-h/image%25255B80%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-SczqnJ10NXA/Uhz8Bsv55aI/AAAAAAAAB00/z-ItjtF9LPQ/image_thumb%25255B41%25255D.png?imgmax=800" width="519" height="96"></a><a href="http://lh3.ggpht.com/-gAy7AdLjJLw/Uhz8CNoGpyI/AAAAAAAAB08/c0kbOJMfNfw/s1600-h/image%25255B79%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-qXjRshA8_gQ/Uhz8Ch5HesI/AAAAAAAAB1E/z-7WX0nmppU/image_thumb%25255B40%25255D.png?imgmax=800" width="521" height="51"></a></p> <ul> <li>Verifying the machine state</li></ul> <p><a href="http://lh6.ggpht.com/-2sjPbfLKBFQ/Uhz8C62yvUI/AAAAAAAAB1M/T1pjm3TaZ_o/s1600-h/image%25255B81%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-GNaG2IHS_oQ/Uh0Ap1h1GUI/AAAAAAAAB1U/ESLM51ewqxg/image_thumb%25255B42%25255D.png?imgmax=800" width="254" height="154"></a></p> <p><strong>So…..what is happening, what is going to happen when i create a availability set?</strong></p> <ul> <li>The state of the machine will be persisted to disk </li><li>A copy of this disk will be stored in your Blog Storage container </li><li>Another Machine will be instantiated (with the name of your Availability set) </li><li>This machine will be running and will be used as the ‘switchover’ machine when Faults are detected/Updates are performed</li></ul> <p><a href="http://lh5.ggpht.com/-K6yMV3asNW0/Uh0AqexOAQI/AAAAAAAAB1c/eUIuLWbyiMA/s1600-h/image%25255B88%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-tmJSZp5x8Yk/Uh0ArAsppyI/AAAAAAAAB1k/aiaY00j0AxU/image_thumb%25255B49%25255D.png?imgmax=800" width="260" height="192"></a></p> <p> </p> <p><strong>So….we are basically achieving high availability!</strong> I want to know more….</p> <ul> <li>Some slides (see this page below for reference), with some additional explanational, graphical view on the inner workings</li></ul> <p><a href="http://lh5.ggpht.com/-RjNakwF9QCE/Uh0Arvlxr7I/AAAAAAAAB1s/aN6BJ6V2yG8/s1600-h/image%25255B83%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-z7Vls6oYjJc/Uh0AsWIuyiI/AAAAAAAAB10/iVt8K7UkaF8/image_thumb%25255B44%25255D.png?imgmax=800" width="464" height="263"></a></p> <ul> <li>How does this relate to the Azure Data center?</li></ul> <p><a href="http://lh5.ggpht.com/-hFWGCU9ylAY/Uh0AtoYZQ9I/AAAAAAAAB18/0Z4dyr9FA2I/s1600-h/image%25255B85%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-OflU-oxlK0c/Uh0AuTZdxWI/AAAAAAAAB2E/6q6i-ezIgdg/image_thumb%25255B46%25255D.png?imgmax=800" width="461" height="261"></a></p> <ul> <li>What components are in place, to detect these faults, ensures that everything works? Say hallo to <u>"Fabric Controller”</u></li></ul> <blockquote> <p>The concept of fabric in Microsoft’s implementation in production exhibits itself in the so-called Fabric Controller or FC which is an internal subsystem of <a href="http://www.microsoft.com/windowsazure/">Windows Azure</a>. FC, also a distribution point in cloud, inventories and stores images in repository, and: </p><ul> <li>Manages all Compute and Storage resources </li><li>Deploys and activates services </li><li>Monitors the health of each deployed service </li><li>Provisions the necessary resources for a failed service and re-deploys the service from bare metal, as needed </li></ul> <p><a href="http://blogs.technet.com/b/yungchou/archive/2010/12/30/cloud-computing-for-it-pros-4-6-fabric.aspx#sthash.Fso3OJ7d.dpuf">http://blogs.technet.com/b/yungchou/archive/2010/12/30/cloud-computing-for-it-pros-4-6-fabric.aspx#sthash.Fso3OJ7d.dpuf</a></p></blockquote> <p><a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-43-metablogapi/5305.image_5F00_6.png"><img title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-62-43-metablogapi/3821.image_5F00_thumb.png" width="445" height="258"></a></p> <p>It’s amazing what happens underneath when you click through the portal, or when you are deploying a service into the cloud!</p> <p><a href="http://lh5.ggpht.com/-FisIaDk-Z70/Uh0AvoudETI/AAAAAAAAB2M/av6axhn_Mxc/s1600-h/image%25255B87%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-AXsk8_OCIQM/Uh0AwanekUI/AAAAAAAAB2U/ZbRQ1Ql7Wfo/image_thumb%25255B48%25255D.png?imgmax=800" width="427" height="313"></a></p> <ul> <li>See more detailed deep dive material on the inner workings here;</li></ul> <blockquote> <p><a title="http://blogs.technet.com/b/yungchou/archive/2010/12/30/cloud-computing-for-it-pros-4-6-fabric.aspx" href="http://blogs.technet.com/b/yungchou/archive/2010/12/30/cloud-computing-for-it-pros-4-6-fabric.aspx">http://blogs.technet.com/b/yungchou/archive/2010/12/30/cloud-computing-for-it-pros-4-6-fabric.aspx</a></p></blockquote> <blockquote> <p><a title="http://fr.slideshare.net/ylew15/a-deep-look-inside-windows-azure-and-its-vm" href="http://fr.slideshare.net/ylew15/a-deep-look-inside-windows-azure-and-its-vm">http://fr.slideshare.net/ylew15/a-deep-look-inside-windows-azure-and-its-vm</a></p></blockquote> <blockquote> <p><a title="http://video.ch9.ms/teched/2012/na/AZR313.pptx" href="http://video.ch9.ms/teched/2012/na/AZR313.pptx">http://video.ch9.ms/teched/2012/na/AZR313.pptx</a></p></blockquote> <p> </p> <p>For now….i’m safe and happy with my availability set, and learned a lot doing it as well <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Glimlach" src="http://lh5.ggpht.com/-wrRE_Wy2Q2I/Uh0Aw17s8aI/AAAAAAAABz8/uVDGf8fEcP4/wlEmoticon-smile%25255B2%25255D.png?imgmax=800">.</p> <p> </p> <p>HTH,</p> <p>Sander</p> Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-32172410.post-85321008661611523452013-08-23T17:00:00.000+02:002013-08-23T17:00:07.937+02:00ESB Series – Final thoughts<p> </p> <p>This is the last post in the <a href="http://snefs.blogspot.nl/search?q=ESB+Series&max-results=20&by-date=true">ESB Series</a> which i’ve been doing;</p> <p>Hopefully this has showed some ways of using the ESB Toolkit, and ways of extending it so that it is more suited for various scenarios.</p> <p>This post will close the gaps i left open in earlier posts. In the end, i have hopefully demonstrated some common scenarios which are possible with the ESB Toolkit. My final thought on this subject is that the ESB toolkit is targeted to work in a more abstract/generic way, which is a good thing. After using the ESB Toolkit I think it is a nice addition to BizTalk, but I only recommend to use it when the problem demands for this type of a solution. There is a learning curve involved, it works differently as classic BizTalk, and means that you have to define your solution differently, sometimes it even makes the components more complex. In the end, it will bring flexibility, maintainability and allows re-use, however this requires an investment. </p> <p>The ESB Toolkit is not a golden hammer, don’t use it per definition, think about the problem, think of the possible solutions, think of the process, possible changes and decide which approach would be the best.</p> <p><strong>ESB Toolkit Itinerary scenarios</strong></p> <p>In the first post ‘<a href="http://snefs.blogspot.nl/2013/07/esb-toolkit-series-part-i-itinerary.html">Itinerary</a>’ i’ve showed the difference between a Receive-Send port and the same set up using an Itinerary. Below, you can see the different scenarios possible, and the comparison with a BizTalk set up.</p> <ul> <li>Pub / sub (Port 2 Port)</li></ul> <p><a href="http://lh4.ggpht.com/-_yL6NMdarCo/UhT2OQ3Oa6I/AAAAAAAABvo/p4yT-vQ5pzs/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-rdueqDs0kI4/UhT2O94ScSI/AAAAAAAABvw/4BxmJDp1ZBU/image_thumb%25255B1%25255D.png?imgmax=800" width="639" height="105"></a></p> <p>This Itinerary basically, receives a messages from the Receive Pipeline, performs Tracing, Routing and send a message to a Send port. The subscription is management by BizTalk, however, the Send port is configured Dynamically.</p> <p>Advantage: No Orchestration required, no Pipeline component required, just a BRE call with the Routing information.</p> <p> </p> <ul> <li>Pub / Sub (Port 2 Orchestration)</li></ul> <p><a href="http://lh5.ggpht.com/-t-VLdNoBL5k/UhT2PiPecoI/AAAAAAAABv4/381BQxhjzsQ/s1600-h/image%25255B16%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-ZEr49-6DGXo/UhT2QU3xiSI/AAAAAAAABwA/ILaEf5s4ENI/image_thumb%25255B6%25255D.png?imgmax=800" width="496" height="119"></a></p> <p>Let’s say we have a backend System which needs to be called. By managing this in the Itinerary, we don’t have to manage the subscription based on the MessageType of the Orchestrations Receive port. This means we don’t have the MessageType Dependency and could work with Xml.</p> <p>Advantage: Process is more flexible, the Orchestration is not depending on a Schema…thus deployment is easier.</p> <p>Advantage: We can change our process by adding another Orchestration Itinerary Service, this allows us to manage our process dynamically. The orchestration has become an abstract ESB Service component which we call. So instead of defining our process in the Orchestration, we isolate the functionality and link them using the Itinerary. If the process flow changes, we don’t need to redeploy our processed, only our Itinerary, which is an Xml file without any dependencies.</p> <ul> <li>Pub / sub (Orchestration to MessageBox)</li></ul> <p><a href="http://lh3.ggpht.com/-fnIG4AmMdbg/UhT2Q-RL1BI/AAAAAAAABwI/FSAgYik8xYc/s1600-h/image%25255B18%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-Bgv8t0Uau8Y/UhT2Ruwb9dI/AAAAAAAABwQ/F7J6QquLD4U/image_thumb%25255B8%25255D.png?imgmax=800" width="502" height="72"></a></p> <p>By starting the process from an Orchestration, we can dynamically chain processes together, start Itineraries based on preconditions.</p> <p>Advantage: This allows for more flexibility as we can control the process flow, for example based on backend result. In case of a backend result, we can determine that we need to start a human workflow (ItineraryA), or are able to automate the process (ItineraryB).</p> <ul> <li>Repair and Resubmit from the ESB Management Portal Sample</li></ul> <p><a href="http://lh5.ggpht.com/-L933pLrU96g/UhT2SMTQKUI/AAAAAAAABwY/o0sQgm613qA/s1600-h/image%25255B23%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-a8K9jCBhZEE/UhT2SpJ6svI/AAAAAAAABwg/HpHHjLGSfso/image_thumb%25255B11%25255D.png?imgmax=800" width="382" height="190"></a></p> <p>This shows an example of the default Error handling capabilities, which can already be included in your custom portal</p> <ul> <li>Resubmit from ItineraryStep X</li></ul> <p><a href="http://lh5.ggpht.com/-L6m_g6MWasw/UhT2TRRbNiI/AAAAAAAABwk/yoG0KnfIFvo/s1600-h/image%25255B19%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-BKTfbH19CgI/UhT2Tqr3miI/AAAAAAAABww/Mi6iEOQZM-8/image_thumb%25255B9%25255D.png?imgmax=800" width="506" height="79"></a></p> <p>This shows how to extend the (your)Portal so that restarting processes can be even more sophisticated.</p> <p><strong>ESB Toolkit - top reasons for using it</strong></p> <p>I’ve tried to discuss with Tomasso Groenendijk, on what the most important features are provided by the ESB Toolkit, and discuss scenarios for which BizTalk is limited and the ESB Toolkit adds functionality. This is a quick list, and partly explained by the aforementioned examples and also some use cases mentioned below the list;</p> <ul> <li>Components are developed to be made generic, as opposed to just for 1 process</li> <li>Pipelines are developed to be made generic, as opposed to just for 1 process</li> <li>ESB Toolkit allows for a higher performance in low latency because it is easier to use pipeline components</li> <li>BAM support is out of the box (although limited) </li> <li>Generic Error handling</li> <li>Runtime flexibility by using business rules (which can be changed without impact on the BizTalk deployement)</li> <li>Deployment, Orchestrations are untyped (not dependending on maps/schemas), schemas and maps can be redeployed without affecting the orchestration</li></ul> <p><u>Example: Flexibility</u><br>[Add generic <functionality> in each process]<br>BizTalk only: create a pipeline component, add this in all pipelines in all ports (redeploy interfaces)<br>+ESB Toolkit: add a generic ItineraryService / update Itineraries (no redeploy of interfaces required)</p> <p><u>Example: [A new version of the map is available]<br></u>BizTalk only: redeploy the interfaces (due to dependencies)<br>+ESB Toolkit: only update the map + itinerary (no redeploy of interfaces)</p> <p><u>Example: [Determine the process flow at runtime<br></u>BizTalk only: Orchestrations are fixed an not flexible<br>+ESB Toolkit: Itinerary can be started based on message properties, rules, and can contain dynamic mappings</p> <p><u>Example: [Restart a process]<br></u>BizTalk only: Not possible, messages must be stored somewhere, custom plumbing is required to resubmit messages<br>+ESB Toolkit: Message goes to the ESB Db, message can be resubmitted (even at the point of failure)<br></p> <p><strong>Considerations</strong></p> <p>Before using the toolkit, I would like to summarize with the following considerations;</p> <p>1) The toolkit can be quite complex, there is a learning curve involved<br>2) There are some features not available out of the box, for this custom plumbing needs to be done</p> <p>3) ESB Portal<br>Exception handling is sophisticated, however the ESB Portal is a Sample, therefore, the Toolkit is<br>most useful when you integrate the error handling within your own Dashboard.</p> <p>The portal is a sample application and is out of the box not production ready, and requires customizations. <p>Some common changes required: <ul> <li>Cleanup db jobs (e.g. archiving)</li> <li>Extending the stored procedures so that additional context / fault information can be stored</li> <li>Change the Failed messages model, so that there is a notion of State (Exception can be ignored, etc) </li> <li>UI modifications to make the portal more flexible, do not use webservices for performance with large data sets, add features such as bulk resubmit or ignore</li></ul> <p><strong>Known challenges</strong></p> <p>Lastly, some challenges, already identified and solved, and a list of great resources;</p> <ul> <li><a href="http://ithero.nl/search.aspx?q=esb">Identified and solved by Tomasso Groenendijk</a></li> <li><a href="http://ithero.nl/search.aspx?q=esb">ESB Series posts</a></li> <li><a href="http://social.technet.microsoft.com/wiki/contents/articles/7756.biztalk-server-esb-survival-guide.aspx">ESB Survival guide</a></li> <li><a href="http://msdn.microsoft.com/en-us/library/ee250250%28v=BTS.10%29.aspx">BRI Resolver (useMsg=true;recognizeMessageFormat=true)</a></li> <li><a href="http://snefs.blogspot.nl/2011/05/biztalk-esb-dynamic-port-3-filter.html">Send Port Filter</a></li> <li><a href="http://social.msdn.microsoft.com/Forums/en-US/7d3a5d7a-48a6-443f-acd2-c6c6e3ae40e3/esb-config-file-entry-for-orchestration-deployment">Design-time vs Run-time configuration</a></li> <li><a href="http://snefs.blogspot.nl/2013/05/esb-toolkit-development-getting-started.html">ESB Getting started</a></li></ul> <p> <p>Tomasso Groenendijk will present a combination of these posts and topics related to this on the next <a href="http://btugnl20130912-eorg.eventbrite.nl/">BTUG on the 12th of September</a>.</p> <p>I suspect, that he will also demonstrate fascinating features, and his tools to test and use maps!</p> <p> </p> <p>Kind regards,</p> <p>Sander</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-30623024851096485462013-08-21T16:00:00.000+02:002013-08-21T16:00:00.823+02:00BizTalk 2013, replace HTTP adapter by WCF-WebHttp REST<p> </p> <p>The WCF-WebHTTP is designed to support <a href="http://social.technet.microsoft.com/wiki/contents/articles/17359.biztalk-server-2013-rest-support-through-wcf-webhttp.aspx">REST</a>, with support for the verbs GET, POST, PUT, and DELETE. We can use the POST verb to replace the HTTP adapter functionality, and use WCF custom behaviors to tailor the adapter to our needs.</p> <p>This post explains how I migrated the HTTP adapter and why I decided to look at this approach. This should give a summary of how to do this. <p><strong>Problem with the HTTP Adapter</strong> <p>1) <u>Error handling</u> <p>The BizTalk HTTP adapter hides away the logic of HTTP status codes, thus an error is handled in the adapter. Returning a custom error in a request response call, which calls a solicit-response HTTP port is therefore quite challenging, and at this moment I have not found a way to do this, except abandoning the Messaging only approach. <p><a href="http://lh6.ggpht.com/-X7THIdzun5s/UhHsA1QlvbI/AAAAAAAABs4/Kp_nUO7oCVk/s1600-h/clip_image0013.png"><img title="clip_image001" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image001" src="http://lh4.ggpht.com/-cmoUNs7YPNk/UhHsBHLamII/AAAAAAAABs8/RG7ULi5LCH0/clip_image001_thumb.png?imgmax=800" width="244" height="110"></a> <p>2) <u>Flexibility</u> <p>The HTTP adapter is somewhat limited in functionality, yes you can use a custom pipeline, client/server certificate authentication and stuff, but adding custom behavior is limited; <p><a href="http://lh5.ggpht.com/-BX0-C_5CMQk/UhHsBs8V1-I/AAAAAAAABtE/ONXQrDXAPh4/s1600-h/clip_image0033.jpg"><img title="clip_image003" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image003" src="http://lh4.ggpht.com/-IVstnwwE1uM/UhHsBxqXwiI/AAAAAAAABtM/aRbO92_PF_w/clip_image003_thumb.jpg?imgmax=800" width="244" height="188"></a> <p><strong>HTTP vs WCF-WebHTTP Adapter Send</strong> <p><u>HTTP</u> <p><a href="http://lh5.ggpht.com/-g6puG_W3nUM/UhHsCYgKifI/AAAAAAAABtU/BUJI3oYTbWE/s1600-h/clip_image0043.jpg"><img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image004" src="http://lh3.ggpht.com/-ObYbtQxK8bA/UhHsC3leHJI/AAAAAAAABtg/9MbqEFztSn0/clip_image004_thumb.jpg?imgmax=800" width="244" height="188"></a> <p>· HTTP Method: POST (set by the adapter) <p>· Header Content type: text/xml (set by the adapter) <p>· Body: xml (handled by the adapter) <p><u>WCF-WebHTTP</u> <p>After choosing the adapter <p><a href="http://lh6.ggpht.com/-FdMzBFQT3jM/UhHsDaNTfPI/AAAAAAAABtk/YBdDuOlE68E/s1600-h/clip_image0053.png"><img title="clip_image005" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image005" src="http://lh6.ggpht.com/-MMgkCOxzS5Q/UhHsDs46s-I/AAAAAAAABts/RKlAKB3Es3Y/clip_image005_thumb.png?imgmax=800" width="244" height="107"></a> <p>We need to set 2 aforementioned properties manually; <p>· HTTP Method: POST <p><a href="http://lh6.ggpht.com/-XZVupnTh7EA/UhHsEScTJeI/AAAAAAAABt0/eCdhVHY9XgQ/s1600-h/clip_image0063.png"><img title="clip_image006" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image006" src="http://lh4.ggpht.com/-VxxbIqAmOVQ/UhHsErWQ-AI/AAAAAAAABt8/aR2mlok3JaQ/clip_image006_thumb.png?imgmax=800" width="244" height="62"></a> <p>· HTTP Method: POST (set by the adapter) <p>· Header Content type: text/xml (set by the adapter) <p><a href="http://lh6.ggpht.com/-IC8hiF3JvIQ/UhHsE0h1zDI/AAAAAAAABuE/m6LHdvzx6LM/s1600-h/clip_image0083.jpg"><img title="clip_image008" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image008" src="http://lh5.ggpht.com/-ac0w6_f54M0/UhHsFdN2qqI/AAAAAAAABuM/ZVa2pqrzOEA/clip_image008_thumb.jpg?imgmax=800" width="244" height="109"></a> <p><strong>HTTP vs WCF-WebHTTP Adapter Receive</strong> <p>Using the HTTPReceive adapter (POST) works the same way as the WCF-WebHTTP adapter will be used; it is hosted as an <a href="http://msdn.microsoft.com/en-us/library/aa559072.aspx">EndPoint in IIS</a>. However, one of the advantages is that you can add custom behaviors which could the migration to WCF-WebHTTP a good solution for received HTTP requests. <p>After running the wizrad <p><a href="http://lh4.ggpht.com/-3_Ze1TAB5JY/UhITgiBnD1I/AAAAAAAABug/LDuvOCNHBe8/s1600-h/image%25255B5%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-6uQPbOHFYZI/UhITgwhcfCI/AAAAAAAABuo/crDTFFIfPrg/image_thumb%25255B1%25255D.png?imgmax=800" width="244" height="30"></a> <p>Selecting the protocol <strong>WCF-WebHTTP</strong> <p><a href="http://lh5.ggpht.com/-QV7x1PEsqKc/UhIThYslrLI/AAAAAAAABuw/HZXIMnVFbVo/s1600-h/image%25255B8%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-ZfQEumTgERk/UhITh5IYqoI/AAAAAAAABu4/PgWepsyytfE/image_thumb%25255B2%25255D.png?imgmax=800" width="244" height="96"></a> <p>You will get an Endpoint hosted in IIS, however with the WCF-WebHTTP instead of the HTTPReceive dll (which requires ISAPI extensions etc) <p><a href="http://lh4.ggpht.com/-4wQfQvzxJ-Q/UhITieuQS0I/AAAAAAAABu8/b6pSMwpfVKM/s1600-h/image%25255B2%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-WMCbzj5ukZE/UhITi3AhK_I/AAAAAAAABvE/r2AWtxEshZw/image_thumb.png?imgmax=800" width="244" height="128"></a> <p>In the configuration screen, I use the BtsHTTPUriMapping, which implies POST instead configured otherwise; <p><a href="http://lh5.ggpht.com/-AQ0VEC2sYfs/UhITjJf6_oI/AAAAAAAABvQ/2oEOYy8R-vo/s1600-h/image%25255B11%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-M2ePlfF7e78/UhITjqW9zkI/AAAAAAAABvU/DbV7ZWKeyGQ/image_thumb%25255B3%25255D.png?imgmax=800" width="213" height="244"></a> <p>Where the Operation Name = “Test” should map to the Operation name in your Orchestrations Receive Port. <p><strong>Solution with the WCF-WebHTTP Adapter</strong> <p>After migrating to the WCF-WebHTTP adapter, you are able to use custom error handling, functionality. How to implement this is already described in detail. <p>1) <u>Error handling</u> <p>Although changing the HTTP to WCF-WebHTTP, I could not get the setup working to provide error handling in the request-response scenario with custom mappings. This because the HTTP status code is not wrapped inside an Error message. Although I expect that you can get it working using a custom behavior, I have not developed a solution at this point. <p>A good starting point is provided here, which uses an Orchestration; <p>http://social.technet.microsoft.com/wiki/contents/articles/16625.biztalk-server-rest-services-error-handling.aspx <p>2) <u>Flexibility</u> <p>The flexibility of WCF is the ability to add custom behaviors, how to do this is also described in detail; <p><a href="http://msdn.microsoft.com/en-us/magazine/cc163302.aspx">http://msdn.microsoft.com/en-us/magazine/cc163302.aspx</a> <p> <p> <p>HTH, <p>Sander Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-32172410.post-4366713799917607452013-08-19T09:21:00.000+02:002013-08-19T09:27:46.945+02:00Service Bus Deep Dive – personal notes<p> </p> <p>This video is a must see ‘<a href="http://channel9.msdn.com/Blogs/Subscribe/Service-Bus-Messaging-Deep-Dive">Service Bus Deep Dive’</a> together with the <a href="https://skydrive.live.com/redir?resid=123CCD2A7AB10107!35619&authkey=!ACK8SZYMIaEs_hk">presentation</a>. Clemens explain all the Service Bus capabilities, which can be used in various scenarios, and most importantly, are being used in various scenarios which he explains as well. </p> <p><a href="http://lh3.ggpht.com/-GncS9a3U0XE/UhHI8LgFY1I/AAAAAAAABsg/uuTXNVTghnU/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-MDKm9XTntBI/UhHI8WIzA7I/AAAAAAAABsk/NThqykWEkmQ/image_thumb%25255B1%25255D.png?imgmax=800" width="520" height="292"></a></p> <p>As most of the explanation in his video is also covered in the presentation, I’ve tried to make notes (again: PERSONAL notes), of what I think is something to highlight. </p> <p>These notes are grouped per main category in the presentation</p> <p><strong>Service Bus<br></strong>Service bus will remain available in 2 flavors, the Server and Cloud version. The focus will be on delivering functionality in the Cloud version first, after which bugfixing, takes places and eventually a code merge to the Server version. </p> <p>- Cloud functionality (released frequently)<br>- On Premise (released once 1 year – end of the year)</p> <p><strong>Brokered messaging<br></strong>- Flow rate is roughly determined (throughput \ # subscriptions)<br> - e.g. 2000 throughput<br> - subscriptions == number of copies of the message<br>- Messages are persisted in SQL before the ACK is returned<br>- MSMQ team is integrated within Azure Service Bus team (will remain supported)</p> <p><strong>ServiceBus API</strong><br>- SB Messaging protocol (ports 9354 or 443/80) ==> will be replaced by AMQP (in the future)<br>- AMQP(S) with (S) being the problably supported method (S: 5671, normal: 5672)<br>- AMQP vs Relay (idea to extend AMQP with Websockets to migrate SBMP features) <br>- HTTP(S) does not support transactions/sessions<br><font style="background-color: #ffff00">- Possible implication: AMQP support in BizTalk<br>- Possible implication: Relay support in BizTalk will change</font></p> <p><strong>Message dimensions</strong><br>- max total props: 64kb (-4kb reserved props)<br>- max body (256kb) - size of props!</p> <p><strong>Message protocol mapping:</strong><br>- http (json) ==> brokered message (automatic mapping)<br>- AMQP ==> brokered message (automatic mapping)<br>- SOAP message ==> brokered message (explicit promotion required)</p> <p><strong>Delivery options:</strong><br>- Peek Lock (reliable messaging) ==> possible loss of order<br>- Session + Peek lock (lock all messages, ensuring order)</p> <p><strong>Receive Operations:</strong><br>- AMQP/SBMP session/connection is maintained ==> much more efficient<br>- HTTP single receive operation ==> less efficient</p> <p><strong>Pricing (1 feb 2013)</strong><br>- 1 dollar = 1 million msgs<br>- each chunk of 64kb is considered a transaction!<br>- Long-polling (HTTP) means a transaction per poll, also charged in case of empty body<br>- pricing depending on zone (asia is the most expensive)</p> <p><strong>Messaging / Composite patterns</strong> ==> Must see<br> Correlation recommendation: Session Correlation</p> <p><strong>Messaging features</strong><br>- sql subscription actions; can change message properties, can not change message content<br>- topic pre-filtering: <br> - check if there are subscribers<br> - slower<br> - ack after executing rules<br><u>sessions<br></u> - when: used to group a set of related activities, for example processing a large file splitted<br> into smaller chunks<br> - no time limit<br> - !state! can be used to work stateless while processing workload (state machine / workflow capabilities) e.g.;<br> <br> Clients Sends processing work<br> Consumer iterates through the sessions (acceptMessageSession)<br> Consumer receives the message (session.Receive())<br> Consumer processing part of the message and updates the state (session.SetState(...))</p> <p> Consumer2 Retrieves the state<br> <br><u>Transaction<br></u> - no DTC<br> - System.Transactions scoping model<br> - Distributed transactions are possible using queues ("via" entity)</p> <p><u>Prefetch<br></u> - when: High throughput<br> - Usage: in stead of processing per message using the 'Receive' method, processing takes places using a local buffer</p> <p><u>Auto forwarding (Queue)<br></u> - Allows decoupling<br> - Allows dynamic reconfiguration (switch over based on message properties)</p> <p><strong>Guidance</strong><br> - Things will fail<br> - Exceptions with '.IsTransient' can be retried safely<br> - Support requests<br> NS Namespace<br> TransactionID (from the exception)<br> - Everything should be implemented A-Sync for high-throughput<br> (later this year available in all API's)<br> </p> <p>HTH,</p> <p>Sander</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-51229675226512517932013-08-16T17:00:00.001+02:002013-08-16T17:00:04.919+02:00ESB Toolkit Series – Part IV ‘Resubmit’<p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">An Itinerary determines the business flow, when the business flow is interrupted we would like to be able to restart a process. When can do this with the ESB Portal, but this portal is not always the way to go (I will post more on that in the do’s and don’ts).</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"></font></font></span> </p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">If we look at the options we have to resubmit a message in the ESB Toolkit context, we can;</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh3.ggpht.com/-iqxL-XZJ2gA/UfOPIaD6aQI/AAAAAAAABcw/S5kX9ZLWaQ0/s1600-h/image%255B52%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image002" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image002" src="http://lh6.ggpht.com/-BgACqhhbCc8/Ufjp1JK5SzI/AAAAAAAABkI/NfW3U2vCax4/clip_image002%25255B3%25255D.jpg?imgmax=800" width="380" height="221"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><strong><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></strong></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><strong><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">I am now talking about the last option – Restart the Itinerary at step X;</font></font></span></strong></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><strong><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font size="2" face="Verdana"></font></span></strong> </p> <p style="margin: 0cm 0cm 0pt; line-height: normal"> </p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh5.ggpht.com/-E6jNroexo9A/Ufjp1tD6rRI/AAAAAAAABkQ/_YNtcsDKHcU/s1600-h/image%25255B2%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-qbNVVlHtmck/Ufjp2U4Nz1I/AAAAAAAABkY/6ATSOVadocM/image_thumb.png?imgmax=800" width="244" height="122"></a></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><strong><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font size="2" face="Verdana"></font></span></strong><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us">Note: The ESB Portal allows you to resubmit a message, however, always starting from step 1.</span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span> </p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh5.ggpht.com/-8LKjXvVgEis/UfOPJBExj0I/AAAAAAAABc8/Vi0g_rvIMKs/s1600-h/image%255B55%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image004" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image004" src="http://lh4.ggpht.com/-_-jMn3hIJ-Y/Ufjp2wlsIDI/AAAAAAAABkg/WHuGZJOXZO8/clip_image004%25255B3%25255D.jpg?imgmax=800" width="385" height="254"></span></span></a></p><span style="font-family: "></span> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: "><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">The Itinerary is a fancy DSL diagram, and can be exported to Xml as which it is used inside the ESB Toolkit;</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh3.ggpht.com/-2mV8toZnVi4/UfOPKJiLIrI/AAAAAAAABdM/uxi7RmK0vIU/s1600-h/image%255B2%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image005" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image005" src="http://lh6.ggpht.com/-gcsNZQ9x4Q8/Ufjp3eAwlxI/AAAAAAAABko/KojKBteG740/clip_image005%25255B3%25255D.png?imgmax=800" width="220" height="156"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">You can export to Xml and directly into the Database (depending on what you prefer for your release management); </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh5.ggpht.com/-rptiU_U55ms/UfOPK9nyAKI/AAAAAAAABdc/lYuzVgMPw1A/s1600-h/image%255B5%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image006" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image006" src="http://lh4.ggpht.com/-WvG-8DbIDcg/Ufjp4OL7l0I/AAAAAAAABkw/EwfiXyxH3bk/clip_image006%25255B3%25255D.png?imgmax=800" width="244" height="59"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Verdana"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt">So based on the component described in the </font></span><font style="font-size: 10pt"><span style="font-family: "><a href="http://www.ithero.nl/post/2013/02/09/Creating-a-MessageBox-On-Ramp-for-the-ESB-Toolkit-in-BizTalk-2013.aspx"><span lang="EN-US" style="mso-ansi-language: en-us"><font color="#0000ff"><u>orchestration on-ramp</u></font></span></a></span></font><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> I thought that it should be possible to not only <b>resubmit a message from any process, but also from any step!</b> This can be useful to ‘manually fix’ a step in the process where you are not able to fix the request or know that a certain step fails. This also opens up the door to add an ‘Itinerary Submitter’ which can replace all the default ‘On-Ramps’ which are using various techniques (asmx allows for Resubmit using the Itinerary…., WCF uses the Itinerary from the database, thus has no state). </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh5.ggpht.com/-pZZzJRyXgGo/UfOPL65qUII/AAAAAAAABdw/IzrsADcn_n8/s1600-h/image%255B56%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image008" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image008" src="http://lh5.ggpht.com/-fUCk6ntua3Y/Ufjp4nii8uI/AAAAAAAABk4/kRhpFOeceGU/clip_image008%25255B3%25255D.jpg?imgmax=800" width="427" height="289"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><b><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></b></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Verdana"><b><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt">We want to specify which ESB Toolkit Itinerary step to start to perform a resubmit</font></span></b><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Verdana"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font color="#ff0000"><font style="font-size: 10pt">Attempt #1</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> – Change the state of the Itinerary services (assumption: Itinerary is processed based on the service state of any of the services) </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh6.ggpht.com/-pynLQvator0/UfOPNKNeFKI/AAAAAAAABeA/3dMMgAu4zlo/s1600-h/image%255B57%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image009" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image009" src="http://lh5.ggpht.com/-9LHLYcuDPT8/Ufjp5HpU6FI/AAAAAAAABlA/4Sqc0TzwyDU/clip_image009%25255B4%25255D.png?imgmax=800" width="551" height="120"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt" color="#ff0000"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 10pt; line-height: 13pt"><font face="Verdana"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font color="#ff0000"><font style="font-size: 10pt">Attempt #2</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> – Change the position of the Itinerary metadata (assumption: Itinerary is processed based on the position of the Itinerary metadata) </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh5.ggpht.com/--HBnGFItQXE/UfOPOVBssDI/AAAAAAAABeM/gdRiw1vNOoA/s1600-h/image%255B59%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image010" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image010" src="http://lh3.ggpht.com/-hf9J7GsJBOc/Ufjp5m78I0I/AAAAAAAABlE/yL_yp_3oIlc/clip_image010%25255B4%25255D.png?imgmax=800" width="536" height="112"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt" color="#ff0000"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Verdana"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font color="#ff0000"><font style="font-size: 10pt">Attempt #3</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> – Change the <b>Name </b>of the itinerary metadata (Assumption: name of the Itinerary metadata is used to start the correct itinerary service </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh3.ggpht.com/-EHLmsbKKHIc/UfOPPDDv8cI/AAAAAAAABec/XOfM6NqC3Zg/s1600-h/image%255B61%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image011" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image011" src="http://lh6.ggpht.com/-o_i3oOhWZ4A/Ufjp6IlBsHI/AAAAAAAABlM/tv-OurUnVN8/clip_image011%25255B4%25255D.png?imgmax=800" width="550" height="111"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt" color="#ff0000"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Verdana"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font color="#ff0000"><font style="font-size: 10pt">Errors for #1-3: There was a failure executing the receive pipeline:.....Reason: The service instance does not have the same properties as the first pending service.</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Verdana"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font color="#00ff00"><font style="font-size: 10pt">Attempt #4</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> – Change the <b>position</b>, <b>State</b> of previous Services before the position, Name of the Itinerary metadata </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh4.ggpht.com/-oa2cSeppViI/UfOPP-slFoI/AAAAAAAABes/qKpqsqEgECQ/s1600-h/image%255B62%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image012" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image012" src="http://lh3.ggpht.com/-pDOsxY_vock/Ufjp6lEEleI/AAAAAAAABlU/-5x6MGSvaZk/clip_image012%25255B4%25255D.png?imgmax=800" width="545" height="112"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Verdana"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt">How did I do this? We need to change the Xml, this is attached in the context by the ESB Pipeline components, which can be manipulated using the component </font></span><font style="font-size: 10pt"><span style="font-family: "><a href="http://www.ithero.nl/post/2013/02/09/Creating-a-MessageBox-On-Ramp-for-the-ESB-Toolkit-in-BizTalk-2013.aspx"><span lang="EN-US" style="mso-ansi-language: en-us"><font color="#0000ff"><u>Tomasso has written.</u></font></span></a></span></font><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> He originally posted on having an Orchestration as on-ramp to start an Itinerary. I figured that changing the state should be possible with that component as well. </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">I made a few changes; </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh4.ggpht.com/-MXfUk0nXOO0/UfOPQ8Z50qI/AAAAAAAABe8/kkM7rTqBYWg/s1600-h/image%255B63%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image013" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image013" src="http://lh6.ggpht.com/-9-WYLWhyAZQ/Ufjp7FSZMTI/AAAAAAAABlc/C5MmXij_WVA/clip_image013%25255B4%25255D.png?imgmax=800" width="551" height="341"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh5.ggpht.com/-EyPHHJX--SY/UfOPSH9RXXI/AAAAAAAABfQ/N78dBT5fFAI/s1600-h/image%255B64%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image014" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image014" src="http://lh4.ggpht.com/-pyKvlUMN4lA/Ufjp7k_daQI/AAAAAAAABlk/0u-Kns15cjs/clip_image014%25255B4%25255D.png?imgmax=800" width="545" height="243"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: "><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><b style="mso-bidi-font-weight: normal"><span style="font-family: "><font face="Verdana"><font style="font-size: 10pt">Crucial part of code</font></font></span></b></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: "><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font face="Verdana"><font style="font-size: 10pt" color="#008000">// serialize the updated itinerary and update this in the resolver dictionary (ESB context)</font></font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"><font face="Verdana"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font color="#0000ff"><font style="font-size: 10pt">using</font></font></span><font style="font-size: 10pt"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"> (</span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font color="#2b91af">StringWriter</font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"> sw = </span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font color="#0000ff">new</font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"> </span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font color="#2b91af">StringWriter</font></span></font><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font style="font-size: 10pt">())</font></span></font></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font face="Verdana"><font style="font-size: 10pt">{</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; text-autospace: ; text-indent: 35.4pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font face="Verdana"><font style="font-size: 10pt">ser.Serialize(sw, it);</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; text-autospace: ; text-indent: 35.4pt; mso-layout-grid-align: none"><font face="Verdana"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font style="font-size: 10pt">sw.Flush(); </font></span><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font style="font-size: 10pt" color="#008000">// ensure all data is written</font></span></font><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; text-autospace: ; text-indent: 35.4pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font face="Verdana"><font style="font-size: 10pt">itineraryData = sw.ToString();</font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: ; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; color: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas; mso-highlight: white"><font face="Verdana"><font style="font-size: 10pt">}</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-bidi-font-family: consolas"><font face="Verdana"><font style="font-size: 10pt">msg.SetPropertyValue(<span style="color: "><font color="#0000ff">typeof</font></span>(Microsoft.Practices.ESB.Itinerary.Schemas.<span style="color: "><font color="#2b91af">ItineraryHeader</font></span>), itineraryData);</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><b><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></b></p><b style="line-height: normal"><span lang="EN-US" style="font-family: ; line-height: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-language: en-us; mso-bidi-language: ar-sa"><br style="page-break-before: always; mso-special-character: line-break" clear="all"></span></b> <p class="MsoNormal" style="margin: 0cm 0cm 10pt; line-height: 13pt"><b><span lang="EN-US" style="font-family: ; line-height: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: nl"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></b></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><font face="Verdana"><b><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt">Testing…..start at the last step! Attempt #4 – result</font></span></b><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font style="font-size: 10pt"> </font></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh3.ggpht.com/-mQ6OxEnGL5U/UfOPTNXzqVI/AAAAAAAABfc/E9Miz12-E4E/s1600-h/image%255B65%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image015" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image015" src="http://lh4.ggpht.com/-4xjE6kfwH4w/Ufjp8Lpfn8I/AAAAAAAABlw/KUjh6ZoLj_c/clip_image015%25255B4%25255D.png?imgmax=800" width="550" height="220"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">What I did, was create an custom Orchestration with a published WCF On-Ramp, I am now able to start an Itinerary, but also start the Itinerary from any step. This allows me to create a very flexible Error building blocks which can easily be integrated in existing portals. </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh5.ggpht.com/-nfQ0wlywM-w/UfOPUPeRk3I/AAAAAAAABfs/bv_ALlDxboc/s1600-h/image%255B66%255D.png"><span style="font-family: ; text-decoration: ; text-underline: none; mso-no-proof: yes"><span style="mso-ignore: vglayout"><img title="clip_image017" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image017" src="http://lh6.ggpht.com/-l5pqUQagfSw/Ufjp8ku7pGI/AAAAAAAABl4/ys7RKULVcqo/clip_image017%25255B3%25255D.jpg?imgmax=800" width="503" height="322"></span></span></a><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">If we then look at the ESB ExceptionDatabase, we can use the information from the various tables, to display the Faults / Message and retrieve the Itinerary;</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh4.ggpht.com/-OAdoFmRrc78/Ufjp9VxqkJI/AAAAAAAABl8/EzP2qr9Br5Y/s1600-h/image%25255B5%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-rWdnVRL_qz4/Ufjp9spuOlI/AAAAAAAABmE/ZX62y1dHmPc/image_thumb%25255B1%25255D.png?imgmax=800" width="178" height="79"></a></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font size="2" face="Verdana"></font></span> </p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-add-space: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Wingdings 2'; mso-bidi-font-family: 'Wingdings 2'"><span style="mso-list: ignore"><font color="#94c600"><font face="Wingdings 2"><font style="font-size: 10pt"></font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></font></span></span><b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">Fault: Metadata related to the fault</font></font></span></b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="FR" style="font-family: ; color: ; mso-ansi-language: fr; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- application</font></font></span><span lang="FR" style="font-family: ; mso-ansi-language: fr"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="FR" style="font-family: ; color: ; mso-ansi-language: fr; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- description</font></font></span><span lang="FR" style="font-family: ; mso-ansi-language: fr"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="FR" style="font-family: ; color: ; mso-ansi-language: fr; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- errotype</font></font></span><span lang="FR" style="font-family: ; mso-ansi-language: fr"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="FR" style="font-family: ; color: ; mso-ansi-language: fr; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- failurecatagory</font></font></span><span lang="FR" style="font-family: ; mso-ansi-language: fr"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="FR" style="font-family: ; color: ; mso-ansi-language: fr; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- faultcode</font></font></span><span lang="FR" style="font-family: ; mso-ansi-language: fr"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="FR" style="font-family: ; color: ; mso-ansi-language: fr; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- faultdescription</font></font></span><span lang="FR" style="font-family: ; mso-ansi-language: fr"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; color: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- faultseverity</font></font></span><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; color: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- scope</font></font></span><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; color: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- faultgenerator</font></font></span><span style="font-family: "></span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; mso-add-space: auto"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt" color="#94c600"> </font></font></span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-add-space: auto; mso-list: l1 level1 lfo2; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Wingdings 2'; mso-bidi-font-family: 'Wingdings 2'"><span style="mso-list: ignore"><font color="#94c600"><font face="Wingdings 2"><font style="font-size: 10pt"></font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></font></span></span><b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">Message : Metadata related to the message</font></font></span></b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; color: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- FaultID</font></font></span><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; color: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- MessageName</font></font></span><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; color: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- InsertedData</font></font></span><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt" color="#94c600"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l3 level1 lfo3; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Wingdings 2'; mso-bidi-font-family: 'Wingdings 2'"><span style="mso-list: ignore"><font color="#94c600"><font face="Wingdings 2"><font style="font-size: 10pt"></font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></font></span></span><b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">MessageData : The payload of the message</font></font></span></b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; color: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- MessageID</font></font></span><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; color: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- MessageData </font></font></span><span style="font-family: "></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt" color="#94c600"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l2 level1 lfo4; tab-stops: list 36.0pt"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Wingdings 2'; mso-bidi-font-family: 'Wingdings 2'"><span style="mso-list: ignore"><font color="#94c600"><font face="Wingdings 2"><font style="font-size: 10pt"></font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></font></span></span><b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">ContextProperty : contextproperties related to the message in MessageData</font></font></span></b><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- MessageID</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- Name (e.g.. : Itinerary)</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- Value</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- Type</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; color: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: text2; mso-font-kerning: 12.0pt"><font face="Verdana"><font style="font-size: 10pt" color="#1f497d">- InsertedDate</font></font></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Retrieving the Itinerary is possible using the contextproperty ‘ItineraryHeader’ ;</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ; mso-no-proof: yes"><a href="http://lh4.ggpht.com/-c0TjHVzqzIk/Ufjp-N4LzfI/AAAAAAAABmM/Q6zyFFL5JVY/s1600-h/clip_image019%25255B3%25255D.jpg"><img title="clip_image019" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image019" src="http://lh3.ggpht.com/-_RRoWMVztKw/Ufjp-iMoihI/AAAAAAAABmY/DwhenUTehgQ/clip_image019_thumb.jpg?imgmax=800" width="319" height="247"></a></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">As I cannot share anymore code than this, I’m sorry the full solution is not provided, however, this should get you going! An example of a tool I created to prove the functionality works, before we integrate this in a custom portal looks like this.</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font size="2" face="Verdana"></font></span> </p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><a href="http://lh5.ggpht.com/-To2I9u8PrCU/Ufjp_FE85UI/AAAAAAAABmc/6-H-FBTldnM/s1600-h/clip_image021%25255B3%25255D.jpg"><img title="clip_image021" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image021" src="http://lh4.ggpht.com/-HbCfhWlWJEo/Ufjp_RjWesI/AAAAAAAABmk/HsRDzDx2x9Q/clip_image021_thumb.jpg?imgmax=800" width="319" height="270"></a><br style="mso-ignore: vglayout" clear="all"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 10pt; line-height: 13pt"><span lang="EN-US" style="font-family: ; line-height: 12pt; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 10pt; line-height: 13pt"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="font-family: ; line-height: 12pt; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Features</font></font></span></b></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l4 level1 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Retrieve all the Faults and related Messages with an Itinerary attached</font></font></span></p> <p style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l4 level2 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Linq datamodel to query the ESBException db easily</font></font></span></p> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l4 level1 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Display the Itinerary and Services (Deserialize the Itinerary) and select the Itinerary Step to start</font></font></span></p> <p style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l4 level2 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Reference to the Itinerary OM Model (Assembly)</font></font></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l4 level1 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Send a new request which starts at step #</font></font></span></p> <p style="margin: 0cm 0cm 0pt 72pt; line-height: normal; text-indent: -18pt; mso-list: l4 level2 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: 'Courier New'"><span style="mso-list: ignore"><font face="Courier New"><font style="font-size: 10pt">o</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Combination of all the information in this post</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">This now allows you to:</font></font></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l4 level1 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Use the ESB Toolkit to define your processes (I mean business processes) in a more abstract way by using the Itinerary instead of tightly coupling this in your Orchestration</font></font></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l4 level1 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Use the ESB Toolkit Exception handling without having the need to use the ESB Portal</font></font></span></p> <p style="margin: 0cm 0cm 0pt 36pt; line-height: normal; text-indent: -18pt; mso-list: l4 level1 lfo5"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font face="Symbol"><font style="font-size: 10pt">·</font></font><span style="font-family: ; line-height: normal"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span></span></span><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt">Implement functionality in your own preferred portal, using your preferred method</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span lang="EN-US" style="font-family: ; mso-ansi-language: en-us"><font face="Verdana"><font style="font-size: 10pt"> </font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"> </p> <p style="margin: 0cm 0cm 0pt; line-height: normal"> </p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: "><font face="Verdana"><font style="font-size: 10pt">Kind regards,</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: "><font face="Verdana"><font style="font-size: 10pt">Sander Nefs</font></font></span></p> <p style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: "><font size="2" face="Verdana"></font></span> </p> <div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8af06f37-6c44-4dc8-a3ef-5412d9d97564" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">Tags van Technorati: <a href="http://technorati.com/tags/ESB+Series" rel="tag">ESB Series</a>,<a href="http://technorati.com/tags/ESB+Toolkit" rel="tag">ESB Toolkit</a>,<a href="http://technorati.com/tags/BizTalk" rel="tag">BizTalk</a></div> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-7273369078522355192013-08-14T16:00:00.000+02:002013-08-14T16:00:08.879+02:00Azure subscription migration process<p> </p> <p>I had a windows Live ID linked to my MSDN subscription, when changing jobs my former employer <a href="http://www.motion10.nl/">motion10</a> was so kind to keep the subscription active for a short period, allowing me to migrate my subscription to my new employer <a href="http://www.caesar.nl/Diensten.aspx">Caesar</a>. </p> <p>Hereby the steps for this process to succeed</p> <ul> <li>The first requirement is that the bill has been paid <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://lh3.ggpht.com/-EM9hTw9aj5Q/UgsqrEyLznI/AAAAAAAABpI/uItVEomWvFA/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"></li></ul> <blockquote> <p><a href="http://lh6.ggpht.com/-mmZQhLP4A4w/UgsrF5EjS_I/AAAAAAAABsA/knMvdfyyFdo/s1600-h/image%25255B29%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-CMyc8q1-YdM/UgsrGBgNk3I/AAAAAAAABsE/4en6LI1-CEE/image_thumb%25255B9%25255D.png?imgmax=800" width="244" height="195"></a></p></blockquote> <ul> <li>Determine the current and new subscription ids</li></ul> <blockquote> <p><a href="http://lh3.ggpht.com/-_-7sB5bIVl4/UgsqsSfeNcI/AAAAAAAABpc/ZrY3GgDaVY4/s1600-h/image%25255B14%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-n8_kiDUE0kE/Ugsqs0jsesI/AAAAAAAABpo/kpZPoel89co/image_thumb%25255B4%25255D.png?imgmax=800" width="244" height="128"></a></p></blockquote> <blockquote> <p><a href="http://lh4.ggpht.com/-U7HciSMd3GU/UgsqtEVcv4I/AAAAAAAABps/ZrnTE_ddVcc/s1600-h/image%25255B17%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-PICzdD4_xXM/UgsqtrVbJbI/AAAAAAAABp4/7hzmuZz278Y/image_thumb%25255B5%25255D.png?imgmax=800" width="244" height="170"></a></p></blockquote> <ul> <li>Contact Microsoft support (from within the portal)</li></ul> <blockquote> <p><a href="http://lh5.ggpht.com/-MhQbOOwgdZE/UgsqtxuKHyI/AAAAAAAABqA/5r4uC2J3gMg/s1600-h/image%25255B11%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-BcqBBJyU_-Y/UgsqudHpuLI/AAAAAAAABqI/YbEM6DoBn1I/image_thumb%25255B3%25255D.png?imgmax=800" width="155" height="244"></a></p> <p>Choose the subscription for which the ticket is created</p></blockquote> <blockquote> <p><a href="http://lh6.ggpht.com/-SqShhncsnV0/Ugsqu8qPAEI/AAAAAAAABqQ/iwQsENZrgC0/s1600-h/image%25255B20%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-qtfKG3-GwqU/UgsqvaesC0I/AAAAAAAABqU/lZiY6akn0Sg/image_thumb%25255B6%25255D.png?imgmax=800" width="244" height="176"></a></p> <p>Choose the type of support call (subscription transfer-migration)</p> <p><a href="http://lh6.ggpht.com/-peVLfYr04CY/Ugsqv4IXt9I/AAAAAAAABqc/R0SCJIN2VuY/s1600-h/image%25255B23%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-0TkjZuqNDZI/UgsqwLNVDdI/AAAAAAAABqk/IfVzaRRDyJE/image_thumb%25255B7%25255D.png?imgmax=800" width="244" height="150"></a></p> <p><a href="http://lh3.ggpht.com/-mQFq401DklQ/UgsqwaF2tdI/AAAAAAAABqs/eqFv-L1yR1E/s1600-h/image%25255B26%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-4pV6gJuc_Pk/UgsqwtOkMwI/AAAAAAAABq0/8x02NQL7iKU/image_thumb%25255B8%25255D.png?imgmax=800" width="244" height="84"></a></p></blockquote> <ul> <li>The new subscription must be bound to the same Live ID for the migration to work</li></ul> <blockquote> <p><a href="http://lh4.ggpht.com/-9A3GlCn-Nyg/UgsqxNrsnzI/AAAAAAAABq8/HK1woISPkds/s1600-h/image%25255B2%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-wmwCDK6pJxk/UgsqxRLNi-I/AAAAAAAABrI/JVwkrp-lzKk/image_thumb.png?imgmax=800" width="244" height="189"></a></p></blockquote> <ul> <li> <p>The destination subscription may not contain any artefacts, so be careful with an Active Directory as this is created and active for all your subscriptions linked to your LiveID</p></li></ul> <blockquote> <p><a href="http://lh4.ggpht.com/-qY3X8M5Er_M/Ugsqx1_BIKI/AAAAAAAABrQ/fouIYwPzLYw/s1600-h/ActiveDirectory%25255B2%25255D.png"><img title="ActiveDirectory" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="ActiveDirectory" src="http://lh6.ggpht.com/-zFVgKyreKts/UgsqyYZ1CPI/AAAAAAAABrY/5mEDtFQsgAs/ActiveDirectory_thumb.png?imgmax=800" width="244" height="74"></a></p></blockquote> <ul> <li>In my case the Active Directory was causing an issue, fortenately, the backend team is prepared for this type of migration</li></ul> <blockquote> <p>“I will now go ahead and work with my backend team to do a force migration so that we can complete your request. This might take 48 to 72hrs.”</p></blockquote> <ul> <li>As my previous subscription was an US based I could use the Azure Store, my new subscription is Europe based, so these apps are not migrated (adding to the complexity)</li></ul> <blockquote> <p><a href="http://lh3.ggpht.com/-12kxGx4rt9o/Ugsqy8QgQCI/AAAAAAAABrc/r1S4IskB21I/s1600-h/image%25255B5%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-VrOYgVJBnEw/UgsqzfRWYTI/AAAAAAAABro/OiVkfgQwgI8/image_thumb%25255B1%25255D.png?imgmax=800" width="244" height="71"></a></p></blockquote> <ul> <li>In the end it took 4 days to complete the entire migration, giving the priority (medium) and complexity I think that´s good!</li> <p><a href="http://lh5.ggpht.com/-p-iAnt3yewQ/Ugsqzlt_PJI/AAAAAAAABrw/XTTTa10_mgk/s1600-h/image%25255B8%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-hUL9nbObRp8/Ugsq0G9st_I/AAAAAAAABr4/SfXPZ6X8GmQ/image_thumb%25255B2%25255D.png?imgmax=800" width="244" height="116"></a></p> <p> </p> <p>HTH,</p> <p>Sander</p></ul> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-32172410.post-53129159882471598592013-08-13T09:20:00.001+02:002013-08-13T09:20:38.684+02:00Azure Management Portal – what’s new (to date)<p> </p> <p>The management Portal is getting more features…I think on a daily basis?! It’s almost a challenge to find the new easter egg. Since the last time I really clicked through each screen, some new features i’ve spotted (13-08-2013);</p> <ul> <li>View your bill directly, instead of viewing it from your subscription</li></ul> <p><a href="http://lh4.ggpht.com/-LOtZAxkl4JE/UgneLETaAGI/AAAAAAAABnA/NMc9UfN7PN8/s1600-h/image%25255B2%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-scJ3kZOMFHM/UgneLoVCb9I/AAAAAAAABnE/OOuBQ-1VCkw/image_thumb.png?imgmax=800" width="244" height="75"></a></p> <ul> <li>Directly start WebMatrix from within your Website (preconfigured)</li></ul> <p><a href="http://lh3.ggpht.com/-RK73jZJZVgk/UgneL-y2WvI/AAAAAAAABnM/11tSWk1y2eU/s1600-h/image%25255B5%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-slj8tjUTHv4/UgneMYg0l0I/AAAAAAAABnU/EeAWay6syVU/image_thumb%25255B1%25255D.png?imgmax=800" width="244" height="118"></a></p> <ul> <li>VM Depot where you can create all the VM’s you want with a lot of Linux systems preinstalled</li></ul> <p><a href="http://lh3.ggpht.com/-9pnmqVk_2sk/UgneMu8HncI/AAAAAAAABnc/DrGwDGE6DD4/s1600-h/image%25255B8%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-oXJftuo_4nQ/UgneNGYJeWI/AAAAAAAABno/ov7nF_tkMO0/image_thumb%25255B2%25255D.png?imgmax=800" width="244" height="206"></a></p> <p><a href="http://www.hanselman.com/blog/Over400VirtualMachineImagesOfOpenSourceSoftwareStacksInTheVMDepotAzureGallery.aspx">See this post from Scott Hanselman</a></p> <ul> <li>Host Caching of Virtual Machines (under ‘VM\Disks’)</li></ul> <p><a href="http://lh6.ggpht.com/-nVwwU_xOOLY/UgneNpgSyII/AAAAAAAABnw/p7izaW3Q_-I/s1600-h/image%25255B11%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-DEyDk917Rts/UgneOOJHoNI/AAAAAAAABn0/2W59zKY5RDE/image_thumb%25255B3%25255D.png?imgmax=800" width="243" height="244"></a></p> <ul> <li>SQL Databases – Sync your databases</li></ul> <p><a href="http://lh4.ggpht.com/-YHSS460Rfo0/UgneOaJBEgI/AAAAAAAABoA/D6OThJzuywE/s1600-h/image%25255B17%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-C_Z_yWdbNlw/UgneO2DA2iI/AAAAAAAABoI/xvFFjiZGoEU/image_thumb%25255B5%25255D.png?imgmax=800" width="244" height="190"></a></p> <p>See: <a title="http://social.technet.microsoft.com/wiki/contents/articles/5023.sql-azure-data-sync-create-a-sync-group.aspx" href="http://social.technet.microsoft.com/wiki/contents/articles/5023.sql-azure-data-sync-create-a-sync-group.aspx">http://social.technet.microsoft.com/wiki/contents/articles/5023.sql-azure-data-sync-create-a-sync-group.aspx</a></p> <ul> <li>Manage your custom domain</li></ul> <p><a href="http://lh6.ggpht.com/-ORj9FYIQTEo/UgnePWrLwlI/AAAAAAAABoM/N219IELrElI/s1600-h/image%25255B20%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-6Jyu4P-Oloc/UgnePrM7_XI/AAAAAAAABoU/fUFua1or6Ag/image_thumb%25255B6%25255D.png?imgmax=800" width="244" height="194"></a></p> <p>See: <a title="http://www.windowsazure.com/en-us/develop/net/common-tasks/custom-dns-web-site/" href="http://www.windowsazure.com/en-us/develop/net/common-tasks/custom-dns-web-site/">http://www.windowsazure.com/en-us/develop/net/common-tasks/custom-dns-web-site/</a></p> <ul> <li>Service Bus Connection information</li></ul> <p><a href="http://lh3.ggpht.com/-dSJjjMBeqGE/UgneQFFBbEI/AAAAAAAABog/q9yiOjD7z2w/s1600-h/image%25255B23%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-WwGcmZRONno/UgneQj1OnoI/AAAAAAAABok/dxUfX8cWhsY/image_thumb%25255B7%25255D.png?imgmax=800" width="110" height="63"></a></p> <p>Even though this might have been there from the start, this is a very cool features, it shows all the information a client needs to connect to Service Bus.</p> <p><a href="http://lh6.ggpht.com/-Y9Uey3EyxNM/UgneQ0KNNjI/AAAAAAAABow/IZz_xRLzRR0/s1600-h/image%25255B26%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-a56VTyY2XQ4/UgneRZSqrZI/AAAAAAAABo0/6sHuJjBg6Ig/image_thumb%25255B8%25255D.png?imgmax=800" width="244" height="222"></a></p> <p> </p> <p>Additionally there are all the Preview mode components;</p> <ul> <li><a href="https://www.hadooponazure.com/">HDInsight (Hadoop)</a></li> <li><a href="http://www.windowsazure.com/en-us/services/biztalk-services/">BizTalk Services</a></li> <li><a href="http://www.windowsazure.com/en-us/store/overview/">Store</a></li> <li><a href="http://blogs.technet.com/b/ad/archive/2013/06/12/windows-azure-active-authentication-multi-factor-for-security-and-compliance.aspx">Multi Factor Authentication Provider</a></li> <li><a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh744833.aspx">Traffic Manager</a></li></ul> <p> </p> <p><disclaimer>I’m only mentioning the features that are new, updated to my knowledge, so this is definitely not the complete list as it is problably outdated at the time of publishing.</disclaimer> </p> <p>The amount of effort put into Azure is amazing, and the new features are really good, I receive updates through twitter/email every week now!</p> <p>If you’ve opened the portal a month or so ago, I really suggest you take another look, as the Portal is problably entirely new, stuffed with new features.</p> <p> </p> <p> </p> <p>Kind regards,</p> <p>Sander Nefs</p> <div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:aacb956d-f464-4abe-abd6-925bae7f5c63" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">Tags van Technorati: <a href="http://technorati.com/tags/Azure" rel="tag">Azure</a></div> Unknownnoreply@blogger.com0