Our speciality at Burch Technologies over the last few years has been tackling the hardest integration scenarios out in Enterprise IT land. We often get called in as the ‘project turn around’ guys, after somebody else has screwed something up. We’ve turned around several BizTalk/Integration projects for several of our clients in Sydney over the last half year.

There are basically 3 ways to screw up an Enterprise Application Integration (EAI) project.

1. Not getting the High Level Architecture right.  What I mean by this is, EAI/ESB/SOA has its own patterns, its own ‘paradigm’ and its own traps and pitfalls. For instance, if your way of thinking about integration is moving files (flat or xml) around then you’ll be completely oblivious to the advantages of using Line of Business Adapters or database (WCF SQL, Oracle) adapters for transactional, real time, event driven processing. Where ever possible, we avoid moving files around – ask me why - because the disadvantages add up quickly. And this is 12 years of BizTalk/integration experience talking here. Another way of not getting the high level architecture right is to focus on object types (customer, invoice, whatever) and not the messaging sequence required to get that customer object updated in the ERP correctly FOR THAT SYSTEM – If only it was as easy as just calling and update operation. I could go on.

Another gotchya I’ve seen is falling in love with an ESB (Enterprise Service Bus) type of architecture and not understanding the trade offs and costs associated with it. BizTalk folks get polarised by this discussion – needlessly in most cases.

2. Not getting the code/implementation right. Some of the worst BizTalk implementations I’ve seen have been done by “BizTalk Contractors”.  This is someone who might have a fair bit of experience on BizTalk but only in one particular area. For example I know of a situation where a “BizTalk Contractor” who knew B2B and EDI well but not Line of Business systems told a client that the BizTalk needed to receive an XML message from a SQL Server database (Which is not true, the database adapters in BizTalk can interoperate natively) and so the client needlessly went down the path of custom coding stored procedures to return XML. One of the advantages of using Consultants over contractors is that as Consultants we move across more client projects, more types of systems and see more types of architectures and patterns than others. And beware of the general consultant who thinks she knows integration because they did a 3 month project. You don’t get a Dynamics CRM consultant to implement a SharePoint site. So don’t get a .Net/WCF consultant to implement BizTalk – call us instead Smile.

3. The third major way of not getting projects right is not getting the infrastructure and non-functional requirements right. BizTalk infrastructure requires a careful design. Putting in the installation disk and clicking next 20 times is a recipe for disaster. Additionally, there are simple things we do at Burch Technologies to make our systems easy to manage which payoff in the operator satisfaction/total cost of ownership department. For example when BizTalk is polling for data out of a LOB system the naive implementation is to SELECT * FROM Customers WHERE Status = ‘FOO’. We don’t do that. We wrap that in a storedprocedure, do SELECT TOP PARAMX * FROM CUSTOMERS WHERE Status = ‘FOO’. Then in the BizTalk receive location we can tune the throughput of that process by playing with the polling interval and the number of records (PARAMX) processed in each interval. Its nice, and it stops flood (eg end of month) scenarios from hosing BizTalk and other down stream systems. Naive implementations will never account for this type of non functional niceness. Even better is to not poll for data at all – again, ask me how Smile.

Get those three high level components right and success is much easier to attain.

As with anything, there is a continuum of expertise. Starting with naive through to wisened and battle scarred. Make sure you get the right level of expertise to match the problem space – that's my (self serving) advice.

My other  advice is beware of the person or product brochure that tells you integration is easy. At Burch Technologies, we make it LOOK EASY for our clients, but we’re under no illusions about how difficult EAI is.

My next blog posts will be about how cloud technologies are making integration easier. Easier being a relative term.

 

I was recently compiling a list of software systems Burch Technologies Pty Ltd (aka Burch Consulting) has integrated to over the last few years. It’s a pretty impressive list, even if I do say so myself.

I’d thought I share the list on my blog here in an effort to get some Google/Bing attention.  Some of these systems were pretty straightforward since they were webservice’s based. But some had no real integration capabilities at all, namely Pronto (Australian ERP system) and BasePlan (another Australian ERP system (I detect a theme here)). Those are the most interesting/challenging projects because you start from scratch…

Software System

Integration method

Complexity (1-10) 10 = Hardest

· Dynamics Ax

BizTalk adapter

6

· Dynamics CRM

Webservices

4

· SAP

BizTalk adapter

8

· JD Edwards

BizTalk adapter/webservices

9

· Oracle E-Business Suite

BizTalk adapter

7

· Oracle Databases

BizTalk adapter

4

· SQL Server

BizTalk adapter

4

· Seibel

Webservices

3

· B2B (various)

NA

 

· EDI (various)

NA

 

· Objective

Webservices

7

· Pronto

Custom Integration Implementation*

10

· Dynamics GP

BizTalk adapter

5

· Chris21

Custom Integration Implementation*

8

· Baseplan

Custom Integration Implementation*

10

· BasWare

Webservices

3

· Maximo

Webservices

7

· HP Trim

Webservices

10

· SharePoint

Webservices

3

· Intelledox

Webservices

6

· CargoWise EdiEnterprise

Webservices

5

· Onyx

Webservices

4

If you have one of these systems and you need some help integrating to them contact us….

Mark

 

EDIT 11/10/2011 I only posted this yesterday but I wanted to fix up some possibly confusing/misleading statements.

One of the problems we see with BizTalk Enterprise build outs is that in some scenarios and with some limitations there is no out of the box way to get complete High Availability if you don’t have a hardware load balancer.  For example, if you have BizTalk webservices you’ll want NLB. If your don’t have a hardware load balancer in the datacenter you’ll install Windows NLB on IIS. Ok great, but now that you have Windows NLB installed on the BizTalk nodes, you won’t be able to cluster the BizTalk hosts which run the FTP, SMTP, MSMQ or Database readonly extract  receive locations. If you have two active hosts receiving using any of those, you will end up with duplicate messages. The above assumes that you have only two BizTalk Enterprise nodes, not four. If you had four (or more), you could Windows NLB two nodes, and cluster two nodes.

We have a product that solves this conundrum. http://www.burch.com.au/home/Products

Due to unavoidable limitations in the protocols, the BizTalk adapters for FTP, POP3 and MSMQ require Microsoft Clustering Services to achieve high availability and avoid the processing of duplicate messages. There are two drawbacks to this.

1. The complexity of configuring and maintaining Microsoft Clustering Services on the BizTalk nodes.

2. Microsoft Clustering Services cannot coexist with Windows Network Load Balancing (NLB).

Burch Consulting offers an alternative.

The BTS Monitor and Failover Service is a product that removes the need to cluster the BizTalk Server nodes whilst still achieving full redundancy. It works like this: A windows service monitors the primary node A and turns on the failover host (containing the FTP/POP3 receive locations) on Node B in case of failure on Node A. This windows service ensures that only one node is ever processing FTP/POP3 messages and ensures high availability in case of failure. Because this utility allows only one node to be active, the possibility of receiving duplicate messages is removed. This windows service runs actively on both nodes concurrently to provide high availability to the failover process.

In addition to the above mentioned protocols this component can provide HA for database (SQL Server or Oracle) receive locations which perform READ ONLY data extracts.

 

The BizTalk terminator tool is now hosted on Microsoft downloads at

http://download.microsoft.com/download/4/8/C/48C1808A-6014-4DA9-8C6B-C8FDCAE6E557/BTSTerminator.zip

Luckily this terminator won’t sleep with the housekeeper….

 

Just putting this here for future reference.

When using a temporary installation account to build BizTalk environments the SQL Agent Job owner becomes that temporary account. Which is fine until that temporary account is deleted at the end of the project and all the jobs stop working. (Saw a client recently whose jobs hadn’t been running for 3 months).

Anyway going in after installation and manually changing the owner is a pain so I created this script.

 

Run this:

USE [MSDB]
GO

SELECT 'EXEC msdb.dbo.sp_update_job @job_name=N'''+NAME+''' , @owner_login_name=N''sa''' FROM msdb.dbo.sysjobs where name like '%biztalk%'

Then copy and paste the output and run that. Here’s what I ran…

EXEC msdb.dbo.sp_update_job @job_name=N'Backup BizTalk Server (BizTalkMgmtDb)' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'CleanupBTFExpiredEntriesJob_BizTalkMgmtDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'DTA Purge and Archive (BizTalkDTADb)' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'MessageBox_DeadProcesses_Cleanup_BizTalkMsgBoxDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'MessageBox_Message_Cleanup_BizTalkMsgBoxDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'MessageBox_Parts_Cleanup_BizTalkMsgBoxDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'MessageBox_UpdateStats_BizTalkMsgBoxDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'Monitor BizTalk Server (BizTalkMgmtDb)' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'Operations_OperateOnInstances_OnMaster_BizTalkMsgBoxDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'PurgeSubscriptionsJob_BizTalkMsgBoxDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'Rules_Database_Cleanup_BizTalkRuleEngineDb' , @owner_login_name=N'sa'
EXEC msdb.dbo.sp_update_job @job_name=N'TrackedMessages_Copy_BizTalkMsgBoxDb' , @owner_login_name=N'sa'

Microsoft has released an article and sample for consuming RESTful services from BizTalk. This is a good treatment of the topic, a topic which has been inadequate until now.

Article: http://social.technet.microsoft.com/wiki/contents/articles/invoking-restful-web-services-with-biztalk-server-2010.aspx

Sample: http://code.msdn.microsoft.com/Invoking-ReSTful-Web-with-776ceb78 

Good stuff!!

 

This Gartner report has Microsoft as the clear leader on the “ability to execute” axis and has it riding high in the leaders quadrant against IBM, Oracle, Tibco and Software AG. This is important for guys like me who implement Microsoft integration technologies for clients as it gives us a clear credibility boost against competitive technologies from other vendors.

At Burch Consulting we’re running BizTalk Server Administrator training from Nov 17-19. In Sydney. Contact mark AT burch.com.au if you’re interested.

From the install guide….

 

Each CAB file contains localized versions of the following software:·

· Microsoft Office 2003 Web Components (OWC11) Version 4

· Microsoft .NET Framework 4 and 3.5 SP1

· SQLXML 4.0 with SP1

· ADOMD.NET 9.0

· ADOMD.NET 10

 

Language

Windows Server 2008 32-bit Edition

EN

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x409

CN

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x804

DE

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x407

ES

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x40a

FR

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x40c

IT

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x410

JA

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x411

KO

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x412

TW

http://go.microsoft.com/fwlink/?LinkID=189407&clcid=0x404

Language

Windows Server 2008 64-bit Edition

EN

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x409

CN

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x804

DE

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x407

ES

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x40a

FR

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x40c

IT

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x410

JA

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x411

KO

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x412

TW

http://go.microsoft.com/fwlink/?LinkID=189408&clcid=0x404

Language

Windows Server 2008 R2

EN

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x409

CN

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x804

DE

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x407

ES

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x40a

FR

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x40c

IT

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x410

JA

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x411

KO

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x412

TW

http://go.microsoft.com/fwlink/?LinkID=189409&clcid=0x404

 

A client of mine was struggling to get ENTSSO clustered even though he was following the documentation to the letter.

The command he was running was:

C:\Program Files\Common Files\Enterprise Single Sign-On>ssoconfig –restoresecret d:\sso\SSOBA50.bak
Password reminder : asm sa default password
Password : ********
ERROR: 0x8007051B : This security ID may not be assigned as the owner of this object.

 

The error, as you can see is some weird security error. I told him to run  the CMD prompt as administrator (right click run as administrator) and it worked no problem. Problem solved. Client happy.

All the SSOCONFIG and SSOMANAGE commands should probably be run as administrator so as to not be tripped up like this…