Maintaining BizTalk application could be challenging for the developer and administrator since the application usually consists of many parts. Like any .Net application, BizTalk application should follow some naming and veining convention to facilitate the application maintenance. I suggest the following rules summarized based upon George Dunphy and Ahmed Metwally’s excellent book Pro BizTalk 2006.
- Name solution using MyCompany.MyProject.BizTalk.
- Name shared artifact assemblies using MyCompany.MyProject.Core.Orchestrations.dll, MyCompany.MyProject.Core.Schemas.dll, MyCompany.MyProject.Core.Pipelines.dll
- Name feature or subsystem artifact assemblies using MyCompany.MyProject.Core.Orchestrations.dll, MyCompany.MyProject.Core.Schemas.dll, MyCompany.MyProject.Core.Pipelines.dll
- Stamp all assemblies with same version in the build process.
- Version send and receive ports by suffixing the port name with the assembly version. Please note, if third parties are sending or receiving messages these ports, consider keeping the port names but using versioned schema namespace. http://Microsoft.BizTalk/service/v1.0.0.0
- Update each binding file associated with the BizTalk modules in the build process.
- Consider versioned deployment by filtering when orchestrations are not required to initialize a correlation set.
- Schema File: Name schema file <RootNode>_<Standard>.xsd. <Standard> includes XML or flat file ( FF ) or other custom formats. ( e.g., PurchaseOrder_FF.xsd).
- Schema Target Namespaces: Match schema target namespaces to assembly name. ( e.g. http://Microsoft.E-Commerce.PurchaseOrder).
- Property Schema Files:Name Property Schema file <PropSchema>_PropSchema.xsd.
- Maps: Name Maps <SourceSchema>_To_<DestinationSchema>.btm(e.g., PurchaseOrder_FF_To_PurchaseOrderAcknowledge_XML.btm).
- Orchestrations: Use <Verb><Noun> pattern to name orchestrations. ( e.g. EvaluateCredit.odx).
- Receive Pipelines: Use rcv<SchemaName>.btp or rcv<ProjectName>.btp or rcv<Function>.btpto name receive pipelines(e.g., rcvPOAckPipelineFF.btp).
- Send Pipelines: Use snd<SchemaName>.btp or snd<ProjectName>.btp or snd<Function>.btpto name send pipelines(e.g., sndPaymentPipeline.btp).
- Receive Ports: Use rcv<InputSchema>To<OutputSchema>Port or rcv<Functional Description>Portto name receive port ( e.g., rcvPurchaseOrderToPOAckPort, rcvERPStatusPort).
- Receive locations: Use <ReceivePortName>_<Transport>to name Receive location ( e.g., rcvERPStatusPort_File ).
- Send Port Groups: Use <BizApp>_<FunctionalDescript> to name send port groups.
- Send Ports: similar to receive port. Replace prefix rcv with snd.
- Use <ShapeName>_<Description> pattern to name Orchestration Functional Shapes ( similar to function call or language logical control in the program ): for most of shapes, Scope, Recive, Send, Decide, If/Else, Call, Throw, Parallel, Delay, Listen, Loop, Suspend, Terminate, CallRule, and Compensate shapes ( e.g. Parallel_CreditVendorCalls, Receive_CrditReport, Send_poAck, If_ApprovalRequired).
- Use camel case to name Orchestration Variable Shapes( similar to define variables in the program ). Message, Variable, correlation set, orchestration parameter ( e.g. puchaseOrderAck).
- Use meaningful upper case name for Construct Message, Expression, Multi-Part Message Type, Port and Correlation Type.
For detail rational behind these rules, please check Pro BizTalk 2006