We got a big problem. Of course, it is because of bad project planning but we had little experience with BizTalk when this all started so now we are were we are.

The situation:
there are two teams.
One team creates web services which will work on database server computers (there may be many computers with many kinds of databases with different kinds of documents, we are creating one service for each kind of documents). So we have a bunch of web services called, for example InvoiceDocument, RouteDocument. ReportDocument and so those services are growing.
the second team (and I am in it) is creating orchestrations that calls web services created by the first team. There may be situations when one orchestration needs more than one kind of document. To avoid schema diplication issues on our BizTalk server (BizTalk refuses to run orchestration normally if there are more then one schemas with the same root name and the same namespace even if they come from different assemblies) we have created one BizTalk application called WebReferences and there are all the references and schemas for all the web services created by the first team. We are grouping orchestrations in applications to make logical groups and assign those groups to programmers. So every such application with some orchestrations depends on WebReferences project.

everything works ok until it comes to deploying orchestrations. As teams work paralelly there are new web refernces created often and they need to be added to WebReferences BizTalk application so the orchestrations can use those references to call web services.

The problem: each time web references are updated and need to be deployed we have to undeploy all the orchestrations because they all use schemas from WebReferences. That takes really long time especially because programmers are physically located in different cities and network slows everything down a bit. And the project is growing so each time there are more and more orchestration applications to undeploy / deploy. Ufff!

The question: is there ANY way to avoid this undeploy/deploy for dependent orchestrations each time we need a new schema added to BizTalk and at the same time guarantee that each schema will be deployed only once (or maybe somehow make BizTalk use only schemas added to current running application ignoring the other schemas from other applications which may have the same root and namespace)

Will be really grateful for any useful ideas.

Re: BizTalk R2 General BizTalk application dependencies and duplicate schemas - how to avoid it?

Scott Colestock

You should give consideration to going ahead and having duplicate schemas deployed, relying on techniques discussed here (i.e. receive piplines to disambiguate):


Having a service provider and service consumer rely on the exact same deployment of a given schema is problematic for lots of reasons (e.g. versioning.) This would be true with or without BizTalk. BizTalk is fine with multiple schemas deployed with the same root name and namespace as long as you give it the appropriate hint about which schema you're actually talking about in a given situation.

Scott Colestock