Connected Pawns

May 11, 2013

Upgrading ESB 2.1 to ESB 2.2 – Exception Management Portal Alerting Service

Filed under: BizTalk — mbrimble @ 10:52 am

This is a continuation from two other blog posts about upgrading from BizTalk 2010 to BizTalk 2013.

Mike who I mentioned previously has given the following tip if you are having trouble getting the Alerting service in the Exception Management Service working in BizTalk 2013.

“….make sure:

1) BizTalk ESB Exception Notification.exe has updated assembly versions for any Enterprise library reference

2) Update the path of the BizTalk ESB Exception Notification.exe in the

<enterpriseLibrary.ConfigurationSource selectedSource="AlertService">

              <sources>

                     <add name="AlertService" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" filePath="C:\Program Files (x86)\ESB.AlertServiceInstall\BizTalk ESB Exception Notification.exe.config"/>

              </sources>

       </enterpriseLibrary.ConfigurationSource>

3) Add the following binding to the BizTalk ESB Exception Notification.exe

<runtime>

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

      <qualifyAssembly partialName="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling"

fullName="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

    </assemblyBinding>

  </runtime>

……”

May 8, 2013

Upgrading to BizTalk 2013–Could not load file or assembly "’Microsoft.BizTalk.Interop.SSOClient

Filed under: BizTalk — Tags: , — mbrimble @ 8:45 pm

Our BizTalk team have been trying to complete a in place upgrade from BizTalk 2010 to BizTalk 2013. The first part of this story can be found here. We completed the upgrade as described in that post but we struck this error and were stuck on it for awhile;

error

This error occurred whenever we browsed to a web service hosted by BizTalk, in this case http://localhost/ESB.ExceptionHandlingServices.WCF/ExceptionHandling.svc.

This error has been reported before by Vladimir Kirnishni and Sankar Muthusamy with BizTalk 2013. None of the suggested solutions where acceptable to us because in one case the version of the assembly was different and  in the other case the solution to just re-install BizTalk 2013 was not acceptable.

One of my very talented co-workers, Mike Laughton found the solution.  On examining the GAC after the in place upgrade he discovered that only version 3.0.1.0 and 5.0.1.0 of the offending assembly was present, however the exception was cause because we were looking for version 7.0.2300.0. The version of the assembly at C:\Program Files\Common Files\Enterprise Single Sign-On is 6.0. What on earth is going on?

Mike next checked the BizTalk 2013 feature that had been installed using the add remove programs windows application. He was surprised to find after the upgrade that the enterprise SSO client and server checkbox are unchecked. Armed with this information he ticked both the SSO administration and server options. Before applying the changes he made sure SSO was stopped  but alas no changes to the SSO assemblies where observed.

addremoveprograms

Finally he  found the SSO installer on the install media and ran that.

SSOinstaller

This time he was able to browse to a web service hosted in BizTalk.

We have reproduced this on 3 virtual machine and believe that is a bug in the BizTalk 2013 in place upgrade but this workaround appears to solve the issue.

May 5, 2013

Upgrading to BizTalk 2013 with ESB Toolkit 2.1 and ESB Exception Management Portal in situ

Filed under: BizTalk — Tags: , — mbrimble @ 2:57 pm

BizTalk 2013 supports an in place upgrade from BizTalk 2010 and we planned to do this on one of the BizTalk 2010 Servers that we support . We had used the ESB Toolkit 2.1 and a customized version of the ESB Exception Management Portal on this BizTalk 2010 server as well. What would happen if this BizTalk Server was upgraded with these components in situ?

There is little guidance on how you upgrade the ESB Toolkit 2.1 to ESB Toolkit 2.2. We cannot expect any guidance for upgrading the ESB Exception Management Portal Sample because it is only a sample. Precedence for an easy upgrade of these components was not promising. Kent Weare was the first one to warn that the ESB Exception Management Portal sample is broken in BizTalk 2013. Vladimir Kirnishni has described how to fix the ESB Exception Management Portal sample. Tomasso Groenendijk warned that if you leave the ESB 2.1 in situ after the upgrade “…you can’t use maps to transform a message! The return value in BizTalk 2010 is “XslTransform” and in BizTalk 2013 it’s “XslCompiledTransform”. The ESB toolkit 2.1 expects the old type resulting in the “Method not found” error.”

Given all this I decided to try an in situ upgrade to BizTalk 2013 with ESB Toolkit 2.1 and the ESB Exception Management Portal in situ. After a trouble free upgrade of BizTalk 2010 to BizTalk 2013  found that you could still browse to the ESB Exception Management Portal. Unfortunately when I generated an exception to go to the ESB exception management portal I got the error predicted by Tomas namely;

There was a failure executing the send pipeline: “Microsoft.Practices.ESB.ExceptionHandling.Pipelines.ESBFaultProcessor, Microsoft.Practices.ESB.ExceptionHandling.Pipelines, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ Source: “ESB Transform” Send Port: “ALL.Exceptions” URI: “SQL://(local)/EsbExceptionDb/” Reason: Method not found: ‘System.Xml.Xsl.XslTransform Microsoft.XLANGs.RuntimeTypes.TransformMetaData.get_Transform()’.

This is what I feared might happen after reading the BizTalk forum reply.

So I tried to upgrade the ESB Toolkit 2.1 to ESB Toolkit 2.2. I selected the ESB 2.2 install from the BizTalk 2013 media and got to this screen.

image

I choose repair and got this screen which clearly was not going to work.

image

I tried it anyway and it failed. The log showed;

[8:48:48 a.m. Info] Detailed Log information for product D:\BizTalk Server\ESBT_x64\BizTalk ESB Toolkit 2.2.msi is available at DetailedLog
[8:48:48 a.m. Info] MSI installation returned 1638 – Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.

Oh well I uninstalled the ESB Toolkit 2.1 and then installed the ESB Toolkit 2.2. On opening the ESB Configuration tool the exception and  itinerary databases were not configured and I choose to use the existing databases.

Now on browsing to the ESB Exception Management Portal I get this error

Server Error in ‘/ESB.Portal’ Application.

clip_image001

Client found response content type of ‘text/html; charset=utf-8′, but expected ‘text/xml’.
The request failed with the error message:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”&gt;
<html xmlns=”http://www.w3.org/1999/xhtml”&gt;
<head>
<title>IIS 7.5 Detailed Error – 500.19 – Internal Server Error</title>
<style type=”text/css”>  ( continues with more detail)

At this stage i decided to refactor our customised version of the ESB Exception Management Portal to add the correct references to the Enterprise Library, but that can wait for another raining day……….

In summary an in place upgrade of the ESB Toolkit 2.1 is not possible and if you want to use the ESB Exception Management Portal sample look forward to refactoring your customisation of it. It might just be a whole lot easier to buy BizTalk360 and use their version of the Exception Management Portal Smile

April 21, 2013

Windows Updates for BizTalk 2013

Filed under: BizTalk — Tags: — mbrimble @ 2:25 pm

Here is the first windows update for BizTalk I have ever seen. I wonder if the updates for HIS 2013 will now come the same way.

image

March 22, 2013

EDIFACT messages that are missing a UNA segment

Filed under: BizTalk — Tags: — mbrimble @ 3:15 pm

Shikhar came to me because he could not process an EDIFACT message like this using the out of the box BizTalk 2010 pipeline;

UNB+UNOB:1+7654321:ZZZ+1234567:ZZZ+353501:3023+UNB5′
UNG+INVOIC+UNG2.1:ZZZ+UNG3.1:ZZZ+060413:2314+UNG5+UN+D:98B’
UNH+UNH1+APERAK:D:98A:UN++13+UNH5.1+UNH6.1+UNH7.1′
BGM+1+C10601′
DTM+10′
FTX+AAA++C10701+C10801′
CNT+1:14′
RFF+AAA’
DTM+10′
NAD+AA+C08201+C05801+C08001+C05901′
CTA++C05601′
COM+C07601:AA’
ERC+C90101′
FTX+AAA++C10701+C10801′
RFF+AAA’
FTX+AAA++C10701+C10801′
UNT+15+UNH1′
UNE+1+UNG5′
UNZ+1+UNB5′

He got the following error;

An output message of the component “Unknown ” in receive pipeline “Microsoft.BizTalk.Edi.DefaultPipelines.EdiReceive, Microsoft.BizTalk.Edi.EdiPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ is suspended due to the following error:
Error: 1 (Miscellaneous error)
33: Invalid occurence outside message, package or group.
The sequence number of the suspended message is 1.

If we look at the raw message on the suspended instance we see that the UNB segment has been replaced with a blank line like this;

UNG+INVOIC+UNG2.1:ZZZ+UNG3.1:ZZZ+060413:2314+UNG5+UN+D:98B’
UNH+UNH1+APERAK:D:98A:UN++13+UNH5.1+UNH6.1+UNH7.1′
BGM+1+C10601′
DTM+10′
FTX+AAA++C10701+C10801′
CNT+1:14′
RFF+AAA’
DTM+10′
NAD+AA+C08201+C05801+C08001+C05901′
CTA++C05601′
COM+C07601:AA’
ERC+C90101′
FTX+AAA++C10701+C10801′
RFF+AAA’
FTX+AAA++C10701+C10801′
UNT+15+UNH1′
UNE+1+UNG5′
UNZ+1+UNB5′

What is going on here? Sandro Pereira wrote about a similar problem. His solution was to “Add this segment to your message: UNA (optional), UNB and UNZ and the message will be processed correctly.”. I decided to search for another solution. If the UNA segment is present then the EDI receive pipeline parses the file using the delimiters specified. Now if the UNA segment is not specified then the EDI receive pipeline uses the delimiters specified in EfactDelimiters property on EDI disassembler pipeline component.

image

Thus it tries to parse the message using the ‘ delimiter. The first line is assumed to be the UNA segment and is deleted from the stream. This is incorrect in this case because it is mandatory UNH segment and the message fails in the pipeline. The solution to this problem in our hands was surprisingly simple. We followed Gyan Prakash and added CRLF as segment terminator suffix. The pipeline now looks like this

image

This seems to work in our hands at the moment.

March 7, 2013

SSIS Error: Element “1” does not exist in collection "SelectedLogProviders"

Filed under: BizTalk — Tags: — mbrimble @ 8:52 am

Recently we tried to make a simple change to a SSIS package and got stuck with this error.

After must angst we tracked the problem to the way that the SQL agent running the SSIS package had been configured. Under the logging tab the SSIS log provider had not been specified.

SSIS1SSIS2

February 11, 2013

BizTalk and Rest Example from BizTalk Saturday

Filed under: BizTalk — Tags: , , — mbrimble @ 4:06 pm

This is one of my demonstrations from BizTalk Saturday at Auckland on 9/02/2013. This event was organised by Bill Chestnut and Nikolai Blackie.

BizTalk 2013 Hands On Day - 03 REST

I was asked if you could use the same ReST send adapter and dynamically send different ReSTful requests. For example can we use a send adapter to send two GETS that use the  base URI of http://broadbandmap.govt.nz/api/v1 i.e

http://broadbandmap.govt.nz/api/v1/DemandCategory/7

http://broadbandmap.govt.nz/api/v1/DemandPoint/14

As it happens I had a demonstration that showed one way of doing this. This demo sends a request to ReSTful service to get a list of Broadband demand points and then the details each Broadband demand point is subsequently retrieved from another ReSTful service that has the same base url.  I configured a send port as shown below that had two different operations for the two ReSTful requests.

<BtsHttpUrlMapping>

<Operation Name=”GetDemandCategory” Method=”GET” Url=”DemandCategory/{id}”/>

<Operation Name=”GetDemandPoint” Method=”GET” Url=”DemandPoint/{id}”/>

</BtsHttpUrlMapping>

image

The variable mapping was configured to use id context property with a name space of https://Datacom.BT.RestDEmo.ExternalSchemas.Broadbandmap_Govt_NZPropertySchema. The two schemas that reference this property schema for GetDemandCategory and GetDemandPoint are respectively.

clip_image002clip_image002[6]

The send pipeline is configured to use the Saravana Kumar’s RemoveBody custom pipeline and the receive pipeline uses a custom pipeline.  The custom receive pipeline  adds a namespace to the response from the ReST service and stamps the message with a BTS.Operation = GetDemaondPoint.

imageimage

The send adapter subscribes to messages from the message box using these filters. The first filter subscribes to the initial request to get the Demand Point list and the second filter subscribes to the DemandPoints that are split from the  list response..

image

 

A receive port and receive location was created to with a file adapter to initiate the ReST request. The receive pipeline dissembles the message as XML and then promotes BTS.Operation = GetDemandCategory.

imageimage

 

<ns0:Broadbandmap_Govt_NZ xmlns:ns0=”http://Datacom.BT.RestDEmo.ExternalSchemas.Broadbandmap_Govt_NZ”>
<id>14</id>
</ns0:Broadbandmap_Govt_NZ>

If the message above is submitted to the receive location , then it is submitted to the message box,  the BroadbandMap.Govt.NZ send port subscribes to the message and  a request like “GET http://broadbandmap.govt.nz/api/v1/DemandCategory/14 HTTP/1.1” is sent. The response is

<?xml version=”1.0″ encoding=”UTF-8″?>
<DemandCategory href=”
http://broadbandmap.govt.nz/api/v1/DemandCategory/14.xml”>
<Title>Professional, Scientific and Technical Services</Title>
<ImportedTitle>Professional, Scientific and Technical Services</ImportedTitle>
<ParentID>4</ParentID>
<ID>14</ID>
<Parent linktype=”has_one” href=”
http://broadbandmap.govt.nz/api/v1/DemandCategory/4.xml” id=”4″></Parent>
<Points linktype=”has_many” href=”
http://broadbandmap.govt.nz/api/v1/DemandCategory/14/Points.xml”>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3938.xml” id=”3938″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3943.xml” id=”3943″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3944.xml” id=”3944″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3954.xml” id=”3954″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3957.xml” id=”3957″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3959.xml” id=”3959″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3960.xml” id=”3960″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3965.xml” id=”3965″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/3967.xml” id=”3967″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/33207.xml” id=”33207″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/33208.xml” id=”33208″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6950.xml” id=”6950″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6954.xml” id=”6954″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6959.xml” id=”6959″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6961.xml” id=”6961″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6962.xml” id=”6962″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6963.xml” id=”6963″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6966.xml” id=”6966″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6970.xml” id=”6970″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/6977.xml” id=”6977″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/7961.xml” id=”7961″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9944.xml” id=”9944″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9948.xml” id=”9948″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9950.xml” id=”9950″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9953.xml” id=”9953″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9954.xml” id=”9954″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9958.xml” id=”9958″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9962.xml” id=”9962″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9963.xml” id=”9963″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9964.xml” id=”9964″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9966.xml” id=”9966″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9968.xml” id=”9968″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9970.xml” id=”9970″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9976.xml” id=”9976″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/9984.xml” id=”9984″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/10966.xml” id=”10966″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/11256.xml” id=”11256″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/11271.xml” id=”11271″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/11268.xml” id=”11268″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/11267.xml” id=”11267″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/11264.xml” id=”11264″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/11263.xml” id=”11263″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/11331.xml” id=”11331″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/11329.xml” id=”11329″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/12490.xml” id=”12490″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/12520.xml” id=”12520″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34294.xml” id=”34294″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34293.xml” id=”34293″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34285.xml” id=”34285″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34282.xml” id=”34282″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34278.xml” id=”34278″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34277.xml” id=”34277″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34265.xml” id=”34265″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34126.xml” id=”34126″></DemandPoint>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34213.xml” id=”34213″></DemandPoint>
</Points>
</DemandCategory>

if you temporarily change the receive pipeline on the BroadbandMap.Govt.NZ send port to an XML receive pipeline and create a file send port with a subscription BTS.messageType = DemandCategory then this message will be written to this file location.

if the receive pipeline on the BroadbandMap.Govt.NZ send port is Rcv_broadMap_govt_NZ_DemandPoint the message is stamped with a namespace of http://Datacom.BT.RestDEmo.ExternalSchemas.BroadbandMap_Govt_NZ_DemandCategory , de-batched into individual DemandPoint messages (shown below) and then stamped with BTS.Operation = DemandPoint . The message of type http://Datacom.BT.RestDEmo.ExternalSchemas.BroadbandMap_Govt_NZ_DemandCategory#DemandCategory is an envelope with a body xpath of =”/*[local-name()='DemandCategory' and namespace-uri()='http://Datacom.BT.RestDEmo.ExternalSchemas.BroadbandMap_Govt_NZ_DemandCategory']/*[local-name()='Points' and namespace-uri()='<DemandPoint href=”http://broadbandmap.govt.nz/api/v1/DemandPoint/34265.xml” id=”34265″ xmlns=”http://Datacom.BT.RestDEmo.ExternalSchemas.BroadbandMap_Govt_NZ_DemandCategory”></DemandPoint>

These messages are once again submitted to the message box. The BroadbandMap.Govt.NZ send port once again subscribes to these messages using the second filter and ReST request like “GET http://broadbandmap.govt.nz/api/v1/DemandPoint/34265 HTTP/1.1”. The responses contain the individual Demand Point details. The BroadbandMap.Govt.NZ.GetDemandPointResponse_FILE send port with a fliter of  BTS.MessageType == http://Datacom.BT.RestDEmo.ExternalSchemas.BroadbandMap_Govt_NZ_DemandCategory#DemandPoint  And Datacom.BT.RestDEmo.ExternalSchemas.DPID Exists writes these message to the file system e.g.

<?xml version=”1.0″ encoding=”UTF-8″?>
<DemandPoint href=”
http://broadbandmap.govt.nz/api/v1/DemandPoint/34265.xml”>
<OrganisationTitle>The Techno Geek</OrganisationTitle>
<StreetNumber>17</StreetNumber>
<Street>Sholson St</Street>
<Suburb>Putaruru</Suburb>
<City></City>
<PostalCode>3411</PostalCode>
<Region>Waikato</Region>
<Country>NZ</Country>
<Phone>021735745</Phone>
<Mobile>021735745</Mobile>
<Point x=”175.786527″ y=”-38.0549402″ srid=”" /><ExternalIdentifier></ExternalIdentifier>
<MeshBlock></MeshBlock>
<ImportID></ImportID>
<CategoryID>14</CategoryID>
<OwnerID>677</OwnerID>
<ID>34265</ID>
<Category linktype=”has_one” href=”
http://broadbandmap.govt.nz/api/v1/DemandCategory/14.xml” id=”14″></Category>
</DemandPoint>

 

The source code  and installation package for this example can be downloaded from REST Demo.zip  . You must be using BizTalk 2013 beta, have Saravana Kumar’s RemoveBody custom pipeline installed and have the ESB toolkit installed.

January 28, 2013

BizTalk 2013 and ReST

Filed under: BizTalk — mbrimble @ 12:36 pm

I am presenting a session on BizTalk 2013 and Rest at BizTalk Saturday – BizTalk 2013 Hands on Days – Auckland on February 9th.

I was all set to write a summary of this topic but this morning I woke and found that Steef-Jan Wiggers has just written a very good summary entitled  Microsoft offers ReST Support in BizTalk Server 2013.  I decided to publish what I was half way through writing  because it presents a different slant on this topic.

My first attempt to consume a Restful service was for a project with  BizTalk 2006R2. This was before the the new WCF-WebHttp adapter was available and we could only use the WCF-Custom adapter . I acknowledge Craig Haiden who worked out how to use some custom behaviours and configure some dynamic WCF-custom adapters to do the job. I have previously described my own small contribution previously in this blog (Sending a PUT to a ReSTful service using BizTalk 2006R2).

It was refreshing to revisit this experience using the new development tools and adapters that come with BizTalk 2013 Beta. What took me days using BizTalk 2006R2 can be completed in hours with BizTalk 2013. I think that Microsoft have done a good job making Rest support in BizTalk easier with the impending release of BizTalk 2013.

Prompted by my new discoveries with BizTalk and Rest i decided to check out how many ReST API’s exist within NZ and then tried to use them within BizTalk. I was truly amazed at the number of companies and NZ government agencies that expose ReST API’s e.g. http://developer.trademe.co.nz/ and http://www.broadbandmap.govt.nz/rest-api/ . ReSTful services are now becoming ubiquitous because they are so easy for mobile devices to consume and it is only fitting that BizTalk also embraces support for this type of service. (Note to myself. I must really explore this part of the NZ market.)

Just to finish I will list the history of ReST support in BizTalk and pay some respect to the early pioneer bloggers who made all this possible . If I have missed something out please let me know. The number of blog posts on ReST and BizTalk started to explode in 2011 and I expected many more this year. I think this list shows that the need for ReST support in BizTalk has been growing and the support for ReST in BizTalk 2013 is very welcome by BizTalk developers.

 

BizTalk

Version

ReST

Support

Details

2002

No

No WCF adapters.

2004

No

No WCF adapters.

2006

No

No WCF adapters.

2006R2

Yes (consume only)

7 Dec 2007 -Jon Flanders showed in a video how you can use a WCF-custom adapter to create a custom solution. Unfortunately this historic link is now dead. http://web.archive.org/web/20071222132830/http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,90f1db62-b42f-4be3-b9d7-36cd4319c97c.aspx

24 Apr 2008 – Jesus Rodriguez described how you can use HTTP adapters to consume ReSTful services using AtomPub.

http://weblogs.asp.net/gsusx/archive/2008/04/24/consuming-restful-services-from-biztalk-server-using-atompub.aspx

28 Oct 2009 – Paul Arundel sending via ReST to Azure Blob storage http://bitsinout.blogspot.co.nz/2009/10/using-biztalk-wcf-custom-adapter-to.html

2009

Yes(

consume only)

2 Mar 2010 – Jesus Rodriguez talks about experimental BizTalk ReST API’s

http://weblogs.asp.net/gsusx/archive/2010/03/02/biztalk-data-services-making-biztalk-more-restful-with-odata.aspx

2010

Yes

14 Mar 2011 – Adrian Lopez & Leandro Díaz described how that call ReST Service form BizTalk 2010

http://www.logue.com.ar/blog/2011/03/calling-rest-services-from-biztalk-server-2010/

16 Mar 2011 – Nitin Mehrota wrote how to Invoke ReSTful Web Services with BizTalk Server 2010

http://social.technet.microsoft.com/wiki/contents/articles/2474.invoke-restful-web-services-with-biztalk-server-2010.aspx#ReST_MessageInspector

14 Mar 2011 – Adrian Lopez & Leandro Díaz described how that call ReST Service from BizTalk 2010

14 Apr 2011 – Dave Sampson published a post using ReST with WCF-Custom Adapter and a wrapped text message encoder

http://dave-sampson.blogspot.co.nz/2011/04/adventures-with-biztalk-http-get-part-5.html

12 May 2011 – Nick McCready show cased an example using the WCF-custom adapters with code example.

http://codemonkeyseedo.blogspot.co.nz/2011/05/biztalk-to-wcf-data-services-part-2-wcf.html

11 June 2011 – Mark Brimble wrote about sending a put to a ReSTful service

http://connectedpawns.wordpress.com/2011/06/12/sending-a-put-to-a-restful-service-using-biztalk-2006r2/

11 July 2011 – Vishal Mody wrote about polling a ReSTful service using the scheduled task adapter.

http://geekswithblogs.net/BizTalkUnleashed/archive/2011/07/11/restful-service-polling-biztalk-receive-location.aspx

24 October 2011 – Magnus Ohlsson wrote about using ReST, BizTalk and mobile devices.

http://soapfault.com/blog/2011/10/connecting-android-and-biztalk-using-azure-appfabric-servicebus-queues-rest-and-wcf/

7 March 2012 – Mikael Håkansson wrote about exposing JSON/ReST endpoints from BizTalk. This post has now been superseded.

http://blogical.se/blogs/mikael/archive/2012/03/07/exposing-json-rest-endpoints-from-biztalk.aspx

28 May 2012 – Mikael Håkansson published ReST starter kit providing support for GET, POST, PUT and DELETE operation, for both Receive and Send ports together with support for both XML and JSON.

http://blogical.se/blogs/mikael/archive/2012/05/28/rest-start-kit-for-biztalk-server.aspx

22 Aug 2012 – Daniel Toomey published slideshow about ReST and BizTalk

http://www.slideshare.net/dtoomey/consuming-rest-services-in-biztalk-2010

18 Sep 2012 – Saravana Kumar showed us how consume a JSON endpoint with BizTalk

http://blogs.biztalk360.com/consuming-json-endpoint-with-biztalk-2010-r2-rest-wcf-webhttp-adapter/

http://code.msdn.microsoft.com/windowsdesktop/biztalk-2010-r2-rest-wcf-fdb2e91f

2013

Yes

12 Nov 2012 – Richard Seroter described how to expose a ReST service from BizTalk 2013 using the new WCF-WebHTTP adapter

http://seroter.wordpress.com/2012/11/12/exploring-rest-capabilities-of-biztalk-server-2013-part-1-exposing-rest-endpoints/

19 Nov 2012 – Richard Seroter continued in a second part to show how to use Biztalk 2013 consuming ReST service cleanly.

http://seroter.wordpress.com/2012/11/19/exploring-rest-capabilities-of-biztalk-server-2013-part-2-consuming-rest-endpoints/

28 Nov 2012 – Nino Crudele combined a ESB toolkit pattern with ReST in BizTalk 2013

http://ninocrudele.me/2012/11/28/r-esb-another-way-to-use-rest-in-biztalk-2013/

January 25, 2013

BAM Portal – Service Unavailable 503 Error

Filed under: BizTalk — mbrimble @ 1:32 pm

We got caught with this error recently when built a new BizTalk server. Every time we tried to browse to the web portal we got a 503 error and the application pool would stop. We could restart the app pool without error. It took us a while to work out the root cause. We checked a lot of things and proved that all other web services worked without any problems.

Eventually we discovered the following error most easily seen on the web server roles page.

webservererror

The error was ;

“The identity of application pool BAMAppPool is invalid. The user name or password that is specified for the identity may be incorrect, or the user may not have batch logon rights. If the identity is not corrected, the application pool will be disabled when the application pool receives its first request.  If batch logon rights are causing the problem, the identity in the IIS configuration store must be changed after rights have been granted before Windows Process Activation Service (WAS) can retry the logon. If the identity remains invalid after the first request for the application pool is processed, the application pool will be disabled. The data field contains the error number.”

The IIS user group had not been granted “Log on as a batch job properties” under the local security policy. Once this was corrected the BAM portal now displayed without error. Thanks to Mike Laughton and Shadab Anwer solving this problem.

localsecuritypolicy

January 19, 2013

Exploring BizTalk 2013 Beta – Connecting a DB2 Adapter to V10 DB2 database

Filed under: BizTalk — Tags: — mbrimble @ 8:36 am

One of our customers has started an on a project to upgrade their DB2 version 9.1 database running on Solaris to DB2 version 10.01 running on Linux. We currently use BizTalk DB2 adapters to get and save data to the 9.1 version of the database using BizTalk 2010 CU6 and HIS CU5.

I was asked to make sure that BizTalk could still connect to a the upgraded version of the DB2 database . I was dismayed that although I could connect to the the new version, I could not bind an packages or run any queries using BizTalk 2010.

DB2 connectionDB2package

I also tried upgrading my development system to HIS CU6. This also did not solve my problem.

After consulting the data sheet for the DB2 adapter for BizTalk 2010 I discovered that DB2 v 10.01 is not supported.

DB2 datasheet

I consulted the data sheet for the DB2 adapter for BizTalk 2013 it claimed support for v 10 as well as for v9.1, v9.5 and v9.7. Thus I installed the beta version of Host Integration Services (HIS) 2013 on a beta version of BizTalk Server 2013 and tried the same test. I was pleased to find that now the I could bind and run queries against the v10 DB2 database. This all made perfect sense to the DB2 DBA’s i was working with because they thought that key word “KEEPDYN” is no longer valid in v10.

Well done Microsoft you have saved this project! I will now have to go to the project manager and tell them that they may have to upgrade to HIS 2013 to be able to connect to v10 of a DB2 database. I cannot find any information at that moment that says whether there will be release of HIS2010 that will include support for v10 of DB2 or whether you can run HIS2013 on a BizTalk 2010 server.

Older Posts »

Theme: Silver is the New Black. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 51 other followers