Biztalk Assembly Deployment goof-up

This, to me, seems a rare scenario that you might encounter.

But if you are using the "ReDeploy" feature in the Biztalk project (from Visual Studio) you might bump into this sometimes. When debugging your orchestration with HAT, you might encounter some strange behaviour - Biztalk simply skips some steps when performing the execution. You might notice something similar to this in the HAT -

 

The problem here is quite simple. When deploying a Biztalk artifact it is deployed in the GAC and also in one of the Biztalk database. The assembly in the GAC is used by the Biztalk host instance to perform the actual execution. The one in the Biztalk database is used for the tracking purpose so that it can be shown in the HAT. Now, lets say you add something to the orchestration (like I did with the Call shape immediately after the Decide) and when deploying this assembly you somehow missed the update in the database. In this case, the Biztalk Host instance does excute the newly added step and reports it to the database. However, when looking at it from the HAT, Biztalk is not aware of this step. Hence, it is shown as a blank and not executed.

I relied on the "Redeploy" property of the Biztalk project which states that it overwrites the current deployment with the new artifacts. However, it seems that redeploy does sometimes miss out the the updates either to the GAC or to the database. (Not sure of the reason why).

The best way to get out of this is to undeploy the Biztalk assemblies and also remove them from the GAC. I also realized that when I delete my Biztalk Application from the Administration Console, it does not remove the assemblies from the GAC. I had to manually remove the assemblies there. 

Simply re-deploy the application after undeploying and removing the assemblies from the GAC and you will be good to go. Hope this helps solve some confusion when you see something like this happening with your Biztalk project.