Dependency of the BizTalk Applications

Aug 18, 2016 at 2:28 AM
Edited Aug 18, 2016 at 2:29 AM
Hi Ritu,

Thanks a lot for nice Tool.!!

Does this tool identify the dependency of the BizTalk Applications.

Let Say..

Application A Dependent on Application B and Application B dependent on C.

If i want to deploy the changes to application A--i need to cleanup B and C ..then deploy A and re deploy application B and C.

how to do this with this tool.
Aug 20, 2016 at 8:06 AM
Hi Amar,

No the tool does not take care for dependent application. Since the tool works on Msi , the dependency has to be handled manually for now.
You can undeploy the previous app using tool and then do deployments in order.

The reason this is not yet in place as there can be multiple applications using one particular app and there can be running , suspended messages that can be of interest .
Administrators would need to investigate those before actually deleting those messages.
Aug 27, 2016 at 4:07 PM
Hi Amar,

The dependency resolve is something that will be available in the new version of the tool. Its being worked on and soon will be available for general use. Once u select the msi that needs to be deployed in the farm, the tool will detect the dependent applications and then u can specify the msi for those applications.

The tool will take care of resolving the dependencies and deploy apps to the farm as necessary.
Sep 1, 2016 at 3:48 PM
The dependency resolve is available in V2.0
Sep 13, 2016 at 9:46 PM
Hello Ritu,

I'm currently trying your tool.
Thank you very much for sharing it for free.

I'm facing an issue regarding the dependencies resolution capability.

In my case, I have two applications :
  1. Application A which contains a pipeline P1.
  2. Application B referencing application A and using pipeline P1 in a sendport.
If the application A is exported as MSI, when the resulting MSI is loaded through the BizTalk Application Deployment tool, the tab named "dependent applications" does not display anything unfortunately and if I run all the steps listed in the tab named "deploy actions", I get an error when the "delete application" step is executed with the following stack trace :

Application: ApplicationA can not be deleted.
Microsoft (R) BizTalk Application Deployment Utility Version
Copyright (c) 2014 Microsoft Corporation. All rights reserved.

Information: Removing application "ApplicationA" from BizTalk configuration database (server="BIZTALK2013R2", database="BizTalkMgmtDb")...
Error: Error while removing application "ApplicationA".
Error: Failed to delete resource(s).
Error: Change requests failed for some resources.
Error: BizTalkAssemblyResourceManager failed to complete end type change request.
Error: Removal of the assembly failed. Make sure that all items in the assembly you are trying to remove fulfill the following conditions:
  1. Pipelines, maps, and schemas are not being used by Send Ports or Receive Locations in the same or referenced application(s)
  2. Roles have no enlisted parties
    Database Error:
    The DELETE statement conflicted with the REFERENCE constraint "bts_sendport_foreign_sendpipelineid". The conflict occurred in database "BizTalkMgmtDb", table "dbo.bts_sendport", column 'nSendPipelineID'.
    The statement has been terminated.
Command failed with 1 errors, 0 warnings.

Please let me know if I use the tool in a wrong way.

Best regards
Sep 16, 2016 at 7:20 AM
Hi cmarmey,

Thanks for using the tool. I am glad its helping you out in various activities.

Thanks for pointing out the issue in the dependency resolver. The tool was only resolving dependency for assemblies being referenced and used across applications but was missing the application from "ReferencedApplication".

I have updated the resolver to include applications from ReferencedApplication section as well.
Please download the latest version to try it out. I have updated the release.

So now if the applications are used as referenced applications for pipeline sharing etc would also be resolved automatically.
Now if a application A is being referenced by application B to share a pipeline, it will be listed.

Two point to note here is:
              1. Application A will be listed if its under "ReferencedApplication" section even if no artificats are being used at the port level.
              2. This is to make sure that unnecessary referencing is also avoided and the Msi package should not have the reference if its not being used. 
                              P.S : Even if its unnecessary reference its not a deployment issue for the tool.
Please try it out for your needs and let me know how it went.