I have had a really good time with this current contract and I have learned a lot new tools around BizTalk. It was one man army project and I had the privilege to try all new flavours in the BizTalk development. Below are the list of new stuff that I have learned in this project.
1. TFS 2010 Branching and Merging.
I have previously worked with TFS, but this time, I worked in a profressional way. I created projects suites based on standard development practices, with a MAINLINE branch and a DEVELOPMENT branch. The development branch was actually branched out from the MAINLINE. So now when all the coding is complete and when it is ready to be moved to UAT, I would merge my code to the MAINLINE branch. The Operations team would use the deployment files from the MAIN branch to deploy the code in UAT and PROD environments.
I also learned how to label the releases. Although I new it before, I didnt know the significance of it. Now I know its full power. Awesome feature.
2. Deployment Framework for BizTalk
I have been following the legacy of using the Visual Studio and BizTalk adminstration console to deploy projects. I didnt know the power of MSBUILD until I went through a blog that discussed about the Deployment Framework for BizTalk. This piece of software is a open source project avaialble on CodePlex which will make your life easier when it comes to deployment. The software adds itself to the Visual Studio IDE making it easier for you to deploy your entire interface in a single click. You can also make use of MSBUILD scripts to deploy all the interfaces in a single go.
Consider that you are building a complex project and you have a common schemas project which is referenced by more than 10 interfaces. You have got a change request to change one schema, this means, you need to undeploy all the referenced applications, re-deploy the schema project, deploy the referenced applications and then import the binding files. This is a very error prone activity and you would often miss something. But with the MSBUILD scripts, you can just literally do this entire deployment with a single script file. Just run that and relax with a coffee or beer if your company permits.
3. BizUnit with Visual Studio Test Case Framework.
I had this long plan of writing BizUnit test classes and use the NUnit console to test the cases. I did got the oppurtunity in this project to use BizUnit. I downloaded the 4.0 version from CodePlex and re-built the source code. I then started looked for samples in google and to my bad luck all the samples that I looked were the ones which are deprecated in the 4.0 version. Luckily there were some samples out there and there was something included with the SDK itself. I created my own class files(without knowing the potential of the Test Case Framework in Visual Studio IDE) and starting executing the test cases. I was glad that it worked according to my command. But I still wanted to view the test results in a graphical format, that is because I have seen Nunit Console with all those green lights and red lights. But then I stumbled across a blog which taught me that I can use the Visual Studio IDE for creating test cases and use their framework to visualize the Test Cases. How Sweet is that. I migrated my code to the framework and starting testing my cases. I can now view the whole history of the Case details.
4. ESB exception console
When something failed in BizTalk, I always get the question, what happens next? Can you replay that message. I used to hear this question a lot from a lot of people and will say the same answer that “once the message is consumed within BizTalk it is immutable and I can’t do anything further, you need to resend the message to us”. However after learning about the ESB exception management stuff, now I can tell anyone that we can replay the message and even alter the message before sending it. The microsoft team has delivered a lot of stuff which will enable people to replay the messages, however I would still need to customize the ESB portal to replay the messages via FILE adapter. Also the major problem is, you can’t replay a message which has context properties. If you do that, the context properties will be lost. I resolved that issue by adding a custom pipeline component and some code modification in ESB portal.
5. CAT Instrumentation tool
When you work with BizTalk you often realize that somewhere deep within the orchestration something has happened. To troubleshoot the issue you sometimes need more time than you have taken to develop that orchestration 😉 Thats where CAT instrumentation tool comes in picture. Again its a open source project available in code plex, it is a C# class library project. You just need to add reference to this dll and start instrumenting your statements within your expression shape. You also have a nice Instrumentation controller available in CodePlex which can control the Start and Stop of event tracing. The best thing is you can switch off/on debugging. This is a nice feature which we might need in Non-development environments, where we are in a hectic situation to analyze what is going on with that orchestration.
Hope I wont forget any of these nice tools in my next contract.