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

Folks - my blog has moved to

# Friday, 12 April 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, 11 October 2012

Hi folks,

What a great time we're in at the moment. Cloud(s) are knocking a the door, local devices, windows 8 etc.

No complaints from me that this world is getting more and more connected.

To maintain those connections and handle new ones - Microsoft BizTalk Server serves as your on-premise middleware platform.

We're running a course shortly on Design, Build and Manage your solutions within BizTalk Server.

We have a wealth of knowledge around Integration and Cloud technologies. As you and I know, integration is all about the systems you're integrating with.

Here's the details - and hope to see you there. Mick (you're new Azure Integration MVP)

Come along to our office for a week of BizTalk 2010 Bootcamp Training!


We will take care of you with delicious catering, friendly staff and provide our state of the art BizTalk trainer. There are a limited amount of seats, so book now!

Click here to register

Start: Monday, November 12, 2012

End: Friday, November 16 2012


What is BizTalk?

For your business, BizTalk provides the "glue" to giving you a very good integration foundation for both internal applications as well as the outside world and giving you consistency across those interfaces as well.

BizTalk is a platform that is durable, reliable and fault tolerant right across your services, from email, FTP services, web services, database calls and much more, you will have something that retries all of those for you.


Why BizTalk?

BizTalk provides a level of maturity to customer operations as well as consistency. It is harder for customers to build themselves, the capabilities that BizTalk can offer out of the box. Our experience is that customers often start out building smaller applications here and there with eventually having over 100 applications talking to each other in a very specific way, all in a very ad-hoc approach and all very speciailised. Over time to maintain those systems becomes a big challenge for the client with increased complexity along the way.

Whereas by introducing a uniform, a best practice way of doing something, "business rules" such as within BizTalk, it eases that integration with the company to make it a lot simpler and easier to manage and everyone gets visibility in to the activity of those calls within the applications.


What our customers are doing with BizTalk today

BizTalk being a middleware product is being used in many different scenarios, from simple file transfers right across to complex business process automation.

Customers in one instance are getting real time notifications around FTP, where certain files appear, then systems have to react or respond immediately instead of within a polling interval that may occur at any time during the day. So being able to build out that infrastructure and apply or update databases, all of that happens right across the BizTalk layer, then exposed out via web services.

In-short BizTalk forms another tool in the client toolkit, using the MS integration stack, so on top of not only BizTalk and all of its' capabilities and adapters, we have WCF (Windows Communication Foundation), messaging, MSMQ and many others in the integration stack, not to mention Azure and cloud hybrid solutions we can deploy and employ today. So with clients it's not just about providing BizTalk to solve a problem, it's about using the tools in the toolkit to meet their requirements, whatever the tools may be, to solve their immediate challenge.

Thursday, 11 October 2012 15:29:10 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | Integration | ServiceBus | 2010 | 2010 R2 | Events | 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
# Thursday, 26 January 2012

Recently there’s been an update to the ‘on-premise’ AppFabric for Windows Server.

Grab the update here - (runs on win7, 2008, 2008R2)

What’s new

I’m in the process of updating my components, but the majority of updates seems to be around caching and performance.



This allows a backend provider to be used on the cache servers to assist with retrieving and storing data to a backend, such as a database. Read-through enables the cache to "read-through" to a backend in the context of a Get request. Write-behind enables updates to cached data to be saved asynchronously to the backend. For more information, see Creating a Read-Through / Write-Behind Provider (AppFabric 1.1 Caching).

Graceful Shutdown

This is useful for moving data from a single cache hosts to rest of the servers in the cache cluster before shutting down the cache host for maintenance. This helps to prevent unexpected loss of cached data in a running cache cluster. This can be accomplished with the Graceful parameter of the Stop-CacheHost Windows PowerShell command.

Domain Accounts

In addition to running the AppFabric Caching Service with the NETWORK SERVICE account, you can now run the service as a domain account. For more information, see Change the Caching Service Account (AppFabric 1.1 Caching).

New ASP.NET Session State and Output Caching Provider

New ASP.NET session state and output caching providers are available. The new session state provider has support for the lazy-loading of individual session state items using AppFabric Caching as a backing store. This makes sites that have a mix of small and large session state data more efficient, because pages that don't need large session state items won't incur the cost of sending this data over the network. For more information, see Using the ASP.NET 4 Caching Providers for AppFabric 1.1.


You can now enable compression for cache clients. For more information, see Application Configuration Settings (AppFabric 1.1 Caching).

Multiple Cache Client Application Configuration Sections

A new dataCacheClients section is available that allows you to specify multiple named dataCacheClient sections in an application configuration file. You can then programmatically specify which group of cache client settings to use at runtime. For more information, see Application Configuration Settings (AppFabric 1.1 Caching).

Thursday, 26 January 2012 10:14:06 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | AppFabricServer | Azure | Integration | 2010 | 2010 R2 | Dev
# Monday, 23 January 2012

Hi folks, welcome to Monday…so I thought.

Here I was registering a message inspector which should take 5 mins tops.

Find the right config, make sure the .NET full assembly name is cool and away we go.

I wanted to use this guy from my custom WCF Adapter within BizTalk – so I needed my new message inspector to be seen by BizTalk.

So I used:

<add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"/>

and added this guy to the <behaviorExtensions> element in the Machine.Config for .NET 4.0 x64/.NET 4.0 (& .NET 2.0 for good measure)

As if a scene from SpongeBob,… 3 hours later….

I had triple check GACs, caches, full assembly names etc…Scotty popped his head around and said “Oh yeah I had this one ages ago you need to use this…”

<add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour, Breeze.WCF.Extensions, Version=, Culture=neutral, PublicKeyToken=c2c8c7e827e9dd6a"/>

Can you spot the difference?


Interestingly enough – this work is part of a .NET plugin I wrote for IIS 7.5 and to register the plugin you use “Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"


My head hurts for a Monday…

Hopefully you reclaim the hours I’ve lost here.


Monday, 23 January 2012 16:52:20 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | 2010 | 2010 R2 | Dev | .NET Framework 4.5
# 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
# Friday, 09 December 2011
Friday, 09 December 2011 10:57:40 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2010 | 2010 R2
# 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
# Monday, 05 September 2011

In recent days the Cumulative Update #2 has been released with several improvements and fixes.
(The team have done an amazing job addressing previous issues/fixes with currently *no* open issues!!! WELL DONE GUYS)

As you may well know by know – BizTalk is made by people who care for Integrators (us) who care. BizTalk has always been a quality product in the past and in my opinion will be in the future.

Here’s some details if CU2 that was passed onto me…

BizTalk Ta2010 CU2 Details:

Public KB Article

BizTalk Server 2010 CU2 List

BizTalk Adaptor Pack (BAP) 2010 CU2 Details:

Public KB Article

BAP 2010 CU2 List



It is a pleasure to announce the release of CU2 for BizTalk Server 2010 on behalf of the BPD Sustained Engineering group.  With this CU, we have addressed all known customer issues from all branches of BizTalk (i.e. applicable to BizTalk 2010) and also available in multiple locales.


This CU includes few serviceability improvements along with product updates based on customer requests.  Some of the notable updates in this CU are:


  • Transparent CU Setup: Provides info on number of fixes applicable to feature during installation
  • Enhanced EPM debug Tracing: Helps the support team isolate specific failures in a large volume scenario
  • BizTalk Host Instances not coming back-on-line after SQL being off-line: Allows to restart the BizTalk service automatically when SQL connectivity is restored
  • BAM Archive checks & Logging before dropping tables from BAMPI: Prevents possible data loss scenarios when archiving fails unexpectedly and also allows for a user configurable setting on the rate of archiving.
  • Applications stop responding or crash when System Center Operations Manager monitors BizTalk Server applications: Issue was caused by a race condition in one of our internal class and has been fixed in this release.



Fixes Per Feature Area




Monday, 05 September 2011 11:44:45 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
2010 | BizTalk Adapter Pack | Insights
# 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
# 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
# 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
<2017 March>
 AppFabric CAT
AppFabric Windows Server Customer Advisory Team - New Blog.
[Feed] BizTalk 2006 - Windows SharePoint Services adapter
BizTalk 2006 Sharepoint adapter!!
 Breeze SharePoint 2010 Bootcamp
Breeze SharePoint 2010 Bootcamp
[Feed] BTS 2006 R2/EDI
[Feed] Chris Vidotto (MS BTS Legend)
Needs no intro....
 Mark Daunt
About the author/Disclaimer

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

© Copyright 2017
Sign In
Total Posts: 608
This Year: 0
This Month: 0
This Week: 0
Comments: 270
All Content © 2017, Breeze