Chaining Deployment Scripts

Topics: Server Deployment
Feb 6, 2014 at 7:47 AM
Hi All,
Started using BTDF since a month. Its simply great. In the last month modified simple projects to use it. Works great.
Now stuck up with the following scenario.
1) Got 2 common schemas project. say schema1, schema2.
2) They are shared by multiple integrations project. say. Int1, Int2, Int3

How can I use deployment framework for these individual projects ?
a) Should I include Schema1, 2 in every individual Integrations ?
For eg., Int2, Int3 is running already fine. Now I want to undeploy and re.-deploy Int3 ?
If I include schemas in Int3, it will trouble Int1 and Int2 ?

b) Is there a way to chanin Deployment ? like Deployment X should be called before Deployment Y ?

All your suggestions are appreciated.
thanks
Coordinator
Feb 7, 2014 at 4:47 AM
Hi, glad to hear that you like it!

a) I typically have a separate solution (.sln) for each shared BizTalk application, which contains one or more BizTalk and/or C# projects and a Deployment Framework project. The dependent/consuming applications, which reside in their own solutions, include the shared projects via a relative path into the shared source tree. The dependent projects then include a project reference within the solution to the shared projects.

When it comes to deployment, the shared application is deployed independently with its own BTDF MSI. The dependent application is deployed with its own BTDF MSI (which does not include any physical files from the shared application).

I also use the AppsToReference ItemGroup in each dependent application to add a BizTalk app reference back to the shared application.

In your example, you could deploy and undeploy Int3 without affecting the others (except for host instance restarts). Changing Schema1 and Schema2 could mean a total redeployment based on the hierarchy of dependencies.

b) You must respect the dependencies between apps and deploy and undeploy in the appropriate order, but the Framework does not currently include any tools to automate that process. It's something that you could script or document.

Thanks,
Tom