Wednesday, December 26, 2007

BizTalk Custom Pipeline Components - Framework Overview Part-1

In this article I am trying to put consolidated information for developing custom pipeline components. Hope you like my efforts; frankly, there is nothing new in the article but it's all together.

Receive and Send pipeline performs below basic operations in BizTalk Solution,
- Encrypt outgoing and decrypt income message
- Handle digitally signed messages and verify them
- Validation
- Handling promotion
- Disassembling and assembling coming or processed messages.
- Wrapping header and footer into messages.

The below I have listed components and their jobs in BizTalk Solution.

Pipeline Components

Stages Employed


General Component Decode, Encode, Pre-assemble, Resolve Party or Validate Take one message process message and produce zero or one message
Disassemble ComponentDisassemble Split message, promote custom properties
Assemble Component Assemble Used to wrap message with head or trailer or both
Probe Component This is not an independent component. Any pipeline component can implement the IProbeMessage interface if it must support message-probing functionality. Enables the component to check the beginning part of the message

To develop general pipeline component we can use following interfaces. These are coming as part of SDK and BizTalk Solution (BTS).

IBaseComponent Interface
IComponentUI Interface
IComponent Interface

IBaseComponent Interface
Members Usage
Description Property. Used to specify small description about pipeline component. Description is visible on pipeline properties page at design time.
NameProperty used to specify name of pipeline component. Name is visible on pipeline properties page at design time.
VersionProperty used to specify version (example of pipeline component. Visible on pipeline properties page at design time.

IComponentUI Interface
Members Usage
IconProperty used to provide icon associated with pipeline component.
ValidateMethod. Pipeline designer before pipeline compilation to verify that all configuration properties are correctly set calls this.

IComponent Interface
Members Usage
ExecuteMethod. Does specific processing/massaging in inbound message and produces output message to be forwarded to next stages of pipeline or message box.

Members Usage
GetClassIDMethod. Retrieves the component's globally unique identifying value.
InitNewMethod. Initializes any objects needed by the component to use the persisted properties.
LoadMethod. Used to load property from property bag.
SaveMethod. Used to save property-to-property bag.

I will surly come back with more detail articles and implementation with sample code for the subject.

Thanks for visiting my blog and please send your feedback or queries to

Have a nice day!

Recoverable Interchange Processing - BizTalk Server Video Tutorial

Again I am coming with very good video demonstration by Stephen W. Thomas, the tutorial demonstrate Recoverable Interchange Processing in BizTalk Server 2004/2006/R2. Worth spending 9 minutes on the video.

To download the video please Click Here

Downloading the related sample files might also be helpful. They can be found here:
Click Here

Live Play (no need to download the file) of this video is available here:
Click Here

Tuesday, December 25, 2007

BizTalk Server R2 - WCF HTTP Binding through BizTalk WCF Adepter

A very good video demonstration by Stephen W. Thomas, the video demonstrate WCF HTTP Binding through BizTalk WCF Adepter. Worth spending 13 minutes on the video.

To download the video please Click Here

Downloading the related sample files might also be helpful. They can be found here:
Click Here

Live Play (no need to download the file) of this video is available here:
Click Here

Monday, December 24, 2007

Presentation on .NET 3.0/3.5 at Microsoft, NET C# ASP.NET VB.NET WCF WPF WF LINQ

Very good video presentation by instructor Andrew Troelsen delivers presentation on .NET 3.0/3.5 at Microsoft, NET C# ASP.NET VB.NET WCF WPF WF LINQ. Worth spending your busy time or office time ;-).

Sunday, December 23, 2007

BizTalk Server 2006 - Assert Functoid - Training Video

Another good video on YouTube, it demonstrates Assert Functoid.

BizTalk Server 2006 - Custom Mapping Functoid - Training Video

A good Video available on YouTube network, it's very good demonstration for Custom Mapping Funcatoid. Enjoy pie!

Friday, December 21, 2007

WCF - Microsoft Service Configuration Editor – Services - SvcConfigEditor.exe

Microsoft announced very recently about "Oslo" and their strategies about Enterprise Integrations and Service Orientation. The announcement made me tempt to explore WCF (bytheway I started calling me WCF professional few months ago ;-) ), and I come across to a very good tool called "Microsoft Service Configuration Editor". So grabbed the opportunity to document something and let's publish ;-) please bare one more article…

While learning WCF the first thing came to my mind was Enterprise Services Management (This days I am playing my cards with Live Service Management), it's ok if you plan 2-3-10-20-50 number of the services for your business but when you are planning services in big bulk, distributed deliveries of services, different assemblies, managing behaviors/contracts/endpoints for various clients/hosts, etc…. there could be N number of the possibilities for various service management scenarios. And my thoughts and excitement brought me to the administrative tool called "Microsoft Service Configuration Editor". Microsoft is supplying this tool with "Microsoft Windows SDK v6.0A" itself, it's very useful tool for the service management (especially WCF).

WCF is saving configuration settings in web.config / app.config files and it's very hard to manage manually by editing.

Below I am just trying to put some screens and my tutorial experience to you, hope you like it.

Here for the demonstration, I am using the sample scenario called "TrustedFacade " which you can find in Microsoft WCF Samples ("\WCF_WF_CardSpace_Samples\WCF\Scenario\TrustedFacade"). Not going inside the code or development part, I am going to focus only on the deployment and administration with the Configuration Editor.

Steps, for configuring the service:

  1. You can open the tool from "Start Menu\Programs\Microsoft Windows SDK v6.0A\Tools\ Microsoft Service Configuration Editor" or go to the next path "Microsoft SDKs\Windows\v6.0A\Bin\SvcConfigEditor.exe".

  2. Click on crate a new service, it will bring you one service creation wizard.

  3. Click on the Browse Button and drive the wizard to the service dll, it can be GAC or File Location.

  4. After selecting the service, click on Next button, it will bring you to service contract page. It will show you all contracts available in one dropdown list in service, an appropriate contract you select and then move ahead with the next phase of configuration.

  5. Next screen will give you option to decide the communication mode, where you can select an appropriate mode of communication channels.

  6. Next screen will bring you selection of interoperability option.

  7. Now, the coming screen will ask you the address of your endpoint.

  8. After performing the above steps, now your wizard is ready to create configuration.

Now your service has been configured, the tool also provide facility to manage other configuration like hosts, base addresses, multiple endpoints, binding configuration, contracts, listening uri, etc. I am here just focusing on the service configuration, later on I will publish client and other configuration options available with in the tool. So let's coming back to services, the below image shows you, how to add multiple base location in host.

You can also add multiple endpoints to the service, as well as you can add certifications, identity and headers to messages and channels. Please check the blow screens to understand the configurations options for end points.

After completion of configuration you can save it as *.config file, which need to manage with services at the IIS/service hosting location.

This tool can give very good flexibility with the management and administration of the WCF services on large scale.

I will back with some more interesting articles on WCF as my study progress with it.

Thanks to bear with me during the article, please send your feedback to


Thursday, December 20, 2007

Screencast: Microsoft BizTalk Server 2006 - A very good video

Screencast: Microsoft BizTalk Server 2006. Cool video to understand BizTalk and scope of implementation. The video content requirement scenarios, basic development tool introduction, various artifacts, etc...

Source: Youtube
From: InfoWorld


Now, we can chat live from Blog... :-) new cool chat tool

Let's Talk,

New widget I have added to my Blog , please feel free to put some line there and suggestions are welcome.

Find this new widget at left pan of the page,


Hope you like this...

Wednesday, December 19, 2007

Understand BizTalk – Performance Counters – Bottleneck Analysis (Counter: Low % Disk Idle on SQL Server High Avg. Disk Queue Length on SQL Server)

Counters: Low % Disk Idle on SQL Server High Avg. Disk Queue Length on SQL Server

Area of Analysis:
- Check whether the tracking database and Message box are on the same disks.
- Check whether the data and log files are on the same disks.
- Check the log sizes.

Possible Solutions:
- Use a SAN.
- Ensure that the tracking and Message-box databases are on different servers.
- If they are on the same server, ensure that they are on different disks.
- Ensure that the data and log files are not sharing the same disks.
Make sure the BizTalk agents are enabled on the server. The agents copy tracking data from the Message box to the tracking database. They also back up the databases and clean up the logs.

Understand BizTalk – Performance Counters – Bottleneck Analysis (Counter: Low % CPU Idle on SQL Server)

Counter: Low % CPU Idle on SQL Server

Area of Analysis:
- Check if DBA changed any of the default database settings set by the BizTalk installation.
- Max Degree of Parallelism are set to off Auto-Update Statistics and Max Degree of Parallelism are set to off and 1 respectively on purpose.

Possible Solutions:
- Minimize the number persistence points in your orchestrations.
- Use static methods instead of wrapping nonserializable components in atomic scopes.
- Avoid using Parallel shapes, except when needed.
- In a multi-Message box scenario, ensure that you have at least three Message boxes. The master Message box is doing all the routing to secondary Message boxes, which is CPU intensive. Whenever you are using multiple Message boxes, Microsoft’s distributed Transaction Coordinator (DTC) is involved; therefore you need to jump from one Message box to three instead of only two to offset that overhead.

Understand BizTalk – Performance Counters – Bottleneck Analysis (Counter: - Low % CPU Idle on BizTalk Server)

Counter: Low % CPU Idle (On BizTalk Server)

Area of Analysis:

- Too many hosts running on the server.
- Improper use of custom pipelines.
- Custom components requiring optimization.

Possible Solutions:
- Isolate receive, process, and send functionality into different hosts and run host instances on different servers within the BizTalk Server Group.
- Move message transformation out of orchestrations to your ports to avoid the creation of new copies.
- Move message filters to your ports and receive locations.
- Optimize your schema. Large schema reduce performance.
- Use distinguished fields in orchestrations rather than properties or XPath.
- Use pass-through pipelines whenever possible.

I will surely come back again on more performance & bottleneck analysis.

Exposing a simple BizTalk orchestration as WCF service

Very good article about the ESB solution approach. It explains how you can expose the BizTalk orchestration in WCF Services!

Please visit below link for full article.

Tuesday, December 18, 2007

Business Intelligence Demonstration - Case Study Video (SSAS/SSIS/SSRS)

Great video and case study for Microsoft BI. I will recommend to spend your 27 minutes behind it, it's really worth.

Microsoft BizTalk Adapter for SAP – Part 1 (Introduction)

The Microsoft BizTalk Adapter v2.0 for mySAP Business Suite i s a "no-code" connectivity solution that integrates SAP data seamlessly from SAP R/3 4.X and R/3 6.20 (Enterprise) systems with BizTalk Server. The adapter provides services to support the transport of IDocs, BAPIs, and RFCs (including customized IDocs) inbound and outbound between BizTalk Server and SAP.

The Adapter supports the following SAP schema types:

  • Business API (BAPI)
  • Intermediate Document (IDoc) versions 2.0 and 3.0
  • Remote Function Call (RFC)

Multiple IDoc, BAPI, and RFC schemas can be selected for each adapter in stance. The Adapter provides the following functionality:

  • Supports synchronous and asynchronous transactions
  • Provides full transactional support for all IDoc, BAPI, and RFC schemas
  • Converts SAP structures to XML Schema Definition language (XSD) format

Microsoft BizTalk Adapter for mySAP Business Suite includes:

  • Design-time (using the standard functionality available in the BizTalk adapter framework)
  • Schema generation wizard
  • BizTalk Explorer configuration pages
  • BizTalk Administrator configuration pages
  • Run-time
  • Transmitter -The transmitter sends IDocs, BAPIs, and RFCs to the appropriate SAP system via the .NET
  • Connector. If the SAP system is not available, the transmission can be retried, or sent to a suspend queue,
  • Depending on user configuration.
  • Receiver -The receiver acts as a listener, waiting for IDocs, BABIs, and RFCs to be sent by SAP via the .NET
  • Connector.
  • More than one receiver can be configured, in order to receive data from multiple SAP systems, and to
  • Provide load balancing.
  • Exception handling -The adapter provides full transactional support between SAP and BizTalk Server. If
  • There is a failure in receiving or sending, the transaction is rolled back.

Microsoft BizTalk adepter comes with two components, first is runtime module called BizTalk/SAP adepter, which is communicating with SAP. Another is design time component that integrates Visual Studio design time functionality to adepter.

This Wizard is use to connect to SAP through a port defined on machine, search lists of SAP functions (BAPIs and IDOCS), and select the function to call. The wizard generates schema (xsd) for messages you need to receive/ send from SAP. If the selected port is two way (Request/Response) then it generates two root schemas for the request and the response types.

BAPI/RFC Interface

The RFC Library offers an interface to a SAP System. The RFC Library is the most commonly used and installed component of existing SAP Software. This interface provides the opportunity to call any RFC function in a SAP System from an external application. Moreover, the RFC Library offers the possibility to write a RFC Server Program, which is accessible from any SAP System or external application. Most SAP Connectors use the RFC Library as communication platform to SAP Systems. SAP provides the RFC API in the form of C -routines, incorporated in the RFC Library. The RFC Library is available on all SAP Supported Platforms. The RFC Library is forward and backward compatible, i.e. an older release of the RFC Library can communicate with a SAP System at a higher version and vice versa.

IDoc Interface

IDoc, or Intermediate Document, is a standard SAP document format that allows to link different application systems via a message-based interface. The three main goals of IDocs are:

  • Structuring the exchange of business documents so they are automatically processed.
  • Reducing the structural complexity of different application systems to as simple a structure as possible.
  • Extensive exception handling before posting data to the application.
  • IDocs are defined and considered on two levels, the technical and the business level. The former allows them to support application-independent functions, e. g. routing and handling technical exceptions.


  • MSDN Library
  • MS SAP Adepter Documentation

Very soon I will present the next part of the SAP Adepter Series.

Tools for testing BizTalk Application and Landscape

Tools for testing BizTalk Application and Landscape

I have seen this links on the Darren Jefford's Blog. He is Principal Consultant at Microsoft UK. I am just putting consolidated list of resources across you. Enjoy the pie!

PerfMon Counter spreadsheet

BizTalk Documenter

LoadGen 2007 (now includes WCF, Sharepoint 2007 support amongst others)

Old version of LoadGen 2004 (recommend you use the 2007 release moving forward)

Codename "Oslo" - I am delighted

Codename "Oslo"

Microsoft has just made the first public announcement of “Oslo” at the SOA and BPM conference, at a high level “Oslo” is an overarching initiative across multiple products and Microsoft divisions, in fact the first release as announced today will be made up of BizTalk Server “6”, BizTalk Services “1”, Visual Studio “10”, System Center “5” and .NET Framework “4.0”.


Oslo is driven out of Connected Systems Division (CSD) which is the almagamtion of the BizTalk, WCF, WF, ASMX, MSMQ, .NET Remoting, etc.

Sending Email using Biztalk orchestraion

Sending Email using Biztalk orchestration

Very good video tutorial available on YouTube. I will recommend you to watch the Video to understand the play with Email or SMTP adepter in BizTalk.

Very good informative work Nikhil!

Please copy paste below link to address bar it will direct navigate you to the video location.

Hope it helps you!

RFID Anywhere Integration with BizTalk

RFID Anywhere Integration with BizTalk

A very good presentation on RFID implementation for BizTalk Server 2006.

BizTalk 2006 Pattern Wizard

BizTalk 2006 Pattern Wizard

This presentation is on BizTalk 2006 Patterns Wizard which is mostly very unexplored part for many BizTalk professional, I would really recommend you to see the video and know the superb rapid development facility available to implement very complex integration patterns.

Thursday, December 6, 2007

BizTalk 2006 TechNet Posters

Some really good posters for BizTalk 2006 / R2 and other Microsoft technology
It's really interesting...

BizTalk Server 2006 Capabilities

BizTalk Server 2006 R2 Capabilities

BizTalk Server 2006 R2 Runtime Architecture

BizTalk Server 2006 R2 Scale-Out Configurations



Active Directory

Windows Server 2008 (Active Directory & Feature Components)\

.NET Framework 3.5 Common Namespaces and Types

2007 Office System Document: Developer

Visual C# 2008 Keybinding Reference

Visual Basic 2008 Keybinding Reference

Visual C++ 2008 Keybinding Reference

Visual C++ 2005 Keyboard Shortcut Reference

Visual Basic 2005 Keyboard Shortcut Reference

Microsoft® Silverlight(tm) 1.1 Alpha Developer Reference

PnP Overview

Smart Client

Security Posters

Sunday, November 11, 2007

Introduction of Host Integration Server 2006

Host Integration Server 2006

Microsoft® Host Integration Server 2006 provides comprehensive bidirectional services for integrating Microsoft Windows® with legacy systems. Host Integration Server 2006 extends Windows to other platforms by providing interoperability in three areas:

· Application Integration Services

· Data Integration Services

· Network Integration Services

Most of the services provided by Host Integration Server 2006 expose a programming interface, which enables you to extend the functionality of the product and integrate it more tightly in your own environment. This guide describes these interfaces and provides guidance on how to use them.


Microsoft Host Integration Server 2006 provides the key enabling technologies that allow customers to integrate their mission-critical host applications, data sources, messaging and security systems with new solutions developed using the Microsoft Windows® platform.

The following diagram shows an overview of the major features provided by Host Integration Server 2006.

Major features of Host Integration Server

One goal of Host Integration Server 2006 is to enable enterprise developers to move towards a services-oriented architecture (SOA) using the .NET Framework. Transaction Integrator (formerly COMTI) allows Windows developers to publish business rules in mainframe CICS and IMS applications as XML Web Services. The new TI Designer runs within Visual Studio® .NET, providing a more efficient developer experience. At the same time, TI has been extended to support AS/400 applications by offering an RPG Import Wizard and distributed program call runtime across a TCP/IP network connection. To directly publish vital data stored in IBM DB2, Host Integration Server 2006 offers a Microsoft Managed Provider for DB2 that is based on an improved Microsoft network client for DB2.

Host Integration Server 2006 includes innovative technologies, such as TI Host-Initiated Processing (HIP) that offers TCP/IP and SNA listeners that allow a Windows Server computer to function as a peer to IBM mainframe and AS/400 computers. For example, CICS programmers can call into Windows COM+ or .NET server components, just as if they were another CICS transaction program, by using familiar programming models such as CICS DPL (distributed program link). HIP allows enterprises to more effectively move portions of their application logic or data onto the more cost-effective Windows Server and SQL Server platforms, while ensuring logical and secure bi-directional application communication.

Finally, Host Integration Server 2006 offers industry-standard technologies allowing the network administrator to move towards pure TCP/IP WANs and datacenters. Transaction Integrator supports the CICS enhanced TCP/IP listener and persistent TCP/IP connections. The DB2 data providers support reliable 2-phase commit distributed transactions over TCP/IP to DB2 running on most popular computing platforms. The new IP-DLC Link Service supports the industry-standard SNA over IP routing so that branch-deployed and centrally-deployed Host Integration Server computers can connect directly to z900 mainframes via high-speed IP networks. No longer do enterprises have to remotely administer branch cluster controllers, utilize expensive data link switching (DLSw) capable routers, or maintain costly front end processors (FEPs). With Host Integration Server 2006, enterprises can continue to consolidate their network infrastructure, while supporting the same level of SNA-compatible applications and services.

Transaction Integrator

Transaction Integrator (TI) enables developers to integrate mainframe-based transaction programs (TPs) with component-based Microsoft® Windows® applications. With Transaction Integrator, you can integrate existing mainframe-based TPs with Windows-based COM or distributed COM (DCOM) applications. You may not have to modify your mainframe TP if the business logic is separate from the presentation logic. The wizards available in the TI Designer and TI Manager guide you through the process, step-by-step.

Transaction Integrator is appropriate when you need a synchronous or transactional solution where both systems being integrated are running at all times. For applications only requiring an asynchronous integration solution, a messaging-based solution using the MSMQ-MQSeries Bridge is preferred over Transaction Integrator.

Applications that integrate message queuing and that use MSMQ-MQSeries Bridge in a Host Integration Server 2006 environment can be developed using several different development tools and application programming interfaces including the following:

· C or C++ applications that use the MSMQ-MQSeries Bridge Extensions to extend the MSMQ-MQSeries Bridge.

· Microsoft Visual Basic® applications that use MSMQ-MQSeries Bridge Extensions to extend the MSMQ-MQSeries Bridge.

To use this guide effectively, you should be familiar with the following:

· Microsoft Host Integration Server 2006

· Microsoft Windows® 2000 or later

· Message Queuing

· IBM MQSeries

Transaction Integrator (TI) Designer

Transaction Integrator (TI) Designer is a graphical user interface for creating TI components, which are annotated type libraries or assemblies. It is a stand-alone program that does not need to be connected to the mainframe. You can use TI Designer to export or import the host data declarations used in mainframe Customer Information Control System (CICS) and Information Management System (IMS) programs or AS/400 programs.

TI Designer is hosted within the Microsoft® Visual Studio® .NET environment. You can use it to generate both Windows®-initiated processing (WIP) and host-initiated processing (HIP) objects. TI Designer also supports COM type libraries and .NET assemblies.

To install Transaction Integrator Designer

Transaction Integrator (TI) Designer is installed and configured by the Microsoft® Host Integration Server 2006 Installation Wizard. You can install and configure TI Designer at the time you first install Host Integration Server 2006, or you can use the Host Integration Server 2006 Installation Wizard at a later time to add TI Designer. The Host Integration Server 2006 Installation Wizard installs everything you need, including program files, Help files, the CedarBank sample application, and other tools. The TI Project template is automatically installed on your computer at :/Program Files/Microsoft Host Integration Server/System/Projects/.

Note TI Designer is hosted within the Visual Studio .NET development environment and must be registered in Visual Studio at the time of installation. Be sure that Visual Studio .NET is installed on your computer before you install TI Designer.

1. Launch Host Integration Server 2006 Setup and accept all defaults until you reach the Custom Installation page.

2. On the Custom Installation page, expand the Application Integration node.

3. Select Transaction Integrator Designer and any other options you want to install.

4. Click Next, and then follow the on-screen directions.

To create a TI Project

On the Start menu, To create a TI Project

1. On the Start menu, point to Programs, and then click Microsoft Visual Studio .NET.

2. On the Visual Studio .NET File menu, click New, and then click Project.

3. Under Project Types, select HIS Projects.

4. Under Templates, select TI Project.

5. After Name, type the name of the project. The name can be a maximum of 256 Unicode characters.

6. After Location, type or browse the location to store the project.

Introduction to Data Integration

You can develop applications for data integration used in a Host Integration Server 2006 environment using several different development tools and application programming interfaces including the following:

· C or C++ applications that use OLE DB to access AS/400 and VSAM files.

· C or C++ applications that use OLE DB to access IBM Data Base 2 (DB2).

· C, C++, or Microsoft® Visual Basic® applications that use Open Database Connectivity (ODBC) drivers to access IBM DB2.

· Visual Basic applications that use ActiveX® Data Objects (ADO) to access AS/400 and VSAM files.

· Visual Basic applications that use ADO to access IBM DB2 using OLE DB.

· Visual Basic applications that use ADO to access IBM DB2 using ODBC.

· C, C++, or Visual Basic applications that use the Host File Transfer ActiveX control to transfer files to and from MVS, OS/390, AS/400, and AS/36.

· C, C++, or Visual Basic applications that use the Data Queue ActiveX control to access AS/400 data queues.

· Microsoft C++ .NET, Microsoft C#, Microsoft Visual Basic .NET applications that use the Managed Provider for DB2 to access IBM Data Base 2 (DB2).

To use this section effectively, you should be familiar with:

· Microsoft Host Integration Server 2006

· One of the following operating environments:

· Microsoft Windows Server™ 2003

· Microsoft Windows XP

· Microsoft Windows® 2000 Server

· SNA concepts

Depending on the application programming interface and development tools used, you should be familiar with:

· Microsoft COM objects

· Microsoft OLE DB

· Microsoft ADO

· Microsoft ODBC

· Microsoft .NET

Tuesday, September 4, 2007

BEPL with BizTalk

BEPL with BizTalk


BizTalk Server is part of Microsoft's Windows Server System family of products that enable you to integrate systems, employees, and trading partners. It is an integration server product (Middleware) used to connect different applications, systems, or business processes within an organization (EAI) or between organizations (B2B). It is also be used to aggregate services to build a Service-Oriented Architecture (SOA).

  • Content-Based Routing (CBR) where messages can be routed based on the values of certain fields inside the message

  • Support for BPEL4WS

  • Support for WSDL

  • Support for XSD

  • Support for XSLT

  • A Health and Activity Tracking (HAT) tool for tracking and debugging of Orchestrations and messages

  • A Business Rules Engine for abstracting business rules from the business process

  • Business Activity Monitoring for real-time monitoring of business process in the production environment

  • Business Activity Services including Trading Partner Management for integration with other business processes

  • Human Workflow Services for workflow systems involving human intervention, such as approvals, data entry, and collaborations

Support for BPEL and XLANG/s

BizTalk supports BPEL as a business process exchange format, to exchange the business process definition with other vendors. BizTalk does not natively execute BPEL, but can export business processes to BPEL and also import external BPEL files that define business processes.

In BizTalk, the business process is built visually using the Orchestration Designer inside Visual Studio and is internally stored and represented using XLANG/s.

XLANG/s is Microsoft's proprietary language for defining business processes in BizTalk Server 2004. It is an improved version of XLANG (used in earlier versions of BizTalk), with support for the .NET framework and for invoking .NET components. It is not mandatory for a developer to learn the underlying XLANG/s to build business processes as the Orchestration Designer automatically generates it.

While BPEL is platform neutral by design, XLANG/s is very specific to BizTalk and the .NET platform and as such is able to provide advanced functionalities and a broader range of services than BPEL. However, this also means that if you plan to export business processes to BPEL, you should carefully avoid using features specific to BizTalk and XLANG/s, such as message transformation using maps or calling .NET components from within an Orchestration.

BizTalk Orchestration Shape


Send shape

<invoke> or <reply>

Receive shape





<partnerLinks>, <partnerLink>

<partnerLinks>, <partnerLink>

Role Link

Role Link

<partnerLinkType>, <role>

<partnerLinkType>, <role>

Message Assignment shape

Message Assignment shape

<assign>, <copy>, <from>, <to>

<assign>, <copy>, <from>, <to>

Decide shape

Decide shape

<switch>, <case>, <otherwise>

<switch>, <case>, <otherwise>

Delay shape

Delay shape



Listen shape

Listen shape

<pick>, <onMessage>, <onAlarm>

<pick>, <onMessage>, <onAlarm>

Parallel Actions shape

Parallel Actions shape



Loop shape

Loop shape



Scope shape

Scope shape



Throw Exception shape

Throw Exception shape



Compensate shape

Compensate shape



Suspend shape

Suspend shape

Not supported in BPEL

Not supported in BPEL

Call Orchestration shape

Call Orchestration shape

Not supported in BPEL

Not supported in BPEL


Start Orchestration shape

Start Orchestration shape

Not supported in BPEL

Not supported in BPEL

Call Rules shape

Call Rules shape

Not supported in BPEL

Not supported in BPEL

Transform shape

Transform shape

Not supported in BPEL

Not supported in BPEL

Terminate shape

Terminate shape



Compensation Block

Compensation Block



Exception Handler

Exception Handler

<faultHandler>, <catch>, <catchAll>

<faultHandler>, <catch>, <catchAll>



<correlation>, <correlations>,

<correlationSets>, <correlationSet>

Exporting Orchestration to BPEL

In the last section we saw how to build an Orchestration in BizTalk. In this section we will export the same to BPEL.

  1. To export the Orchestration to BPEL, we have to do the following:

  2. Keeping the Orchestration Designer selected in the foreground, bring up the properties window such that it displays the Orchestration properties.

  3. You will see that the Module Exportable property is set to False. Setting this property to true will make two other properties visible in the properties window (Module XML Target Namespace and Orchestration Exportable).

  4. Set a value for Module XML Target Namespace such as and set the Orchestration Exportable to True. This will make another property visible, called the Orchestration XML Target Namespace, shown in the figure below.

  5. Set a value for Orchestration XML Target Namespace and you are all set to export the Orchestration to BPEL.

  6. In the Solution Explorer window right-click on the Orchestration file (InsuranceSelectionProcess.odx) and select Export to BPEL.

Importing BPEL Processes into BizTalk

Importing BPEL processes into BizTalk is quite easy. BizTalk provides a separate project template called the BizTalk Server BPEL Import Project, which will bring up a wizard to take you through the BPEL import procedure step by step. However, there are a few things you need to take care of before importing business processes:

  1. Ensure that the Name property of the WSDL definition node and that of the BPEL process node are not the same.

  2. Do not use any XLANG/s reserved words in your BPEL.

  3. Use only simple types predefined in XSD.

To import the .bpel and the .wsdl files into BizTalk. Here are the step-by-step instructions:

Open a new BizTalk Server BPEL Import Project in Visual Studio .NET and name it AsyncTravelProcessBPELImport as shown overleaf.

Click OK to bring up the BPEL Import Wizard shown below.

Click Next, and then Finish.

After importing the travel process example, you can see in the Solution Explorer of Visual Studio that the wizard has created four orchestration (.odx) files and two schema (.xsd) files shown below:

The wizard breaks down each .wsdl file into a schema file (.xsd) that contains the schema definition and an orchestration file (.odx) that contains the other things like Port Types, Message Types, and Partner Link Types (known as Role Link Types in BizTalk). This orchestration file does not contain any business process logic and is only used to define the types.

The .bpel file is converted into an orchestration file (.odx) that contains the actual business process logic and declarations for things like Partner Links (Ports and Role Links in BizTalk) and Variables (Messages in BizTalk).

Comparing BizTalk Orchestration Constructs with BPEL

Receive and Send Shapes (<receive>, <invoke>, <reply>)

Messages are received and sent to the ports (partnerLinks) within the BizTalk Orchestration using the Receive and Send shapes. These are equivalent to the <receive>, <reply>, or <invoke> keywords of BPEL. Note that the same Send shape is used to send messages for both One-Way (Asynchronous <invoke>) and Request-Response (Synchronous <reply>) calls.

Port and Role Link Shapes (<partnerLink>, partnerLinkType>, <role>)

Ports and Role Links are the endpoints for messages entering or exiting the Orchestration. They are similar to partner links in BPEL. Configuring the ports includes setting the PortType, Communication Direction (send or receive), Communication Pattern (One-Way or Request-Response), Delivery Notification, and Binding to the physical ports, among other things. When you drop a Port shape or a Role Link shape onto the side panels of the Orchestration Designer surface, the Port Configuration Wizard pops up and assists you in configuring the ports. Role Link is used to group together multiple PortTypes, similar to <partnerLinkType>.

Expression and Message Assignment Shapes (<assign>, <copy>, <from>, <to>)

Expression and Message Assignment shapes, as the name suggests, are used to implement business logic that contains expressions, loops, conditions, and assignments. It is possible to use XPath and XLANG/s within these shapes and also to call any external .NET components by defining and instantiating a variable of the particular .NET type.

Decide Shape (<switch>, <case>, <otherwise>)

A Decide shape is used for conditional branching. It is similar to an IF/THEN/ELSE/ELSIF programming construct or the <switch>, <case>, and <otherwise> constructs of BPEL. It will always have a minimum of two branches. Each branch (other than the Else branch) will have a Rule shape containing the condition expression to be evaluated. The condition expression of each branch is evaluated and if it satisfies the condition, that branch is executed; otherwise it will evaluate the condition of the next branch (if available) and so on. If none of them satisfy the condition the else branch is executed.

Delay Shape (<wait>)

The Delay shape is equivalent to the <wait> activity of BPEL. It is used to delay the execution of the process for a specific length of time (specified by the System.TimeSpan class) or until a particular time or date is reached (specified by the 310 System.DateTime class).

Parallel Actions Shape (<flow>)

The Parallel Actions shape is used to simultaneously execute multiple actions. It is similar to the <flow> activity of BPEL. It is possible to have many parallel branches and the process will wait till all the branches have completed before proceeding further.

Loop Shape (<while>)

The Loop shape is used to iterate through a set of actions as long as the Boolean condition evaluates to True. This is equivalent to the <while> activity of BPEL.

Suspend Shape

A Suspend shape is used to stop a running Orchestration and save its state such that it is possible for the administrator to resume the Orchestration instance. You use the Suspend shape if your Orchestration reaches a condition that is beyond the capabilities of the Orchestration, such that you would rather allow an administrator to look into it and resume the operations based on the administrator's decision. When an Orchestration is suspended an error is logged and it is possible to specify a string containing a brief description along with the error message to help the administrator diagnose the problem. This activity is not available in BPEL.

Terminate Shape (<terminate>)

A Terminate shape is used to abruptly stop all activities of a running Orchestration. This is equivalent to the <terminate> activity of BPEL. When an Orchestration is terminated an error is logged and it is possible to specify a string containing a brief description along with the error message to help the administrator diagnose the problem.

Integration with Web Services

BizTalk Server 2004 has native support for web services. It has a built-in SOAP adapter to directly communicate with web services. An Orchestration can consume web services by adding a web reference of the external services' provider from within the Visual Studio .NET environment. It is also possible to easily expose business processes as web services using a tool called Web Services Publishing Wizard, so that they can be used by external systems.

I recommend the book "Business Processes Execution Language for Web Services" to learn more exciting futures of BizTalk and it's compatibility with BPEL.



Business Processes Execution Language for Web Services

Web References: