Azure App Service: How to implement conditional logic and loops in a Logic App#

One of the questions I saw on Twitter after yesterday's Azure App Service launch was: how do you do an if-then-else in a Logic App? Or even a For loop?

If you're coming from a BizTalk Orchestration or Windows Workflow background, you may be surprised by the lack of shapes in a Logic App for performing these operations.

However, you can still do all those things: you just need to look at the problem differently...

Wednesday, March 25, 2015 10:47:22 AM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Announcing Azure App Service: a new PaaS offering in Azure#

Azure App Service allows developers to create business logic in the cloud that supports their new or existing web and mobile apps.

Building on the MicroServices announcement from last year's BizTalk Summit (in Redmond), there have been two major new technologies released...

Tuesday, March 24, 2015 9:46:16 AM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


DanSharp XmlViewer v1.01 released#

v1.01 of DanSharp XmlViewer is now available up on CodePlex. Also available is the source code for this version.

This is a minor bugfix release - the main bug fixed is an issue where long file names cause the application to not be able to start.

Direct link to the MSI file is here.

Tuesday, October 04, 2011 5:59:46 PM (GMT Daylight Time, UTC+01:00) #    Comments [2]  |  Trackback


DanSharp XmlViewer tool now on CodePlex#

The DanSharp XmlViewer tool has now moved to CodePlex.

You can get the latest setup files, documentation and source code from CodePlex, along with tracking discussions and issues.

The project page is here:

My apologies for the delay on getting this done!

Monday, October 03, 2011 5:56:20 PM (GMT Daylight Time, UTC+01:00) #    Comments [0]  |  Trackback


Cumulative Update 2 for BizTalk Server 2010#

I've been waiting for this for a while... contains all hotfixes released since CU1 was released...

Get it here:

Thursday, September 01, 2011 10:04:12 AM (GMT Daylight Time, UTC+01:00) #    Comments [0]  |  Trackback


Improving the ESB Toolkit: Fixing the "endless loop" bug when creating Fault messages#

The ESB Toolkit is great. However, it's not without its fair share of bugs. I've been meaning to blog about this since I first came across this bug a year or so ago, but it's taken me a while.

If you use the ExceptionManagementDb functionality...

Friday, May 06, 2011 1:03:10 PM (GMT Daylight Time, UTC+01:00) #    Comments [1]  |  Trackback


BizTalk moving to the cloud… and to Windows Server AppFabric#
For those of you who may have missed Sriram’s blog post, there will be a CTP of the Integration as a Service version of BizTalk appearing in Azure sometime before July 2011 (interestingly, the blog entry was posted at 10am on October 28th, i.e. an hour after PDC10 started…!).
Additionally, BizTalk vNext will transition to being AppFabric...

Friday, October 29, 2010 12:37:12 PM (GMT Daylight Time, UTC+01:00) #    Comments [6]  |  Trackback


AppFabric’s AutoStart feature: great news for BizTalk#

Any of you who have been writing WCF front-ends for BizTalk services will know about one of ASP.NET’s failings: first request latency. A service (or application) hosted in IIS doesn’t start-up and JIT itself fully until the first request is received.

And if low-latency is important to you, this isn’t acceptable, as the first request can incur delays ranging anywhere from 2 secs to 60 secs!

There are many common ways to...

Wednesday, October 27, 2010 12:01:04 PM (GMT Daylight Time, UTC+01:00) #    Comments [0]  |  Trackback


BizTalk 2010 Released; Development edition now free#

Well the announcement came over a week after I thought it would arrive, but BTS2010 is now officially released. And the developer edition is now free.

However, that doesn’t mean that you can do development for free: you still need to pay for SQL Server and Visual Studio.

Although having said that, SQL Server 2008 Dev edition is fairly cheap (as in, about £20 on a select agreement), so the only real cost is Visual Studio... Still, it means that there won’t be hoards of hobbyist devs out there trying out BTS, unless they manage to get it running with Visual Studio Express (does that actually work? Never tried it, but wouldn't have thought so – might have a go tomorrow). Still, it means that you no longer need an MSDN license to do BizTalk dev, which removes a huge barrier for budding/hobbyist BizTalk devs. Especially if you want to start developing with the AppFabric integration features in BTS 2010.

You can download the dev editions of BTS2010 and HIS2010 from here:
Sunday, September 26, 2010 9:19:06 PM (GMT Daylight Time, UTC+01:00) #    Comments [0]  |  Trackback


Installing the ESB Toolkit v2.0 on Windows 7 Error: Operation Not Completed#

Here's an interesting one: I was installing the ESB Toolkit 2.0 on a Win 7 x86 machine the other day, and during install got an error from Visual Studio saying "The operation could not be completed.":

If you choose OK, the ESB Installer finishes with a success message, but then the Itinerary Designer doesn't work in Visual Studio (you get an error about a missing assembly when you try and add a new itinerary to a project).

There was nothing...

Sunday, August 22, 2010 6:22:56 PM (GMT Daylight Time, UTC+01:00) #    Comments [2]  |  Trackback


PDC2008: Introducing BizTalk Express, sorry, Dublin#
Just at a session on BizTalk Express, sorry Dublin…
Dublin is a set of extensions to Web Application Server (WAS) also known as Web Process Activation Server (also WAS) – confused yet?!
Basically, Dublin allows hosting of WCF/WF services/workflows on IIS/WAS.
What it adds though is UIs for Hosting, Messaging, Durability, Correlation, and Tracking
Sound familiar? Yup, all things that BTS provides today.
It’s early days yet – most of the advanced stuff is currently configured via PowerShell scripts, but it shows where they’re going with it.

Persistence is implemented by storing message information in SQL Server.
In the IIS Administration Console, you can look at suspended instances, resume them, cancel them, etc. All stuff that seems very very familiar to a BTS dev.
Correlation and filtering is achieved via XPath statements (no comments on whether it loads the message into a DOM, or whether it supports fast–read-only forward XPath only).

We’ve all received copies of Dublin with our PDC bits – I’ll be keen to see what perf you can achieve under load. I suspect the answer is "not much".
The BTS dev team spent a lot of time tuning the filtering/persistence stuff, and in a lot of ways it seems that the Dublin team are reinventing the wheel here.

One cool thing shown was creating a model in Quadrant (the Oslo modelling tool) and deploying WCF/WF apps from there to Dublin.

More to come as I spend time with Dublin.

Wednesday, October 29, 2008 11:10:53 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


PDC2008: Wow, look Windows 7, it’s so exci… zzzzzzzz#
I’m sorry, is it just me? I just can’t get excited about Windows Vista R2, sorry, Windows 7.

[side note: Windows Vista, and Windows Server 2008 use v6.0 of the windows kernel. Windows 7 uses v6.1 of the kernel. They’ve also upgraded Windows Server 2008 to use v6.1 – and called this refresh Windows Server 2008 R2… but they’ve called the client refresh Windows 7. Even though it technically is just Vista refreshed with an updated kernel.
I suspect that MS got so burnt with the Vista brand name, that they’ve been forced to re-name it.
But I wonder what the client OS which will contain v7.0 of the kernel will be called. I suspect it won’t be Windows 8!]

So Windows 7 is pretty much Windows Vista with some new features.

And some of them are pretty cool (e.g. reduced resource footprint, improvements in collaborating with connected computers/devices). But don’t be fooled into thinking that this is a new OS, or even an evolution – it’s Vista with some new features.
Which is absolutely fine – Microsoft have just managed to stabilize Vista, and are starting to leave the early painful years behind.

For me, the coolest and most useful feature is the ability to boot from a VHD.
Now just stop and think about what that means: there must be a thin layer of bootstrap code which knows how to read a VHD and present to as a physical HDD/Storage Controller to the system.
[Note: yes, Win 7 allows you to create/mount VHDs using DiskManager, but this functionality has been around for a while if you installed Virtual Server, although it was command-line only.]

I imagine this bootstrap code is pretty much the same as for Windows Hyper-V server, which works on a similar principle i.e. booting from images, although Hyper-V does this in a virtualised environment, allowing you to boot multiple VHDs at the same time.

What I’m not clear about is if the VHD must contain an install of Win 7, or whether you can boot any OS install. If the latter, then this is super cool.
(given that there appears to be a VHD HostBusAdapter in Device Manager in Win 7, I suspect it’s the former i.e. Win 7 only VHDs. I hope not.)

What this means for me: I do all of my BizTalk/Services dev in Windows Server 2003/2008. And up to now, this has been done using Virtual PC images (running Vista 64-bit as the host OS).
But now, hopefully, I have the choice of booting my dev VHD, or running it in VPC/Virtual Server/Hyper-V.

And that’s pretty cool.

Wednesday, October 29, 2008 6:34:45 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


PDC2008: New features in C##
Just been to Anders Hejlsberg’s talk on the future of C#, where he outlined what’s coming in C# 4.0 and (some) of what might come in C# 5.0.

Importantly: C# 4.0 focuses on Dynamic Languages (i.e. the Dynamic Language Runtime (DLR))  and concurrent programming (i.e. programming for multi-core CPUs).

New in C# 4.0 is support for the attic type dynamic.
This allows you to specify a type which isn’t known until runtime.

Under the hood, it all seems to use the whole Type Invoke mechanism (i.e. reflection, which can be very slooooooow).
Which leads me to wonder: dynamics in C# 4.0 look like they’re cool in certain situations, but you end up with perf-problems, and the possibility for difficult-to-find runtime bugs.

For example, if I typed:
dynamic calc = GetCalculator();
int val = calc.App(2, 10);

Instead of

int val = calc.Add(2, 10);
well.. I won’t know that there is a  bug until I get to that line as it’s dynamically executed
At least, that’s my understanding.
It’ll be interesting to see how they address this.

In C# 5.0, Anders showed how they’re re-writing the C# compiler (csc) in managed code – and allowing you to interact with it from code.
Specifically, he showed how to dynamically generate, compile and execute code.. similar to what CodeDOM does today, but much much cooler.

Monday, October 27, 2008 10:47:56 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


PDC2008: Microsoft unveils Windows Azure at PDC 2008#
Well, I’m at the Microsoft PDC (Professional Developers Conference) 2008 at the LA Convention Center in LA.

The keynote session is happening at the moment – Ray Ozzie has just announced Windows Azure, the new name for the cloud-services platform (I had heard that they would call is Windows Strata, but there you go!).

Azure look fairly cool, although the development environment is just VS.NET.

What’s new is that they host your services for you, including (in the future) SQL Services i.e. hosting your databases, which will be fairly cool.
When you create an Azure service in VS.NET, and then choose deploy, the service is packaged and you’re taking to the Azure Developers Portal, where the service is uploaded.

Bear in mind that this Microsoft’s answer to Amazon Web Services (AWS) and Google Apps – Microsoft are joining the party late, but I’m hoping that they have learnt something by being able to watch from the sidelines.

I’m also interested in all the Oslo sessions – for those of us in the BizTalk world, Oslo gives us information about what future versions of BizTalk will look like (post BTS 2009).
What’s important to realise is that Oslo is the code name for a whole suite of tools, as opposed to a single product.

I imagine this means that there will be a whole lot of products that come out under the Oslo codename/brand.
Monday, October 27, 2008 7:49:59 PM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Aggregating messages and removing duplicates in a BizTalk Map#
Aggregating messages is a fairly common task in BizTalk.
By "aggregating" I mean taking two separate messages with repeating elements and combining them into a new message which contains the elements of both messages - the same as doing a Union in SQL.

However, what if you want to remove duplicates?
It's not as easy as it seems, and in truth the only way I have found to do this is via custom XSLT.

Combining two messages
This is actually fairly easy: you use...
Wednesday, May 21, 2008 2:42:26 PM (GMT Daylight Time, UTC+01:00) #    Comments [1]  |  Trackback


System.Data.SqlXmlHelper - calling extended XPath functions from BizTalk Maps#
In this post:
   Methods in the helper class
   Notes on implementation
   Installation Instructions
   Problems with the Script Functoid
   Examples of Usage
   Download the code
   Testing the sample map

I’m not sure if this is actually of any use to anyone but if you do want to use Microsoft's Extended XPath Functions from a BizTalk Map (see my previous post) then I've created a wrapper assembly to do this for you.
Method names are the same as the original functions, but using "_" instead of "-".

Saturday, March 15, 2008 11:30:27 AM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Using Microsoft's Extended XPath functions in BizTalk#
It's not that well documented, but Microsoft have a bunch of extra functions you can use from XPath expressions within XSLT.
You can find the documentation on them here.

What isn't made apparent is that none of them work with XslTransform: a subset of them will work with XslCompiledTransform, and the others only work with MSXML 4.0 onwards.

This becomes obvious if you try and use these functions, or if you read this blog post from the Microsoft XML team on the XslCompiledTransform class.

Being the curious cat I am, I wondered if there was any way to use the functions from within XslTransform - if there was, I figured you could use the functions in a BizTalk Map...

Thursday, March 13, 2008 11:21:00 AM (GMT Standard Time, UTC+00:00) #    Comments [0]  |  Trackback


Understanding the BizTalk Mapper: Download the Article#
If you prefer to do your reading offline, then you can download the entire series of 13 posts as a single 68-page Microsoft Word document, or Adobe PDF document.

Get them here:
     Understanding the BizTalk Mapper.doc (1.2MB)
     Understanding the BizTalk Mapper.pdf (640kB)

Please let me know what you think!
Saturday, March 01, 2008 8:14:07 PM (GMT Standard Time, UTC+00:00) #    Comments [3]  |  Trackback


Understanding the BizTalk Mapper: Part 13 - Is the Mapper the best choice for Transformation in BizTalk?#
In this section:
Transformation Choices
BizTalk Mapper
Custom XSLT with the BizTalk Mapper
External Transform Engine
Transformation in code
Which one should you use?

Transformation Choices
When performing transformations in BizTalk, you have four choices (that I can think of):
  1. Using the BizTalk Mapper
  2. Using a custom XSLT file with the BizTalk Mapper
  3. Using a separate transformation engine (called from code)
  4. Performing transformations in code
Each of these offers their own benefits depending on your requirements.

Normally your choice will depend on 3 factors:
  • Performance
  • Complexity
  • Maintainability
Generally you will get one (or two) of these, at the cost of the third.

For simple transformations, you can get all three with the Mapper using the built-in functoids.

Friday, February 29, 2008 4:05:35 PM (GMT Standard Time, UTC+00:00) #    Comments [3]  |  Trackback


Understanding the BizTalk Mapper: Part 12 - Performance and Maintainability#
In this section:
   Summary of Tests
   Testing performance in isolation (non-BizTalk)
   Performance Test Results
   Measuring Memory Usage in BizTalk
   BizTalk Memory Test Results
   Byte Arrays
   Analysing the performance results
   External XSLT
   Serialisable Classes
   Why is it so difficult to edit code in the Script functoid?

Any large BizTalk project will likely have had the inevitable conversations about performance and maintainability: will it be fast/sustainable enough, and will the tech support team (or whoever looks after the code once the developers have finished) be able to maintain it?

In this post I want to look at the performance of the Mapper, and also look at how maintainable maps are generally.

In order to do this, I want look at the different options you have for executing XSLT with the Mapper, and compare this to the most common non-Mapper mechanism for performing transformation: using serialisable classes.
Tuesday, February 26, 2008 7:14:07 PM (GMT Standard Time, UTC+00:00) #    Comments [1]  |  Trackback


All content © 2019, Daniel Probert
On this page
This site
<March 2015>
Blogroll OPML

Powered by: newtelligence dasBlog 2.3.12105.0

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Send mail to the author(s) E-mail

Theme design by Jelle Druyts

Pick a theme: