Search code examples
biztalkbiztalk-2013biztalk-orchestrationsbtdf

Automated testing an Orchestration


I have an orchestration which polls data from a database (which is actually used by an ERP, so i am not able to manipulate data in this database), Once the polling port finds matching data it executes the orchestration and sends data to a third party web service.

The logic used in this orchestration is complicated and often prone to change, and so it's important to cover it with proper set of tests. I am thinking about this for a while and even thought of using 3 different components so that,

  1. First part (can be only 2 ports) reads the data from the database and put into a folder

  2. Second one (current orchestration) uses a file port to read data and dumped by the first component and it dumps the resultant file to another folder

  3. Third component reads the file dumped by the second component and send it to the web service

However I have few concerns,

  1. Is this a frowned upon practice, when it comes to the BizTalk? Or is it a normal way to do things?

  2. The performance - would it be significant slower compared to the current solution?

  3. We are currently using the one of the server to run the tests / do the build using BTDF and Jenkins. Is there a way to disable the components 1 and 3, run the tests and re-enable them once build is completed so that it can function normally?


Solution

  • You can avoid the overhead of writing to and reading from files by using the built-in functionality of the MessageBox. The first place to start is here: https://msdn.microsoft.com/en-us/library/aa949234.aspx

    There is an excellent Biztalk sample which shows how you can use this approach to modularise your functionality into a set of orchestrations which independently read from and write to the MessageBox. It's referenced at the bottom of the previous page and is called "Direct Binding to the MessageBox Database in Orchestrations".