Failed to create 'WCF-OracleDB' Transport Component

Topics: Bindings File, Settings Management and SSO
Jul 7, 2010 at 4:06 AM

Tools->Deployment Framework for BizTalk->Deploy BizTalk Solution fails when importing bindings which use a WCF-OracleDB TransportType (aka adapter).  The same BTSTask.exe ImportBindings command works fine when run on the target biztalk server with the same binding files, both with and without WCF-OracleDB ports.  But it only works remotely from my development machine if I remove the WCF-OracleDB ports.

The BizTalk Server is Windows Server 2008 32-bit with BizTalk 2009, including WCF LOB SDK and Adapter Pack 2.0 (which provides the WCF-OracleDB adapter).  My development machine has only the VS integration and biztalk administration tools installed - not the full blown BizTalk engine.  FWIW, I went ahead and installed the WCF LOB SDK and Adapter Pack 2.0 on the development machine.  Here is the relevant part of my Output:



 Deleting file "C:\TFSDEVEL\Solutions Development\DynMRO\Dev\DynCorp.BizTalk.MRO\DynCorp.BizTalk.MRO.Deployment\DynCorp.BizTalk.MRO_PortBindings.xml".
  Microsoft (R) BizTalk Application Deployment Utility Version 3.8.368.0
  Copyright (c) 2006 Microsoft Corporation. All rights reserved.
 
  Information: Importing bindings "C:\TFSDEVEL\Solutions Development\DynMRO\Dev\DynCorp.BizTalk.MRO\DynCorp.BizTalk.MRO.Deployment\PortBindings.xml" into application "DynCorp.BizTalk.MRO" in BizTalk configuration database (server="AFW01VDEVBIZ01", database="BizTalkMgmtDb")...
  Error: Failed to update binding information.
  Failed to create 'WCF-OracleDB' Transport Component
 
 
  Command failed with 1 errors, 0 warnings.
 
C:\Program Files\MSBuild\DeploymentFrameworkForBizTalk\5.0\BizTalkDeploymentFramework.targets(1648,5): error MSB3073: The command "BTSTask.exe ImportBindings -Source:"C:\TFSDEVEL\Solutions Development\DynMRO\Dev\DynCorp.BizTalk.MRO\DynCorp.BizTalk.MRO.Deployment\PortBindings.xml" -ApplicationName:DynCorp.BizTalk.MRO" exited with code 1.
Done Building Project "C:\TFSDEVEL\Solutions Development\DynMRO\Dev\DynCorp.BizTalk.MRO\DynCorp.BizTalk.MRO.Deployment\DynCorp.BizTalk.MRO.Deployment.btdfproj" (Deploy target(s)) -- FAILED.


And, here's one of the offending ports, with ReceiveLocationTransportTypeData xml decoded:

    <ReceivePort Name="R_MRO_DB" IsTwoWay="false" BindingOption="1">
      <Description xsi:nil="true" />
      <ReceiveLocations>
        <ReceiveLocation Name="RL_MRO_PurchaseOrder">
          <Description xsi:nil="true" />
          <!-- ifdef ${ _xml_preprocess} -->
          <!-- <Address>oracledb://${MRODBName}</Address> -->
          <!-- else -->
          <Address>oracledb://lgcmro2/</Address>
          <!-- endif -->
          <PublicAddress />
          <Primary>true</Primary>
          <ReceiveLocationServiceWindowEnabled>false</ReceiveLocationServiceWindowEnabled>
          <ReceiveLocationFromTime>2000-01-01T06:00:00</ReceiveLocationFromTime>
          <ReceiveLocationToTime>2000-01-01T05:59:59</ReceiveLocationToTime>
          <ReceiveLocationStartDateEnabled>false</ReceiveLocationStartDateEnabled>
          <ReceiveLocationStartDate>2010-03-01T00:00:00</ReceiveLocationStartDate>
          <ReceiveLocationEndDateEnabled>false</ReceiveLocationEndDateEnabled>
          <ReceiveLocationEndDate>2010-03-02T23:59:59</ReceiveLocationEndDate>
          <ReceiveLocationTransportType Name="WCF-OracleDB" Capabilities="779" ConfigurationClsid="d7127586-e851-412e-8a8a-2428aeddc219" />
          <ReceiveLocationTransportTypeData>
            <CustomProps>
              <InboundBodyPathExpression vt="8" />
              <InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
              <BindingConfiguration vt="8">
                <binding name="oracleDBBinding" pollingStatement="SELECT 1 FROM DUAL" postPollStatement="BEGIN INAIR.SP_IMPORTPO(); END;" pollingInterval="120" useAmbientTransaction="false" polledDataAvailableStatement="select count(1) from poheaderhst ph inner join polineshst pl on pl.hstkey = ph.hstkey and pl.siteid = ph.siteid inner join partslcf p on p.partnumber = pl.partnumber where ph.confirmno = '1' and pl.linestatus = 'OPEN' and pl.ws_exported = 'N' and p.parttype != 'L'" />
              </BindingConfiguration>
              <OutboundXmlTemplate vt="8">&lt;bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/&gt;</OutboundXmlTemplate>
              <CredentialType vt="8">UserAccount</CredentialType>
              <ServiceBehaviorConfiguration vt="8">&lt;behavior name="ServiceBehavior" /&gt;</ServiceBehaviorConfiguration>
              <!-- ifdef ${ _xml_preprocess} -->
              <!-- <Password vt="1">${MRODBPassword}</Password> -->
              <!-- else -->
              <Password vt="1" />
              <!-- endif -->
              <OrderedProcessing vt="11">0</OrderedProcessing>
              <IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
              <AffiliateApplicationName vt="8" />
              <DisableLocationOnFailure vt="11">0</DisableLocationOnFailure>
              <SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
              <BindingType vt="8">oracleDBBinding</BindingType>
              <!-- ifdef ${ _xml_preprocess} -->
              <!-- <UserName vt="8">${MRODBUser}</UserName> -->
              <!-- else -->
              <UserName vt="8">INAIR</UserName>
              <!-- endif -->              <InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
              <EndpointBehaviorConfiguration vt="8">&lt;behavior name="EndpointBehavior" /&gt;</EndpointBehaviorConfiguration>
              <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
            </CustomProps>
          </ReceiveLocationTransportTypeData>
          <ReceivePipeline Name="Microsoft.BizTalk.DefaultPipelines.XMLReceive" FullyQualifiedName="Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Type="1" TrackingOption="ServiceStartEnd MessageSendReceive PipelineEvents" Description="" />
          <ReceivePipelineData>
            <Root>
              <Stages>
                <Stage CategoryId="9d0e4105-4cce-4536-83fa-4a5040674ad6">
                  <Components>
                    <Component Name="Microsoft.BizTalk.Component.XmlDasmComp">
                      <Properties>
                        <AllowUnrecognizedMessage vt="11">-1</AllowUnrecognizedMessage>
                      </Properties>
                    </Component>
                  </Components>
                </Stage>
                <Stage CategoryId="9d0e410e-4cce-4536-83fa-4a5040674ad6">
                  <Components>
                    <Component Name="Microsoft.BizTalk.Component.PartyRes">
                      <Properties />
                    </Component>
                  </Components>
                </Stage>
              </Stages>
            </Root>
          </ReceivePipelineData>
          <SendPipeline xsi:nil="true" />
          <SendPipelineData xsi:nil="true" />
          <Enable>false</Enable>
          <ReceiveHandler Name="BizTalkServerApplication" HostTrusted="false">
            <TransportType Name="WCF-OracleDB" Capabilities="779" ConfigurationClsid="d7127586-e851-412e-8a8a-2428aeddc219" />
          </ReceiveHandler>
        </ReceiveLocation>
      </ReceiveLocations>
      <SendPipelineData xsi:nil="true" />
      <Authentication>0</Authentication>
      <Tracking>0</Tracking>
      <Transforms />
      <RouteFailedMessage>false</RouteFailedMessage>
      <ApplicationName>DynCorp.BizTalk.MRO</ApplicationName>
    </ReceivePort>

Coordinator
Jul 7, 2010 at 5:36 PM

I suspect that this issue is environment related.  There's a good chance that the deployment is attempting to create COM+ remote objects and use an MSDTC transaction.  Have you checked that MSDTC on the remote SQL Server and your machine are configured for network access and matching authenication levels?

Thanks,
Tom

Jul 7, 2010 at 9:18 PM

Thanks for the quick response!

I previously configured MSDTC to allow both client and administration with no authentication on both the development machine and the target BizTalk server as per the following: http://technet.microsoft.com/en-us/library/cc753620(WS.10).aspx.  DTCPing indicates all is well on that front.  SQL Server is installed on the server alongside BizTalk in this instance.  TCP/IP and named pipes are enabled in Sql Server network configuration.

In case I didn't make it clear already, the bindings contain other send and receive ports (types included are FILE, HTTP, WCF-BasicHttp, and WCF-WSHttp) which are imported successfully when the WCF-OracleDB ports are excluded.  What COM+ remote call (or other action, for that matter) might be taking place that is specific to the WCF-OracleDB component creation?   

I'm still trying other things, but am open to suggestions...

Coordinator
Jul 7, 2010 at 10:14 PM

BizTalk normally uses a couple of COM+ applications during deployment, but I don't see any specific to the WCF adapters.  I found another post this morning that described the same problem that you are having but with a different (non-WCF) adapter.  I assume that you are not seeing any obvious errors in the Event Log like DCOM errors.  Have you tried running MS SysInternals DebugView or FileMon during the deployment to see if you can see any hidden error messages or file not found type errors?

Tom

Jul 8, 2010 at 1:35 AM

I don't see anything useful in the Application, Security, or System event logs.  I haven't tried monitoring tools yet.  I am going to let this lie in favor of tfs build based deployments for now, but I expect I'll have to revisit it eventually.  If I solve it, I will post again.

May 6, 2012 at 10:55 PM

Hi,

Have you resolved this problem? I have at this moment the same problem "Failed to create 'XXXX' Transport Component" when importing remotely the binding file, but if I import the binding file at the destination server using BizTalk MMC, works perfect.

 

May 7, 2012 at 12:30 AM

No. I have still been using TFS builds as a work around.

May 8, 2012 at 7:57 AM
Edited May 8, 2012 at 7:57 AM

I have found the problem, you need to install the adapter WCF-OracleDB in the server from you launch the deployment to the remote server. See http://felixmondelo.blogspot.com.es/2012/05/error-importing-binding-file-from.html.