BizTalk Adapters: Buy, Build, or CodePlex

In the recent edition of The BizTalker Newsletter I featured the below article about BizTalk Adapters.  Read the article below or join the newsletter to have it delivered directly to your email.  I welcome any comments. feedback, or thoughts on this subject.

BizTalk contains many built-in adapters for communication with external systems.  When those built-in adapters do not meet the needs of your project, some hard decisions need to be made such as whether to buy an adapter, build an adapter using the framework, or use an adapter from CodePlex (i.e. open source).  This article will take a look at the pros and cons of each approach.

Buy an Adapter: While this option would require an outlay of cash up front, it can be advantageous in terms of support and speed of implementation. 

Pros:

  • Support is provided by the adapter vendor which can be rapid and 24×7.

  • Adapter vendor provides a simple, legal licensing model.

  • Purchased adapters are usually buy now, install tomorrow so there is no lag time to get up and running.

Cons:

  • Purchased adapters have an upfront cost to the project.

  • You may not be able to customize the adapter if it does not meet your needs.

Build an Adapter: While this can seem like the obvious answer for a software or consulting company, usually this is a large undertaking.  I talked with the writers of the famous SFTP Adapter on CodePlex.  They said it took 300 to 400 hours of effort to build that adapter.  Out of this time, it took about 200 hours just to learn the adapter framework and the rest to implement the protocol-specific logic.  Even at a conservative rate of $100 per hour, this is between $30,000 and $40,000.

Pros:

  • There could potentially be additional services revenue for the company and they may maintain Intellectual Property (IP) rights.

  • You have the complete flexibility to build what you want and how you want it.

Cons:

  • The company that builds the adapter will have to do the maintenance and support.

  • The building company may not be a subject matter expert in either the BizTalk Adapters Framework or the implementation protocol.

  • It could take a significant amount of time to complete, test, and deploy.

Use a CodePlex Adapter: CodePlex is a large open source software community.  It hosts many different BizTalk Adapters.  Some of the most popular are the SFTP Adapter and the Scheduled Task Adapter.  Sometimes 3rd party support is available, but in general support is through community forums.

Pros:

  • Adapter is provided at no cost.

  • You have access to the source code to customize as needed.

Cons:

  • There is no support for things that do not work as expected.

  • There are gray areas in terms of licensing and the impact of customizations.

  • When a new release is available, customizations need to be reapplied.

  • Company legal policies might restrict or prohibit the use of open source code.

In my experience we have both bought an adapter and used CodePlex – both times with the SFTP Adapter.  I have never built a custom adapter.
Lets take a deeper look at the decisions that impacted my situations.

Case 1 – Bought /n software SFTP Adapter.  This was for a large Fortune 500 client.  It was simple; the service contract with the client did not allow the use of any open source software due to license and support concerns.  I am unsure of the cost of the SFTP Adapter, but using it was simple and we had no issues.

Case 2 – Used CodePlex SFTP Adapter.  This was also for a large Fortune 500 client.  While the adapter was free, it took about 40 hours over 3 weeks for legal to review the license and approve the use of the adapter.  Also, we ran into a few situations that required customization of the adapter.  This resulted in an additional 80 hours of development and testing effort.  Total costs to us for the free adapter was at least 120 hours and this consulting firm charges much more than $100 per hour. 

In conclusion, it is important to remember the trade-offs with each adapter choice.  Remember that free does not always mean free and that even the best custom adapter could end up resulting in months (if not years) of support calls down the road.

Service Name Not Available and Commerce Server Import Directory BizTalk Issues

Recently I have gotten a rare chance to step away from writing word documents and working with Visio to get to do some exciting BizTalk testing.

As part of my testing, I was pushing BizTalk and various Adapters until they failed.  In doing so, sometimes this caused some odd side effects.

Recently, I was seeing thousands of Active Service Instances in BizTalk Administration that looked like this:

The Service Name was simply “Name is not available”.  To make matters worse, I was not able to terminate the instances.  I tried stopping and restarting the hosts, restarting the applications, restarting the Server, but nothing seemed to work. 

Out of pure luck, I decided to check the SQL Agent Jobs… and sure enough the SQL Agent was not running.  During all my performance testing none of the Message Box clean-up jobs ran and that left BizTalk in an undesirable state.  I started the SQL Agent, gave the jobs a few minutes to run, and then was able to clean out the Active service instances.

So the moral of the story, if you see odd BizTalk behavior make sure you check your SQL Agent to ensure it is running and the jobs are completing successfully.

Another minor item I ran into deals with the Commerce Server Catalog Adapter.  It has a property called “Import Directory”.  The Adapter uses this as a temporary file store when submitting messages.  This means the BizTalk Host will need read /write access to this location.  This is something that can be easily forgotten… like I did. 

So what happens if you forget to update this property or to give the folder the correct permissions?

Bad Things.  And in BizTalk world, bad things translates into 4 Error Messages per input message in the event log.

 

Why we get so many errors – I do not know.  If I remember correctly, none of them were very useful in correcting the problem.