biztalk naming conventions

Why should you use naming conventions in BizTalk solutions?

Lex

BizTalk Server

Apr 19, 2022

Via our blogs, we frequently write articles about new and improved capabilities in our BizTalk360 product and how they can be used from a user perspective. However, besides that, we also want to bring good BizTalk Server related content. By doing so, we hope to bring articles with real-world value. Today’s blog is about using naming conventions when developing BizTalk solutions. Before we come to several proposals for naming conventions in BizTalk solutions, let’s first look at the reasons why you should use naming conventions.

What is the purpose of naming conventions?

Although developing BizTalk Server solutions is done in a bit more graphical way compared to hardcore code typing .NET development, it is of similar importance to properly name the components that you are developing. Source code that you frequently touch now, might not be touched for years, after it has been deployed. Still, even after such a long time, you want to quickly understand how a solution has been designed/developed. Documenting your solution, by using descriptive names for the components that you are developing, can play an important role in quickly understanding your solutions.

Using consistent naming conventions in your BizTalk solutions helps in different ways. Think of:

  • Making on-boarding other developers easier – new developers who join the (project) team will become quickly productive if they are already familiar with the in-use naming conventions
  • Easing the code review process – a consistently used naming convention makes it easy to understand and review source code
  • Providing a common language – teams that use the same naming conventions in their solutions will communicate easier about source code, because they will have a good understanding of well-named components

BizTalk Server naming conventions

Now we understand the importance of using naming conventions, let’s have a look at commonly used naming conventions for BizTalk Server solutions. We’ll segregate the conventions in the following sections:

BizTalk Applications

You could name your BizTalk applications as follows:

<Company>.<Domain>.<Solution>

BizTalk artifacts

The conventions for BizTalk artifacts are divided in 5 categories. There is a separate section for the naming conventions of orchestration shapes, etc.

Schemas

Property

Description

Filename Standard

<RootNode><Standard>.xsd

<DescriptiveName><Standard>.xsd

Filename Example

PurchaseOrderAcknowledge.xsd

PurchaseOrderAcknowledgeFF.xsd

Notes

<Standard> includes XML, X12, FlatFile (FF), and other custom formats. XML is optional, because it is default.

Property Schemas

Property

Description

Filename Standard

<Schema file>PropertySchema.xsd.

Filename Example

PurchaseOrderAcknowledgePropertySchema.xsd

Notes

Property Schema File should be named to reflect its common usage. Post fixed with “PropertySchema” to help distinguish it from standard message schema (unless it is a general property schema)

Maps

Property

Description

Filename Standard

<Schema file source>_To_<Schema file destination>.btm

If xslt file is specified:

<Schema file source>_To_<Schema file destination>.xsl

Filename Example

PurchaseOrder_To_PurchaseOrderAcknowledge.btm

Notes

In case of multi part maps in the source and/or destination side, schemas should be separated with an underscore (_). I.e.:

<Schema file 1 source>_<Schema file 2 source>_To_<Schema file 1 destination>_<Schema file 2 destination>

If the name of a map becomes too long, it is allowed to abbreviate schema names, but try to be as descriptive as possible

Pipelines

Property

Description

Filename Standard

Receive: Rppl<Function>.btp

Send: Sppl<Function>.btp

Filename Example

Receive: RpplPurchaseOrderAcknowledge.btp

Send: SpplPurchaseOrderAcknowledge.btp

Notes

Orchestrations

Property

Description

Filename Standard

<Process description>.odx

Filename Example

EvaluateCredit.odx

Notes

When deployed, Orchestration “type name” is the name that is used and displayed by the BizTalk Server Administrator tools to refer the Orchestration. Make sure the type name is the same as the Orchestration filename.

Orchestration naming conventions

When you are adding BizTalk orchestrations to your BizTalk solutions, you should also properly name the Shapes and Types that you create in those orchestrations.

Shapes

Shape

Standard

Example

Scope

Scope_<DescriptionOfTheFunction>

Scope_CreditServiceCall

Receive

Rcv_<MessageName>

Rcv_msgPurchaseOrder

Send

Snd_<MessageName>

Snd_msgPurchaseOrderAcknowledge

Expression

Exp_<DescriptionOfTheFunction>

Exp_GetFindingsReport

Decide

Decide_<DescriptionOfTheDecision>

Decide_ApprovalRequired

If branch

If_<DescriptionOfTheCondition>

If_ApprovalRequired

Else branch

Else

Else

Construct message

Construct_<Message>

Construct_msgPurchaseOrderAcknowledge

Assign

Assign_<Message> or
Assign_<DescriptionOfTheFunction>

Assign_PromotedProperties

Transform

Name of the map

PurchaseOrder_To_PurchaseOrderAcknowledge

Call Orchestration

Call_<OrchestrationName>

Call_EvaluateCredit

Start Orchestration

Start_<OrchestrationName>

Start_EvaluateCredit

Throw Exception

Throw_<ExceptionType>

Throw_SystemExcepion

Parallel

Parallel_<DescriptionOfTheParallelActions>

Parallel_CreditVendorCalls

Delay

Delay_<DescriptionOfWaitingFor>

Delay_PurchaseOrderAcknowledgeTimeout

Listen

Listen_<DescriptionOfOutcome>

Listen_PurchaseOrderAcknowledgementOrTimeout

Loop

Loop_<ExitCondition>

Loop_WhileErrorFlagTrue

Loop_UntilAllMsgsSent

Suspend

Suspend_<Reason>

Suspend_ReEstablishCreditLink

Terminate

Terminate_<Reason>

Terminate_TimeoutsExpired

Call Rules

CallRules_<PolicyName>

CallRules_CreditApproval

Compensate

Compensate_<WhatIsCompensated>

Compensate_TransferFunds

Types

Type

Standard

Example

Multi-Part Message Types

<LogicalDocumentType>

PascalCased

InvoiceReceipt

Multi-Part Message Parts

<SchemaNameOrPart>

PascalCased

InvoiceHeader

Messages

msg<MessageDescription>

camelcased

msgPurchaseOrder

Variables

<variableFunction>
camelCased

transportType

Ports

<function>Port

PascalCased

ProcessPurchaseOrderPort

Port Types

<function>PortType

PascalCased

ProcessPurchaseOrderPortType

Port Operations

Send<Message>

Receive<Message>

SendPurchaseOrder

ReceivePurchaseOrder

Correlation Sets

<WhatisCorrelatedOn>

camelCased

PurchaseOrderNumber

Correlation Types

<whatisCorrelatedOn>

PascalCased

purchaseOrderNumber

Orchestration Parameters

<matchCallerVariableNames>

camelCased

transportType

Physical ports

Besides the artifacts that you develop in Visual Studio, after deployment, you will also create ports in the BizTalk Server Administration Console. For easy understanding the purpose of all those ports, you need to give them a descriptive name that follows a naming convention.

Type

Standard

Example

Receive Port

RP_<FunctionalDescription>

RP_<PartyOrApplication>_<FunctionalDescription>

RP_PurchaseOrder
RP_AX_PurchaseOrder

Receive Location

RL_<FunctionalDescription>

RL_<PartyOrApplication>_<FunctionalDescription>

RL_PurchaseOrder

RL_AX_PurchaseOrder

Send Port

SP_<FunctionalDescription>

SP_<PartyOrApplication>_<FunctionalDescription>

SP_FaultToAdministrator

SP_SAP_PurchaseOrder

Send Port Group

SPG_<FunctionalDescription>

SPG_PurchaseOrder

Conclusion

In this article, we have started with explaining why naming all your BizTalk artifacts is a good practice. After we got that out of the way, we have shown naming conventions for the artifacts that BizTalk developers create in Visual Studio and the ports you create in the BizTalk Server Administration console.

As mentioned in the beginning of this post, in this blog, we don’t want to just promote BizTalk360, but we also want to bring posts with real-world value. Whether you are a developer or an administrator, we got plenty of resources that you might be interested in.

Feel free to check the following websites/sections:

We hope that you find those resources useful. Feel free to get in touch in case you are looking for specific information you cannot find.