Things hard and not so hard.... RSS 2.0

Folks - my blog has moved to

# Monday, 08 December 2014

Hey folks, Something that has been bugging me for a while is to be able to set a bunch of BizTalk services to 'Automatic (Delayed)' start type, cause as you're aware when you reboot a box (pretty much any box outside a class room lab) - all the biztalk services will be stopped due to the underlying services taking a while.

Namely the ESSO service.

So I thought I'd write a batch file - yes batch! that doesn't rely on libraries from here, powershell modules from there and requiring .NET version 2020!

Here it is & enjoy

----- Batch to Set all BizTalk Services to Automatic (delay) -----

sc query state= all | find "SERVICE_NAME: BTSSvc" > %temp%\btssvc.txt
FOR /F "tokens=* delims=:" %%a IN (%temp%\btssvc.txt) DO call :sub "%%a"

  del /f %temp%\btssvc.txt
  @echo Done.
  exit /b

  echo In Subroutine
  @set svc=%1
  set svc="%svc:~15%
  echo Configuring %svc%
  sc config %svc% start= delayed-auto

Monday, 08 December 2014 10:45:57 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2006 R2 | 2009 | 2010 R2 | BizTalk 2013 | RFID | Usergroup
# Friday, 24 October 2014

Today I came across something I was keeping an eye on recently and that is the BizTalk Flow Visualiser on Codeplex.

It basically looks at your tracking data and gives you back call details.

- Errors/Succes

- # of times something is called

- amount of time taken to process each stage.

It’s pretty easy to setup, there’s a site and a service…and the rest you can guess.

Check it out and feell free to contribute!!




Friday, 24 October 2014 12:03:02 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | BizTalk 2013 | Tools
# Tuesday, 24 June 2014

Well not a bad one to track down and basically from reverse engineering the Microsoft.BizTalk.Pipeline.Comonents.dll your xpath expressions need to be in the a 'certain format' even though the traditional Xpath tools work beautifully.

I was dealing with some HL7 messages so my call stack maybe slightly different to yours - but it's something like:

Fatal error encountered in 2XDasm. Exception information is Microsoft.BizTalk.Component.ComponentException
at Microsoft.BizTalk.Component.XPathHelper.CheckXPathExpression(String strXPath)
at Microsoft.BizTalk.Component.XPathDenormalizer.Denormalize(String xpath, Boolean bAbsolute, Boolean bGetChildNodes)
at Microsoft.BizTalk.Component.XmlDasmReader.CreateReader(IPipelineContext pipelineContext, IBaseMessageContext messageContext, MarkableForwardOnlyEventingReadStream data, Encoding encoding, Boolean saveEnvelopes, Boolean allowUnrecognizedMessage, Boolean validateDocument, SchemaList envelopeSpecNames, SchemaList documentSpecNames, IFFDocumentSpec docSpecType, SuspendCurrentMessageFunction documentScanner)
at Microsoft.BizTalk.Component.XmlDasmReader.CreateReader(IPipelineContext pipelineContext, IBaseMessageContext messageContext, MarkableForwardOnlyEventingReadStream data, Encoding encoding, Boolean saveEnvelopes, Boolean allowUnrecognizedMessage, Boolean validateDocument, SchemaList envelopeSpecNames, SchemaList documentSpecNames)
at Microsoft.Solutions.BTAHL7.Pipelines.HL72fDasm.ParseMessageBody(IPipelineContext pc, ArrayList& xmlErrors, Boolean& fatalError)
at Microsoft.Solutions.BTAHL7.Pipelines.HL72fDasm.ProcessIndividualMessage(IPipelineContext pc)
at Microsoft.Solutions.BTAHL7.Pipelines.HL72fDasm.ProcessChunkedMessages(IPipelineContext pc)
at Microsoft.Solutions.BTAHL7.Pipelines.HL72fDasm.GetNext(IPipelineContext pc)

Microsoft.BizTalk.Component.XPathHelper.CheckXPathExpression(String strXPath) is the main culprit.

From my reverse engineering efforts I tracked the problem down to the result of this method call:

namespace Microsoft.BizTalk.Component


    internal sealed class XPathHelper


        private XPathHelper()




        public static void CheckXPathExpression(string strXPath)


            if (XPathCanonizer.Canonize(strXPath, true) == null)


                string empty = string.Empty;

                string[] strArrays = new string[] { strXPath };

                throw new ComponentException((uint)-1061153675, empty, strArrays);






//Here's essentially the code the above line calls -


public class CanonicalXPath


                private XPathExpression _xpath;


                private bool _ignoreNS;


                public XPathExpression XPathExpression




                        return this._xpath;




                internal CanonicalXPath(string xpath, bool ignoreNS)


                    this._ignoreNS = ignoreNS;

                    XPathExpression xPathExpression = new XPathExpression(xpath);

                    StringBuilder stringBuilder = new StringBuilder();

                    IQuery[] expression = xPathExpression.GetExpression();

                    for (int i = 0; i < (int)expression.Length; i++)


                        IQuery query = expression[i];

                        if (query is NullQuery)





                        XPathCanonizer.XPathCanonizerState.CanonicalXPath.StepCanonizer stepCanonizer = new XPathCanonizer.XPathCanonizerState.CanonicalXPath.StepCanonizer(this, query);



                    this._xpath = new XPathExpression(stringBuilder.ToString());



                private class StepCanonizer


                    private readonly XPathCanonizer.XPathCanonizerState.CanonicalXPath _owner;


                    private readonly StringBuilder _sb;


                    private readonly IQuery _toplevelQuery;


                    private string _name;


                    private string _namespace;


                    private bool _isAttribute;


                    public StepCanonizer(XPathCanonizer.XPathCanonizerState.CanonicalXPath owner, IQuery stepQuery)


                        this._owner = owner;

                        this._sb = new StringBuilder();

                        this._toplevelQuery = stepQuery;



                    private void _generate()


                        if (this._isAttribute)




                        this._sb.AppendFormat("*[local-name()='{0}'", this._name);

                        if (this._namespace != null)


                            this._sb.AppendFormat(" and namespace-uri()='{0}'", this._namespace);


                        this._sb.AppendFormat("]", this._name);



                    private void _processAxis(BaseAxisQuery axisQuery)


                        if (!string.IsNullOrEmpty(axisQuery.Prefix))


                            throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                        switch (axisQuery.NodeType)


                            case XPathNodeType.Element:


                                this._isAttribute = false;



                            case XPathNodeType.Attribute:


                                this._isAttribute = true;





                                throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();



                        string name = axisQuery.Name;

                        if (!string.IsNullOrEmpty(name))


                            this._name = name;

                            this._namespace = string.Empty;




                    private void _processFilter(FilterQuery fq)






                    private void _processPredicate(IQuery q)


                        Type type = q.GetType();

                        if (type == typeof(AndExpr))


                            AndExpr andExpr = q as AndExpr;





                        if (type == typeof(BooleanFunctions))


                            this._processPredicate((q as BooleanFunctions).BaseQuery);



                        if (type != typeof(LogicalExpr))


                            throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                        LogicalExpr logicalExpr = q as LogicalExpr;

                        if (logicalExpr.OperatorName != "EQ")


                            throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                        IQuery leftOperand = logicalExpr.LeftOperand;

                        IQuery rightOperand = logicalExpr.RightOperand;

                        if (leftOperand is OperandQuery)


                            IQuery query = leftOperand;

                            leftOperand = rightOperand;

                            rightOperand = query;


                        if (!(leftOperand is MethodOperand) || !(rightOperand is OperandQuery))


                            throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                        MethodOperand methodOperand = leftOperand as MethodOperand;

                        object str = (rightOperand as OperandQuery).GetValue(null).ToString();

                        string functionName = methodOperand.FunctionName;

                        string str1 = functionName;

                        if (functionName != null)


                            if (str1 == "FuncNameSpaceUri")


                                string str2 = (string)str;

                                if (this._namespace != null && this._namespace != str2)


                                    throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                                this._namespace = str2;



                            if (str1 == "FuncLocalName")


                                string str3 = (string)str;

                                if (str3 == null || str3.Length == 0)


                                    throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                                if (this._name != null && this._name != str3)


                                    throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                                this._name = str3;




                        throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();



                    private void _validate()


                        if (this._name == null || this._name.Length == 0)


                            throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                        if (this._namespace == null && !this._owner._ignoreNS)


                            throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();




                    public string Process()


                        Type type = this._toplevelQuery.GetType();

                        if (type == typeof(FilterQuery))


                            this._processFilter(this._toplevelQuery as FilterQuery);


                        else if (type != typeof(ChildrenQuery))


                            if (type != typeof(AttributeQuery))


                                throw new XPathCanonizer.XPathCanonizerState.XPathCanonizationException();


                            this._processAxis(this._toplevelQuery as BaseAxisQuery);




                            this._processAxis(this._toplevelQuery as BaseAxisQuery);




                        return this._sb.ToString();





Write a small test app:

1) Open VS.NET and create a console app

2) Reference - c:\program files\microsoft biztalk server XXXX\pipeline components\Microsoft.XLangs.RuntimeTypes.dll
2.1) Reference from the GAC - C:\Windows\assembly\GAC_MSIL\Microsoft.BizTalk.XPathReader\<your version>\Microsoft.BizTalk.XPathReader.dll

Here's my sample code - I'm still working through making my XPath compliant:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Microsoft.XLANGs.RuntimeTypes;

using Microsoft.BizTalk.XPath;


namespace XpathExpressionTester


    class Program


        static void Main(string[] args)


            var strFailed = "/*/*[local-name()='PRD_ProviderData']/*[local-name()='PRD_1_ProviderRole']/*[local-name()='CE_0286_0_Identifier'][text()='RT']/../../*[local-name()='PRD_7_ProviderIdentifiers']";

            var strGood = "/*[local-name()='Fred']/*[local-name()='PRD_ProviderData']/*[local-name()='PRD_1_ProviderRole']/*[local-name()='CE_0286_0_Identifier'][2]";//[text()='RT']"; // /../../*[local-name()='PRD_7_ProviderIdentifiers']";

            //var strGood = "/*[local-name()='Fred']/*[local-name()='PRD_ProviderData']/*[local-name()='PRD_1_ProviderRole']/*[local-name()='CE_0286_0_Identifier' and text()='RT']/../../*[local-name()='PRD_7_ProviderIdentifiers']";

            var xp = new XPathExpression(strGood);

            Console.WriteLine("We got {0}", xp.GetExpression().Count());






        private static void RunTest(string str)


            XPathExpression result = XPathCanonizer.Canonize(str, true);

            if (result != null)

                Console.WriteLine("We got {0}", result.XPath);


                Console.WriteLine("BoomBoom - we failed");






Tuesday, 24 June 2014 15:51:23 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | General
# Tuesday, 25 March 2014


Great day was had by all and after some issues with ‘guest wifi’ at the start of my presentation we were off. Top questions and a good vibe filled the room.

As promised – here’s my slides I used and see you this Saturday at the Global Windows Azure Bootcamp – Sydney (Worldwide event)

DEMOS - here

Have a great day folks and see you soon.

Tuesday, 25 March 2014 11:13:43 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Azure | Integration | BizTalk | Events | Recordings | General
# Monday, 25 November 2013

Just home from a great week that was in relation to Microsoft’s Integration strategy for both on-prem and cloud solutions.

The first part of the week was the MVP Summit and it’s always great to catch up with the fellow crew and solve the world’s problems over a beer or two. Very positive things came from that….a headache :)

By the time the summit was on, there were brain’s buzzing with activity.

The Summit

The first day of the 2 day summit was spent by the Product groups presenting on what’s new, the roadmap, the vision and how the new world hangs together.

A major component to come out of this was BizTalk Services.

An Azure service that guarantees a certain performance level as well as being able to design tranformations, EDI, EAI all at the end of a RESTful endpoint.


Development, Compiling and Deployment is all done out of a new Visual Studio 2012 Project Template.

The Azure BizTalk Services environment is guaranteed in ‘BizTalk Units’ – the BizTalk team have done well to build a flexible feature on the Azure Fabric.

Currently there’s a range of Receive/Endpoints and ‘Destinations’ (Send Ports) that the platform supports – watch this space as more will be added no doubt.


Later in the summit we also learnt that the XBOX One Team uses BizTalk Services to process orders (& others) across the world.

BizTalk Services Performance for the XBOX One team.

WP_20131122_018 (1)


Some great numbers going through BizTalk Server for a US Healthcare provider.

 BizTalk Services Throughput 

With the Impack alliance hard at work as always showing our capabilities thanks to Matricis, Breeze and Codit



The favourite US pastime that I was fortunate enough to go to thanks to Kent Weare whom organised a troop of us.


Monday, 25 November 2013 20:10:07 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Alliance | Azure | BizTalk Services | BizTalk | BizTalk 2013 | BizTalk Services | MVPSummit13
# Wednesday, 02 October 2013

I received an email in the early hours of this morning right when Arsenal just slotted one home in the Champions League…and I thought…”Can this moment get any better?” – YOU BET! My MVP re-award email came through :)

Big thanks to the folks at Microsoft for bestowing this award to me again (9th year running) and being given the chance to be part of a great knowledgeable MVP community.

The real thanks goes to you guys in the community of which I try to make a difference in the Azure Space. With cloud offerings changing every other week (it feels like), it’s almost a full time job keeping on top of things. New numbers, bigger limits, faster storage, different ways to manage traffic, connections, deployments, code platforms… and the list goes on.

Thanks to each and all of you for making this award possible in this great country – Australia (down under, Oz… and any other name you know it as)


or as a friend says ‘Ka-Boom!’

Wednesday, 02 October 2013 14:45:44 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | Integration | BizTalk | Dev | General | MVP
# Sunday, 22 September 2013

Hi folks, while scratching around late on a Sunday night with an all important demo tomorrow, I realised that a current up to date version of the BizTalk Documenter was something I didnt have.

I grabbed the source from – and recompiled for .NET 4.5 x64.

They are just a bunch of files that you can unzip on your BizTalk box and run the app.

I reckon you’ll need to be Admin or running this in Admin mode to avoid any querks that happen when you dont have enough permissions.



Sunday, 22 September 2013 21:41:50 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | BizTalk 2013
# Wednesday, 28 August 2013

A great feature I came across recently where we can limit dynamically limit IP addresses based on Request Rates and other aspects of the Requests.

IIS 8 and above :)

Wednesday, 28 August 2013 09:32:56 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | BizTalk | BizTalk Services | Insights
# Monday, 20 May 2013

Well folks I’ve been greeted with the news that Microsoft Windows Azure will be in 2 geo-replicated places here on Australian soil, coming ‘shortly’.

As an Azure MVP & from Breeze (a leading Microsoft Cloud Partner) perspective we invest heavily in cloud technologies.

What does this mean and why should I care? I hear you ask… good question and I asked the same.

As most of you know I have a passion for Integration, sticking all sorts of things together from small RFID devices, hand made hand-held devices, raspberry PIs through to high end ERP, Financials & many other types of systems. So before I get to the WHY aspect, let me briefly set the context.

There’s some great data coming out of Gartner a report which caught my eye - came out with these:

  • Integration Costs to rise by 33% by 2016, more than half of new system development costs will be spent on Integration
  • By 2017, over two-thirds of all new integration flows will extend outside the enterprise firewall.

So Integration just took on a whole new face – successful integration is about using the right tools (in the toolbox) for the right task. Now we have a whole new drawer in our toolbox full of Azure goodies & widgets. This functionality is just too compelling to be ignored….

…and now that it’s on Australian soil I’d be thinking that just about every Data center service provider should be giving you cloud functionality.

Some quick cloud advantages:

  • scale, provisioning and ease of use
    • Imagine being able to spin up a SharePoint site in the time it takes me to write this article.
    • Imagine being able to ask for an extra load balanced highly available Server/Service at the click of a button. Importantly – Imagine being able to give it back again at the end of the weekend/day/next hour.
  • Not wait the typical 12 weeks for a new server to be provisioned, oh and dont mention filling out the right forms. Running an application on those machines and getting a firewall port opened….that’ll be another 2 weeks…and on it goes.
  • The much beloved Enlightenment for many companies of achieving Single Sign-On – Imagine your customers being able to sign into your applications using their own Ids, Live Ids, + a bunch of other Ids without you needing to provision more services. You can house your identity accounts in Azure, locally or elsewhere – finally you don’t need a Quantum Analyst to setup Single Sign-on.
  • My experiences in the last few weeks on client sites have been back in the world of old – classic encumbered infrastructure service providers wanting to claim everything, put the brakes on any new ideas and have meetings around such concepts of adding an extra 10gb disk space to existing servers. These guys should be ‘can do’ people – it’s all about choosing the right tool for the job.
  • Microsoft have done a great job on the developer tooling front from the classic MS toolset through to Apple, PHP, Ruby, Phython etc. all being able to access, develop on, publish and deploy.
  • We could even give a bunch of HDD drives to Olaf (our gun cyclist @ Breeze) to ride to the Azure Data Center and offload our data, while we wait for the NBN to never come to our area.
  • There are some great options on the horizon coming down the track.

So let’s say we’re keen to explore – how hard/easy is it to get ‘my’ own environment & what does this mean.

The short answer is you get an Azure Footprint which could be running in a ‘Data Center’ in Sydney. Depending on what you’re playing with you could get:

- SQL Databases, Cloud Services, Scalable Mobile Device Services, Load balanced Websites/Services/Restful endpoints…and the list of ‘widgets’ goes on and on.

How do I interact with this environment:

Often the issue around alot of this is that because my beloved ‘servers’ are running somewhere else I’m concerned over how much control we get.

We enter into the Hybrid Integration space – where as you can imagine not *everything* is suited for the Cloud, there will be things you keep exactly as they are. So there will be many many scenarios where – we have something running locally as well as something running in Azure. Some options we have available are to make our servers ‘feel at home’:

  • VPN connection – we can have several flavours of a VPN connection that connect our Azure Footprint to our local network. for e.g. local network is 10.10.x.x/16, Azure network 10.50.x.x/16. Full access to all the machines/services and other things you have running. CRON jobs, FTP, scripts, processes, linux boxes, samba shares, etc etc.. (I do realise the integration world is never as easy as we see it in the magazines)
  • RDP Connections – standard level of service really from any Service provider.
  • Remote PowerShell Access
  • Azure Service Bus - Applications Level Web/WCF/Restful Services connectivity. An Application Service can run either locally or in the cloud and this feature allows your Service to be accessed through a consistent Endpoint within the cloud, but the calls are Relayed down to your Application Service. There’s a few different ways we can ‘relay’ but the public endpoint could house all the clients & their device requests, while your existing application infrastructure remains unchanged.
  • SQL Azure Data Sync – sync data between clouds & local from your databases. So for many clients, come 8pm each day, their local database has all the Orders for the day as per normal, without the usual provisioning headaches as the business responds to new market opportunities to support smart devices.
  • We even get pretty graphs….
    • But wait there’s more…..
    • These details are typical performance monitor counters + diagnostic information. We can use Azure Admin tools to import these regularly and import them into our typical tools.
    • System Center does exactly this – so our ‘dashboard’ of machines will list our local machines as well as our cloud machines. Your IT guys have visibility into what’s going on.

We’ve been using Singapore DCs or West Coast US with pretty good performance times across the infrastructure. 

What does having a local Windows Azure Data Center mean to me:

  • Medical Industry – we have several medical clients allowing us to innovate around Cloud technologies using HL7 transports. Faster time to market and higher degrees of re-use.
  • Cloud Lab Manager – can run locally for all training providers. Breeze has created an award winning cloud based application that will certainly benefit from this piece of great news.
  • Creating a cloud based application is now feasible (this particular one was due to the sensitive nature of information it carried)
  • And lastly I can house my MineCraft server – well it’s my 10 yr old sons and half the school I reckon.


So for you…

Ask yourself the question – are you getting all these features from where you currently host/run your hardware?

Lack of infrastructure and provisioning challenges shouldn’t be holding back new ideas & business movement. iPads, smartphones, anywhere, any time access should be the norm, not like we’re putting another person on the moon.

It’s all about using the right tool for the job

Enjoy folks as it’s certainly exciting times for us Aussies ahead!!

Microsoft’s Announcement

Monday, 20 May 2013 12:23:00 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | Integration | ServiceBus | BizTalk | SharePoint | Dev | Events | General | Tips | Training | Win2012
# Friday, 12 April 2013
# Tuesday, 26 March 2013
With the launch of BizTalk 2013 coming to a city near you from next month, Breeze is across all the new features and has the expertise to get it done right - the first time.
(Watch this space - we will be announcing the launch 'party' shortly)

This is the 8th release of BizTalk and Breeze has been there as a TAP partner, early adopter etc. for ALL 8 releases (even before BizTalk...but that scares even me). We've provided feedback and suggestions on the current release and Breeze has the ability to contact the Product team and raise an issue should the need arise.

BizTalk 2013 is also targeted for the cloud and will be offered as Platform as a Service(PaaS) and Infrastructure as a Service(IaaS), so keep an eye out in the Azure image galleries for this.

I'm pleased to announce that our current set of products have been updated and tested to work with BizTalk 2013 environments, such as:
- Breeze Monitor - centralised monitoring based dashboard that gives you comfort at night knowing your solutions are being looked after.
- Breeze Integration Framework - integration should be easy, this does exactly that. We have put many new capabilities and items here for the BizTalk 2013 version.

For the on-premises BizTalk Server 2013 release, the following themes are important:
  • Cloud Connectivity
  • Ability to run existing BizTalk applications in the cloud (IaaS)
  • Improved Performance
  • Simplified Development and Management Experience
  • Support for the latest platform and standards

In terms of features, this translates to

  • Integration with Cloud Services- BizTalk Server 2013 includes new out-of-the box adapters to send and receive messages from Windows Azure Service Bus, making it easy to build hybrid solutions. It also provides capabilities to host BizTalk endpoints in Azure through the Service Bus Relay providing a simple and secure way to connect external partners and application to BizTalk Server on premises.
  • RESTful services- BizTalk Server 2013 provides adapters to invoke REST endpoints as well as expose BizTalk Server artifacts as a RESTful service.
  • Enhanced SharePoint adapter- Integrating with SharePoint using BizTalk Server 2013 is now as simple as integrating with a file share.
  • SFTP adapter-Enables sending and receiving messages from an SFTP server.
  • Other enhancements: The ESB capabilities previously introduced in the ESB Toolkit are now fully integrated with BizTalk Server, Dependency tracking,Improvements in dynamic send ports, XslCompiledTransform, more support for protocol updates (X12, EDIFACT, HL7)

There is also a change in the licensing approach, where BizTalk is now moving to a per-core licensing model.  If you need more information on this, drop us a line.

Happy BizTalking.. :)

Tuesday, 26 March 2013 10:15:49 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | BizTalk 2013
# Tuesday, 19 February 2013

“Ding ding” after spending 4 rounds(hours) in the ring with this guy, I’m taking the gloves off and heading for the showers and salts.

I’m in the middle of some BizTalk work (which is nice for a change) and I’m ticking my tasks off.

I’ve got a REST receive port exposed from BizTalk via IIS and published through the WCF Publishing Wizard.


(there’s Operations mappings and extracting variables from the URL to Context Properties under the Configure – omitted for brevity)

Couple of shots of the WCF Service Publishing Wizard:



The issue here is that – once the Wizard completes you’ll get:

http://<servername>/coreapi/customer/Service1.svc as the URL to call.

The task was simple:

I wanted to call URLs such as




And not their equivalents of:



The Solution was to use IIS URL Rewrite which looks to be the Swiss Army knife that MacGuyver uses.. (but he only needs a paperclip to take out an entire train).

Lots of samples and numerous examples of solutions that work and people are high-fiving in about 5 mins of starting…alas not for me Sad smile. The other point to note here also is that a URL Rewrite module exists for:

  • Default Web Site
  • Each IIS Application under the Root Website.

I wanted to keep things confined to just my IIS Application and not have to have requirements of changing the Default Web Site for instance.

The tricky part was to find out how IIS works and it’s matching.


Underneath CoreApi I have Customer as an Application as in


**The part that URL Rewrite appears to do** (that floored me for a while)

It chunks the FULL REQUEST and passes just the part required to your app.

So take the full URL:


As you traverse down the IIS ‘Application tree’ the URL that is passed to each URL Rewrite in each underlying IIS Application is *different*, as in:

  • /coreapi = ‘customer/1234234/enquire’
  • /coreapi/customer = ‘1234234/enquire’

This was possibly the hardest piece to figure out. I’d setup failed request tracing in IIS and those logs, while I feel like I’m walking into the Engineering room of the century with all the logs, pages and info… I wasn’t seeing ‘URL Rewrite failed to apply your rule because …..’  - it just wasn’t appearing plain and simple.

URL Rewrite – the rules that won the show

  1. Under /coreapi/customer in IIS Manager
  2. Started off with a Blank Rule and setup the following:
    1. image
    2. image

So the RegEx Rule (at this level) simply states – if the Request begins with a number, then prepend ‘Service1.svc/’ to it.

The key is knowing what the URL being passed to URL Rewrite is at this level in the IIS Application/vdir tree.

What the web.config says at this level:

               <rule name="CoreApi Rule" patternSyntax="ECMAScript">
                   <match url="([0-9].*)" />
                   <action type="Rewrite" url="Service1.svc/{R:1}" appendQueryString="false" logRewrittenUrl="true" />

I hope I’ve saved you a bit of time on your next endeavour.

Tuesday, 19 February 2013 16:12:33 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | BizTalk 2013 | Tips
# Thursday, 17 January 2013

While getting my BizTalk SWIFT environment prepared on BizTalk, I decided to test the waters by running through the Tutorial – big trouble in little Sydney resulted.

While the tutorial is comprehensive, it’s written for previous versions of the SWIFT accelerator so there’s the few paths (BREConfigurator.exe.config) that need correcting for some of the SDK tools. Which I can live with as their part of the SDK and this isn’t quite baked BizTalk 2013 yet.

The part where I hit trouble is that during the tutorial once schemas + rules are deployed, you are to drop a sample MT103_Sample.txt into a folder and viola – it appears as XML in another folder.

The MT103_Sample.txt is incomplete/incorrect for the SWIFT Schema – I had a whole series of errors. Called upon my trusted SWIFT guru Angelo whom could just look at the message and tell me what bits to remove and I should replace parts with a an Australian Bank who’s code is ‘XXXXSSBCXXX’ (scared me), we almost got the file working.

We decided to settle on this working file MT103 Sample:

Feel free to use it and remove the leading and trailing CRLF in your file.




And here’s the original MT103 Sample.txt working message:

Big Deal Real Estate
Madison Avenue
New York, NY USA
I. Buy Buildings
200 Front Street
Toronto, Ontario
:70:re real estate purchase
10000 King Street East

Thursday, 17 January 2013 14:47:21 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | BizTalk 2013 | Swift
# Tuesday, 13 November 2012

Hi folks, I’m just blown away by all the goodies in these 2 releases

1) the SP1

2) the Feature Pack SP1

Both have some pretty big improvements, especially around the SharePoint 2013 <-> SQL scenario and pivot tables, analysis, mining etc.

There’s even SQL Services that continuously copy data from Oracle to SQL – this I’ll have to try on my next BizTalk project.

Check it out -

Now I’d love to have a single download for them all…. Smile

Tuesday, 13 November 2012 22:17:18 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | General | SharePoint | 2013
# Thursday, 25 October 2012

Great news – Jurgen Willis and his team have worked hard to bring Microsoft’s first V1.0 WF Workflow Hosting Manager.

It  runs both as part of Windows Server and within Azure VMs also. It also is used by the SharePoint team in 2013, so learn it once and you’ll get great mileage out of it.
(I’m yet to put it through serious paces)

Some links to help you out…

What is it?

WF Mgr 1.0 – Code Samples


The following main areas for WF improvements in .NET 4.5: (great MSDN magazine article)

  1. Workflow Designer enhancements
  2. C# expressions
  3. Contract-first authoring of WCF Workflow Services
  4. Workflow versioning
  5. Dynamic update
  6. Partial trust
  7. Performance enhancements

Specifically for WorkflowManager there’s integration with:

1. Windows Azure Service Bus.

So all in all a major improvement and we’ve now got somewhere serious to host our WF Services. If you’ve ever gone through the process of creating your own WF host, you’ll appreciate it’s not a trivial task especially if you want some deeper functionality such as restartability and fault tolerance.

but…. if you want to kick off a quick WF to be part of an install script, evaluate an Excel spreadsheet and set results, then hosting within the app, spreadsheet is fine.

Let’s go through installation:

Download from here


Workflow_Manager_BPA.msi = Best Practices Analyser.

WorfklowClient = Client APIs, install on machines that want to communicate to WF Manager.

WorkflowManager = the Server/Service Component.

WorkflowTools = VS2012 plugin tools – project types etc.

And we’ll grab the 4 or you can you the Web Platform Installer



The Workflow Client should install fine on it’s own (mine didn’t as I had to remove some of the beta bits that were previously installed).

Installing the Workflow Manager – create a farm, I went for a Custom Setting install below, just to show you the options.



As you scroll down on this page, you’ll notice a HTTP Port – check the check box to enable HTTP communications to the Workflow Manager.
This just makes it easier if we need to debug anything across the wire.

Select NEXT or the cool little Arrow->

On Prem Service Bus is rolled into this install now – accepting defaults.


Plugin your Service Accounts and passphrase (for Farm membership and an encryption seed).

Click Next –> to reveal….


As with the latest set of MS Products a cool cool feature is the ‘Get PowerShell Commands’ so you can see the script behind your UI choices (VMM manager, SCCM 2012 has all this right through). BTW – passwords don’t get exported in the script, you’ll need to add.

Script Sample:

# To be run in Workflow Manager PowerShell console that has both Workflow Manager and Service Bus installed.

# Create new SB Farm
$SBCertificateAutoGenerationKey = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with Service Bus Certificate Auto-generation key ******' -Verbose;

New-SBFarm -SBFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False' -InternalPortRangeStart 9000 -TcpPort 9354 -MessageBrokerPort 9356 -RunAsAccount 'administrator' -AdminGroup 'BUILTIN\Administrators' -GatewayDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbGatewayDatabase;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey $SBCertificateAutoGenerationKey -MessageContainerDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SBMessageContainer01;Integrated Security=True;Encrypt=False' -Verbose;

# To be run in Workflow Manager PowerShell console that has both Workflow Manager and Service Bus installed.

# Create new WF Farm
$WFCertAutoGenerationKey = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with Workflow Manager Certificate Auto-generation key ******' -Verbose;

New-WFFarm -WFFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False' -RunAsAccount 'administrator' -AdminGroup 'BUILTIN\Administrators' -HttpsPort 12290 -HttpPort 12291 -InstanceDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=WFInstanceManagementDB;Integrated Security=True;Encrypt=False' -ResourceDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=WFResourceManagementDB;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey $WFCertAutoGenerationKey -Verbose;

# Add SB Host
$SBRunAsPassword = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with RunAs Password for Service Bus ******' -Verbose;

Add-SBHost -SBFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False' -RunAsPassword $SBRunAsPassword -EnableFirewallRules $true -CertificateAutoGenerationKey $SBCertificateAutoGenerationKey -Verbose;

    # Create new SB Namespace
    New-SBNamespace -Name 'WorkflowDefaultNamespace' -AddressingScheme 'Path' -ManageUsers 'administrator','mickb' -Verbose;

    Start-Sleep -s 90
Catch [system.InvalidOperationException]

# Get SB Client Configuration
$SBClientConfiguration = Get-SBClientConfiguration -Namespaces 'WorkflowDefaultNamespace' -Verbose;

# Add WF Host
$WFRunAsPassword = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with RunAs Password for Workflow Manager ******' -Verbose;

Add-WFHost -WFFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False' -RunAsPassword $WFRunAsPassword -EnableFirewallRules $true -SBClientConfiguration $SBClientConfiguration -EnableHttpPort  -CertificateAutoGenerationKey $WFCertAutoGenerationKey -Verbose;


Upon completion you should see a new IIS Site…. with the ‘management ports’ of in my case HTTPS



Let’s Play Smile

Go and grab the samples and have a play – make sure you run the samples as the user you’ve nominated as ‘Admin’ during the setup – for now.

Thursday, 25 October 2012 15:06:11 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Async | Azure | Integration | ServiceBus | BizTalk | 2010 | 2010 R2 | Dev
# Thursday, 04 October 2012

In the wee early hours of the morning I recently got an email saying I had been awarded a MVP for another year.

This time I got awarded as an Azure MVP coming from BizTalk MVP. My love has been BizTalk for the last 12 years (and even Site Server before that for those that remember back that far…no they didn’t have punch cards Smile).

As always I don’t feel this is personally my award, but more of an award to you, the community with your hunger and thirst for knowledge to make a difference in your day to day.

And of course thank you to Microsoft for your belief in the MVP program and individuals such as myself.


The formal bits out of the way….I’m back for 2012/13!!! Should be a great year…great tour…and huge developments. Stay tuned.

My focus will be How to Integration and how-to integrate to/from Windows Azure.




Thursday, 04 October 2012 09:49:47 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | Integration | BizTalk | 2010 R2 | BizTalk Adapter Pack
# Tuesday, 07 August 2012

Now that the dust is settling after WPC 2012, I’m able to catch up on all the emails still coming from the event.

I had a picture taken with John (against a green screen) and is it’s amazing what they can do with modern technology now. Smile

WPC Award

From my research a couple of points:

  • Over the last 4 years, approx 200 Worldwide Partner awards have been given – 6 of them Australian Partners! We’re one of 6.
  • This is the first time EVER an Australian Partner has been an Application Integration Winner
  • This is the first time EVER an Australian Partner has been a Cloud Partner Finalist

See more here

Talk to you soon.


Tuesday, 07 August 2012 15:10:02 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2010 R2 | Breeze | Events | 2012
# Monday, 06 August 2012

Hi folks, BizTalk has some great new features on the horizon and this CTP is jam packed of new and improved features. I believe the CTP is non-public atm, with MVPs etc. able to get access (or if you’re on the TAP program)

I’ve got a VM up and running with the setup and config working a treat – I’m not sure how much I can say, but I’d like to say I’m very pleased with what I’m seeing!

The official feature set blurb goes something like this…



Improved productivity with new Microsoft Platform support

Customers can now leverage the latest and greatest platforms, such as Windows Server 2012 RC, SQL Server 2012, Visual Studio 2012 RC. All new BizTalk projects will target .Net Framework 4.5 RC by default. The CTP also provides support for latest LOB versions enabling customers to use BizTalk for integrating their applications with the latest versions of SAP, Oracle and SQL Server. The new adapters provide a seamless experience to enable hybrid connectivity, all done via configuration. The CTP provides native support for ACS authentication and is extensible for other authentication mechanisms.

·         Platform support

o   Windows Server 2012 RC, Windows Server 2008 R2

o   SQL Server 2012, SQL Server 2008 R2

o   Visual Studio 2012 RC

o   Office 2010

o   Support for latest LOB versions

§  Support for SQL Server 2012

§  Support for SAP 7.2

§  Support for Oracle DB 11.2

§  Support for Oracle EBS 12.1 …

·         Adapters

o   WCF-WebHttp adapter, to consume REST service or expose REST service

o   SB-Messaging, for sending/pulling data from Service Bus Queues/Topics

o   WCF-NetTCPRelay, for hosting relays or sending data to NetTCPRelay end points

o   WCF-BasicHttpRelay, for hosting relays or sending data to BasicHttpRelay end points


Better B2B with schema updates

EDI standards evolve and one of the key investments made in this new BizTalk CTP is to ensure that we support the latest B2B standards natively. This enables you to transact messages based on the latest versions of EDI protocol.

·         B2B enhancements to support latest standards natively

o   Support for X12 5040, 5050, 6020, 6030

o   Support for EDIFACT D06A, D06B, D07A, D07B, D08A, D08B, D09A, D09B, D10A, D10B

o   HL7 2.5.1

We are working on further schema updates such as HL7 2.6, these will be enabled in the BizTalk 2010 R2 Beta.


Improved Performance

The CTP provides performance improvement for certain key scenarios. In case of two way MLLP adapter scenarios where ordered delivery is set, the tests have revealed up-to 5X performance improvement so far in our environments. We have also made enhancements in our engine to improve the performance in ordered send port scenarios.


Building hybrid applications

Today, there is an increase in the adoption of hybrid application scenarios where some components of an application run in the cloud and some other components/LOB applications remain on-premise. It then becomes important to integrate between these components and leverage the richness of both worlds. In this CTP release, we enable hybrid connectivity by providing first class support for integrating with Azure Service Bus Queues/Topics/Relays. We are introducing the following adapters

·         SB-Messaging, for sending/pulling data from Service Bus Queues/Topics

·         WCF-NetTCPRelay, for hosting relays or sending data to NetTCPRelay end points

·         WCF-BasicHttpRelay, for hosting relays or sending data to BasicHttpRelay end points


Integrating with Azure Service Bus entities is now just a few configurations away!


Integration with RESTful services

One of the other prevalent trends in the market today is the proliferation of RESTful services. Almost all new services, as well a lot of services created previously, have a REST interface exposed. For example, all services in Windows Azure, data market place, Salesforce, etc. have support for REST services. With this CTP release, we are making it really easy for you to integrate RESTful services with BizTalk Server using the new WCF-WebHttp adapter. All the REST operations like GET, PUT, POST and DELETE are now supported natively. It gets better. We received community feedback during and post TechEd conference that there should be a way to expose REST services as well from BizTalk. We listened to your feedback. Along with consuming REST services we are also really excited to announce that you now have an early preview to exposing REST services from BizTalk Server as well in this CTP.


BizTalk Server in Azure Virtual Machine role

All the above enhancements are available right away for you to preview with BizTalk Server in Azure Virtual Machine role. Setting up a new BizTalk Server environment usually involves long lead time to procure hardware, get the dependencies in place, set up the server, etc. This means long lead times before you can get started with your new BizTalk Server environment. We are now leveraging the power of the cloud and the richness of Windows Azure to provide an experience where you can get up and running with your BizTalk Server environment in matter of minutes and move your existing applications to the cloud without making any changes. Furthermore, the CTP provide improvements to the BizTalk multi machine configuration and now you can do this using some basic configuration settings with the click of a button in a single machine, without having to go and configure BizTalk Server Group in each of the individual nodes.

Monday, 06 August 2012 12:49:28 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | Integration | ServiceBus | BizTalk | 2010 R2
# Wednesday, 11 July 2012

I am still in shock over this award and are very humbled in receiving it – over 3500+ entries and our story won. Thank you Microsoft, thank you Breeze team and thank you to our great customers in which all of this would not have been possible without you.

Application Integration


Cloud Partner

So today was the day at WPC2012 to receive the award up on stage here in Toronto. Not nervous at all Winking smile seeing we had a 2hr rehearsal yesterday.

What a time has this been so far at my first WPC!!! Compared to ‘techie’ conferences the dress standard is higher, different type of events and some great tech demos that are mind blowing (there was one on the keynote today where a partner had developed software around Kinect that created a 3d model of a person by moving the Kinect camera around the person, their software stitched the images together to produce a 3d model. Then the image/model was fed to a 3D printer and presto…out came the 3D person! Very cool)

So after having a photo down under the stadium we were to come out of I was ready to go….

Waiting in the tunnel:


My View from out in the middle:


Your view of the middle:



So all in all it’s been a great day, great time so far and well worth it. I was then fortunate enough to be invited to a Azure Round table discussion with Satya Nadella (President of Server and Tools) and what a lovely lovely lovely guy. He’s very switched on and a refreshing experience was had with myself and 6 others in the room.

He took away our Azure stories and feedback so let's wait and see what transpires – very inspirational stuff! Thank you Satya.



And I think I the Northern Hemisphere could be affecting me slightly…



More filming tonight and then I can relax!! Open-mouthed smile

WPC Day 2.

Wednesday, 11 July 2012 08:25:41 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [1] -
Azure | Integration | BizTalk | Breeze | Events | 2012 | General
# Friday, 08 June 2012

Hi guys, I gave an online presentation earlier this afternoon as part of Microsoft Readiness on Azure Virtual Networks.

I had the whole presentation prepared until the announcement, where I had to go to the drawing board and just share all this goodness that was pouring out in Azure V2.0.

Thanks to the healthy turnout for those online and to those who registered, then check the emails for a link shortly.

As promised here’s the slide deck guys that I used through my demos

Connecting Cloud and On-Premises Applications Using Windows Azure Virtual Network - Breeze_Mick Badran


Friday, 08 June 2012 21:24:57 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | Azure | Integration | ServiceBus | BizTalk | Insights | Events | Recordings | Readiness | Training
# Tuesday, 22 May 2012
Hi folks, recently I've been asked by several students on how to create Parties, Agreements, Profiles etc. via code in BizTalk 2010.

I played with this along time ago while at Redmond as BizTalk 2010 was in the process of being released.

So I've just rolled up my sleeves and provided a quick demo for you - the demo shows:
  1. How to enumerate and get at each of your TPM Partners.
  2. How to create Partners + Profiles within BizTalk 2010.
Note: I've only tried this on BizTalk 2010 (& needless to say I'm claiming 'works on my machine' :))

What we're talking about in BizTalk
This section here....

Show me the code....
Well the magic is found in this DLL -
C:\Program Files (x86)\Microsoft BizTalk Server 2010\Developer Tools\Microsoft.BizTalk.B2B.PartnerManagement.dll

- create a VS.NET 2010 app (for this demo I created a console app)
- we make a reference to the above DLL (we also need to reference
- set a connectionstring to our BizTalk Management DB, mine is BizTalkDB (as I rolled all the BizTalk DBs into one - for dev)
- start enumerating.

C# Looks like this-

static void Main(string[] args)
           //enumerate all the TPM Profiles in BizTalk
           var builder = 
               new SqlConnectionStringBuilder("DATA SOURCE=localhost;Initial Catalog=BizTalkDB;"
           + "Integrated Security=SSPI;MultipleActiveResultSets=True");
           var tmpCtx = TpmContext.Create(builder);

           Console.WriteLine("Connected to BizTalk Global Parties");
           var partners = tmpCtx.Partners;
           Console.WriteLine("Number of Parters:{0}", partners.Count());

           foreach (var ptr in partners)
               var profiles = ptr.GetBusinessProfiles();
               Console.WriteLine("{0} Business Profiles:{1}", ptr.Name, profiles.Count);
               foreach (var profile in profiles)
                   Console.WriteLine("\tProfile:{0}", profile.Name);
           if (bCreateProfile)
               createProfile("Breeze Partner #");

Point to Note: in the connection string I set 'MARS=true' just so we can enumerate several collections at once through the one context. When updating or saving new, partners and/or profiles I get errors and can't save through a MARs enabled connection. (love to hear if you have different luck)

Creating a Partner + Profile
// need to do this through a single threaded connection - no MARS
        private static void createProfile(string partnerName)
            partnerName += DateTime.Now.ToString("yyyyMMdd-hhmmss") + (new Random().Next(0, 65535));
            Console.WriteLine("Writing a new Profile for {0}", partnerName);

            var builder = new SqlConnectionStringBuilder("DATA SOURCE=localhost;Initial Catalog=BizTalkDB;Integrated Security=SSPI");
            var tmpCtx = TpmContext.Create(builder);
            var ptr = tmpCtx.CreatePartner(partnerName);
            var pname = "Breeze Profile-#" + DateTime.Now.ToString("yyyyMMdd-hhmmss") + (new Random().Next(0, 65535));
            var bp = ptr.CreateBusinessProfile(pname);
            bp.Description = "Created from Code";
            var pcol = new AS2ProtocolSettings("BreezeProtocolSettings");
And that's pretty much all there is to it folks, have a play around with the APIs for yourself - all undocumented of course.

Here's the Console App Solution I use (built for very demo purposes)


Enjoy Mick!
Tuesday, 22 May 2012 14:45:23 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | BizTalk | 2010 | 2010 R2 | Insights | Tips
# Saturday, 10 March 2012

I’m finally back home after a great trip to Seattle and to see some fellow VTSPs from all over the globe. Very switched on bunch.

I was fortunate enough to be asked to present and with Scotty at the demo controls, we steered a pretty good session.

Thanks to ‘all y-all’ whom was in the session and I hope you got as much out of it as I did.

Grab the Public Version of the slide Deck – HERE.

So as promised on the advice of John Brockmeyer here’s some current limitations of the Azure ‘Integration’ Services.

Feature decision making  with Hybrid IT Solutions-Mick_Scott_1

Feature decision making  with Hybrid IT Solutions-Mick_Scott_2

Feature decision making  with Hybrid IT Solutions-Mick_Scott_3

Feature decision making  with Hybrid IT Solutions-Mick_Scott_4

Feature decision making  with Hybrid IT Solutions-Mick_Scott_5

Feature decision making  with Hybrid IT Solutions-Mick_Scott_6

Feature decision making  with Hybrid IT Solutions-Mick_Scott_7

Saturday, 10 March 2012 15:40:35 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Azure | Integration | ServiceBus | BizTalk | 2010 | Events
# Thursday, 23 February 2012

While currently setting up a BizTalk 2010 developer machine, I’ve got to do a couple of others to do also for the team.

I figured ‘we surely can copy/clone this’ – here’s a handy link for SysPrep and we use files from the BizTalk SDK to work the magic.

Looking forward to it.


Thursday, 23 February 2012 08:09:47 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [3] -
BizTalk | 2010 | 2010 R2 | Insights
# Tuesday, 31 January 2012

Scotty & myself have had this error going for over 2 weeks now, and have tried many options, settings, registry keys, reboots and so on.
(we have had this on 2 boxes now, that are *not* directly connected to the internet. They are locked down servers with only required services accessible through the firewall)

Generally you’ll encounter this error is you install Azure SDK v1.6 – there has been people that have revert back to Azure v1.5 SDK when this error has been encountered and this seems to fix most of their problems.

Here I’m using netTcpRelayBinding, BizTalk 2010 but this could just have easily have been IIS or your own app.

Finding the outbound ports and Azure datacenter address space is always the challenge. Ports 80,443,9351 and 9352 are the main ones with the remote addresses being the network segments of your Azure Datacenter.

The problem: “Oh it’s a chain validation thing, I’ll just go and turn off Certificate checking…” let me see the options.
(this is what we thought 2+ weeks ago)


Here I have a BizTalk shot of the transportClientEndpointBehaviour with Authentication node set to NoCheck and None (you would set these from code or a config file outside of biztalk)

We found that these currently have NO BEARING whatsoever…2 weeks we’ll never get back.

Don’t be drawn into here, it’s a long windy path and you’ll most likely end up short.

I am currently waiting to hear back from the folks on the product team to see what the answer is on this – BUT for now as a workaround we sat down with a network sniffer to see the characteristics.

Work around:

1. Add some Host Entries

2. Create a dummy site so the checker is fooled into grabbing local CRLs.

Add these Entries to your HOSTs file.    corppki

Download and extract these directories to your DEFAULT WEB SITE (i.e. the one that answers to…..)
This is usually under C:\inetpub\wwwroot (even if you have sharepoint installed)

-------------------- The nasty error -------------------

The Messaging Engine failed to add a receive location "<receive location>" with URL "sb://<rec url>" to the adapter "WCF-Custom". Reason: "System.ServiceModel.Security.SecurityNegotiationException: The X.509 certificate chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. The revocation function was unable to check revocation because the revocation server was offline.
---> System.IdentityModel.Tokens.SecurityTokenValidationException: The X.509 certificate chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. The revocation function was unable to check revocation because the revocation server was offline.

   at Microsoft.ServiceBus.Channels.Security.RetriableCertificateValidator.Validate(X509Certificate2 certificate)
   at System.IdentityModel.Selectors.X509SecurityTokenAuthenticator.ValidateTokenCore(SecurityToken token)
   at System.IdentityModel.Selectors.SecurityTokenAuthenticator.ValidateToken(SecurityToken token)
   at System.ServiceModel.Channels.SslStreamSecurityUpgradeInitiator.ValidateRemoteCertificate(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
   at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback remoteCertValidationCallback)
   at System.Net.Security.SslState.CompleteHandshake()
   at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
   at System.ServiceModel.Channels.SslStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream stream, SecurityMessageProperty& remoteSecurity)
   --- End of inner exception stack trace ---
   at System.ServiceModel.Channels.SslStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream stream, SecurityMessageProperty& remoteSecurity)
   at System.ServiceModel.Channels.StreamSecurityUpgradeInitiatorBase.InitiateUpgrade(Stream stream)
   at System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
   at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at Microsoft.ServiceBus.RelayedOnewayTcpClient.RelayedOnewayChannel.Open(TimeSpan timeout)
   at Microsoft.ServiceBus.RelayedOnewayTcpClient.GetChannel(Uri via, TimeSpan timeout)
   at Microsoft.ServiceBus.RelayedOnewayTcpClient.ConnectRequestReplyContext.Send(Message message, TimeSpan timeout, IDuplexChannel& channel)
   at Microsoft.ServiceBus.RelayedOnewayTcpListener.RelayedOnewayTcpListenerClient.Connect(TimeSpan timeout)
   at Microsoft.ServiceBus.RelayedOnewayTcpClient.EnsureConnected(TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.CommunicationObject.Open(TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.RefcountedCommunicationObject.Open(TimeSpan timeout)
   at Microsoft.ServiceBus.RelayedOnewayChannelListener.OnOpen(TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at Microsoft.ServiceBus.SocketConnectionTransportManager.OnOpen(TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.TransportManager.Open(TimeSpan timeout, TransportChannelListener channelListener)
   at Microsoft.ServiceBus.Channels.TransportManagerContainer.Open(TimeSpan timeout, SelectTransportManagersCallback selectTransportManagerCallback)
   at Microsoft.ServiceBus.SocketConnectionChannelListener`2.OnOpen(TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiveEndpoint.Enable()
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiveEndpoint..ctor(BizTalkEndpointContext endpointContext, IBTTransportProxy transportProxy, ControlledTermination control)
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiver`2.AddReceiveEndpoint(String url, IPropertyBag adapterConfig, IPropertyBag bizTalkConfig)".

Tuesday, 31 January 2012 14:08:41 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
AppFabricServer | Azure | Integration | ServiceBus | BizTalk | 2010
# Sunday, 29 January 2012

Windows Azure cannot perform a VIP swap between deployments that have a different number of endpoints.

Which begs the question – what happens as part of an upgrade if you add-endpoints???

So clearly the VIP Swap operation is not a simple process.

Now off to delete some production instances so I can get the changes through… Disappointed smile

Sunday, 29 January 2012 21:23:24 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Azure | Integration | BizTalk
# Tuesday, 17 January 2012

Just came across this one – Microsoft of recently released the Storage Client source code.

Could come in handy!



Tuesday, 17 January 2012 15:45:19 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Azure | Integration | BizTalk | 2010 | 2010 R2
# Wednesday, 11 January 2012

Hi folks, we’ve set a cracking pace into 2012 and are in need of an additional team member.

If you love technology, we love technology and I’d love to hear from you to be part of my team.

You will be stimulated, constantly thinking and challenged – azure, integration, biztlak, sql, windows phone 7 and many other technology areas you’ll be exposed to. Integration is all about the glue we use to achieve the result.

If you’re keen for a chat check out the blurb -



Wednesday, 11 January 2012 23:32:16 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
AppFabricServer | Azure | BizTalk | 2010 | Breeze | BET | Dev | General | Jobs
# Monday, 09 January 2012

Thought I’d start off the year with a bang around Azure and what’s been happening in the land of Integration.


So I contacted a Conor Brady to see what was cooking.


The user group is meeting next Thursday 19th Jan 2012.


Here’s the blurb…..




'Integration using Windows Azure Application Integration Services'

Local Integration & Training guru Mick Badran CTO at Breeze Training & Consulting and veteran BizTalk Server MVP will present on 'Integration using Windows Azure Application Integration Services'

The presentation will show how to use Microsoft Windows Azure to be the cornerstone of your integration strategy, whether it’s a small piece or larger deployment. Find out what new tools you can use to extend your existing toolbox and the best way to use them.

This session will cover:

- Strategies on complementing your on-premise <-> cloud integration and what tool to use when.

- High availability solutions with a demo of fault tolerance.

- Casting an eye what’s around the corner to new features coming out of Azure Labs such as EAI, EAI Bridges, EDI – azure style and new XML over HTTP endpoints.




Here’s the link to REGISTER -


See you there!



Monday, 09 January 2012 15:18:16 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
AppFabricServer | Azure | Integration | BizTalk
# Saturday, 17 December 2011

Well folks – the appfabric labs have come out with a real gem recently.

In CTP we have:

  • EDI + EAI processing
  • AS2 http/s endpoints
  • ‘Bridges’
  • Transforms

and of course the latest version of

  • ServcieBus, Queues and Topics.

To get the real benefit from this ‘sneak peek’ there’s a bit of setup required. To those familiar with BizTalk there’s a few EDI screens declaring parties/partners and agreements you’ll have seen before.

To get cracking:

  1. Update your local bits with the latest and greatest - Installing the Windows Azure Service Bus EAI and EDI Labs - December 2011
    Part of this install is to install the Service Bus Connect component, which installs the BizTalk 2010 LOB Adapter pack.

    So this is really quite interesting. As the WCF LOB Adapter SDK provides a framework for developers to build out ‘adapters’ to connect systems/endpoints through a sync/async messaging pattern.

    The BizTalk Adapter Pack 2010 is the BizTalk Team set of adapters built on top of the WCF Adapter Framework. The BizTalk Adapter pack includes:
    - SQL Server Adapter. Hi performance sql work, notifications, async reads, writes etc.
    - SAP Adapter – uses the SAP Client APIs (under the hood) to talk directly to SAP. Very powerful
    - SIEBEL Adapter
    - Oracle DB Adapter
    - Oracle ES Adapter

    These adapters are exposed as ‘WCF Bindings’ with BizTalk or a small amount of code, allows you to expose these adapters as callable WCF Services.

    What does this mean in our case here?
    If you think about your on-premise Oracle system, we now have a local means of accessing Oracle and we can then push the message processing (e.g. a new order arrived) into our ‘cloud’ bridge where we have the immediate benefit of HA + Scale. Do some work there, and spit the result out any which way you want. Maybe back down to on-premise, or in a Queue or to Azure Storage.

  2. Sign up to AppFabricLabs – and provision your ‘servicebus’ service.
    This provides your EDI/EAI relay endpoints and also provides a way for you to listen/send requests to/from the cloud.
  3. Here I have used mickservices as my ServiceBus namespace.
    (I created a Queue and a couple of Topics for later use – not really needed here)
    Note: grab your HIDDEN KEY details from here – owner + <key#>
  4. From within the Portal Create a Queue called samples/gettingstarted/queueorders

  5. Register at the EDI Portal
    Even though this says ‘EDI’ think of it as your sandpit. It’s where all your ‘widgets’ live that are to run in Azure Integration Services.

    The registration form had me stumped for a little bit. Here’s the details that work.


    Notice my servicebus namespace – just the first word. I previously had the whole thing, then variations of it.
    Issuer Name: owner
    Issuer secret: <the hidden key from above>

    Click save/register and you should be good here.
  6. Once this is done – click on Settings –> AS2 and Enable AS2 message processing (which is EDI/HTTP – you might be lucky enough to get the msgs as XML, but most times no). This will create some endpoints for you b2bgateway… style endpoints.

  7. At this stage, have a look under Resources and you’ll notice that it’s empty. But…they have Schemas, Transforms and Certificates. We’ll come back to that later.
  8. Let’s head to Visual Studio 2010 with the updates installed and open up the Sample Order Processing project.

    I installed my samples under c:\samples

    If all opens well you should see:

    Note: there’s a couple of new items here: (expand out artifacts)
    *.bcs – Bridge. There’s a MSDN Article describing these – I was like ‘what???’. Basically these are a ‘processing pipe’ of which various operations can be performed on a message in stages. These stages are ‘atomic’ and they also have ‘conditions’ as to whether they *need* to be applied to the said message. So a bridge could take a message, convert it to XML and broadcast the message out to a Topic.

    Opening up the designer – it gets pretty cool I must say!!!

    Note the ‘operations’ on the LHS. I must have a play with these guys Smile 
    Another thought – how extensible is this? I’d bet we could write our own widgets to throw on the design surface as well.

    By double clicking on the BridgeOrders component, you can see the designer surface come up with the ‘stage processing’.


    Here you can see the ‘bridge’ (I wonder if that term will last till the release) will accept only 2 types of message schemas – PO1 + PO2. Maps them out to a more generic PO format.
    The map – XMLTransform from my initial testing only applies one map, the first one that matches the source schema (this is the same as BizTalk).

    Close the bridge view down and leave the BridgeConfiguration open.
  9. Click anywhere on the white surface of the BridgeConfiguration and set your Service Namespace property from the Properties window (this guy was hard to find!!)
    Put <your service namespace> you created originally.
  10. Save and click Deploy and a Deployment window comes up – put your details in from above.

    After deployment completes, keep an eye on the Output window as this has all the URLs you’ll need for the next step. In particular the BridgeOrders.

    Feel free to go back to your Azure Portal –> Resources and see your deployed bits in there, Schemas, Transforms etc.

  11. Running what you’ve built – sending a message to the ‘bridge’ (here I’ve borrowed info from the ‘Readme.html’ in the sample project folder)
    We don’t need to setup the whole EDI Trading partner piece. – just send messages to a restful endpoint – aka the bridge.
    1. From the samples folder locate the Tools\MessageSender project. (you may have to build it in VS.NET first)
    2. from a command prompt run messagesender.exe

      In my case it looks like this:


      Took me a little to get this originally, make sure all your VS.NET stuff is deployed properly.

      So effectively we have sent PO1.xml to our ‘Bridge’ and it’s been accepted, validated and transformed into ‘something else’ and popped onto a Queue called Samples/gettingstarted/QueueOrders.

      We will now get the message Reader to Read it.
  12. From under the Samples\Tools folder locate the MessageReceiver project and build if required.
  13. From a command prompt at that location, run the following to Listen to the queue


Wrapping up -

Here is obviously a quick walk through of what’s possible, performance, scale and throughput are other measures that we haven’t got here – given it’s CTP/Labs we’re not quite ready for that conversation.

BizTalk adapter pack will expose out for e.g. your SAP system to a wider audience and imagine having restful WCF services to call that provide you customer data in the format you want…or better still…deliver it straight to you!
(currently in BTS 2010, the adapter pack is licensed separately, it’s part of BTS standard or enterprise. BTS2009 it *was* licensed separately for RRP $5K. Maybe we’ll see this as a separate component again.)
Or you could do like the SharePoint team and write a brand new WCF Adapter (‘connector’ in their terms) – ‘Duet’ and spend 18 months doing so.

Some things I’d like to see here is a Rules Processor or Engine – being a long long BizTalk fan, the rules engine is a massive strength of any loosely coupled solution. The majority of BizTalk solutions I come across don’t employ any rules engines…or better still, Windows Workflow 2,3+ (but not 4 or 4.5) has a rules ‘executor’ which is very powerful in it’s own right. Who’s heard or used the Policy shape?

Given that this is a sneak peak at what is on the horizon, this is definitely a space not to miss.

Get those trial accounts going and enjoy!

In particular I’d like to call out Rick’s Article (well done Rick!) for a great read on this space also.


Saturday, 17 December 2011 22:08:00 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Async | BizTalk | 2010 R2 | BizTalk Adapter Pack | SAP
# Monday, 12 December 2011

Hi folks, as you may/may not have been aware these are the core corner stone technologies of the MS Integration Stack.

The teams have been busily plugging away and coming up with the new versions – 4.5 corresponding to .NET 4.5 framework.

Here’s some links that describe what’s new from MS Santa & his elves:

  1. What's New in Windows Communication Foundation 4.5
    1. New Items I found of note are:
      • New Service Transport Default values – keep an eye on these.
      • Improvements from VS.NET 2011 – validation , better intellisence support.
      • Streaming improved – true async (yay!)
      • WebSocket support – through NetHttp(s)Binding
      • Single WSDL file generation with ‘?singleWSDL’ (which is pretty handy)
      • Self hosted + II hosted allow you to get to ServiceHost from code for dynamic configuration.
      • Binary Encoder supports compression!! – this is generally gzip compression.
      • My personal favourite – UDP support
  2. What's New in Windows Workflow Foundation in .NET 4.5
    1. New Items of note are:
      • New Activites – NoPersistScope (possible previously but we needed to write code)
      • WF Designer improvements – several here, but the ‘Outline view’ looks to be easier to work with.
      • C# Expressions – where’s the F# ones Sad smile ??
      • Designer Annotations – add your own comments to keep control of the jungle that is built.
      • WF Versioning – use WorkflowIdentity & DefinitionIdentity to define the version. WorkflowServiceHost supports multiple versions of the same WF. All pretty cool.
      • WF Designers can still be rehosted – I’ve used that many a place.
      • Contract First Development – ticks the boxes.
    2. WF Rules – still didn’t make the cut. There is a sample for WF4 using a custom Activity calling back to WF 3.5 Policy4 it’s called. It uses ‘interop’ back to WF3.5 and is found here -
      1. Will have to check out perf in this new land on these rules.
  3. Async CTP – while this didn’t make the ‘whats new’ list, it certainly does deserve a mention here.
    Over the last year I’ve built some pretty serious F# projects, and F# has the async support through and through the language. After over coming the challenge of learning it, the Async functionality is absolutely brilliant!!! F# does a great job in being able to turn a non-async chunk of code/method/class into an async one with by using the keyword async and a !. It’s straight forward from that aspect.

    It’s great to see the C# & VB.NETs being able to use the same fundamentals (albeit not as slick IMO Winking smile). – see a previous POST -

    As developers we sit here and say – what do I need this for? My code runs fine as it….and yes for the most part of what we do on our machine it does. This technology really comes into it’s own when you want consistent throughput from a solution with 1 person or 10000 concurrent people using it. That’s the difference.

    To use it:
    1. Get VSNET 2011 (as it requires a new compiler)
    2. Use ASYNC CTP (refresh3) with VSNET2010 SP1
  4. Check it out from here -
Monday, 12 December 2011 12:00:52 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | Async | BizTalk | Dev | .NET Framework 4.5
# Friday, 09 December 2011
Friday, 09 December 2011 10:57:40 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2010 | 2010 R2
# Thursday, 24 November 2011


So your SQL 2012 is US$6.8K/core which roughly equates to 4 cores = a SQL 2008 Ent license.

How many DB servers have 4 cores? I wonder if there’s a way now to limit the cores then that SQL 2012 will use on for e.g. an 8 or 12 core machine.

Will this change by RTM?? I wonder.

(on a side note – way back when ‘hyper threading’ originally came out, when 1 CPU looked liked ‘2’ to the O/S, MS wanted to license per visible CPU. Intel & AMD at the time said if you do that we’ll take the feature out…nowadays we call them ‘CORES’ and looks like the discussion has come full circle)

Thursday, 24 November 2011 15:41:44 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | Events | General
# Wednesday, 05 October 2011

Hi folks, from a previous set of posts, we’ve been running a series of Azure Training Sessions.

Here’s the online links to the recordings that many of you have asked me about. Enjoy.

The links below should take you to the landing page, from the click on the View Online button.




Wednesday, 05 October 2011 11:09:03 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | Azure | BizTalk | Events | Recordings | Readiness
# Friday, 09 September 2011

A recent project my team has worked hard on has come to fruition . This was a challenging project in these key areas:

  • High volume – benchmarks of 20000 concurrent requests/sec through the system.
  • Low latency – time is critical as price and market changes going through.
  • Scalable – different data centers, different regions in the world.

Seemed like a great challenge…. and we built some great componentry through it, utilising the best of many worlds.

Centrebet have released a press release about their Microsoft Azure Cloud, Application Integration solution. This is a tremendous success story for such a well-known Australian brand.

Centrebet deploys app integration platform

Friday, 09 September 2011 14:22:27 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2] -
Azure | BizTalk | 2010 | BizTalk Adapter Pack
# Thursday, 08 September 2011

We had an action packed 2 days hammering ‘Azurey’ (Azure) discovering all the concepts and most importantly I was trying to get the Why point across.


Why should we use Azure? When should we use it? Do I *need* to use it? Where can it help me for little effort… etc.. etc..

The students walked out with a trial Azure account which enabled them to continue working on their environment as and when they could.

We had some great discussions and some good fun was had by all.

I thought I would make my slides available – UPDATED - (case sensitive) – ENJOY!



Thursday, 08 September 2011 17:52:20 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | BizTalk | 2010 | 2011 | Training
# Thursday, 11 August 2011

What a place…the Gold Coast!!!

Any chance to get back there… and this year is looking to be a fantastic 2 day pre-conference training together.

In the training there’ll be no MS speak!! I promise “We’re all in…” …(washing mouth out with soap).

First things first – everyone you speak to will pronounce ‘Azure’ differently (I once had 3 martial arts instructors all speak their own flavour of ‘Korean’ to me).
You’ll get:
1) ‘Aaaaaazzzzre’
2) ‘Azzzz-cloud’

Now here in Australia we’re standardising (our English-Australian) to Azurey!

Azurey is our official term,
which fits alongside ‘Timmy’, ‘Barbie’ and ‘Daveo’… but not Shazza.

What I want to explore with you are all the different options and components that you could utilise. Having been through several cloud based solutions and building a cloud based solution over the last 2 years.


So we can use a combination of the available technologies to alleviate some of the in-house problems (e.g. firewall settings, h/w order and provisioning, server space) while still maintaining *very* good ownership over it.

One thing is clear right now – with this new landscape the focus has returned to the Developer to be mindful of what resources they use and HOW they use them.

The price of your solution starts right now from the ground up with the Developer!
(Previously we’ve had limitless memory, disk, cpu, connections, sockets, select * from customers… – developers rarely care)

So the cost model – What do you get charged for?
(short answer – nearly everything)

If you can design a solution with:
1) no use for SQL Azure –as it currently costs a bomb to host a DB.
You could use – SQLCE locally or Azure Storage (Table, Queue, blob) which is cheap as chips.

2) limit your Service Bus Connections – both client and server count as a connection. The connections are averaged out over a day/month and are sampled every 5 mins, but you certainly don’t want to rack up 100s of connections. A cheaper alternative is to expose a WCF Endpoint (via a worker role) and have a process communicate with the Servicebus endpoint handling the requests. This counts for 2 connections (1 client, 1 server) and is well within the 5 pack.

3) Only data out is charged – not in.

4) Compute VM sizes limit bandwith – across all your compute VMs e.g. small, there is bandwidth limitations that is enforced whether you have 1 or 10 VMs. Be mindful of that.

5) We can ‘monitor’ our cloud machines and even get back perf counters on each – just to give you that feel good feeling.


Well anyway I must go tweak some F# (best thing I’ve seen in a long while…another story)

Here’s the official story @ TechEd – hope to see you there folks!

Official Blurb!

How “the Cloud” can help you integrate – Microsoft for Developers


With the excitement of technology moving towards “the Cloud” come and learn exactly what this means to your business and how your development projects can leverage the Windows Azure Platform without re-architecting your environment. Should you invest in private cloud, move your application to the public cloud, choose a hybrid approach or keep the application on-premise?


This two-day development workshop led by renowned Integration Experts provides delegates with an early opportunity to gain insight and hands-on experience with the Windows Azure Platform including Windows Azure AppFabric, SQL Azure, Windows Server AppFabric and BizTalk AppFabric Connect.


This developer workshop focuses on maximising your existing integration technology investment for an on-premise solution, including architectural design considerations, real world tips and techniques and hands-on experience with using the integration tools available today.


Delivered through workshop style presentations and hands-on lab exercises, this technology focused pre conference training will assist with designing and developing your company roadmap to the Cloud.

Thursday, 11 August 2011 13:06:03 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
AppFabricServer | Azure | BizTalk | 2010 | TechEd | 2011 | Training
# Wednesday, 22 June 2011
So you've got an on-premise WCF Service and you're going to expose the endpoint to the Cloud via ServiceBus.

I'm with a client excited about the prospect of Azure and using ServiceBus for connectivity for our local WCF Services.

Remember ServiceBus is touted as the firewall friend communications mechanism.

Should be pretty easy right? - just follow an article like -

If you are on a Secure Server - i.e. one that doesn't have default open slather access to the internet by default you will fall well short.
(nb: the Azure ServiceBus documentation is a little thin here also. ie no mention whatsoever)

You will get 'can't contact' and many others....So....

After much head banging Scotty sat down one rainy day and looked at the full conversation to establish a connection to the cloud via Service Bus

NB: XXXX is your ServiceBus endpoint name you configured in the Azure Management Portal earlier. This endpoint lives in the Azure Singapore Data Center

When ConnectionMode = TCP (Hybrid)
1.       CNAME lookup for > returns
2.       Connect to (port 9350)
3.       CNAME lookup for returns
4.       Connect to (port 443)
5.       CNAME lookup for returns
6.       Connect to (port 9351)
When ConnectionMode = Http
1.       CNAME lookup for returns
2.       Connect to (port 443)
3.       CNAME lookup for returns
4.       Connect to (port 80)
Also, when we lock this down to https endpoint step 4 above will be over 443
So the complete firewall rules to support both modes should be:
· (9350-9353)
· (9350-9353)
· (443)
· (443)
· (80, 443, 9350-9353)
· (80, 443, 9350-9353)
Note the difference between and the others,

Hopefully you won't get caught out at a client site asking for firewall changes, one at a time as you discover them.


Mick + big thanks Scotty for the details.

Wednesday, 22 June 2011 12:24:38 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2] -
AppFabricServer | Azure | BizTalk | 2010 | BizTalk Adapter Pack | Tips
# Thursday, 02 June 2011

The product team have been busy folks, pick up the update after the milk and eggs….

Thursday, 02 June 2011 16:26:30 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2010
# Tuesday, 29 March 2011

Hi all, the BizTalk team has been busy and now the BizTalk 2010 exam has been officially released.

I’m going to sit it in the next few weeks and get a taste of it.

Good luck all and what a great day this is – well done Team!


Audience Profile

Candidates for this exam typically work as a BizTalk developer in an organization that has a need to integrate multiple disparate systems, applications, and data as well as the need to automate business processes by using BizTalk Server.


Candidates should have a solid understanding of fundamental BizTalk concepts around the core messaging engine and building business processes using orchestrations.


Candidates will have some exposure to larger-scale multi-server solutions and deployment/management familiarity. This core knowledge is required for BizTalk 2006 R2, 2009, and 2010. In addition, core knowledge of Windows Communication Foundation (WCF) and Electronic Data Interchange (EDI) is also required.

Candidates should also have at least two years’ experience developing, deploying, testing, troubleshooting, and debugging BizTalk Server 2006 and later solutions across multiple projects and have experience using the Microsoft .NET Framework, XML, Microsoft Visual Studio, Microsoft SQL Server, Web services, and WCF while developing BizTalk integration solutions


Credit Toward Certification

When you pass Exam 70-595: TS: Developing Business Process and Integration Solutions by Using Microsoft BizTalk Server 2010, you complete the requirements for the following certification(s):

Microsoft Certified Technology Specialist (MCTS): Microsoft BizTalk Server 2010

Note This preparation guide is subject to change at any time without prior notice and at the sole discretion of Microsoft. Microsoft exams might include adaptive testing technology and simulation items. Microsoft does not identify the format in which exams are presented. Please use this preparation guide to prepare for the exam, regardless of its format.

Tuesday, 29 March 2011 10:58:43 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2010 | Insights
# Friday, 18 March 2011

April 4th folks…April 4th.

Quick background: The BizTalk team have been travelling the globe on a ‘Microsoft Integration Roadshow’ covering countless countries and cities.

On April 4th the bus stops in Sydney. Here’s the official blurb and I’ll be presenting – let me know if there’s anything you’d like covered in my demo and I’ll try and accommodate.









Monday, 4th April, 2011


The Menzies Sydney

14 Carrington Street,

Sydney NSW 2000















Sydney  |  Monday April 4th, 2011


Microsoft Integration Road Show

Worldwide events running Feb - Apr 2011


Enterprises today typically work in a fairly heterogeneous environment with disparate systems. Connecting the systems and applications sitting across the diverse platforms and tying them to the business processes has become one of the top priorities for most organisations. As they continue to evolve towards a cloud strategy - to take advantage of the economic and scale benefits - the need to have a robust Integration Platform escalates. Microsoft offers a tremendous opportunity for customers to make a paradigm shift in the way they do business to maximize their benefits and profitability whilst maintaining an optimized cost structure.


Don’t miss this exciting opportunity to learn how we can help you beat the demands of today’s difficult economy, about our commitment to BizTalk Server and how we plan to continue to innovate in the integration space helping you begin your journey to the Cloud.


8:30am – 9:00am:  Light Breakfast and Registration

9:15am – 10:00am: Keynote

“Innovations in Integration – Begin your journey to the Cloud”

Speaker: Paul Larsen

Group Program Manager, Microsoft Corporation

10:00am – 11:00am:  Customer session

Caltex is Australia's leading oil refiner and supplies products via a network of pipelines, terminals, depots and the company-owned and contracted transport fleet. Caltex made the business decision to acquire many of their independent resellers – who were spread across every state of Australia.

In this session you’ll learn how Caltex COSMOS project integrated those different reseller businesses into a single operating entity now called Caltex Petroleum Services.

Robin Brown, IT Project Manager, Caltex Australia

11:00am – 11:30am:  Break

11:30am – 12:30pm:  Technical Drilldown

Mick Badran, CTO, Breeze

This session is for those that want to delve into the technology to see the latest integration best practices and products including BizTalk Server 2010, AppFabric and Azure.


The Menzies Sydney

14 Carrington Street,

Sydney NSW 2000

Target Audience
CIO/TDM/BDM, IT Directors/Managers, Architects, IT Pro & Developers

To Register
Click here to register. Space is limited so register today to ensure your attendance at this event.




Microsoft confidential information. © 2011 Microsoft Corporation. All right reserved.clip_image007








Friday, 18 March 2011 09:54:47 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2010 | Events | BizTalk2010
# Thursday, 17 March 2011

As you may/may not know native Restful support is a little lacking in BizTalk 2010.

A ‘little’ massaging is needed.

By plugging in a couple of classes into the WCF stack, BizTalk sits in the middle quite nicely.

Netin Mehrotra from MS has come to the rescue – he provides a great walk through article and sample code to boot.



Enjoy guys.

The alternative is to create your own WCF Service in Windows Server AppFabric hosted in IIS and then you’ve still got the problem of ‘how’ to talk to BizTalk.

Choices…choices… :)

Thursday, 17 March 2011 14:21:25 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
AppFabricServer | BizTalk | 2010
# Sunday, 27 February 2011

Hey folks, Alan Smith and myself (much more Alan this time :) have brought the series back for another version and another year!
Myself and many other Biztalk MVPs and some great BizTalk-ers with fantastic real world experience share their knowledge.

As always the webcast series is designed to be an easy watch, level 200 ish and I’ve even had some folks reporting they watched the needy webcast on the way to clients to talk about for e.g. an EDI solution.


BizTalk 2010 Light And Easy Series – here’s where you’ll find the series
(Alan is in the process of uploading them)

  integration with BizTalk 2010 using the BizTalk WSS Adapter.

I created a 2 part episode – the first one deals with explaining the SharePoint 2010 environment, and the 2nd one deals with integration from BizTalk.

Here’s my recordings, PPTs and sample files.

Title WebCast PPT Description
Integration to SharePoint Part 1  Part 1 (110MB)  (2MB)

You will be taken through how SharePoint works, what a user sees, lists and investigating the new APIs present with SharePoint 2010.

This webcast talks about different techniques and how to integrate with SharePoint 2010 efficiently.

Integration to SharePoint Part 2  Part 2 (60MB)  (2MB)

This webcast deals with the installation and setup of the OOTB WSS BizTalk Adapter; examining various Send and Receive configurations within BizTalk and finally you’ll be introduced to a Custom SharePoint 2010 Adapter that uses the SharePoint ClientOM to talk to SharePoint 2010.

Sample Code for Part I and II  




Sunday, 27 February 2011 00:27:37 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [4] -
BizTalk | 2010 | Light and Easy Webcasts
# Thursday, 24 February 2011

Over the past months I’ve been reviewing a new BizTalk 2010 book – BizTalk 2010: Integrating Line of Business Systems

There’s a high caliber line up of Author’s all busily sharing their knowledge.

Kent’s got all the details here -

Looking forward to when it hits the shelves.

Well done guys – looking great from what I’m reading :)


Thursday, 24 February 2011 21:54:17 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2010
# Sunday, 09 January 2011

I hope you’ve all been well over the break and enjoying the ‘thinking time’ – I’ve been keeping one ear to the ground and just on the lookout for new bits. Here’s one….

The BizTalk team have been busily working hard over the break and produced another issue of BizTalk at it’s best – BizTalk Hotrod.



Specifically this issues talks about:

  • Async communication with BizTalk across WCF-Duplex messaging.
  • Calling SAP RFCs from BizTalk – all you need to know.

Guys – the biztalk hotrod mag set is some of the best technical biztalk discussions around, grab the previous issues and add them to your internal networks. A must.

Enjoy and talk to you soon.


Sunday, 09 January 2011 22:24:17 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2010 | SAP | Insights | Tips
# Wednesday, 15 December 2010

There I was the other day slowly building up a new bts project in VS.NET.

You know the way it goes, add some schemas, maybe maps and before long you have a couple of helper assemblies and maybe a custom pipeline component or 2.

The problem is that the C# Assemblies don't automatically get added to your BTS Application in the BTS Admin console.

Usually I'll drag down one of my mammoth powershell 'build all' scripts from a previous project and customise this for the current project. 2 days later I usually stick my head up to see which day it is, and typically as we developers do, build a ferrari for something that a skateboard would do.

So simply put - add the following line to your Post Build Events section on your project in VS.NET.

btstask AddResource -ApplicationName:"Micks Demo App" -Type:System.BizTalk:Assembly -Overwrite -Options:GacOnInstall,GacOnAdd -Source:"$(TargetPath)" -Destination:"%BTAD_InstallDir%\$(TargetFileName)"

Ahhh...too easy.

Enjoy only a few more sleeps till Santa!


Wednesday, 15 December 2010 16:11:08 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [2] -
BizTalk | 2010 | Tips
# Tuesday, 12 October 2010

Today I decided to crack open the BTS 2010 SharePoint WS Adapter to see if it takes advantage of the great new interfaces exposed by SharePoint 2010, specifically Microsoft.SharePoint.Client.dll and Microsoft.SharePoint.Client.Runtime.dll.

At a glance, the benefits of this new Client APIs are:

  1. Runs on a non SharePoint installed box.
  2. Lightweight and flexible – only get back what you ask for. As opposed to the classic SP Server API that populates the SPWeb collection (for e.g.) only if you just want the title field and not 10MBs worth of other data.
  3. Batch approach – load up several commands and batch them over the wire when needed.
  4. Supports both read/write from the client back to SP Server.
  5. Uses XML and JSON over the wire – small and fast.
  6. We can’t do *everything* we can on the Server Side – e.g. Service Application management, i.e. kicking off a search index crawl.

A little piccy of what’s going on:


Some classic piece of code to achieve document library reading:

1 static void Main(string[] args) 2 { 3 ClientContext ctx = new ClientContext("http://intranet"); 4 Web web = ctx.Web; 5 List docs = web.Lists.GetByTitle("Shared Documents"); 6 ListItemCollection items = docs.GetItems(CamlQuery.CreateAllItemsQuery()); 7 ctx.Load<Web>(web); 8 ctx.Load(docs); 9 ctx.Load(items); 10 ctx.ExecuteQuery(); 11 Console.WriteLine("The list has {0} items.", docs.ItemCount); 12 foreach (ListItem item in items) 13 { 14 Console.WriteLine("Item:{0}", item["Title"]); 15 } 16 //delete an item. 17 //items[1].Update(); 18 //items[1].DeleteObject(); 19 //ctx.Load(items); 20 //ctx.ExecuteQuery(); 21 Console.ReadLine(); 22 }

Note: Line 10 is where all the magic happens – if you imagine, we load up the client OM classes and the props etc. are all ‘blank’ until we do an ExecuteQuery() which then populates what we ask for.

The above sample is pretty simple showing how to connect to a document library on a ‘remote’ server (security allowing – I didn’t add a ctx.Credentials=… line in the above, but all possible).

So let’s move on a crack open the BTS 2010 SharePoint WS Adapter…

Just before we go there I’d like to point out that the Microsoft.SharePoint.dll (aka Server API) has the ability to connect to remote servers, although the code needs to be executed on a machine that has a local SharePoint install.


SPSite site = new SPSite(“”);

SPWeb web = site.OpenWeb();

What I am trying to avoid with the BTS SharePoint adapter is the need to have the ‘BTS Web Service’ component installed on remote Farms. Just complicates the issue far too much with the SharePoint admins.

The BTS 2010 Story

I setup and installed the BTS SharePoint WS Adapter through the Configuration.exe tool successfully.

Essentially this tools runs a ‘web site check’ to make sure SharePoint is successfully setup and installed.


To make this happen, the configuration tool runs either:

  1. Microsoft.BizTalk.KwTpm.StsOmInterop3.exe – for WSSv3
  2. Microsoft.BizTalk.KwTpm.StsOmInterop4.exe – for WSSv4

to determine the site as follows:


Note: The URL and note the URL in the BTS Configuration above. Here I’ve already configured the adapter and I’m just showing the commands that the configurator runs behind the scenes.

Once configuration is complete you will see a new virtual directory added  to your selected site e.g. http://intranet.

As shown in IIS Manager.


Depending on the SharePoint version this virtual directory will map to:

  1. C:\Program Files (x86)\Microsoft BizTalk Server 2010\Business Activity Services\BTSharePointV4AdapterWS
  2. C:\Program Files (x86)\Microsoft BizTalk Server 2010\Business Activity Services\BTSharePointV3AdapterWS (previous bts2009 adapter)

A Basic BTS/SharePoint picture

Essentially the BTS SharePoint Adapter consists of 2 parts:

  1. A BTS Adapter that talks to the BTS SharePoint WS. This is a ‘classic’ adapter and does not talk the newer WCF framework (which does have advantages and disadvantages)
  2. A BTS SharePoint WS – this does all the work against the SharePoint library and talks local SharePoint APIs.



Let’s look closer at the BTSharePointV4AdapterWS folder


- this folder, or addition needs to be available locally to whichever SharePoint site you are calling through the OOTB BTS SharePoint adapter, even though the SharePoint APIs support remote Servers.

- the bin folder has the Microsoft.BizTalk.KwTpm.WssV4Adapter.WebService.dll which is 78kb.

I wanted to find out whether this DLL used the new SharePoint Client APIs when meant having a peek at the ‘references’ of this DLL in IL.

Dissassembling Microsoft.BizTalk.KwTpm.WssV4Adapter.WebService.dll

Using .NET Reflector I was able to get this picture…


NOTE: on this list there is Microsoft.SharePoint, but not Microsoft.SharePoint.Client.dll
(this is not looking good…could be late bound, but… I doubt it)

Digging into the actual WssAdapter class we get the following of note:


The GetDocuments(string, string, string, Int32, DocExtOfficeIntegration)… is a key method.

The APIs show that the 1st parameter is a siteUrl (and following the implementation code through) which has the potential to point to another SharePoint server to make the connection (in the RequestInfo class if you’re going to dig yourself :))
Note: the PREVIOUS version, BTS2009 has the same Interface/Method signature and it requires the BTS SharePoint Adapter WS to be deployed on the remote SharePoint Server, even though the signature looks as though it will support the remote server.

So in conclusion the BTS SharePoint Adapter WebService has:

  1. NOT got any newer SharePoint Client API code within in.
  2. The ability to contact a remote server through the WebService APIs.
  3. But depends on whether the BTS Adapter will pass the ‘remote’ URL to the ‘local’ WS, or will the Adapter try to contact the remote SharePoint Server directly looking for a WS there???

I’m thinking it’s the latter…

A little more to unravel the SharePoint mystery…

Tuesday, 12 October 2010 13:08:00 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2010 | Insights | SharePoint | SharePoint | 2010
# Tuesday, 28 September 2010


BizTalk 2010 hit the stands this week and quite prominently up on the BizTalk 2010 site there’s info about vNext.

The team has been busy and The BizTalk 2010 Developer Edition is free! -

Lots of info up on the site – What’s New

  • During this What’s new, you’ll see that there is ‘enhanced Trading Partner Management’ which typically gets flagged under EDI based solutions. In a later post I’ll show you how to work with Trading Partners from any solution, and the bit that has me excited is that we now can store an arbitrary set of name/value pairs against each Trading Partner (and their individual agreements).


Initial Training – BizTalk 2010 Training Kit -

The BizTalk Server 2010 training kit includes labs and training videos to help you learn about the new features of BizTalk Server 2010.
This training kit contains the following content:
Hands On Labs

  • Creating BizTalk Maps with the new Mapper
  • Consuming a WCF Service
  • Publishing Schemas and Orchestrations as WCF Services
  • Integrating with Microsoft SQL Server
  • Integrating using the FTP Adapter
  • Developers - Create a Role and Party-based Integration Solution
  • Exploring the New Settings Dashboard
  • Monitoring BizTalk Operations using System Center Operations Manager 2007 R2
  • Administrators - Create a Role and Party-based Integration Solution


Enjoy and stay tuned for the integration unraveling in the near future… :-)

Tuesday, 28 September 2010 21:51:07 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2010 | Insights
# Sunday, 19 September 2010

With Microsoft close to releasing BizTalk 2010 (the 7th release) your local BizTalk techies & trainers have put our heads together – big thanks to BizTalk Bill for being instrumental in getting this off the ground!


Starting from October the fun begins. BizTalk 2010 training will be on in a city near you!

The event will be a Saturday event in many cities around Australia and New Zealand showcasing the new features of BizTalk Server 2010.  The day will consist of short talks about the new feature and then hands on labs to allow you firsthand experience with the new features.

Cost: $200 per person (to cover a couple of flights and food)

Further details can be found HERE – BizTalk Saturday


Saturday, October 16, 2010


The agenda for the day can be found here

To Register for the event click here

Sunday, 19 September 2010 09:40:56 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2010 | Events | Training
# Monday, 30 August 2010
Hi folks, an email floated across my desk from Tim Wieman today tell me about a new AppFabric CAT blog.

Thanks Tim.
--- snippet ---

Recently as part of building the Windows Server AppFabric Customer Advisory Team (or AppFabric CAT for short).  This team brings under one “virtual roof” others like me from the team formerly known as the “BizTalk Rangers”, plus other technology experts in Windows Server AppFabric, AppFabric Caching, WF, WCF, StreamInsight, EF, etc.

The new team blog is our commitment to deliver technical guidance and share best practices with the rest of the world-wide community.  We are also working on the AppFabric CAT portal, a brand-new web site that will serve the purpose of the “one-stop shop” for all the great deliverables that our team will be producing for the community going forward (similar to
Please check out our team blog at

Monday, 30 August 2010 13:50:58 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
AppFabricServer | BizTalk | 2010
# Friday, 27 August 2010

Integration - Course Agenda

Well as TechEd 2010 draws to a close this year in Australia, I had a great time getting away from it all and certainly experiencing a couple of firsts. For me this was one of the better TechEd’s I had been to – the sessions were a little light on, but the labs + exams made up for that big time.

So Scotty and I developed an Integration Pre Conference Training Session aimed at working out which MS Integration technology to run where – unscrambling the mess. We got a great turn out for the training in terms of numbers – we beat SharePoint 2010 dev + admin!!! :)

For all of you whom I had the pleasure of training this week – well done! I hope you enjoyed it and it was great sharing that time with you. The sun, sand, BizTalk and Azure…what could be better?? :)

As promised – here are the slides from those two days.

Keep smiling,

Friday, 27 August 2010 14:40:00 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2] -
AppFabricServer | Azure | BizTalk | Events | 2010 | 2010
# Friday, 13 August 2010

Well folks, after a recent week of performance issues running a SharePoint 2010 VM image (40GB) on Virtual Box (v3.0.14 & v3.2.8) Olaf (a fellow Breezer) and I sat down and put our thinking caps on as how to improve things.

- Hyper-V wasn’t an option due to classroom setups and portability issues.

After scouring the forums, posts, blogs and other to see how to squeeze every last bit of performance from Virtual Box – I’ve come to the conclusion that current versions just don’t take full advantage of Core i7 architectures, hence they run dog slow (1 virtual cpu seems to run better than multiple).

Enter VMWare – I’m relatively new to the world of VMWare, although others on my team swear by it.

So I downloaded VMWare Player (free) image

And configured a Virtual Machine (or two)


So the issue is (as I’m sure you’re well aware if you’re reading this), is that booting up Windows 2008 R2 (in my case), the native disks are SCSI and we get the dreaded Inaccessible Boot Device error (stop 0x7B).

(Back in WinXP, Win2000 & Win2003 (I think) there *used* to be a recovery option that you could repair my boot environment and it would ‘rediscover’ all the disks etc and you’d be on your way)

The aim is boot into Windows, allow it to discover, load and install the VMWare SCSI drivers (from LSI…) and then in theory you’re good to go.

After drilling down through the VMWare forums (a foreign place for me), there’s a few articles on ‘injecting drivers’ into the system, startup etc – none of these techniques worked for me (I booted to Repair window and ran regedit to ‘tweak’ some startup registry keys).

Still stuck and after many hours we noticed that CD/DVD (IDE) was an available device on the system as follows:


I thought “I wonder if I can attach the VHD as an IDE??”

After locating the VMWare VM config file – a *.VMX file I saw a couple of entries…

ide1:0.present = "TRUE"
ide1:0.filename = “…MicksBootIso.iso”


So I thought, let me try


ide1:0.present = "TRUE"
ide1:0.filename= "D:\VHDs\VHDs\SharePoint2010_v2_Child.vhd"



Saved and booted up like a bought one!

So for now…this works fantastically AND THE PERFORMANCE is at least 3-4 times faster than Virtual Box for this image. Just really snappy!

Here’s a sample file attached – enjoy.

Windows Server 2008 R2 (1.12 KB)
Friday, 13 August 2010 17:10:29 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | General | SharePoint
# Wednesday, 21 July 2010

Hey folks,

As we’re all aware there’s more than one road that leads to Rome when dealing with integration. When to use SSIS? For what? What about MSMQ? AppFabric and BizTalk etc.

At TechEd this year I’ve decided to run some preconference training dealing with this exact issue across many different Microsoft Integration Technologies.
(This is one of the biggest questions I get from customers)

If you’re heading to the Gold Coast this year, then this training is before TechEd – get up a couple of days early and then be fully charged and armed with all your questions….

---- here’s the official blurb----

When to use what Technologies Where [LINK is Here]

AppFabric, Azure Storage, BizTalk 2010, BizTalk Adapter Pack, WCF, WF, Oslo, MSMQ, .NET4 Distributed Caching, SQL Service Broker, SSIS and SharePoint 2010 Service name a few technologies to be confused about.

There is no silver bullet for application integration. Different situations call for different solutions, each targeting a particular kind of problem. While a one-size-fits-all solution would be nice, the inherent diversity of integration challenges makes such a simplistic approach impossible. To address this broad set of problems, Microsoft has created several different integration technologies, each targeting a particular group of scenarios.  

Together, these technologies provide a comprehensive, unified, and complete integration solution.

Come on a 2-day adventure examining each of these technologies and reviewing the When, Why's and How's on each, with their own distinct role to play with integrating applications. When you come through the other side you'll be able to slot each of these technologies into a *practical* use.

This developer workshop is based on real world examples, real world problems and real world solutions.

Join me and be prepared to roll up your sleeves and unravel the maze that awaits....


Wednesday, 21 July 2010 02:46:36 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [5] -
AppFabricServer | BizTalk | 2010 | Oslo | 2010 | Training
# Sunday, 23 May 2010

As you know I’m a big fan of Virtual Box being able to run my x64 VMs on my Win7 machine. Yay!!

So armed with my trusted new Core i7/8 GB laptop – I figured the VMs will be cooking on this new kit…

After installing the lastest VirtualBox (3.2.0) I was away – only to notice the machines were running like a SLUG! (I actually have a cat that has the nick name ‘slug’ and this machine was slower than her)

After waiting a full 20mins (still booting - ‘loading windows files…’ etc) my machine Blue Screened for a millisecond and then rebooted.

So I rolled up my sleeves and started digging – could be the VHD, the bios, the machine, the 1000 and 1 settings…

Firstly I ran a command line command (from under the vbox install dir) -
VBoxManage setextradata VMNAME "VBoxInternal/PDM/HaltOnReset" 1

Finally I got a glimpse of the BSOD and it was an error “…STOP…7B…”

I twigged this is an error of “Inaccessible boot device….” which I’ve had several times when the SATA drivers couldn’t be loaded by the O/S during boot up.

Solution: (in my case)
I configured the Virtual Box VM with IDE Storage Controllers and NOT SATA ones for the bootup.(still connected to the same VHDs though)

Win2008/R2 boots up and I’m able to load the SATA drivers in and we’re away.

Back to BizTalk 2010 Beta playing…. :)

Sunday, 23 May 2010 21:53:47 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2] -
BizTalk | 2010 | Tips
# Wednesday, 12 May 2010

Wow! I'm finally through the other side... what a quest and I thought I'd share some of the details with you.

RFC_READ_TABLE rfc can be used to call into SAP and retrieve table data - *sort of* (and that's a big sort of) like a 'DataSet'.

Using it requires a little work and understanding.

In your either BizTalk project or other project from VS.NET:

  1. Add the SAP bits to your VS.NET project - ready for action
    1. select 'Add Adapter Service Reference' (for BTS projects -> Add New Generated Item->Consume Service Adapter...)
    2. On the Binding Wizard Screen select sapBinding and configure the appropriate connection string details such as:

      string sapUri = "sap://CLIENT=800;LANG=EN;@A/sapsrv/00?GWHOST=sapsrv&GWSERV=sapgw00&RfcSdkTrace=true";
      <You need to stick your own sapURI above - that is more or less a sample>

    3. Click on the Connect and under RFC->OTHER , select RFC_READ_TABLE (or you can type it in the box to search)
    4. Click Ok to generate the proxy and other details.
    5. Either your BizTalk Project or your non-BTS project has now all the relevant details to communicate to SAP.

      I tend to build out all this functionality first in a Console App just so I know what is needed within the BTS environment, also I find it much quicker to test/debug etc. here.
  2. Ok - onto the code. I've got 2 routines for you, one that uses the Proxy Classes built by the wizard in the last step, and a routine from 'first principles'.

    One of the things that I really like about the BTS Adapter Pack and certainly in this case, is that depending on the shape of the XML you pass to the adapter, it determines the table and type of operation that it is to do.

    Both of these examples below you could wrap into a functoid/helper/whatever and use directly from code.
  3. Proxy Code - version 1 - here I define some parameters and make a straight call to the table CSKS.
    NOTE: Use FieldNames not Field Labels (took me a few hrs on that one ;)

    using LOBTYPES =;

    private static void GetDataFromSAP()

    RfcClient clnt = new RfcClient(); //myproxy client
    string[] data = GetAppDetailsForCurrentUser("SAP");
         clnt.ClientCredentials.UserName.UserName = data[0];
         clnt.ClientCredentials.UserName.Password = data[1];
    TAB512[] rfcData = new[0];
    RFC_DB_OPT[] rfcOps = new[0];
    RFC_DB_FLD[] rfcFlds = new[]
             FIELDNAME =
             FIELDNAME =
             FIELDNAME =
    ";", string.Empty, "CSKS", 50, 0,ref rfcData, ref rfcFlds, ref rfcOps);
      Console.WriteLine("RFC RESPONSE\r\n\r\nData:" + rfcData.Length.ToString());
    catch (Exception ex)
       Console.WriteLine("ERROR: " + ex.Message);

  4. More from first principles so this is to give you more of a BTS picture.
    NOTE: The use of the '%' sign to get a wildcard match on a KOSTL field, despite in the SAP Client UI the users enter a '*'

    private static void GetDataFromSAPV1()
        string[] data = GetAppDetailsForCurrentUser("SAP");
        SAPBinding binding = new SAPBinding();  //A reference to Microsoft.Adapters.Sap is needed.
        //set up an endpoint address
    string sapUri = "sap://CLIENT=800;LANG=EN;@A/sapsrv/00?GWHOST=sapsrv&GWSERV=sapgw00&RfcSdkTrace=true";
        EndpointAddress address = new EndpointAddress(sapUri);
            ChannelFactory<IRequestChannel> fact = new ChannelFactory<IRequestChannel>(binding as Binding, address);
            // add credentials
            fact.Credentials.UserName.UserName = data[0];
            fact.Credentials.UserName.Password = data[1];
            // Open client
            //get a channel from the factory
            IRequestChannel irc = fact.CreateChannel();
            //open the channel
            string inputXml = "<RFC_READ_TABLE xmlns='http://Microsoft.LobServices.Sap/2007/03/Rfc/' xmlns:ns1='http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/'>"
            + "<DATA /><FIELDS>"
            + "<ns1:RFC_DB_FLD><ns1:FIELDNAME>KOSTL</ns1:FIELDNAME></ns1:RFC_DB_FLD>"
            + "<ns1:RFC_DB_FLD><ns1:FIELDNAME>DATAB</ns1:FIELDNAME></ns1:RFC_DB_FLD>"
            + "<ns1:RFC_DB_FLD><ns1:FIELDNAME>DATBI</ns1:FIELDNAME></ns1:RFC_DB_FLD>"
            + "</FIELDS>"
            + "<OPTIONS>"
            + "<ns1:RFC_DB_OPT><ns1:TEXT>KOSTL LIKE '1234%' AND BUKRS EQ '63' AND KOKRS EQ 'APPL'</ns1:TEXT></ns1:RFC_DB_OPT>"
            + "</OPTIONS>"
            + "</RFC_READ_TABLE>";
            //create an XML reader from the input XML
            XmlReader reader = XmlReader.Create(new MemoryStream(Encoding.Default.GetBytes(inputXml)));
            //create a WCF message from our XML reader
            Message inputMessge = Message.CreateMessage(
            //send the message to SAP and obtain a reply
            Message replyMessage = irc.Request(inputMessge);
            //create a new XML document
            XmlDocument xdoc = new XmlDocument();
            //load the XML document with the XML reader from the output message received from SAP
            XmlNodeList nds = xdoc.DocumentElement.SelectNodes("//*[local-name()='WA']");
            foreach (XmlNode nd in nds)
                    string[] parts = nd.InnerText.Split('|');
                    Console.WriteLine("CC={0} From: {1} To: {2}", parts[0], parts[1], parts[2]);

    catch (Exception ex)
             Console.WriteLine("ERROR: " + ex.Message);

Wednesday, 12 May 2010 15:54:57 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | BizTalk Adapter Pack | SAP
# Wednesday, 31 March 2010

BizTalk Best Practice Analyser is released and available for download.

Download: BizTalkBPA V1.2

As always another very handy tool is the Message Box Viewer (Currently V10) which provides some very detailed information as well.

Download: Message Box Viewer (MBV)

Enjoy your day,


Wednesday, 31 March 2010 10:01:25 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2006 R2 | 2009
# Monday, 29 March 2010

The other day this landed in my inbox. Being on the TAP program and posting various pieces of feedback I’ve been updated that BizTalk 2010 is the only name to remember.

Keeps inline with VSNET2010 etc etc, so anything with a 2010 after its name *should* work with each other. SharePoint 2010 etc.

So far I’ve been playing with the early bits and I’m liking what I’m seeing – copy and paste functoids in a map!!! (for those of you who don’t know the pain….it’s pain let me tell you)

So here’s the official blurb…

Well done BizTalk Team! Working Hard!


BizTalk Server 2010 Name Change Q&A

Q: Why was the original name for the release BizTalk Server 2009 R2?

BizTalk Server 2009 R2 was planned to be a focused release to deliver support for Windows Server 2008 R2, SQL Server 2008 R2 and Visual Studio 2010. Aligning BizTalk releases to core server platform releases is very important for our customers. Hence our original plan was to name the release as BizTalk Server 2009 R2.

Q: Why did Microsoft decide to change the name for BizTalk Server 2009 R2 to BizTalk Server 2010?

Over the past year we got lot of feedback from our key customers and decided to incorporate few key asks from our customers in this release. Based on customer value we are delivering and positive feedback we are getting from our early adopter customers we feel the release has transitioned from minor release (BizTalk Server 2009 R2) to a major release (BizTalk Server 2010).  

Following is list of key capabilities we have added to the release

1.       Enhanced trading partner management that will enable our customers to manage complex B2B relationships with ease

2.       Increase productivity through enhanced BizTalk Mapper. These enhancements are critical in increasing productivity in both EAI and B2B solutions; and a favorite feature of our customers.


3.       Enable secure data transfer across business partners with FTPS adapter


U    Updated adapters for SAP 7, Oracle eBusiness Suite 12.1, SharePoint 2010 and SQL Server 2008 R2


      Improved and simplified management with updated System Center management pack


      Simplified management through single dashboard which enables IT Pros to backup and restore BizTalk configuration


      Enhanced performance tuning capabilities at Host and Host Instance level


8.       Continued innovation in RFID Space with out of box event filtering and delivery of RFID events


Q: Is there any additional benefit to customers with name change to BizTalk Server 2010?

In addition to all the great value the release provides, customers will benefit from support window being reset to 10 years (5 years mainstream and 5 years extended support). This highlights Microsoft’s long term commitment to BizTalk Server product.


Monday, 29 March 2010 20:27:25 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2] -
BizTalk | R2 | 2010
# Friday, 12 February 2010

Hi folks,

Lately I've had several requests from folks whom want to have a play with BizTalk but don't want to setup the whole infrastructure etc.

Here's a great page from MS Virtual Labs that will get you on your way
(some labs are for BTS2006, others for BTS2009, the same principles apply)

Check it out and if you're ever away from a VM, might be handy a fallback plan.

BizTalk Virtual Lab Material

There's 4 pages and here's a snippet from Page 1


Click here to bookmark this event.
After completing this lab, you will be better able to create a new BizTalk project, create an XML schema by using the BizTalk Editor, promote a schema property, create a flat file schema by using the BizTalk Editor, validate a schema and generate a sample instance message, create a strong name and assign it to an assembly, and build a schema project.  ...
4/3/2006 12:00 AM Pacific Time (US & Canada)- 9/30/2011 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   Pro Dev/Programmer
Click here to bookmark this event.
After completing this lab, you will be better able to create a schema map by using BizTalk Mapper, add functoids to a map, validate a map, and build a schema map project.
4/3/2006 12:00 AM Pacific Time (US & Canada)- 11/30/2010 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   Pro Dev/Programmer
Click here to bookmark this event.
After completing this lab, you will be better able to define business rules, call business rules from within an orchestration, build and deploy the business rules project, and start and test the business rules.
5/7/2008 12:00 AM Pacific Time (US & Canada)- 5/31/2011 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   Pro Dev/Programmer
Click here to bookmark this event.
After completing this lab, you will be better able to assign an application name to a BizTalk Server project, use the BizTalk Server 2006 Administration Console to create receive ports, receive locations, use the BizTalk Server 2006 Administration Console to import port binding information, bind orchestration ports to physical ports, export a BizTalk application to an MSI package, import a BizTalk application from an MSI package, and finally, use the Group Hub to manage suspended messages.  ...
4/3/2006 12:00 AM Pacific Time (US & Canada)- 12/31/2010 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   Pro Dev/Programmer
Click here to bookmark this event.
After completing this lab, you will be better able to educate attendees on integrating Commerce Server 2007 with ERP or CRM systems and external business trading partners by utilizing the new built-in integration adapter for BizTalk Server 2006. Also, you will learn how to utilize the new Orders, Inventory, Catalog, and Profile BizTalk Adapters in detail to achieve high-performing, reliable connectivity between Commerce Server deployments and other external systems.  ...
4/20/2007 12:00 AM Pacific Time (US & Canada)- 8/31/2010 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   Pro Dev/Programmer
Click here to bookmark this event.
After completing this lab, you will be better able to define business rules, call business rules from within an orchestration, build and deploy the business rules project, and start and test the business rules.NoteBy registering for this virtual lab, you will receive a one-time follow up call from a Microsoft representative to inform you of special discounts and offers related to products and services presented in the virtual lab.  ...
4/3/2006 12:00 AM Pacific Time (US & Canada)- 11/30/2010 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   IT Generalist
Click here to bookmark this event.
After completing this lab, you will be able to create a new BizTalk project, create an XML schema by using BizTalk Schema Editor, promote a schema property, create a file schema by using BizTalk Schema Editor, validate a schema and generate a sample instance message, and build a schema project.  ...
12/7/2005 12:00 AM Pacific Time (US & Canada)- 7/31/2010 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   Pro Dev/Programmer
Click here to bookmark this event.
After completing this lab, you will be able to configure orchestration properties, create the orchestration to be published, build and deploy the orchestration publishing project, run the BizTalk Web Services Publishing Wizard, and start and test the published orchestration.  ...
10/24/2005 12:00 AM Pacific Time (US & Canada)- 2/28/2011 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   Pro Dev/Programmer
Click here to bookmark this event.
After completing this lab, you will be able to add a Web reference to a project, create a map, create variables for message instances, create the Web services orchestration, and build and deploy the Web services project.
10/24/2005 12:00 AM Pacific Time (US & Canada)- 1/31/2011 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   Pro Dev/Programmer
Click here to bookmark this event.
After completing this lab, you will be better able to assign an application name to a BizTalk Server project, use the BizTalk Server 2006 Administration Console to create receive ports, receive locations, use the BizTalk Server 2006 Administration Console to import port binding information, bind orchestration ports to physical ports, export a BizTalk application to an MSI package, import a BizTalk application from an MSI package, and finally, use the Group Hub to manage suspended messages. NoteBy registering for this virtual lab, you will receive a one-time follow up call from a Microsoft representative to inform you of special discounts and offers related to products and services presented in the virtual lab.  ...
2/3/2006 12:00 AM Pacific Time (US & Canada)- 9/30/2010 11:59 PM | Duration:90 Minutes
Primary Language:   English
Primary Target Audience:   IT Generalist

Friday, 12 February 2010 09:20:57 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2006 R2 | 2009 | R2 | Training
# Friday, 15 January 2010

Many times in BizTalk land we work with Schemas that are nested and have several related Schemas that are Imported from URL locations etc.

When you include these schemas and deploy to Production, you find out that the BizTalk server doesn’t access the Internet directly. Hence all the schema Imports fail.

You’ll then go and try hand edit the Imports, downloading the referenced Schema and try and Mash up something that refers to local files and no URL based Schemas. It may or may not work…till the next update…

I recently came across a handy set of free tools that take all the pain out to do with Schemas –>

Xml Help Line

Which has Xml Schema Lightener, Xml Schema Flattener

Another very handy tool not to leave home without.


Friday, 15 January 2010 09:43:18 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [2] -
.NET Developer | BizTalk | Insights | Tips
# Tuesday, 22 December 2009
Folks Christmas and the holiday season has started with the BizTalk Team been busy and are opening up the BTS 2009 R2 TAP program on connect.

If you're a customer (or have customers) that would/could benefit in working with some of the newer BizTalk features - with the prospect of MS being able to have some visibility into the solution, then go for it.

I'm looking fwd to the BizTalk Dashboard and a whole bunch of other enhancements.

Here's a snip for you....



 BizTalk Server V6 Image

Welcome to the Microsoft BizTalk Server Connect website


We encourage you to visit this site where we will keep you informed of Technology Adoption Programs (TAP) and other customer pre-release programs for Microsoft BizTalk Server.


We have a number of programs currently underway as well as several that will be starting up in the near future.  If you are interested to participate in any of the programs below, please register for the program by selecting the associated link, and return the completed nomination form to .


Current Programs

  •  BizTalk Server 2009 R2
  • BizTalk Server 2006 R2 SP1 beta 


 BizTalk Server 2009 R2


What’s planned for the next BizTalk release?


VS 2010 Support

  • Use of Visual Studio 2010 to develop application for BizTalk Server 2009 R2
  • Projects developed in VS 2008 can be seamlessly migrated to Visual Studio 2010



Intelligent Mapper

  • Enhanced user interface for better visualization of maps and to support complex mappings
  • Background noise reduction using highlight propagation, auto scrolling  and sibling coalescing
  • Support for search
  • Reusable parts for improved user productivity
  • Enhancements to the current functoids


Enhanced Trading Partner Management (TPM)


BizTalk Administration Console – Performance Enhancements

This feature aims to improve BizTalk Administration Console performance across the board by more than 60%. Key Scenarios like refresh, addition, deletion of port, enlistment of an orchestration will be optimized. Post Enhancements, the BizTalk Administration Console would be more responsive and address one of the key customer pain-points of Console performance in BizTalk 2009.


BizTalk Settings Dashboard

The BizTalk Settings Dashboard will serve as a one-stop shop for BizTalk Engine settings visualization and modification. This feature will enable BizTalk Administrators to centrally manage BizTalk Settings as admins will be able to export and import settings from one environment to another (for e.g. staging to production). The BizTalk Settings Dashboard is a step forward in consolidating all BizTalk Settings and will incorporate design extensibility to accommodate future addition of settings.


Improved Management Pack

The Improved System Center Management Pack will address key customer pain-points (e.g. high-CPU usage, duplication of discovered artifacts etc.) in the existing Management Pack. The new and improved design will also incorporate enhancement like better visualization of BizTalk Application and Platform Artifacts, Improved monitoring and diagnostics of artifacts like Orchestrations, Grouping of Alerts etc.


RFID OOB Event Filtering and Delivery

The scope for this feature covers providing a set of OOB components for Duplicate Elimination filter, EPC based filter, DWELL filter, posting events from BizTalk RFID to BizTalk Server, Posting events from BizTalk RFID to an EPCIS service and an Event Delivery framework for applications to subscribe and receive asynchronous events. These Out Of Box components address common RFID scenarios and will enable partners to focus solely on business logic hence helping accelerate BizTalk RFID solutions.


FTP/FTPS Adapter

The FTP Adapter in BizTalk is one of the most popular transport adapter in BizTalk server, used in different scenarios.  In BizTalk Server 2009 R2, we provide additional features in the FTP adapter that includes the following:

-          Support for FTPS, FTP over SSL – Enables to connect to FTPS servers for transferring files securely.  Both Implicit and Explicit FTPS are supported.

-          Support for read-only FTP servers – Enables configuration to pick up files from a partner FTP server which may provide only read-only permission.  The adapter will ensure that each file is submitted only once to BizTalk Server.

-          Support for atomic file writing – Can be used to ensure that files are read only after they are transmitted fully to the FTP server.

·         Enhanced performance – Re-designed to increase the performance, both while sending files to as well as receiving files from FTP servers.  The adapter will be more resilient to server going down.

Tuesday, 22 December 2009 13:07:27 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | RFID | R2
# Friday, 20 November 2009
We're moving into a public beta of Dublin "Windows Server AppFabric" which you can grab from HERE.

What does it mean - here's a blurb from the site.

So Velocity (distributed caching mechanism) is rolled up into this Beta (previously a MS Partner did some benchmarking on Velocity which you can find a great white paper HERE)

Previously myself and Scotty wrote a hefty technical Dublin Course which the folks at TechEd loved - we did this on some early bits of 'Dublin'. Realtime monitoring + tracking as well as recoverability were some highlights of our 3D Realtime maze process we built up in the labs.

Here's a blurb from the AppFabric server (it's a shame that SP2010 didn't use this framework for it's WF hosting...but that would have impacted delivery)


-------- Snippet ----------

Windows Server AppFabric has these core capabilities:

  • For Web applications, AppFabric provides caching capabilities to provide high-speed access, scale, and high availability to application data. This feature was previously codenamed "Velocity"
  • For composite applications, AppFabric makes it easier to build and manage services built using Windows Workflow Foundation and Windows Communication Foundation. This feature was previously codenamed "Dublin."

Friday, 20 November 2009 09:12:32 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | Insights | SharePoint | AppFabricServer
# Wednesday, 04 November 2009

A while back I created a script that restarts your BizTalk Hosts - pretty simple, here
(also this script didn't pick up your service if it was previously stopped - limitation of the 'sc query' command)

Now with PowerShell it's a one line job:
It goes something like this:
get-service BTS* | foreach-object -process {restart-service $_.Name}

You can also set all your BTS Services to start 'automatic' as follows:
get-service BTS* | foreach-object -process {set-service $_.Name -startuptype automatic}
(I'm actually trying to set the BTS Services to 'Automatic (Delayed)' but haven't been able to do that yet)

Wednesday, 04 November 2009 10:54:54 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | Insights | Tips
# Monday, 02 November 2009

Well – after spending *far* too long trying to get a little Red X to disappear from my BTS Configuration tool, so I can have a green light to configure the SharePoint adapter, I thought “There’s got to be an easier way”

Exhibit A – your honour. The SharePoint Adapter Configured.

So – what I did was roll my sleeves up and do this by hand.

This particular install – BTS09 x86, I installed WSS V3.0 with Sp2 and created a local sharepoint web application, site collection and had a whole bunch of SharePoint happiness coming back to me on http://biztalk (my server name).

All good I thought – except the configuration tool didn’t like what it found. I looked at logs, ran network sniffers and even manually ran the tool  Microsoft.BizTalk.KwTpm.StsOmInterop3.exe http://biztalk with success:


But still no joy in the configurator.

Here’s how to do it manually:

  1. Setup your local or domain SharePoint Groups
    Typically this is the ‘SharePoint Enabled Hosts’ Group – if it already exists on the domain, then great, if not create it. For this I created my group on the local machine.
    I also added as members, my biztalk service account and my Sharepoint Service Account.
  2. Configure IIS – BTS SharePoint WS Web Application
    1. Within the BizTalk Installed folders – e.g. c:\program files\Microsoft BizTalk 2009\Business Activity Services, you’ll find the set of WebServices to choose from. Select the right one for your SharePoint deployment.
    2. image
    3. As you can see I selected BTSharePointV3AdapterWS (for WSS V2 SP3, select BTSharePointAdapterWS).
    4. This is the folder you will point IIS to later.
    5. Open this folder and you’ll see a web application with a web.config.tmpl
    6. Copy the web.config.tmpl and rename the *copy* to web.config
    7. Open up your Web.Config in Notepad and configure as follows:

        <?xml version="1.0" encoding="utf-8"?>
                    <!--add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /-->

            <!-- Change debug="true" if you want to debug this web service -->
            <compilation defaultLanguage="c#" debug="false" />
            <customErrors mode="Off" />
            <!-- Windows Authentication is required for this web service. -->
            <authentication mode="Windows" />
            <!-- Impersonation is required for this web service. -->
            <identity impersonate="true" />
                <allow roles="SharePoint Enabled Hosts" verbs="GET,HEAD,POST"/>
                <deny users="*"/>

            <!-- Uncomment this block if you want to do some tracing of this web service -->
            <!-- <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />  -->
            <globalization requestEncoding="utf-8" responseEncoding="utf-8" />

            <!-- The size of a document being posted to SharePoint depends on this setting -->
            <httpRuntime maxRequestLength="100000" />
            <trust level="Full" originUrl="" />
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                <assemblyIdentity name="Microsoft.SharePoint" publicKeyToken="71e9bce111e9429c"/>
                <bindingRedirect oldVersion="" newVersion=""/>

      1. (you can always go back and tighten security up on this when you’ve got it working).
      2. Note the ‘SharePoint Enabled Hosts’ – local group here.
      3. I’ve also removed the ‘Documentation’ tags so I could get some WSDL to make sure it works within the browser.
      4. Save your web.config within Notepad.
      5. NOTE: make note of the Folder Path to get here as we’ll need it in IIS next.
    8. Configuring IIS
      1. Bring up IIS Admin MMC snapin.
      2. Select your SharePoint enabled Web Site, I selected ‘Default Web Site’. Right click when ‘Default Web Site’ is Selected and select ‘Add Application’
        note: IIS 7.0 Manager shown.
      3. Configure this as follows:
        (Note – the App Pool User should be able to post into BizTalk and SharePoint)
        Physical Path: <path you had previously to either V2 or V3 of your BTSharePointV3Adapter…>
      4. Click OK.
      5. To Test your WS: browse to: http://<your server>/BTSharePointAdapterWS/BTSharePointAdapterWS.asmx
      6. You *should* get this:
        You can invoke the IsAlive function and get TRUE back.
      7. If not, then fix your IIS related errors, at this point you’ve got a WS that uses the SharePoint APIs (locally). Some things to check:
        1. Local file security – make sure the Web App Pool acct can access those directories.
        2. Windows Auth is turned on, on your Web App.
        3. Check IIS log files for clues.
      8. You’re done on the IIS side of things, let’s configure BTS Side.
  3. Configuring BizTalk Side
    Fortunately the WSS Adapter is installed as part of the BizTalk Runtime configuration – it’s just not configured. So as far as registering the adapter with BizTalk it’s already been partly done.
    1. Install the “I’ve been Configured Registry Keys” – I took these from a previously successful 2009 install.
    2. Once the registry keys have been applied you’ll need to go and configure the …\TPM key to reflect your setup as follows:
      1. In Particular – configure your SharePoint SiteID to the one you saw in IIS.
      2. image
  4. How is this Different for a x64 bit Install
    1. The IIS piece is the same.
    2. The BTS Piece – the Perf counters are the same,
      but the ..\TPM piece is under HKLM\SOFTWARE\WOW6432Node\Microsoft\BizTalk Server\3.0\ConfigFramework
    3. So you’ll need to ammend 1 of the above 2 REG files.

You’re done!

Why oh why is this so hard from within the Configurator.

NOTE: There *USED* to be a Registry key that told the BTS WSS Adapter where to go looking for the BTSharePoint WS – a URL (..STSServiceUrl). This eliminated the need for a local machine install of SharePoint/WSS. Alas…this is *NOT* the case with WSS Adapter post BTS06.

Monday, 02 November 2009 21:02:11 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | SharePoint | MOSS | 2010
# Saturday, 10 October 2009

While on a current project and having a need to tweak (as always) how well BTS is processing these receives, I came across a Perf document on BTS 2009 Receiving.

This document below deals mainly with netTCP receive locations – oneway ports + oneway Orchs.



BizTalk Server 2009 Performance Optimization Guide

Brief Description

The BizTalk Server 2009 Performance Optimization Guide provides prescriptive guidance on the best practices and techniques that should be followed to optimize BizTalk Server performance.

Saturday, 10 October 2009 15:23:52 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2009

 image Service Pack 1 Beta

The BizTalk team are pleased to announce the availability of the beta release of Service Pack 1 for BizTalk Server 2006 R2. We would like to offer you the opportunity to download this early preview of the Service Pack and encourage you to test it out and let us have any feedback before we release it to the BizTalk community.

Microsoft BizTalk Server 2006 R2 Service Pack 1 (SP1) is an update for BizTalk Server 2006 R2.  It includes fixes to issues that have been reported through our customer feedback platforms, as well as internally discovered issues. To see a listing of the customer-reported issues that are fixed in this service pack, go to  For a description of some of the other updates included in this service pack, see What's new in BizTalk Server 2006 R2 SP1 ( 

A guide for this service pack is also available on the download page.  This guide contains important information to read before you install SP1.  It also provides installation instructions and a section on troubleshooting installation problems. Finally, it contains a section on known issues in this service pack release.

The service pack can be downloaded from here and any feedback or issues you encounter can be reported here

Thank you in advance!


BizTalk Product Group

Saturday, 10 October 2009 10:43:04 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2006 R2

This whitepaper is typically centered around the BTS SharePoint Adapter and WSS V3.0/MOSS 2007.
(I’ll be posting details on SharePoint 2010 integration shortly… :) )

BizTalk + SharePoint: 1+1=3: Integration Best Practices

Brief Description

The integration of Microsoft BizTalk Server 2009 and Microsoft Office SharePoint 2007 brings a whole new set of capabilities to end users. Microsoft Office SharePoint Server gives BizTalk Server a “face,” providing human workflow features and dashboard functionality.

Saturday, 10 October 2009 10:35:04 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2009 | MOSS | 2010
# Sunday, 20 September 2009

Hi folks, came across a great article that talks about WebServices(WCF Services) and Security.

The most common starting point in improving security, is to use TLS (Transport Layer Security of which SSL is a subset). I once spent 9 months working out digital signatures and passing several documents through out of band of envelopes…long story.

There’s a whole bunch of How-To’s also – very good!

With over 26000 downloads since August 1, I think this is a much needed area.
Well done guys – big congrats for your efforts.

Enjoy -

---- snip ----

SecurityLogo.jpg patterns & practices Improving Web Services Security - Now Released

Welcome to the patterns & practices Improving Web Services Security: Scenarios and Implementation Guidance for WCF project site! This guide shows you how to make the most of WCF (Windows Communication Foundation). With end-to-end application scenarios, it shows you how to design and implement authentication and authorization in WCF. Learn how to improve the security of your WCF services through prescriptive guidance including guidelines, Q&A, practices at a glance, and step-by-step how tos. It's a collaborative effort between patterns & practices, WCF team members, and industry experts. This guide is related to our WCF Security Guidance Project.
Part I, "Security Fundamentals for Web Services"
Part II, "Fundamentals of WCF Security"
Part III, "Intranet Application Scenarios"
Part IV, "Internet Application Scenarios"
Part I, Security Fundamentals for Web Services
Part II, Fundamentals of WCF Security
Part III - Intranet Application Scenarios
Part IV - Internet Application Scenarios

Sunday, 20 September 2009 12:28:13 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2009 | Insights
# Tuesday, 25 August 2009

Folks I recently came across this site on codeplex -

Where a hard working Danny(not sure of further details) has created a send and receive adapter for the cloud.

The adapter surface and publish the required information into the cloud so for e.g. your endpoints show up publically in the .NET Servicebus domain – we can do this through the apis, but it’s nice to have them all wrapped up.

There’s even some great piccys as well (just over look the ‘Microsoft Confidential’ at the bottom :-| - I did ping him over this.)

BizTalk Adapter for Live Framework.jpgBizTalk Adapter for .NET Services.jpg

The adapters are WCF based adapters, meaning they will run in or outside of BizTalk using the .NET LOB Adapter SDK Framework.

As a Plan B to this – you can always use a Custom WCF Adapter with the basicHttpRelayBinding or netTcpRelayBinding to punch through to the cloud.

I reckon this will be a very exciting area going forward…keep your eyes peeled.

Go and grab the bits and start playing… :)

Tuesday, 25 August 2009 11:06:07 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | BizTalk | 2009 | BizTalk Adapter Pack
# Tuesday, 11 August 2009

A handy couple of articles that have been updated for Biztalk 2009, full article attached at the bottom.




Tuesday, 11 August 2009 12:18:30 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2009 | BizTalk Adapter Pack
# Monday, 27 July 2009

It’s the must have guide to setup a successful BizTalk based operating environment.


Monday, 27 July 2009 15:00:22 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [1] -
BizTalk | 2009
# Thursday, 02 July 2009

He lives in NZ…he loves Auckland and he successfully got married last year…

Ready to take on the world – I want to congratulate one of the hardest working BTS experts I know…

He puts in a tremendous effort for the local community and is always ready for new ideas.

Well done mate and a big congrats from this Aussie!!!

Thiago Almeida – BizTalk MVP!!!!!

Thursday, 02 July 2009 16:57:19 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2009
# Tuesday, 19 May 2009

My good friend Chris Vidotto a once fearsome BTS warrior came up with the good oil on this.

The BPA tool now supports bts09, sql08 and win08 in one update, as well as all the previous environments.

The tool will go through and examine your environment in accordance to a predefined set of rules (shipped with BPA) and report back accordingly.

Grab it now… from HERE


Tuesday, 19 May 2009 13:54:18 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | Tips

Hi folks – from a previous post where I fudged a DLP-RFID1 x64 driver, I’ve now tracked down ‘proper’ 64 bit version of the DLP-RFID1 Reader.

Here it is here -

1. From this page download the CDM 2.04.16.exe which does the trick.

2. Double click on the above EXE to install the drivers (the EXE will detect your OS is x64) – the driver is then installed on the machine, but not auto assigned to your RFID1 device.

3. From Device Manager, right click on the DLP RFID1 Reader and select ‘Update Driver’, select ‘Browse on My Machine’ and ‘Select from a List’ (near where you say ‘have disk’).

4. From the Manufacturer list select ‘FTDI’ and select the very top Driver on the RHS (USB Serial Converter)

5. Unplug and replug your RFID1 Device – and viola! all good.

6. Run this Test app RFID1Demo.exe to make sure all is good from 

NOTE: On my machine I still have an unknown Serial device in Device Manager, but all works none the less.


Tuesday, 19 May 2009 12:25:01 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | RFID | Tips
# Thursday, 07 May 2009

Great news folks with the Adapter pack now released.

This is a WCF .NET based set of ‘adapters’ that can be used within BizTalk or in any .NET process – such as SharePoint.
(The visual studio extensions allows you to rapidly create a WCF based Service to host your adapters)

The Adapter pack has:
- SQL Adapter (faster, newer, improved… bionic adapter)
- Siebel
- Oracle DB
- Oracle ES

Here’s the links that you’ll need…… – enjoy!





WCF LOB Adapter SDK SP2(pre-req for BAP 2.0)

Adapter Pack 2.0 120 day Evaluation Version

120 day eval

SQL Adapter SKU Download(For BizTalk branch edition customers)

Documentation and Samples


MSDN Location of Adapter Pack 2.0 docs

Download location for individual CHMs in Adapter Pack 2.0

Download location for Adapter Pack 2.0 Installation Guide

Download location for SQL Adapter Installation Guide and CHM

Download location for all the samples for Adapter Pack 2.0

Thursday, 07 May 2009 09:06:12 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | BizTalk Adapter Pack
# Friday, 01 May 2009

Down at BizTalk 24*7 Saravana Kumar has been working hard to organise a whole collection of BizTalk articles from us in Cyberspace

He's done a great job!

Check it out -
and yours truly is here - Mick Badran

Friday, 01 May 2009 10:12:13 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | Insights | Tips
# Tuesday, 21 April 2009


Some great articles around Business Rules, AS2, EDI, Pipeline Components and promoting properties…..

Download your copy now

Tuesday, 21 April 2009 23:26:53 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | Insights
# Monday, 23 March 2009

As you sink your teeth into the depths of BizTalk 2006 R2/2009 and realise the potential of integrating with the WCF Custom Adapter, a new world opens up.


Then at one point down the track you’ll want to tweak or customise what is being sent/received. For e.g. changing the shape of the XML transferred over a HTTP transports – maybe compression, maybe minus the explicit XML notation (i.e. takes 5KB to send over 30 chars)

So you’ll then move onto something called a WCF Custom Behaviour.

Two great whitepapers are

Part 1-
Part 2-

Monday, 23 March 2009 10:12:03 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | WinWF
# Thursday, 12 March 2009

You want to know the ins and outs of WCF at a glance – then the mini-book is a winner.
(Just let this puppy fall out of your back pocket in the office and watch the guys instantly want to Sync up their Complete Series of Star Trek with you…)

Seriously – great guide, easy to flick through and welcome to another 8 million lines of code you thought you could live without :)

Thanks to the efforts of Cliff Simpkins and his team for their dedication on this.

6 Chapters + Code….are you man enough?

WCF Channel Stack

Thursday, 12 March 2009 21:25:56 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | BizTalk | Tips | WinWF
# Monday, 09 March 2009

For me there always comes a time when installing BTS 09 or Clients to work on SQL 2008, that I need all the client 'bits' to talk to SQL2008

Also - the classic problem to solve when installing BizTalk 2009 using SQL 2008, "Where do I get Notification Services From???"

Look no further - here's a SQL SP3 goldmine :)

SQL GoldMine!!

Monday, 09 March 2009 07:31:16 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009
# Thursday, 26 February 2009

Hi - today I came across a handy Matrix that describes the supported versions for the Biztalk Adapter Pack v2.0

Handy reference I reckon :)


Compatibility Matrix Between 32 and 64-bit Versions of the Adapter, BizTalk Server, and Operating System

The following table presents a compatibility matrix between the 32-bit and 64-bit versions of the operating system, adapter, and .

Oracle Database Adapter + BizTalk Server

SAP Adapter + BizTalk Server

Siebel Adapter + BizTalk Server

Oracle E-Business Adapter + BizTalk Server

SQL Adapter + BizTalk Server

Operating System


































·         Yes = Supported.

·         No = Not supported.

·         N/A = Not Applicable.

Thursday, 26 February 2009 14:52:58 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | BizTalk Adapter Pack
# Monday, 23 February 2009

Hopefully you've been keeping an eye on this in recent times.

This is a Set of Adapters that MS have built on top of the WCF LOB Adapter SDK (a platform neutral .NET based Adapter framework).


This allows the Adapters to run within the .NET stack almost anywhere - Console apps, Custom WebServices, BizTalk, SSIS, SharePoint etc.

(Build once - run everywhere :-)


The public beta is available as a 120-day d/l from MS Connect.


What to expect with the Adapter Pack

(in addition to a free migration tool to go from the old adapters to the new - e.g. SQL)

Oracle EBS

· 64 bit support

· Synonyms

· Added performance counters

· Notification support


· 64 bit support

· Synonyms

· UDTs

· Notifications

· Polling stored procedures

· Performance counters

SQL Adapter
· 64 bit support and improved SQL

Adapter SDK

· Display complex binding properties 

· Display metadata wsdl in web control

SAP data provider

· Support for more operators in Sap Queries

· SAP SSRS support in VS2008


· New Samples for SQL and Oracle eBiz Adapters

· Repackaged samples for BAP 1.0

Monday, 23 February 2009 13:40:57 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | Insights | Training
# Saturday, 21 February 2009

What a week it has been folks - I left Sydney in 30C degrees with sun, sand and beaches.....I thought "How cold can it be?" (you never really get that appreciation till you hit the ground)

Cold....very cold!!! Now I've been skiing many times, but this was just something else.

It caused Beijing to be blanketed in snow and very beautiful - What a fantastic place!!! Definitely a come back place - just nothing like what I expected.

The people so friendly, helpful and always with purpose in their eyes. The food is some of the freshest I've eaten and such healthy diets (steamed cabbage, mushrooms etc etc) - nothing like the 'Western Chinese Resturants' back home :)

On to the reason why I was there - Training

I had approx 50 students coming to hear my Chinese English (which I must say is much better than me listening to them speaking Mandarin) and we covered in-depth BizTalk 2009 agenda

We covered some great material looking into Governance and ESB 2.0 due to hit around the same time as BTS2009 (June-ish I believe, earlier I'm told)

BizTalk 2009 Mick Badran Classroom Training 
We actually communicated quite well - I played many games and brought over a bunch of Aussie gifts for them (which consequently we found out were made in China!)

The usual areas of BizTalk were little used previous by students - SSO, Rule and BAM. For so little effort there's so much mileage in these guys.

Training Results
For the training the average mark I received was 8.5/10 across nearly 50 students, which for my first time in China I was very happy with. The most important thing for me though is not the marks, but what the students walk away having learnt!

Not all work Play Time
As luck would have it I had an extra day to play on my trip this time - so in negative degree temps I went to the Center of Beijing and put on my tourist hat and went to the Forbidden City (& surrounds).

Entering a new world



Lastly I learnt many things from my students this week with

1. KFC is a 'top class' resturant in Beijing
2. Starbucks is a 'romantic' place (where couples go for dates)

If we were on Mythbusters right now....... compared to Sydney - these are Busted!

Saturday, 21 February 2009 00:02:41 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | General | Training
# Saturday, 07 February 2009

A handy table that lists the versions as well - I've always needed something like this when doing proposals :-)



Supported Editions

BizTalk Adapter Pack 1.0



SAP R/3 4.x, R/3 6.20 (Enterprise), and SAP ECC 6.0

PeopleSoft Enterprise

PeopleTools Versions 8.17.02, 8.43, 8.45, 8.46, 8.47, 8.48, and 9.0

JD Edwards OneWorld XE

8.10, and 8.11, and 8.12 with Tools Release 8.93, 8.94, 8.95 and 8.96

JD Edwards EnterpriseOne

8.10, and 8.11, and 8.12 with Tools Release 8.93, 8.94, 8.95 and 8.96

ODBC Adapter for Oracle Database

Oracle 8i (, 9i (, or 10g

Siebel eBusiness Applications

7.0, 7.5.*, 7.7.*, and 7.8.*

TIBCO Rendezvous

7.3, 7.5.4, 8.1.1

TIBCO Enterprise Message Service

4.3, 4.4.3, 5.0

Host Applications

IBM CICS TS for z/OS V2.2, V2.3, V3.1
IBM IMS V8.1 with IMS Connect 2.1, 2.2
IBM OS/400 V5R2, OS/400 V5R3, i5/OS V5R4


IBM DB2 V7 and V8 for z/OS
IBM OS/400 V5R2, OS/400 V5R3, i5/OS V5R4
IBM DB2 UDB for Windows, Linux, AIX, Solaris V7.2, V8.2, V9

Host Files

IBM DFM V1R4, V1R5, V1R6, V1R7
IBM OS/400 V5R2, OS/400 V5R3, i5/OS V5R4

WebSphere MQ (Client Based)

5.3 with Fix Pack 10 or higher and 6.0 with Fix Pack 1.1 or higher

WebSphere MQ

5.3 with Fix Pack 10 or higher and 6.0 with Fix Pack 1 or higher


2.0 and 3.0

Base EDI

Not applicable


Not applicable


Not applicable


Not applicable


Not applicable


Not applicable


Not applicable


Not applicable

Web Services Enhancements (WSE) 2.0

WSE 2.0

Windows Communication Foundation (WCF)

.NET Framework 3.0

Windows SharePoint Services

Windows SharePoint Services 3.0

Saturday, 07 February 2009 21:15:08 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [1] -
BizTalk | 2009 | Training
# Monday, 02 February 2009

BizTalk Adapter V2.0/WCF LOB Adapter SDK Poster is available
Another of those things to stick up around the office... :)


Download From HERE

Monday, 02 February 2009 17:34:32 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | Insights | Posters | Training
# Saturday, 31 January 2009

Certification for BizTalk Server 2006 R2 is available, at
Apparently it came out last October.....anyone done it? let's go there!

I'll post back shortly and let you know how I went.... :)

Exam details...


This exam is intended for candidates developing business solutions using Microsoft BizTalk Server 2006 R2.

Audience Profile

A candidate for this exam will have experience developing, deploying, and testing Microsoft BizTalk Server 2006 solutions across multiple real-world projects.  The candidate should have a solid understanding of fundamental BizTalk concepts and familiarity with extended R2 capabilities.
The candidate should also have experience using the Microsoft .NET Framework, XML, Microsoft Visual Studio, Microsoft SQL Server, Web Services, and Windows Communication Foundation (WCF) while developing BizTalk integration solutions.

When you pass Exam 70-241: TS: Developing Business Process and Integration Solutions by Using Microsoft BizTalk Server 2006 R2, you complete the requirements for the following certification(s):MCTS: BizTalk Server 2006 R2
Exam 70-241: TS: Developing Business Process and Integration Solutions by Using Microsoft BizTalk Server 2006 R2: counts as credit toward the following certification(s):

Note This preparation guide is subject to change at any time without prior notice and at the sole discretion of Microsoft. Microsoft exams might include adaptive testing technology and simulation items. Microsoft does not identify the format in which exams are presented. Please use this preparation guide to prepare for the exam, regardless of its format.

Skills Being MeasuredThis exam measures your ability to accomplish the technical tasks listed below.The percentages indicate the relative weight of each major topic area on the exam.

Configuring a Messaging Architecture

  • Set up and manage ports.

    This objective may include but is not limited to: add a map, ordered delivery, send ports, send port groups, starting vs. enlisting, receive ports, receive locations, subscriptions

  • Plan for and implement secure messaging.

    This objective may include but is not limited to: certificates, signing, encryption, port authentication, encoding

  • Configure core adapters.

    This objective may include but is not limited to: HTTP, SQL, POP3, SMTP, FTP, File

  • Configure content-based routing.

    This objective may include but is not limited to: set a filter that uses a    promoted property

  • Implement messaging patterns.

    This objective may include but is not limited to: normalizing/canonical messages, splitter, large messages

Developing BizTalk Artifacts
  • Create schemas.

    This objective may include but is not limited to: create a flat-file schema, create a property schema, enveloping, promoted/distinguished properties, MessageType, schema re-use (import/include)

  • Create maps.

    This objective may include but is not limited to: functoid scripting, XSLT, pass a parameter to a map, multiple schemas, looping

  • Create pipelines.

    This objective may include but is not limited to: disassembling, create a custom pipeline, create a pipeline component, XML validation

  • Develop orchestrations.

    This objective may include but is not limited to: work with transactions and persistence, integrate with Microsoft .NET assemblies, parameters, shapes

  • Configure orchestration bindings.

    This objective may include but is not limited to: direct, dynamic, self correlating

  • Configure correlation.

    This objective may include but is not limited to: listener shape, parallel shape, correlation sets

  • Construct messages.

    This objective may include but is not limited to: multi-part, untyped, construct messages in .NET, construct messages in orchestrations, context properties

  • Implement orchestration patterns.

    This objective may include but is not limited to: convoys, aggregator, splitter

Debugging and Exception Handling
  • Handle exceptions in orchestrations.

    This objective may include but is not limited to: compensation, scope shapes, throw exceptions, long-running transactions

  • Route errors.

    This objective may include but is not limited to: port configuration, recoverable interchange

  • Debug orchestrations
  • Validate and test artifacts.

    This objective may include but is not limited to: schemas, maps, pipelines

Integrating Web Services and Windows Communication Foundation (WCF) Services
  • Configure a WCF adapter.

    This objective may include but is not limited to: WS*, custom bindings

  • Expose orchestrations by using publishing wizards.
  • Consume services.

    This objective may include but is not limited to: Web port type, add a Web/Service reference, consuming from orchestrations or pure messaging

  • Handle Web exceptions.

    This objective may include but is not limited to: delivery notifications, catching SOAP exceptions

Implementing Extended Capabilities

  • Create and deploy Business Rules Engine (BRE) components.

    This objective may include but is not limited to: work with the Business Rules Composer, deploy Business Rules policies, call from an orchestration, develop vocabularies

  • Develop EDI solutions.

    This objective may include but is not limited to: trading partner setup, batching, acknowledgments, importing schemas

  • Configure AS2.

    This objective may include but is not limited to: party configurations, pipelines, ports, certificates

  • Implement an RFID solution.

    This objective may include but is not limited to: handle events, configure RFID devices, manage and configure event sink endpoints

  • Plan and implement Business Activity Monitoring (BAM).

    This objective may include but is not limited to: BAM alerts, tracking profile editor, BAM workbook, activities, views, deployment

Deploying, Tracking, and Supporting a BizTalk Solution
  • Install and configure a multi-server BizTalk environment.

    This objective may include but is not limited to: trusted vs. untrusted environments, Active Directory groups

  • Deploy BizTalk applications.

    This objective may include but is not limited to: MSI deployment, versioning, resources, multiple staging environments such as development, test, and production

  • Partition a BizTalk solution.

    This objective may include but is not limited to: hosts, host instances, handlers, groups, multiple message boxes

  • Export and import binding files
  • Configure tracking.

    This objective may include but is not limited to: orchestrations, schemas, ports, pipelines, policies

  • Manage BizTalk solutions by using the Administration Console.

    This objective may include but is not limited to: query for instances, terminate, resume

  • Audit BizTalk solutions by using Health and Activity Tracking (HAT).

    This objective may include but is not limited to: querying, saving messages, creating custom fields, policy execution

Saturday, 31 January 2009 08:00:33 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | Insights | Training
# Saturday, 17 January 2009

As my good friend pointed out - Rahul Garg, the BizTalk 2009 documentation is available for public download.

Things such as:

  • runtime engine
  • mapping
  • Orchestrations
  • Adapter V1.0 Frameworks
  • BizTalk Applications
  • BizTalk Deployment of Applications

Have all generally (obvious fixes and improvements as needed) stayed the same.

Whereas, a quick summary of things I'd be looking for in the documentation:

  • Incorporating BizTalk Project builds into automated tested suites (TFS etc) - Biztalk 2009 projects can now be built through MSBUILD as a regular project in the solution.
  • Individual components such as Schemas and Maps can be formally unit tested (previously we wrote our own helper classes to make this stuff happen) - although, at the moment when testing a schema, I haven't been getting back details of the error...just a pass/fail.
  • BizTalk Adapter Pack 2.0 (Sql, Oracle x 2, SAP, Siebel...) - based on WCF channel stack...very nice! (can be standalone if needed)
  • WS Federated bindings
  • and the list goes on.....

Download a Searchable BizTalk Help File - very handy to have when planning your upgrades or migrations.

Saturday, 17 January 2009 14:38:33 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | Insights | General | Training
# Friday, 09 January 2009

How to look cool at work.... Stick this poster by your desk, people will walk past and say "Hmmmm......" - guaranteed to reduce the amount of questions you get each day :-)
(Then you could start talking about the 'flux capacitor' and people will believe......)

The MS folks in Connected Systems Division (CSD) have done a superb job!!! Great comprehensive poster.

One thing to say about the poster - remember that the 'Tracking Host Instance' and the 'InProc Host Instance' are generally within the same Host Instance (it's good practice to separate these out)


Friday, 09 January 2009 17:05:14 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | Insights | Training

Hi folks,

Just in case you want to be able to get an excel spreadsheet listing all the possible errors or so, for monitoring and managing your production BizTalk environment (great for rules and monitoring from MOM for e.g.).


I came across this -


Written by fellow BizTalk MVP - thanks Paul!

Friday, 09 January 2009 10:09:53 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | Tips
# Monday, 05 January 2009

Cant do

“The product cannot be installed on this machine since it seems to be a domain controller”

What a start to 2009!!! – the above dreaded message when trying to (in this case) install BizTalk RFID on a DC.
For me – this happens quite a bit, as I’m building up a proof of concept, a demo, something to show and present with.

I always…always….forget to install BizTalk RFID bits before I promote to a DC (this technique can also cause security acct issues after the machine has been promoted to a DC – depends on how the authentication is setup etc)

NOTE: BTW – Installing BizTalk RFID on a DC is NOT SUPPORTED (had to put that one in their – keeps both sides happy)

For love or money I’ve bounced this question around for a while and come up empty, until…today!!! Niklas Engfelt a senior MS support engineer came to my rescue (he famously provided those thoughts from left field which were on the money! Big thank you Niklas)

He suggested grabbing Orca from the Platform SDK and having a browse through – I’d used HEX editors, disassembled files, attached process monitors during installs and looked through any config file with a fine tooth comb…but I’d never tried a MSI Editor.

The steps to Enlightenment: (changing the installer validation conditions)

  1. Grab a download of Orca from here (I didn’t have the platform SDK currently installed and wasn’t about to install 1.2 GB worth either) and follow default install prompts.
  2. If you haven’t done so already copy the RFID_x86 or RFID_x64 folders off the install media to a temp folder nearby (note: sometimes on Win2K8, the system prevents copied files from being accessed until an admin comes along and says ‘these are ok’ by going into File->Properties on each file. It’s weird I know, but I get it every now and then)
  3. Locate the RFIDServices.msi under the RFID folder and you’re ready to go.
  4. Launch Orca and open RFIDServices.msi to get something like:
  5. image
  6. Under the Tables Column select LaunchCondition and drop the 2nd Row as follows:
  7. image
  8. Drop the Row and Save the MSI file again.
  9. Run Setup.exe as per normal.

Oh what a sweet day!

p.s. I’m sure you’d be able to employ this technique onto other MSI’s causing grief.


Monday, 05 January 2009 14:18:43 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [2] -
.NET Developer | BizTalk | RFID | General | Tips
# Wednesday, 31 December 2008

I recently came across a Gartner report talking about all things to do with 'App Integration with Back End Systems' (in a nutshell... the report goes into detail)

The end result of several pages within this report is a graph (we like graphs :) showing Microsoft as a leader with a high ability to execute.

The Microsoft Technologies that fell under the microscope here are:

  1. BizTalk Server
  2. Windows Communication Foundation
  3. SQL Service Broker
  4. SQL Integration Services
  5. Team Foundation Suite
  6. Oslo + Azure

The graph looks as follows (snipped from the report):

magic quadrant


Get the whole report HERE

Wednesday, 31 December 2008 15:09:26 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | Insights | Oslo
# Wednesday, 10 December 2008

Microsoft BizTalk Server

On the 8th of December 2008 - Microsoft announced general availability of BizTalk 2009 Beta.

Here's the details

Public beta of BizTalk Server 2009.  Available at

1.       This beta is community supported.  The TechNet forums will be the primary place for support -

2.       General availability of BizTalk Server 2009 is still scheduled for the first-half of 2009 - we don't have a further update at this time.

  • Availability of BizTalk RFID Mobile for all new customers and current customers with SA
  • ESB Guidance 2.0 will also be available -

For more information go to:

Key Areas

BizTalk Server 2009 Beta:

  • BizTalk Server 2009 is Microsoft's core enterprise connectivity solution, which releases on schedule of every two years, and continues to extend capabilities to core process management technologies both in and outside of the corporate boundaries.
  • Microsoft continues to listen to its BizTalk Server 2009 customers and will optimize feedback from the beta release for future BizTalk Server releases
  • RFID Mobile:
    • BizTalk RFID Mobile extends RFID to the mobility industry to demonstrate strong customer support with RFID intelligence on devices running on Win CE/Win Mobile enabling businesses to make decisions in real-time.


Q: What did Microsoft announce today?

A: Today at the Gartner Application Architecture, Development and Integration (AADI) Summit, Microsoft Corp. announced the general availability of BizTalk RFID Mobile and BizTalk RFID Standards Pack, as well as the first public beta of BizTalk Server 2009 for download and an updated version of its architecture patterns and practices guidance, Enterprise Service Bus (ESB) Guidance 2.0. Microsoft has made these investments in the BizTalk Server product family to enable customers to more efficiently connect applications and to provide customers with a clearer, actionable view into their day-to-day operations.

Q. When will the products be available?

A: The BizTalk Server 2009 public beta and ESB Guidance 2.0 CTP are available now at for community feedback. The final products are slated to ship in the first half of CY09.  Evaluation versions of BizTalk RFID Mobile and the BizTalk RFID Standards Pack are available at and respectively.

Q: What new functionally will be delivered in BizTalk Server 2009?

A:  BizTalk Server 2009 supports the latest Microsoft platform technologies, including Windows Server 2008, Visual Studio 2008 SP1, SQL Server 2008 and the .NET Framework 3.5 SP1. These platform updates enable greater scalability and reliability, and many advances in the latest developer tools.

This BizTalk Server release will also deliver additional customer-requested capabilities around enterprise connectivity, including:

  • New web service registry capabilities with support for UDDI (Universal Description Discovery and Integration) version 3.0
  • Enhanced service enablement of applications (through new and enhanced adapters for LOB applications, databases, and legacy/host systems)
  • Enhanced service enablement of "edge" devices through BizTalk RFID Mobile
  • Enhanced interoperability and connectivity support for industry protocols (like SWIFT, EDI, HL7 etc)
  • SOA patterns and best practices guidance to assist our customer's implementations

You can find more details about BizTalk Server 2009 at

Q: What is next for BizTalk Server after BizTalk Server 2009?

A:  The charter of BizTalk Server remains consistent - it allows the Microsoft application platform to connect  and interoperate with other kinds of systems - LOB systems, legacy systems, smart devices (RFID), and B2B integration (SWIFT, EDI, etc.).  This has been the focus of BizTalk Server since it was initially released back in 2000 and continues to be its charter going forward.

At this point it's too early to comment on the specific features that will be part of the BizTalk Server "7" release; however, you can find details about general priorities for BizTalk Server at  We're in the middle of early planning on BizTalk Server "7" and will have more information to share about the specific scope of that release.

Q: What is BizTalk RFID Mobile?

A: BizTalk RFID Mobile is an RFID platform for Windows Mobile and CE. BizTalk RFID Mobile consists of a runtime engine, tools, and components to develop, deploy, and manage RFID solutions on mobile devices.  In combination with BizTalk Server RFID, the mobility release provides a platform for real-time decision making.  BizTalk RFID Mobile extends management and event processing to mobile devices and allows communication between the server and mobile platforms.

Q. What is the price and licensing for BizTalk RFID Mobile?

A: BizTalk RFID Mobile is available to all BizTalk Server 2006 R2 customers with Software Assurance as well as new BizTalk Server 2006 R2 customers who purchase licenses with Software Assurance. Our customers and partners told us that mobile RFID offerings are used in conjunction with a server product.  As a result, we included BizTalk RFID Mobile with each edition of BizTalk so that our customers can achieve the benefits of RFID mobile solutions without incurring undue costs. For BizTalk Server customers with Software Assurance this is a great opportunity to adopt a new product that can deliver an economic value today. When BizTalk Server 2009 becomes generally available, the customers will be able to acquire BizTalk RFID Mobile without software assurance.

Q: Is BizTalk RFID Mobile dependant on BizTalk Server? Can't I just use a free solution that's available rather than use BizTalk Server?

A:  BizTalk RFID Mobile and BizTalk Server are better together.  Using BizTalk RFID Mobile and BizTalk Server in tandem you can capture data on a mobile device and then send the RFID data back to BizTalk Server for filtering and the application of business rules.  There is no need to rewrite complex event filtering and business rule logic on the device as that functionality is already provided by BizTalk Server.  We have taken a platform approach that will ensure that you can write your mobile applications once and run them on multiple devices in addition to local device management, store and forward, and SQL Sink capabilities, which reduce your TCO.

BizTalk RFID Mobile and BizTalk RFID Standards Pack are a standard part of all editions of BizTalk Server 2009.  Given the intense interest in these offerings from our existing and new customers we decided to make them available now to BizTalk Server 2006 R2 customers with software assurance as well as new BizTalk Server 2006 R2 customers who purchase licenses with Software Assurance.

Rather than charge a per device fee, we included BizTalk RFID Mobile with all editions of BizTalk because we wanted to make it easier for customers to adopt mobile RFID solutions.  RFID is a fundamental enabler for business processes and should not be viewed as an isolated silo, which is why we have included our fixed and mobile RFID offerings standard in all editions of BizTalk.

Q: What is ESB Guidance?

A: The Microsoft ESB Guidance (first released in November 2007) provides architectural guidance, patterns, practices, and a set of BizTalk Server R2 and .NET components to simplify the development of an Enterprise Service Bus (ESB) on the Microsoft platform and to allow Microsoft customers to extend their own messaging and integration solutions.  For additional information on the current 1.0 version please see

We are announcing today the first public CTP release of the Microsoft ESB Guidance 2.0 for Microsoft BizTalk Server 2009. It incorporates many new and expanded features include the following:

  • New samples:
    • SSO Configuration provider for Enterprise Library 4.0
    • Multiple Web Service Execution Sample
    • Exception Handling Service Sample
  • New ESB Web services:
    • Generic Itinerary Services ( no itinerary header required)
    • New core features:
      • Alignment with Microsoft BizTalk Server 2009 ( Beta )
        • ESB Configuration tool
        • Centralized itinerary store
        • Itinerary resolver components
        • Itinerary forwarder pipeline component
        • Itinerary selector pipeline component
        • Itinerary designer
        • Centralized configuration uses Enterprise Library 4.0 Configuration Block
        • Centralized caching uses Enterprise Library 4.0 Caching Block
        • Multiple service invocation using both messaging and orchestrations
        • Itinerary BAM tracking
        • Improved ESB Core engine and itinerary execution
Wednesday, 10 December 2008 17:55:57 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [1] -
BizTalk | Insights | Tips
# Thursday, 06 November 2008

UPDATED - thanks to Luciano Evaristo Guerche he's come through with the super trump of all of this - grab the slides/sessions with his easy technique -

You get session titles and the whole works.

A big thanks to my good friend Thiago (runs the NZ CSD User Group) as he provided us on the OzTalk mailing list (list dedicated to BizTalk/CSD user group members) with a list of URLs to grab all the sessions + ppts.

Load these URLS into something like Free Download Manager and go surfing :)

Thanks Thiago! My ISP isn't happy with me at the moment.....over my limit....wonder why :-)

Thursday, 06 November 2008 12:48:17 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [2] -
BizTalk | Oslo | Events | PDC08
# Thursday, 30 October 2008

Hi guys - there's a bunch of stuff going on right now at PDC 08 in LA.

What's hot:

(If you're on a PDA/Mobile - grab a the PDC from here -


So if you can't sleep then there's going to be some interesting reading coming up for us all. :-)



Thursday, 30 October 2008 20:11:12 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | Insights | Oslo | Events
# Wednesday, 24 September 2008

Folks - I recently came across a great article on Perf in BizTalk.

I had previous noted a BTS2004 one but always handy to have the updated version.

I thought I'd jot this down before I lost the reference -