BizTalk Project Structure Guidelines

When I first started developing in BizTalk 2010 I couldn’t find any definitive articles about how best to organise my solutions and projects in visual studio. I started with one solution for an individual project with individual projects containing all the artifacts for a specific area. I soon got into trouble with dependencies throwing errors on deployment and the end result was generally a bit of a mess.

Here are my recommendations on how to organise a BizTalk solution in Visual Studio.

Separate your solution with individual projects for each type of BizTalk artifact as follows.

  • Schemas
  • Transforms
  • Orchestrations
  • Pipelines
  • Components (c# project for any custom objects)

Create your first project as <CompanyName>.<FunctionalArea>.Schemas and the solution as <CompanyName>.<FunctionalArea>. for example “MyCompany.Sales.Schemas”. This solution should contain all artifacts with interfaces either publishing from your sales system into the BizTalk message box or subscribing to messages in the BizTalk message box.

Also create another solution called <CompanyName>.CommonArtifacts with projects containing the canonical form for each schema. e.g. <CompanyName>.CommonArtifacts.Schemas.Customer might contain the Customer.xsd which would then be referenced by all the other solutions which subscribed to this message type. The advantage of having a separate project for each canonical form is that you create less dependencies so if one schema changes then you don’t have to update so many other solutions and can deploy the new schema in isolation.

When you create your new project, the first thing you will want to do is set up your default namespace. My recommendation is that you keep it simple, e.g. <CompanyName>.BizTalk.<FunctionalArea>.<BTArtifactType>. e.g. MyCompany.BizTalk.Sales.Schemas. Also set your project name in the deployment options, usually the same as the Solution name you chose. You will also need to generate a key.

An advantage of using this structure is that it provides a standardised order for all your frameworks and also enables you to deploy .dll individually should you need to, for example if there is only a minor change to a map and you don’t want to have to redeploy everything. It also makes your solution compatible with the excellent BizTalk deployment framework available on Codeplex.


Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>