Posts Tagged ‘BizTalk as PaaS’

My last demo will be an Electronic Data Interchange (EDI) Demo: This demo intends to show how to configure trading partners, agreements and the creation of EDI Bridges to process and exchange EDI messages to your partners. We will sends a Sales Order message in an X12 Electronic Data Interchange (EDI) format using the X12 840 schema. The message will be process by an EDI Bridge and will transformed the EDI message in to a SalesOrder schema (XML) and then routed it to an EAI Bridge (XML Bridge) that will send the SalesOrder directly to an on-premises SQL Server.

EDI-Bridge

Like the previous demos, this was also created using Windows Azure Service Bus EAI & EDI Labs – April 2012 release!

Note: Unfortunately this release only supports X12. EDIFACT will be support in the future but for now is not supported.

I will not show all the steps needed to develop this project, like create schemas, maps or EAI Bridge. You can learn this steeps in my previous post:

Instead I will focus on the configuration that we need to do to create our EDI Bridges.

Note: The source code of the project that is available to download will contain all the scripts to create the database used in this demo. The database in composed by one table:

  • SalesOrder (SalesOrderId, PartNum, DataRequest, CompanyCode, Qtd, UnitAskPrice, ShipDate, SellToAddress, BillToAddress, PartnerContact, CustomerComments and RFQStatusId)

EDI-sample-3-SQL

Create Service Bus EAI Project

Although this is an EDI demo, we still need to create an EAI Project. If you noticed, the image of the solution (on top), we can see that we have an EDI Bridge – this component will be created in the Windows Azure EDI Portal – that will send messages to an EAI Bridge. So we need to create an EAI project to developer this part of the solution and also to deploy the EDI Schema and the map that transform the EDI message to SalesOrder message (so all EDI artifacts except the Bridge)

The first thing of course is to create a new Visual Studio project:

  • Open Visual Studio 2010, on the File menu, point to New, and then click Project.
  • Under “Installed Templates”, select “Visual C# à “ServiceBus” template
  • And then select “Enterprise Application Integration” project type
  • Finally, give a name to you project: “EdiDemo”

By default “BridgeConfiguration.bcs” is open after we create a new project. For now we will close this file (window).

After we create our project: “EdiDemo” we need to add the following files to our project:

  • “ECommerceSalesOrder.xsd”
  • The “LOB Schemas” folder that contain all the schemas needed to communicate with the SQL
  • “SalesOrderToSQLSalesOrderInsert.trfm”, which transforms the SalesOrder message into a SQL insert message.
  • “BridgeConfiguration.bcs”, XML Bridge that process, transform and transports the message to an on-premises SQL Server.

So basically we have an Enterprise Application Integration application that we already seen and know from the previous demos.

Now we will add two additional artifacts to our Enterprise Application Integration project:

  • “X12_00401_840.xsd” that you can find in the “MicrosoftEdiXSDTemplates.zip” file available for download here. This zip file contains all the X12 schemas supported in Windows Azure Service Bus EAI/EDI April release.
  • “Edi840ToSalesOrder.trfm”, map that transform the EDI message to SalesOrder message;

Now we are ready to build our solution and deploy to the cloud!

After we deploy our project, the next step is to access the Windows Azure EDI Portal or (also known as TPM Portal) to create our Partners, Agreements and configure our EDI bridges.

Create Partners in the Windows Azure EDI Portal (TPM Portal)

In this step, you will log into the Windows Azure EDI Portal, register the service provider, and create partners for SandroPereiraDevScope and MyPartnerA.

To create partners:

  • Log in to the portal
  • If you are logging in for the first time, you will need to register as a service provider. Service provider acts as a broker between two enterprises, which in this case are Northwind and Contoso. So, to continue with this, you must first register as a service provider. If the service provider is already registered, you can skip this step, and proceed to the next step.

Register-TPM-Portal

    • This will also create our default partner

Register-TPM-Portal-default

  • Add a new partners: MyPartnerA
    • On the portal home page, click Partners.
    • In the Partners page, click Add Partner.
    • In the New Partner page, enter the following details:
      • Partner name: Required. Enter the name of the partner. The name must be unique.
      • All other attributes are optional
      • Note: Managed Partner – Select this check box to identify the partner as a managed partner. A managed partner is managed by the service provider and the pipelines are deployed for that partner during agreement deployment. Typically partners managed by service provider are configured as managed partner while the enterprise partners are not marked as managed partners. – leave this attribute unchecked.

TPM-new-partner

    • Click Save to add the partner.
Create Agreements Between Partner Profiles

Now that we already create our partners, we need to create an agreement between the two of them, so to specify the General Settings of an X12 agreement we need to:

  • In the portal home page, click Agreements.
  • On the Agreements page, click the X12 tab if you are not already on that tab. Then click Create Agreement.

TPM-create-new-agreement

  • In the New Agreement page, enter the following details:
    • Name: Enter a name for the agreement. For this tutorial, specify the name as Sandro_PartnerAX12.
      • This is a mandatory field and the name for the agreement must be unique.
    • Description: Enter notes or a description for the agreement. (opcional)
    • Partner 1 Profile (managed): Select the managed partner for the agreement. In this case: SandroPereiraDevScope
    • Partner 2 Profile: Select the partner for the agreement (who is not a managed partner). In this case MyPartnerA
      • Note: The default profile is displayed in the Profile field. Choose the desired profile which has been configured for the partner.
    • Identities
      • Partner 1 ID Qualifier: Select an authenticating qualifier that provides unique business identities to the trading partners. For this tutorial, select ZZ-Mutually Defined.
      • Value: Enter US
      • Partner 2 ID Qualifier: For this tutorial, select ZZ-Mutually Defined.
      • Value: Enter THEM.
    • Tracking
      • Track Send side message properties: Check this to store the message properties when the EDI message is sent to the partner. Once stored, you can query this data by clicking Tracking on the TPM portal home page.
      • Track Receive side message properties: Check this to store the message properties when the EDI message is received from a partner. Once stored, you can query this data by clicking Tracking on the TPM portal home page.

TPM-create-new-agreement-2

  • Click Continue.
  • Clicking Continue adds two new tabs, one for receive settings and the other for send settings. Each tab is for a one-way agreement between the two partners, one for receiving messages and the other for sending messages.
  • Specify the receive settings.
    • On the Transport page, set the Transport type to HTTP.
    • On the Protocol page, specify the following values.
      • Under Acknowledgements, select TA1 expected and 997 expected to receive acknowledgements from the partner receiving the message.
      • Under Schemas, click the Upload button and upload the X12 840 schema (you added in Step 1: Add the X12 SalesOrder (840) Schema to the Visual Studio Project) and the SalesOrder schema (you added in Step 2: Create SalesOrder Schema).
  • Set the following properties under the Schemas section.
    • Version: 00401
    • Transaction Type (ST1): 840
    • Sender Application (GS2): THEM
    • Schema: /X12_00401_840.xsd
    • On the Transform page, upload the transform you created in Step 1: Add the X12 SalesOrder (840) Schema to the Visual Studio Project.
      • Under Choose the maps you want to execute as part of this agreement, choose /X12_00401_840.xsd for Schemas and /EDI840ToSalesOrder.trfm for Transform file name.
    • On the Route page, select Route to Service Bus Bridge and provide the relative address of the XML One-Way Bridge that you deployed in Step 6: Build and Deploy the Project.

TPM-create-new-agreement-Workflow

  • Click Deploy Agreement to deploy the agreement. The agreement is now deployed at the URL that was displayed in the Transport page of the Receive Settings tab.

Now we are ready to test our EDI solution!

If you are a BizTalk Developer you may notice that the concects of creating Partners and Agreements is pretty much the same as in BizTalk Server 2010:

  • The trading partners, define business profiles that are business entities within an organization.
  • How business profiles exchange messages is defined as part of trading partner agreements between two business profiles.

Unfortunately I couldn’t detail more this article because the Portal is currently under maintenance and thus unavailable.

The sample code is available for download in Code Gallery:.

Using EDI Bridge to exchange B2B messages in Windows Azure Service Bus (502.4 KB)
Microsoft Code Gallery

As I promised, this will be my second demo about Windows Azure Service Bus EAI/EDI Labs – April 2012 release

This second demo is a Customers Orders Routing scenario and intends to show some of the Enterprise Application Integration (EAI) capabilities in the cloud, especially how we can perform content based routing in EAI Bridges. The goal is to send order messages to the cloud (EAI Brigde), apply transformation, Enrich properties in the Bridge (like Property promotion) and Route messages; and treat them in different ways – different transformation, different endpoint like queues or different lob targets:

  • If is a top priority message we need to put the message in SQL table on-premise: “CustomerOrders”;
  • If is a normal message we put in a Azure Queue: “CustomerOrderQueue” (that we need to create in the AppFabric lab portal;
  • And if was an invalid message we put the message in another SQL table on-premise: “IncorrectOrders”

In this demo will show also how we can apply Route Filters and Route Action.

I will not show all the steps needed to develop this project, like create schemas or maps. You can learn this steeps in my previous post: Using EAI Bridges and LOB Target to connect to on-premises SQL Server, instead I will focus on the development/configuration of the EAI Bridges.

Note: The source code of the project that is available to download will contain all the scripts to create the database used in this demo. The database in composed by two simple but different tables:

  • CustomerOrders (PONumber, CustomerName, ProductName and Quantity)
  • IncorrectOrders (PONumber, CustomerName and OrderDate)
Create Service Bus EAI Project

The first thing of course is to create a new Visual Studio project:

  • Open Visual Studio 2010, on the File menu, point to New, and then click Project.
  • Under “Installed Templates”, select “Visual C# à “ServiceBus” template
  • And then select “Enterprise Application Integration” project type
  • Finally, give a name to you project: “CustomersOrdersRoutingDemo”

By default “BridgeConfiguration.bcs” is open after we create a new project. For now we will close this file (window).

After we create our project: “CustomersOrdersRoutingDemo” we need to add the following input schema:

  • A best practice always is to rename the root node, in your sample, rename to “CustomerOrder”
  • Under “CustomerOrder” create the followind sctructure:

Customer-order-schema-EAI-Bridge-Demo2

The next step is to generate the SQL Schemas, again this process is explained in detail in my last post and the basic difference between this demo and the last is that we need to select to Insert operations so:

  • In the Enterprise Application Integration project, from Server Explorer, expand ServiceBus Connect Servers
  • Then expand the server (URL), and the “LOB Types”
  • Right-click SQL type, and select Add SQL Target.
  • The Add a Target wizard starts. In the welcome page, click “Next”.
  • On the Connection Parameters page, specify the details for the SQL Server to connect to (name of the server, the SQL instance and the name of the database (Catalog)) and the credentials to use for the connection (leave the option Use Windows credentials credentials checked.). Click “Next”.
  • On the Operations page we will specify the operations that we want to provide, in this demo I will choose only the insert operation::
    • From the left box, expand Tables, expand “Tables à CustomOrders”, select Insert, and then click the right arrow. The Insert operation must now be listed under the “Selected operations” section.
    • From the left box, expand Tables, expand “Tables à IncorrectOrders”, select Insert, and then click the right arrow. The Insert operation must now be listed under the “Selected operations” section.

Add-SQL-target-operations-demo-2

  • Click Next.
  • Then you need to continue with the remaining steps of the Wizard until the end.

The next steap is to import this schemas to our project:

  • Select the Project name and in the LOB Target created previous, right-click and select the option “Add Schemas to <project name>..”
  • This will open a new window were you can defined:
    • A file name prefix, in my case I put “sqldemo_”
    • Folder Name, leave the default
    • And set the Lob credentials, leave the default value
  • Click “OK”

You will notice that a folder with the SQL Schemas was created in you project.

Create a map

The next step is to create two maps that will transform the input message “CustomerOrder” in the desired message type to send to the SQL.

The first map that we will call “CustomerOrderToSQLOrderInsert.trfm” will transform the input message “CustomerOrder” to the insert schema of the CustomerOrders table. This is a very basic mapping transformation.

CustomerOrderToSQLOrderInsert-map

The second map, “CustomerOrderToSQLIncorrectOrderInsert.trfm”, will transform the input message “CustomerOrder” to the insert schema of the IncorrectOrders table. Again this is a very basic mapping transformation.

CustomerOrderToSQLIncorrectOrderInsert-map

And the only thing we can mention and explain is this new Operation (aka functoid if we make an analogy with BizTalk): “Generate Date Time”.

If you are a BizTalk Developer you will be accustomed to use the annoying “Date and Time” functoid. Annoying because if you need to customize the format of the date… basically you need to create your own scripting functoid because the output format of the “Date and Time” functoid is always CCYY-MM-DDThh:mm:ss. But now we have a brand new and amazing operation to generate date/time and guess what… it supports the customization of the output format date!!!

Generate-Date-Time-operation

And is not the only news in terms of “Data / Time Operations”! Again if you are a BizTalk Developer know how annoying it is to do dates conversions inside BizTalk Mapper, but now will also have:

  • DateTime Reformat operation: where we can set the input format of the date and define the correct output format

DateTime-Reformat-operation

  • And Adjust TimeZone operation: where for a specified input date we set the input TimeZone and define the correct output TimeZone of the date

Adjust-TimeZone-operation

Please! For when these functoids will also be AVAILABLE in BizTalk maps? Sorriso

Configuring and deploying a EAI Bridge

Finally the most important of this demo the creation and configuration of our EAI Bridge (commonly referred to as pipelines).

Like I mention in the beginner this will be our goal: we will send messages to the cloud (EAI Brigde), apply transformation, Enrich properties in the Bridge (like Property promotion in BizTalk) and Route messages; and treat them in different ways – different transformation, different endpoint like queues or different lob targets:

  • If is a top priority message we need to put the message in SQL table on-premise: “CustomerOrders”;
  • If is a normal message we put in a Azure Queue: “CustomerOrderQueue” (that we need to create in the AppFabric lab portal;
  • And if was an invalid message we put the message in another SQL table on-premise: “IncorrectOrders”

Content-base-routing-EAI-Bridge

To accomplished that we need to:

  • On the solution explorer window, open the bridge configuration surface file: “BridgeConfiguration.bcs
    • If I have to make a comparation between BizTalk, this file, for me, will be like the BizTalk Administration Console where we create our receive port and receive location, define the pipeline associated with this location, where we are able to set a transformation, create filters to subscrive the messages and create send ports – of course without orchestrations.
  • The first thing we need to do is to set our Service Namespace:
    • Right-click anywhere on the bridge configuration surface and click Properties and then for the Service Namespace property, specify the registered service namespace.
  • If we open the Toolbox windows and Drag and drop an XML One-Way Bridge from toolbox to the Bridge Configuration surface and set this entity name to “OrderBridgeRouting”.

XML-One-Way-Bridge

  • STEP 1: Double click the XML One-Way Bridge on the bridge configuration surface to configure the bridge.
    • In this Bridge we will not apply any transformation we only will specify the input schema and Enrich the message (similar to property promotion in BizTalk) by extracting specified properties from the message. The extracted properties will then be used to route the message to different destinations.
    • On the XML One-Way Bridge design surface, within the Message Types box, click the add icon “plus” (+) to open the Message Type Picker dialog box.
      • In the Message Type Picker dialog box, from the Available message types box, select the “CustomerOrders” message type, click the right arrow icon “right arrow” to associate the request schema with the Bridge and then click OK.

EAI-Bridge-Message-Type-Picker-demo-2

    • We can validate the message by setting the propertie “Report Warnings as Errors” to true in the Validate stage.
    • Note: Because we need to route the message based in some of its properties we need the Enrich the message in the Enrich stage. Again if we are a BizTalk Developer we are accustomed to promote the properties directly in our schemas, in ServiceBus EAI project this is slightly different and we need or can do this in two different stages: in the pre-transform Enrich stage and in the post-transform Enrich stage – this means that we can extract values from the message before and after we apply a transformation.
    • Configure the pre-transform Enrich stage to extract the value of the “Priority” and “Quantity” elements from the source schema.
      • Within the Enrich stage, select the Enrich activity, and then from the Properties pane click the ellipsis button (…) against the Properties property to open the Property Definition dialog box.

EAI-Bridge-Property-Definitions-window

      • In the Property Definitions dialog box, click Add to open the Add Property dialog box. In the Add Property dialog box, do the following:
        • In the Source (Read From) section set
          • The Type field to Xpath from the drop-down list;
          • Specify the Xpath query to extract the value of the Priority element from the request schema in the Identifier field (you can get the Xpath query form the Instant XPath property in the schema
          • In the Message Type field you need to specify the schema that you are trying to extract the value – so you need to select the CustomOrder schema.
      • In the Property (Write To) section set:
        • In the Property Name field you need to give the name to your property (promote property) that you are creating, in this case put: “Priority”
        • And in the Data Type field, you need to specifies the data type for the property. Specify long.
      • Click OK in the Add Property dialog box

EAI-Bridge-Property-Definitions-edit-property

    • Reapeat the same steps, this type to extract the “Quantity” element with the following values:
      • In the Source (Read From) section set:
        • Type: Xpath
        • Identifier: Specify the Xpath query to extract the value of the Quantity element from the request
        • Message Type: select the CustomOrder schema.
      • In the Property (Write To) section set:
        • Property Name: “Quantity”
        • Data Type: long.

EAI-Bridge-Property-Definitions-window-final

      • Click OK in the Property Definition dialog box.
    • Save the bridge configuration and go back to the Bridge Configuration designer surface.

Now we need to add to the Bridge Configuration designer surface the following entities:

  • Two more XML One-Way Bridges and call them:
    • OrderTopPriorityBridge
    • And InvalidOrderBridge;
  • The SQL LOB Target that we create earlier, to accomplish that we need to:
    • Drag and drop an SQL LOB Target (sandroazureeaiedibus/sql/customorder) from Server Explorer windows to the Bridge Configuration surface.
      • We can add the SQL LOB Target only one time or twice as you will see in the pictures below;
  • One Queue and set the entity name to “CustomerOrderQueue”
  • And connect them as the images shows

EAI-Bridge-connection-CBR

Or

EAI-Bridge-connection-CBR-sample-2

In this demo we will folow the first diagram!

Now we need to configure all the entities that we just add to our Bridge Configuration designer surface:

  • STEP 2: Click the connection between XML One-Way Bridge “OrderBridgeRouting” and the XML One-Way Bridge “OrderTopPriorityBridge”
    • In the Properties window, click the ellipsis (…) button for Filter Condition.
      • In the Route Filter Configuration dialog box, set the filter condition to Filter and add the following condition:
        • Priority = 100 AND Quantity > 0
        • Note 1: this editor is rudimentary and don´t have IntelliSense, so you need to write correctly the names of your properties
        • Note 2: the name of the properties are the ones we created earlier in pre-transform Enrich stage in the “OrderBridgeRouting” bridge.

EAI-Bridge-Router-Filter-Condition-demo-2

      • Click OK.
    • In the Properties window leave the Route Action empty.
  • STEP 3: Repeat the same steps this time for the connection between XML One-Way Bridge “OrderBridgeRouting” and the XML One-Way Bridge “InvalidOrderBridge”
    • In the Route Filter Configuration dialog box, set the filter condition to Filter and add the following condition:
      • Quantity < 0

EAI-Bridge-Router-Filter-Condition-demo-2-2

      • Click OK.
    • In the Properties window leave the Route Action empty.
  • STEP 4: Repeat the same steps this time for the connection between XML One-Way Bridge “OrderBridgeRouting” and the Queue “CustomerOrderQueue”
    • In the Route Filter Configuration dialog box, set the filter condition to Filter and add the following condition:
      • Priority != 100 AND Quantity > 0

EAI-Bridge-Router-Filter-Condition-demo-2-3

      • Click OK.
    • The XML bridges support both SOAP and REST message protocols. So, while sending a message from an XML One-Way Bridge to a Service Bus queue or a topic, you can specify whether the outgoing message will be a SOAP or a REST message:
      • In the Properties pane, for the Messaging Protocol property, from the drop-down list, select either SOAP or REST depending on how you want to send the message. I choose to select REST.
      • In the Properties pane leave the Route Action empty.

Point of situation:

  • He have successful configure the first XML One-Way Bridge (STEP 1) – which will serve as our input channel, i.e., we will send the messages to this runtime address.
  • And he have successful configure the connections between:
    • STEP 2: XML One-Way Bridge “OrderBridgeRouting” and the XML One-Way Bridge “OrderTopPriorityBridge”
    • STEP 3: XML One-Way Bridge “OrderBridgeRouting” and the XML One-Way Bridge “InvalidOrderBridge”
    • STEP 4: XML One-Way Bridge “OrderBridgeRouting” and the Queue “CustomerOrderQueue

That basically receive the message and route them base on the context of the message to another XML Bridge or to a Queue.

Now we need to configure the destinations, the XML Bridges that are responsible for transforming messages in the format required by the destination and the connections between them:

  • STEP 5: Configure the XML One-Way Bridge “OrderTopPriorityBridge”
  • STEP 6: Configure the XML One-Way Bridge “InvalidOrderBridge”
  • STEP 7: Configure the connection between the XML One-Way Bridge “OrderTopPriorityBridge” to the SQL LOB Target entity
  • STEP 8: Configure the connection between the XML One-Way Bridge “InvalidOrderBridge” to the SQL LOB Target entity
  • STEP 9: And configure the Queue

To configure the remains steps we need to:

  • STEP 5: Configure the XML One-Way Bridge “OrderTopPriorityBridge”
    • Double click the XML One-Way Bridge “OrderTopPriorityBridge” on the bridge configuration surface to configure the bridge.
      • On the XML One-Way Bridge design surface, within the Message Types box, click the add icon “plus” (+) to open the Message Type Picker dialog box.
      • In the Message Type Picker dialog box, from the Available message types box, select the “CustomerOrders” message type, click the right arrow icon “right arrow” to associate the request schema with the Bridge and then click OK.
    • Within the Transform stage, select the Xml Transform activity, and then from the Properties window click the ellipsis button (…) against the Maps property to open the Map Selection dialog box.
      • From the list of maps displayed in the dialog box, select CustomerOrderToSQLOrderInsert.trfm and click OK.

EAI-Bridge-Map-Selection-demo-2

    • Save the bridge configuration and go back to the Bridge Configuration designer surface.
  • STEP 6: Configure the XML One-Way Bridge “InvalidOrderBridge”
    • Repeat the same process for the XML One-Way Bridge “InvalidOrderBridge”.
      • In the Message Type Picker dialog box, from the Available message types box, select the “CustomerOrders” message type, click the right arrow icon “right arrow” to associate the request schema with the Bridge and then click OK.
      • Within the Transform stage, select the Xml Transform activity, from the list of maps displayed in the dialog box, select CustomerOrderToSQLIncorrectOrderInsert.trfm and click OK.
      • Save the bridge configuration and go back to the Bridge Configuration designer surface.
  • STEP 7: Configure the connection between the XML One-Way Bridge “OrderTopPriorityBridge” to the SQL LOB Target entity
    • To set the filter condition we need to:
      • Click the connection between XML One-Way Bridge “OrderTopPriorityBridge” to the SQL LOB Target entity.
      • In the Properties window, click the ellipsis (…) button for Filter Condition.
      • In the Route Filter Configuration dialog box, set the filter condition to Match All.
      • Click OK.
    • To set the Route action so that the outgoing message to the LOB application has a SOAP action header.
      • Open Server Explorer and navigate to the SQL LOB Relay we created earlier. Right click the relay, click Properties, and for the Operations property, copy the value of the first operation.
      • On the Bridge Configuration surface, click the connection between XML One-Way Bridge “OrderTopPriorityBridge” and the SQL LOB Target entity.
      • In the Properties window, click the ellipsis (…) button for Route Action. In the Route Actions dialog box, click Add to open the Add Route Action dialog box. In the Add Route Action dialog box, do the following:
        • Under Property (Read From) section, select Expression, and then paste the value that you copied. Important: You must always specify the value for an expression within single quotes.
        • Under Destination (Write To) section, set the Type to SOAP and the Identifier to Action.
        • Click OK in the Add Route Action dialog box to add the route action. Click OK in the Route Actions dialog box

EAI-Bridge-route-filter-condition-demo-2-5

  • STEP 8: Configure the connection between the XML One-Way Bridge “InvalidOrderBridge” to the SQL LOB Target entity
    • Repeat the same process for this connection
      • Filter condition: Match All
      • The Route action: Open Server Explorer and navigate to the SQL LOB Relay we created earlier. Right click the relay, click Properties, and for the Operations property, copy the value of the second operation.

EAI-Bridge-route-filter-condition-demo-2-4

  • STEP 9: And configure the Queue
    • Click Queue entity
      • In the Properties window, in the “Relative address” property you need to defined the name of the queue that you create in the AppFabric Lab Portal, in my case: “CustomerOrderQueue”

Queue-Properties

Now we are ready to build our solution and deploy to the cloud!

What is Route Filters and Route Action?

Route Filters: The bridge enables you to route messages to the intended recipient based on filters. The filters are set on certain values that are passed as part of the message. For example, if the value in the element <Recipient> in the XML message is set to Finance, send the message to Service A. Otherwise, send the message to Service B.

Route Action: Route actions help in bridging protocol mismatch. For example, consider two applications, App A and App B. App A sends messages by using the REST protocol while App B receives only SOAP messages. If App A sends the message to the bridge instead, the bridge includes SOAP headers on the message as part of Route Action. The bridge then sends the message over to App B.

The sample code is available for download in Code Gallery:.

Understanding Content Based Routing in EAI Bridges (360.7 KB)
Microsoft Code Gallery

Like I mention in one of my last posts, I decided to publish all my demos that I have been using in my sessions in BizTalk Innovation Event series. This will be the first demo.

This demo is a basic integration scenario: “Event registration” and intends to show some of the Enterprise Application Integration (EAI) capabilities in the cloud and how we can connect with on-premise system using LOB Targets and Service Bus Connect. Basically we will send messages to the cloud, then they will be processed and transformed through a bridge deployed on Service Bus (EAI Bridge), and then inserts the message into an on-premises SQL Server database. Finally we will get the response back – So a very simple scenario.

Because I’m also a BizTalk Developer, in this post I will make comparisons between this type of project and BizTalk projects whenever possible. I will try to demystify some preconceptions and fears: I’m a BizTalk developer, do I need to learn a new technology? It will be difficult to use this SDK or to migrate my application to the cloud?

Maybe at the end you will have your question or doubts answered.

Create Service Bus EAI Project

The first thing of course is to create a new Visual Studio project:

  • Open Visual Studio 2010, on the File menu, point to New, and then click Project.
  • Under “Installed Templates”, select “Visual C# –> ServiceBus” template
  • And then select “Enterprise Application Integration” project type
  • Finally, give a name to your project

Enterprise-Application-Integration-project-type

By default “BridgeConfiguration.bcs” is open after we create a new project. For now we will close this file (window).

Create the input schema and generate the SQL Schemas

If you are a BizTalk developer, you are accustomed to use the BizTalk Editor to create, edit, and manage schemas that you will use in your application.

You will have almost the exact same experience when creating schemas to use in your Service Bus EAI projects. Why? Because basically is the same editor Sorriso

So to create a new schema:

  • Right-Click in your EAI Project and select the option “Add –> New Item…”
  • Select “Schema” and give a name to your schema
  • Click “Add”

EAI-Project-Add-Schema

I will not explain all the steps to describe how to create the schema structure, because like I said before it is the exact same experience:

  • Add Records, Attributes, Elements and so on
  • Import schemas and so on
  • Max and min occurs and so on
  • We even have Promote option and this option is not used this type of project 😀

service-bus-Schema-editor

In this demo, our input schema is a basic schema describing persons:

  • A best practice always is to rename the root node, in your sample, rename to “Persons”
  • Create a new record called “Person”
    • Max Occurs: unbounded
    • Min occurs: 1
  • Under “Person” create the followind sctructure:

SB-EAI-Person-Schema

  • The “Phone” record in this case occurs one time

The next step is to generate the SQL Schemas. So if you are a BizTalk developer in this step we created the new item using the “Add Generated items…” and then we chose the WCF-SQL adapter…

Note: The source code of the project that is available to download will contain all the scripts to create the database used in this demo.

SB-SQL-Table-Demo1

In this type of project we don’t have this option. We will have the same functionalities to generate the SQL Schemas automatic but in very different way.

In order to connect to an on-premise LOB application, you must create LOB Relays and LOB Targets as part of your EAI application:

  • In the Enterprise Application Integration project, from “Server Explorer”, expand “ServiceBus Connect Servers”
  • Then expand the server (URL), and the “LOB Types”
  • Right-click SQL type, and select “Add SQL Target”.

add-sql-target

  • The Add a Target wizard starts. In the welcome page, click “Next”.
  • On the Connection Parameters page, specify the details for the SQL Server to connect to (name of the server, the SQL instance and the name of the database (Catalog)) and the credentials to use for the connection (leave the option Use Windows credentials credentials checked.). Click “Next”.

Add-SQL-target-Connection-Parameters

  • On the Operations page we will specify the operations that we want to provide, in this demo I will choose only the insert operation – You will notice also that this step is almost identical to what we do when we use the option “Add Generated items…” in BizTalk project because we are actually using the same adapter:
    • From the left box, expand Tables, expand “Tables à Person”, select Insert, and then click the right arrow. The Insert operation must now be listed under the “Selected operations” section.

Add-SQL-target-operations

  • Click Next.
  • In the Runtime Security page, specify the security type. This security type determines how the client message is authenticated with the LOB Target.
    • In my case I will use ” Fixed Windows credential” option

Add-SQL-target-Runtime-Security

  • On the Deployment page, choose an existing LOB Relay or create a new LOB Relay.
    • A single LOB Relay can be used with multiple LOB Targets. There are restrictions based on the security model. As a best practice, group the same security method in one LOB Relay. For example, use the same LOB Relay to host the LOB Targets that use Message Credential or Fixed Windows security type.
  • In this demo we will create a new LOB Relay, so we need choose the option “Create new” and set the following parameters:
    • Namespace: Enter your service namespace that you specify in your subscription in the Azure Management Portal after you sign-in. For example my namespace is “sandroazureeaiedibus”
    • Issuer Name: The Service Bus Issuer Name. For now this is always “Owner”.
    • Issuer Secret: The Service Bus Issuer Secret key. Issuer Secret is available in the Azure Management Portal after you sign-in.
    • Relay Path: Enter the desired name of the relay path. For this tutorial, set this property to “SQL”. This will update the Management address to be:
    • Target Sub-path: Enter a sub-path to make this target unique. In this demo we will use “SQLDemo”.

Add-SQL-target-deployment

  • Click “Next”.
  • On the Summary page, review the values you specified in the previous steps, and then click “Create”.
  • When the wizard completes, click Finish. The following activities occur in the background:
    • The LOB Target is created in Server Explorer. It can be disabled, started and deleted. Its configuration can also be exported.
    • The LOB Target is created as an application in IIS. This application uses the Runtime for this specific LOB Target. Runtime: ServiceBus Connect Service Runtime Components describes the IIS components.

Add-SQL-target-Completion

  • Click “Finish”

Now under the SQL types we will have our LOB Relay and LOB Target created:

sql-target-explorer

But if we look to your Visual Studio project we don’t have the SQL schemas available, to accomplished that we need to import them by:

  • Select the Project name, in my case “SQL Demo”
  • Is your LOB Target created previous, right-click and select the option “Add Schemas to <project name>..”

Add-Schemas-to-project-name

  • This will open a new window were you can defined:
    • A file name prefix, in my case I put “sqldemo_”
    • Folder Name, leave the default
    • And set the Lob credentials, leave the default value

Schema-generation-Import-to-project

  • Click “OK”

You will notice that a folder with the SQL Schemas was created in you project.

Create a map

The next step is to create a map that will transform the input message “Person” in the desired message type to send to the SQL:

  • Right-Click in your EAI Project and select the option “Add à New Item…”
  • Select “Map” and give a name to your map
  • Click “Add”

Again if you are a BizTalk developer at first glance the map editor seems to be the same that we used in BizTalk… but although the concept be the same: selection of schemas, grids, pages, schema navigation and so on, this is a very very different editor! For start:

  • We don’t have functoid but instead we have Operations… And now you think … ok the name changed… yes is true but we have now:
    • Normal operation that we are used to like string manipulation and arithmetic expressions
    • Very different operations like looping or list functionality
    • The lack of others like scripting
    • And amazing operations like “if-then-else expression” and Date/Time operations
  • XSLT and custom code is not supported in this version – so we don’t have scripting operations
  • We can use the Transform Designer, to define relationships between an input XML document and an output XML document using links and Map Operations. But instead of generate XLST code like the BizTalk Mapper Editor, the maps are created using Extensible Application Markup Language (XAML).

In this transformation me need to map all records “Person” to the destination “Person” record, so me need to:

  • Drag MapEach Loop Operation from the Toolbox window to the Transform Designer surface (or map grid)
    • This operation is similar to Looping functoid in BizTalk but with a strange aspect Sorriso

MapEach-Loop-operation

  • Then link the “Person” in the origin to the MapEach Loop Operation and then the MapEach Loop Operation to the record “Person” in the destination schema, like the picture above show.

NOTE: You will notice in the MapEach Loop Operation that there is an icon with a blue arrow. By default, when a MapEach Loop is added to the Transform Designer surface the Scope is activated (indicated by the blue arrow), this means that all items added to the Transform Designer surface will perform under the scope of that Loop Map Operation. To work in the parent scope, we need to select the arrow to unset the scope (indicated by a gray arrow). For details on working within the scope of a Loop Map Operation, refer to Working Within the Scope.

  • With the MapEach Loop Operation scope activated:
    • Drag a link from the element “CitizenCard” in the origin schema to the element “CitizenCard” in the destination schema
    • Drag a link from the element “ZipCode” in the origin schema to the element “ZipCode” in the destination schema
    • Drag a link from the element “Email” in the origin schema to the element “Email” in the destination schema
    • Drag 3 String Concatenate Operations to the MapEach Loop Operation (like the picture bellow show)
      • Link the “FirstName” and “LastName” from the orign schema to the first String Concatenate Operation and then link the this String Concatenate Operation the element “FullName” in the destination schema.
      • Link the “AddressLine1” and “AddressLine2” from the orign schema to the second String Concatenate Operation and then link the this String Concatenate Operation the element “Address” in the destination schema
      • Link the “CountryCode”, “Prefix” and “Number” from the orign schema to the third String Concatenate Operation and then link the this String Concatenate Operation the element “PhoneNumber” in the destination schema

SB-EAI-Mapper

    • Edit the first and second String Concatenate Operations adding a space to separate the two elements. This process is exactly equal to BizTalk: double click in the operation, then we need to add a new map operation input with a space.

configure-string-concatenate-operation

Configuring and deploying a EAI Bridge

The last point we must do is to create our EAI Bridge (commonly referred to as pipelines). The term ‘bridge’ immediately reminds us of something which connects two end points. In the context of information systems here we are talking about a bridge connecting two or more disparate systems.

The definition of Bridge is a Service Bus EAI and EDI component that processes, transforms, and transports data between two disparate systems.This component applies the VETER pattern that’s means for: Validate – Enrich – Transform – Enrich – Route (VETER)

Like I mention in the beginner this will be our goal: we will send messages to the cloud, then they will be processed and transformed through a bridge deployed on Service Bus (EAI Bridge), and then inserts the message into an on-premises SQL Server database. Finally we will get the response back – So a very simple scenario

EAI-Bridges-integrate-with-SQL

To accomplished that we need to:

  • On the solution explorer window, open the bridge configuration surface file: “BridgeConfiguration.bcs
    • If I have to make a comparation between BizTalk, this file, for me, will be like the BizTalk Administration Console where we create our receive port and receive location, define the pipeline associated with this location, where we are able to set a transformation, create filters to subscrive the messages and create send ports – of course without orchestrations.
  • The first thing we need to do is to set our Service Namespace:
    • Right-click anywhere on the bridge configuration surface and click “Properties” and then for the “Service Namespace” property, specify the registered service namespace.
  • If we open the Toolbox windows, we will have almost all the components that we can add (drag) to bridge configuration surface: Bridges, Route Destinations and Sources. The next step is to a XML Request-Reply Bridge:
    • Drag and drop an XML Request-Reply Bridge from toolbox to the Bridge Configuration surface.

EAI-Bridge-XML-Request-Reply

    • Double click the XML Request-Reply Bridge on the bridge configuration surface to configure the bridge.

EAI-Bridge-configure-bridge

    • On the XML Request-Reply Bridge design surface, within the “Message Types” box, click the add icon “plus” (+) to open the “Message Type Picker” dialog box.
    • In the “Message Type Picker” dialog box, from the “Available message types” box, select the “Persons” message type, click the right arrow icon “right arrow” to associate the request schema with the Bridge, and do the same for the Reply Message type but this time you should select the “InsertResponse” message type and then click “OK”.

EAI-Bridge-Message-Type-Picker

  • In this basic scenario with only have one destination, so we don’t need to route the messages based on some properties or conditions, so we don’t need the Enrich the message, we only go to transformation the input message to the schema expect by the SQL Insert operation.
  • Within the Transform stage, select the “Xml Transform” activity, and then from the Properties window click the ellipsis button (…) against the “Maps” property to open the “Map Selection” dialog box.
    • From the list of maps displayed in the dialog box, select PersonsToSQLPersonsInsert.trfm and click “OK”.

EAI-Bridge-Map-Selection

  • Save the bridge configuration and go back to the Bridge Configuration designer surface.
  • Now we need to add to the Bridge Configuration designer surface the SQL LOB Target that we create earlier, to accomplish that we need to:
    • Drag and drop an SQL LOB Target (sandroazureeaiedibus/sql/sqldemo) from Server Explorer windows to the Bridge Configuration surface.

EAI-Bridge-add-SQL-LOB-Target

  • To connect the LOB Target to the XML Request-Reply Bridge we need to go to the Toolbox Windows, select the Connection component from bridges and link the small circles that exist in the components

EAI-Bridge-connection

  • The final step is to set the filter condition and the route action on the connection between the bridge and the SQL LOB Target entity. To set the filter condition we need to:
    • Click the connection between XML Request-Reply Bridge and the SQL LOB Target entity.
    • In the Properties window, click the ellipsis (…) button for Filter Condition.
    • In the Route Filter Configuration dialog box, set the filter condition to “Match All”.
    • Click “OK”.

EAI-Bridge-route-filter-condition

  • To set the Route action so that the outgoing message to the LOB application has a SOAP action header.
    • Open Server Explorer and navigate to the SQL LOB Relay we created earlier. Right click the relay, click Properties, and for the Operations property, copy the value of the first operation.
    • On the Bridge Configuration surface, click the connection between XML Request-Reply Bridge and the SQL LOB Target entity.
    • In the Properties window, click the ellipsis (…) button for Route Action. In the Route Actions dialog box, click Add to open the Add Route Action dialog box. In the Add Route Action dialog box, do the following:
      • Under Property (Read From) section, select Expression, and then paste the value that you copied. Important: You must always specify the value for an expression within single quotes.
      • Under Destination (Write To) section, set the Type to SOAP and the Identifier to Action.
      • Click OK in the Add Route Action dialog box to add the route action. Click OK in the Route Actions dialog box

EAI-bridge-Add-route-Action

  • And then click Save to save changes to an Enterprise Application Integration project.

Now we are ready to build our solution and deploy to the cloud.

The sample code is available for download in Code Gallery:.

Using EAI Bridges and LOB Target to connect to on-premises SQL Server (201.2 KB)
Microsoft Code Gallery

After talking about Windows Azure Service Bus EAI EDI Labs or Windows Azure BizTalk Services over the 11 months all over around Europe I decided that my last session was last Wednesday, 16 January in BizTalk Summit 2013 in London and I will only return to this topic when a new release is published with new features.

So I decided to publish all my demos that I have been using in my sessions, but first let but first let’s talk about how and what I have to do to start playing with these features.

Download Windows Azure Service Bus EAI & EDI – April 2012 Release

The first thing of course is to download the Windows Azure Service Bus EAI and EDI Labs SDK – April 2012, you can do this by accessing http://go.microsoft.com/fwlink/?LinkId=235057.

Windows Azure Service Bus EAI & EDI Labs provides integration capabilities for the Windows Azure Platform to extend on-premises applications to the cloud, provides rich messaging endpoints to process and transform messages, and helps organizations integrate disparate applications, both on cloud and on-premises.

The resources available are organized in four resources:

  • Windows Azure Service Bus EAI and EDI Labs SDK
    • Install the Visual Studio project templates for creating an Enterprise Application Integration (EAI) project or an EDI Project (Artifacts).
    • Provides the tools to develop and deploy EAI Bridges and Artifacts.
  • Windows Azure Service Bus Connect
    • Developer SDK: This is required to create an Enterprise Application Integration project that can include a Service Bus Connect component.
    • Runtime and Tools: This is required to manage connectivity between the cloud applications and the on-premises LOB applications. Also includes PowerShell cmdlets to manage the Service Bus Connect Runtime components.
  • Samples
    • This zip will provide a variety of samples that will help you begin to understand these new functionality like Exploring Bridge Features, Exploring Transforms Features, Order Processing and EDI samples, Tools, and so on.
  • Microsoft Edi XSD Templates
    • Zip file that contains all EDI Schemas that you can use in your projects.
System Requirements

You must have the following components installed on the computer where you are installing Service Bus EAI and EDI Labs SDK:

  • Windows Server 2008 R2 or Windows 7 (Professional or Ultimate)
  • Microsoft Visual Studio 2010 RTM or SP1(Premium, Professional, Ultimate), .NET Framework 3.5 SP1, .NET Framework 4 and Microsoft Visual C# .NET (minimum requirement)
  • SQL Server 2008 and higher versions are supported, Windows Server AppFabric 1.0 or 1.1 (for Windows Server), IIS 7.0 or higher
Installing Windows Azure Service Bus EAI and EDI Labs

Before you begin to install this features you must make sure that no instances of Visual Studio are running when you run the setup! And if you have an earlier version of the SDK (December 2011 release) installed on the computer, you must remove it before starting the setup. (See more information here)

Install the Windows Azure Service Bus EAI & EDI – Developer SDK

Download the installer (WindowsAzureServiceBusEAI-EDILabsSDK.msi) suitable for your computer architecture (32-bit or 64-bit) and run it to start the installation wizard.

  • On the Welcome page, read the information and click “Next”.
  • Accept the license agreement, and then click “Next”.

Windows-Azure-Service-Bus-EAI-EDI–Developer-SDK-License-Terms

  • Check only the “Developer SDK” checkbox option and then click “Next”.

Windows-Azure-Service-Bus-EAI-EDI–Developer-SDK-features

  • Click “Install” to start the installation.

Windows-Azure-Service-Bus-EAI-EDI–Developer-SDK-install

  • Click “Finish”

The following components are installed as part of the Developer SDK:

  • Windows Azure Service Bus EAI and EDI Labs (EAI): Installs the Visual Studio templates and plug-ins for creating EAI applications.
  • Microsoft WCF LOB Adapter SDK 2010: Required by the Microsoft BizTalk Adapter Pack 2010.
  • Microsoft BizTalk Adapter Pack 2010: Required if your EAI application sends messages to on-premise line-of-business (LOB) systems including SAP, SQL Server, Siebel, Oracle Database, or Oracle E-Business Suite.
Install the Windows Azure Service Bus EAI & EDI – Runtime and Tools

Download the installer (WindowsAzureServiceBusEAI-EDILabsSDK.msi) suitable for your computer architecture (32-bit or 64-bit) and run it to start the installation wizard.

  • On the Welcome page, read the information and click “Next”.
  • Accept the license agreement, and then click “Next”.
  • Check only the “Runtime & Tools” checkbox option and then click “Next”.

Windows-Azure-Service-Bus-EAI-EDI–Runtime-Tools-Features

  • When “Runtime & Tools” is selected, a new installation wizard starts that installs Service Bus Connect Runtime
  • Click “Next” on the Welcome screen.

Windows-Azure-Service-Bus-EAI-EDI–Runtime-Service-Bus-Connect-Runtime

  • Accept the End-User License Agreement and click “Next”
  • On the Choose Setup Type screen, select the installation type “Complete”
    • Typical and Complete are the same option and install both Runtime and Management Tools.
    • Using the Custom option, you need to specify which components you want to install.

Windows-Azure-Service-Bus-EAI-EDI–Runtime-Service-Bus-Connect-Runtime-Setup-Type

  • In the Management Service Application Pool screen, you need to define an identity that has sysadmin rights on the SQL Server and has Internet access and then click “Next”.
    • The Service Bus Connect application pool in IIS will be created under this identity.

Windows-Azure-Service-Bus-EAI-EDI–Runtime-Service-Bus-Connect-Runtime-Application-Pool

  • On the Configure Store Database page, enter the SQL Server name that will be used to store the Service Bus Connect management service configuration information and then click “Next”.
    • The Service Bus Connect setup creates a database with minimal objects to store information about the LOB Targets configured within the runtime environment. You can either use an existing SQL Server instance or set up a new one.

Windows-Azure-Service-Bus-EAI-EDI–Runtime-Service-Bus-Connect-Runtime-Database

  • On Configuration Store Master Key screen, you must define the master key password. This master key encrypts the database used by Service Bus Connect. Click “Next

Windows-Azure-Service-Bus-EAI-EDI–Runtime-Service-Bus-Connect-Runtime-Master-Key

  • On the Management ServiceBus Connect Setup screen, you need to enter the certificate bindings to be used by the Service Bus Connect web site and then click “Next”:
    • Use SSL to secure the management service: Check this to encrypt the HTTP requests with SSL.
    • Use an existing SSL certificate: Select this option to select an existing certificate from the Certificates personal store. The certificate should be from a trusted certificate authority. Use this option with “production” data.
    • Create a new self-signed certificate: Select this option to create a self-signed certificate. This option is to test SSL functionality of the Runtime.
    • Port: Enter the port number to be used by the Service Bus Connect web site. By default, this should be port 8080. Confirm this port is opened in your firewall.

Windows-Azure-Service-Bus-EAI-EDI–Runtime-Service-Bus-Connect-Runtime-certificate

  • Click “Install”
  • And when the installation completes, click “Finish”.

The following components are installed as part of Runtime & Tools:

  • Windows Azure Service Bus EAI and EDI Labs (EAI): Installs the Visual Studio templates and plug-ins for creating EAI applications.
  • Microsoft WCF LOB Adapter SDK 2010: Required by the Microsoft BizTalk Adapter Pack 2010.
  • Microsoft BizTalk Adapter Pack 2010: Required if your EAI application sends messages to on-premise line-of-business (LOB) systems including SAP, SQL Server, Siebel, Oracle Database, or Oracle E-Business Suite.
  • Runtime Service: Runs on-premise to manage the communication between the on-premises LOB systems and the EAI application running on the Service Bus.
  • PowerShell: Extensions to manage the Service Bus Connect Runtime component.

The Service Bus Connect feature allows an application in the cloud to communicate with a Line-of-Business (LOB) system on-premise, in your network, behind your firewall. Using the LOB adapters in the BizTalk Adapter Pack (BAP), a Service Bus Connect application can execute LOB operations to the following on-premise LOB systems:

  • Microsoft SQL Server
  • Oracle Database
  • Oracle E-Business Suite
  • SAP
  • Siebel eBusiness Applications

But in order to take advantage of this functionalities, we need to configure the ServiceBus Connect Servers in order to create and use the LOB Targets.

Configure the ServiceBus Connect Servers – Add your Management URL

The ServiceBus Connect Server Management URL is path to the ManagementService.svc WCF service hosted in IIS.

  • Create an Enterprise Application Integration project in Visual Studio.
  • In Server Explorer, right-click ServiceBus Connect Servers and click Add Server.

ServiceBus-Connect-Servers-Add-Server

  • This prompts for the ServiceBus Connect Server Management URL.

ServiceBus-Connect Servers-Management-URl

  • Click OK

With the Management URL configured we are able to create LOB in ServiceBus Connect Servers on Visual Studio.

ServiceBus-Connect-Servers-Server-Explorer

Create a Windows Azure CTP Service Namespace

After we installed the Developer SDK and Runtime and Tools in our environment, we need to create a new service namespace in the Windows Azure CTP subscription (You can create one or more service namespaces within your Windows Azure CTP subscription)

To create a new service namespace:

  • Open an Internet browser and visit the Windows Azure CTP Management Portal.
  • Log on in the Windows Azure CTP Management Portal using your Windows Live ID.
  • Once you signed, on the lower left-hand side of this page, click “AppFabric”.
  • To create a new service namespace, expand Services in the tree on the left-hand side, click Service Bus
    • if you get an error window, ignore it, click ”Close”
  • On the toolbar of the page, under Service Namespace category at the top of the page, click “New”
    • If you do not have an existing subscription, one will be created for you and a default name will be assigned.

Windows-Azure-Service-Namespace

  • In the Create a new Service Namespace box, type a name for your new service namespace. Note that each service namespace must be globally unique so that it can be identified by the service. Verify that the namespace you specified is available.

Windows-Azure-Service-Namespace-2

You might have to wait several minutes as the system provisions resources for your account. Once the Namespace is activated, you will able to expand the namespace and see that it is active.

Windows-Azure-CTP-Management-Portal

We are now able to create and deploy Enterprise Application Integration project in the cloud. In the next couple of daysI will publish the source code of my demos.

128 attendees, more than 70 different companies across 16 countries (Austria, Belgium, Denmark, France, Germany, Italy, India, Ireland, Netherlands, Norway, Portugal, Spain, Sweden, Switzerland, UK, USA), more than 10 Microsoft Integration MVP’s present (speakers, Q&A members and attendees) and 3 members of Microsoft Product group, these are some of the numbers that reflect the huge success of this event! This was the first time in UK that was been conduct a full day event dedicated to Microsoft BizTalk Server.

BizTalk-Summit-2013-London-Room

I have to congratulate and say thanks Saravana Kumar, Microsoft and BizTalk360 for well organize this magnificent event!

The journey

I arrive on 15 January to Gatwick Airport in London without problems or setbacks – Saravana was waiting for me at the airport – We went visit BizTalk360 Office and Saravana home ad then we return to the airport to pick up Nino Crudele. The next step was to go meet the remaining members of BizTalk Crew (Nino Crudele, Saravana Kumar, Tord Glad Nordahl, Steef-Jan Wiggers and me) along with Rui Machado (my coworker) and Michael Stephenson for a very nice dinner.

BizTalk-Summit-2013-London-Dinner

The event

As I mentioned earlier the event was a huge success. My session was in the afternoon after the Q&A session and I have to confess I was a little nervous for being in the presence of 140 BizTalk experts! And because Guru Venkataraman and Ravi Krishnaswamy from Microsoft Product Group talked on the keynote and in the Q & A session, some of the basics on the subject I would speak “Windows Azure BizTalk Services” or “Windows Azure EAI & EDI Labs”… I decided to risk a little further and make the session more practical, not spending too much time on the slides, and made for the first time one demo from scratch during my session!!! In the end I presented 3 demos:

  1. EAI SQL Demo: A basic integration scenario “Registration to the event” where we send messages to the cloud (EAI Brigde), then we apply a transformation and send this message to one system on-premise using LOB Targets and Service Bus Connect and then get the response back – So a very simple scenario.
  2. Customers Orders Routing Demo: The second is a more elaborate scenario: “Order Scenario” – the goal is to send order messages to the cloud (EAI Brigde), apply transformation, Enrich properties in the Bridge (like Property promotion) and Route messages; and treat them in different ways – different transformation, different endpoint like queues or different lob targets: if is a top priority message we need to put the message in SQL table on-premise, if is a normal message we put in a Azure Queue and if was an invalid message we put the message in another SQL table on-premise… this demo will show also how can we apply filters.
  3. EDI Demo: The last demo will be a EDI DEMO where we will see how to configure trading partners, agreements and EDI Bridges… them send this EDI messages to an on-premise system (SQL)

But fortunately I received many good reviews by the attendees, either after the session, or during breaks or by email… for that… thank you very very very much!!!

BizTalk-Summit-2013-London-EAI-EDI-SessionBizTalk-Summit-2013-London-EAI-EDI-Session-2

BizTalk-Summit-2013-London-EAI-EDI-Session-3BizTalk-Summit-2013-London-EAI-EDI-Session-4

But let’s go back to the beginning… The registrations started at 8 AM and progress very smoothly, however the event would start with a few minutes late due to a falling helicopter in London which caused the backwardness of two member of Microsoft Product group and attendees.

The event started at 9:15 by the hand of Saravana Kumar who made the introduction of all speaker, the agenda of the day and health and safety information, after that one rare moment in the Europe… our very special guest the Microsoft Product group (Guru Venkataraman and Ravi Krishnaswamy) made the Keynote of the event. Both Guru and Ravi showcased some of the core features that are added to BizTalk Server 2013, Azure BizTalk Services, and more importantly they demonstrated Microsoft commitment on BizTalk server and openly commented there will be more versions of BizTalk server.

BizTalk-Summit-2013-London-Keynote

After the keynote, were carried out two more sessions in the morning:

  • Steef-Jan Wiggers presented a session about the new cloud related adapters (WCF-BasicHttpRelay, WCF-NetTcpRelay, SB-Messaging and WCF-WebHttp.) that’s going to ship with BizTalk Server 2013 demonstrating the characteristics of each adapter with a demo!
  • Saravana Kumar demonstrated in its session how to improve your operations (monitoring and management) in your BizTalk environment using BizTalk360.

BizTalk-Summit-2013-London-SteefBizTalk-Summit-2013-London-Saravana

The afternoon started with Q&A panel with Kent Brown and Ravi Krishnaswamy from Microsoft Product Group joined by Charles Young, Jon Fancey (Microsoft Integration MVP) and Michael Stephenson (Microsoft Integration MVP)and what a great session!!! Many of the question was target to Kent and Ravi about roadmaps both on cloud and on-premise and despite some question were complicated to answer, none of them went unanswered and were very well accompanied by the other panel members.

BizTalk-Summit-2013-London-Q&A

After the Q&A I took the stage with my session about Windows Azure Service EAI/EDI Labs (or Windows Azure BizTalk Services) that I already described in detail. After I live the stage, were presented two more sessions:

  • Nino Crudele presented a session about BizTalk assessment and architecture review with real scenarios, if some of the attendees didn’t know Nino, they never will forget with his session full of great content and extremely hilarious! Nino is the kind of speaker that captivates any audience even the camera crew couldn’t stop laughing.
  • And finally Tord Glad Nordahl with is excellent session where he explained some of the platform improvements in Windows Server 2012 and SQL server 2012 that can have impact in BizTalk Server 2013

BizTalk-Summit-2013-London-NinoBizTalk-Summit-2013-London-Tord

This day was wrapped up by Saravana Kumar and after this with have time to talk weed the attendees – some social network – and have some beers after the event.

BizTalk-Summit-2013-London-social-networkBizTalk-Summit-2013-London-after-event

Once again, it was excellent and an honor to participate in this event along with all these amazing people that were responsible for this happens: the speakers (BizTalk Crew), Microsoft, BizTalk360 crew members and special all the attendees! It was good to have a chat and meet many amazing people like Naushad Alam, Charles Young, Stephen W. Thomas, Tarun Kumar Garg, Peter Vervoorn, Daniel Bautista Sanz, Ashwin Prabhu, Fabio Marini and many more (sorry if you are not mentioned here, you are so many! – Leave me a comment).

After the event

After the event has ended, unfortunately Tord had to go back home, but the rest of the team accompanied by Rui Machado and Stephen W. Thomas enjoyed themselves a little, visiting and getting to know the City of London

London-CityLondon-City-2

Our next event will be organized by me and my company DevScope and will be in Portugal in March 2013. See you here!

Last month I held a presentation at the Bouvet BizTalk Innovation Event (26 – 27 September) along with fellow MVPs: Steef-Jan Wiggers, Nino Crudele, Saravana Kumar and two distinguished community members: Lex Hegt and our host Tord G. Nordahl. This was the biggest BizTalk event organized in Norway (Stavanger) this year with a total of 50 people attended this two days event.

But before talking about the event let me tell you about my crazy trip.

The journey

Everything was planned to leave a day before the event from Porto (Portugal) at 11:40 (less one hour than Norway) and arrive at Stavanger (Norway) near 20:00 (local time) – with stops in Frankfurt and Oslo – and everything was going well until I get to Oslo and this is where the fun begins… Because some technical problems in fuel supply, which prevented the departure of aircrafts from in Oslo airport and originated that the aircrafts park available in the airport had reached its limit, my flight could not land at the intended destination and was diverted to… Gothenburg (Sweden) at 400 km from Oslo!

IMG_0850IMG_0852

Solution: I had to make the trip from Gothenburg to Oslo by bus (4 hour trip) than I was forced to spend the night at the airport hotel in Oslo – ​​check-in made at 3 AM and check-out at 4 AM – and take the first flight to Stavanger at 7 AM which enabled me to arrive 1 hour before the event start… yeaahhhh finally, without sleep but I managed to arrive on time.

The event

As I mentioned earlier this was a two days event. The first day was filled with presentations made by 6 speakers:

292763_10152138266335215_1415168096_nA3tYyaqCQAASkhd.jpg large271033_4315511679608_421210247_n

310694_10152114331660063_515824127_n277294_486860734665264_950138043_oA3uP7zmCIAEM82v.jpg large

You can download all the presentation here, but here is mine:

Windows Azure Service Bus EAI/EDI

This day was wrapped up by Tord and after this we had a few hours break with some beers and wine and ended up with an awesome dinner with the attendees and the Bouvet staff.

IMG_085920120930-215355

The second day was hands on labs, each speaker had his own room and hourly time slots, where the attendees could come in and had the opportunity to meet, discuss their issues, ask questions or share their experience with the speakers.

IMG_0866209197_486861181331886_576213008_o

This day started calm for me, only one person but a great conversation hour, but every slot started to have more people and at the end of the day I was the last to finished with Tord calling to my mobile phone saying “we were going to miss the boat and that the taxi is already here” and me replying “don’t bother me let me finish” hehehe

The end

After the event has ended, unfortunately Steef-Jan and Saravana had to go back home, but me Lex and Nino we had the pleasure spending two days in Tord house with this amazing family, travelling a little, visiting the country and have a little fun!

IMG_0867IMG_0888

28-09-12 raundal  am-2228-09-12 raundal  jordbrukskole19

The two days at Bouvet BizTalk Innovation Event were a great experience for me and I had the pleasure of meeting great people. I like to thank Tord and Bouvet for organizing the event. This was the third event of the BizTalk Innovation Event series this year, the previously events were organized in Utrecht (The Netherlands) and Milan (Italy).

Our next venue as speakers will probably be next year in London and after that in Porto.

You also can see Steef-Jan event review here and Tord review here.

In the last couple of months I’ve been busy participating in several national and international events talking about Azure Service Bus EAI/EDI services, or as we now know: BizTalk as PaaS (BizTalk on the cloud). You can find it more information here.

There are several tools available in Windows Azure Service Bus EAI & EDI – April 2012 Release provided by Microsoft so we can quickly and easily test our solutions, two of these tools are MessageReceiver and MessageSender.

With the MessageReceiver tool, we can use it to create our Queue and receive a message:

  • MessageReceiver.exe <Your namespace> owner <Your issuer key> <Queue name> Create

The MessageSender tool is used to send messages to a deployed bridge endpoint using HTTP/REST.

  • MessageSender.exe <Your namespace> <Your issuer key> <Your endpoint> <Path to sample file> application/xml

Both tools are console application that you can execute in Windows command line (CMD), which becomes a bit boring if we are constantly testing or making presentations of these features.

Therefore to facilitate and expedite my presentations, I decided to create this “beautiful” application that joins these two tools and say goodbye to the annoying CMD.

EAI Bridge Message Sender and Queue Message Receive

EAI Bridge Message Sender and Queue Message Receive bringing together these two console application tools: MessageReceiver and MessageSender in as single Windows Form Application easily and fast to use and where we store our default values (Service Bus namespace, Issuer Name, Issuer Key) so you don’t have to constantly enter this data.

EAI-Bridge-Message-SenderQueue-Message-Receive

This tool can be found and download on Microsoft Code Gallery:
EAI Bridge Message Sender and Queue Message Receive (526.8 KB)
Microsoft Code Gallery

In the last couple of months I’ve been busy participating in several national and international events talking about Azure Service Bus EAI/EDI services, or as we now know: BizTalk as PaaS (BizTalk on the cloud).

It all started with the invitation of Nino Crudele to participate at the Overnet BizTalk Innovation Event and speak about EAI (Enterprise Application Integration) and EDI (Electronic Data Interchange) functionalities in Azure Service Bus, joining a great team composed of four MVPs and two strongest community members and BizTalk experts (you can see the Event Report here).

These services are still available only in CPT (Community Technology Preview) version under the name Windows Azure Service Bus EAI and EDI Labs – April 2012 Release and they provide common integration capabilities (e.g. bridges, transforms, B2B messaging) on Windows Azure Service Bus.

However before participating in this event I had the opportunity, thanks to the invitation of Luis Calado (Microsoft Architect Evangelist) to participate and speak in a class about this topic:

Windows Azure One Day Lab, May 14 in Oporto

Windows-Azure-One-Day-Lab     Windows-Azure-One-Day-Lab-02

You can find the slides of this session here:

Overnet BizTalk Innovation Event, May 24 in Milan

One week later I was in Italy… along with fellow BizTalk MVP’s: Nino Crudele, Saravana Kumar and Steef-Jan Wiggers; and BizTalk experts and strong community members: Tord G. Nordahl and Lex Hegt.

Overnet-BizTalk-Innovation-Event     Overnet-BizTalk-Innovation-Event-02

In this session we’ll see EAI (Enterprise Application Integration) and EDI (Electronic Data Interchange) functionalities like: how to manage EDI message exchanges and trading partners with the Azure EDI Portal; how to support Flat files; edit Schemas and transformation maps.

Overnet-BizTalk-Innovation-Event-03     Overnet-BizTalk-Innovation-Event-04
Overnet-BizTalk-Innovation-Event-05     Overnet-BizTalk-Innovation-Event-06

You can find all slides of this event at BizTalk Events site:

More about this event here.

5th Meeting of NetPonto Community, June 9 in Coimbra

I have already promised that I would participate in a NetPonto community event in Coimbra for some time, in fact this event was to be done sooner, but for some reasons we had to postpone to this date.

So June 9 on a Saturday morning there I was introducing BizTalk on the cloud to a small but fantastic audience:

5th-Meeting-NetPonto-Community     5th-Meeting-NetPonto-Community-02
5th-Meeting-NetPonto-Community-03     5th-Meeting-NetPonto-Community-04

Resources:

  • Introduction to the Azure Service Bus EAI/EDI features (session in Portuguese)
Introduction to the Azure Service Bus EAI/EDI features (session in Portuguese)

Note: The NetPonto Community is an independent and nonprofit initiative in Portugal, which aims to share knowledge in architecture and software development in .NET platform and all presentations are not traditional presentations, but like a conversations between a group of people who like to talk and share knowledge about technology.

  • Slides will be available soon

More about this event here.

Windows Azure [R]Evolution, June 20 in Lisbon

The last but not the least and again invited by Luis Calado, I had the pleasure of participating in one of the biggest events of Windows Azure in Portugal of this year.

Windows Azure [R]Evolution was an event composed of 4 Tracks: Developer, Web Developer, IT Pro and Architects; and each track with four Technical Sessions.

windows-azure-revolution

I spoke in Developer track about Windows Azure Service Bus (Queues and Topics), BizTalk on-prem, BizTalk as IaaS and especially about BizTalk as PaaS.

You can download the slides of this session:

More about this event here.

Other resources

All demos will be available soon.

EAI Bridge Message Sender and Queue Message Receive

This is an improved version of the tool I used in my session to send messages to the EAI Bridges. EAI Bridge Message Sender and Queue Message Receive bringing together these two console application tools: MessageReceiver and MessageSender in as single Windows Form Application easily and fast to use and where we store our default values.

EAI-Bridge-Message-Sender     Queue-Message-Receive

This tool is available for download from MSDN Code Gallery:

Upcoming events

Bouvet BizTalk Innovation Event, September 26 and 27, 2012 in Stavanger (Norway)

EVENT INFORMATION: Be prepared for the largest BizTalk event ever organized in Scandinavia! Join four MVPs (Microsoft Most Valuable Professionals) and two of the strongest and most active community members for a spectacular BizTalk community event. This event follows a strong series of events that has already been held in The Netherlands, Italy and now Norway.

During this event there will be a series of cutting edge presentations:

  • BizTalk adapter pack: Best practice and a presentation of the versatile integration capabilities of the adapter pack!
  • Azure and connected systems (formerly known as AppFabric connected systems) – EAI Integration done correctly, to the cloud and beyond!
  • Jump into the usage of thresholds and throttling to squeeze the BizTalk environment to the MAX.
  • Large BizTalk environments, hundreds of servers and multiple adapters: how was it done and how did it scale?
  • Also introducing the new standard in BizTalk monitoring: BizTalk 360.

Now everything about this event here