none
BTSActionMapping Argument is invalid RRS feed

  • Question

  • Good afternoon all,

    I'm trying to debug my first oracle orchestration with Biztalk.

    I get the following:

    A message sent to adapter "WCF-Custom" on send port "OracleInvoiceMaster" with URI "oracledb://svd0odbd01.homeoffice.amc.corp:1529/ebsdev/Dedicated" is suspended. 
     Error details: Microsoft.ServiceModel.Channels.Common.MetadataException: Argument <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Operation Name="Request" Action="http://Microsoft.LobServices.OracleDB/2007/03/CUST/Function/FUNCTION_AP_INVOICES_INTERFACE" />
    </BtsActionMapping> is invalid.
    
    Server stack trace: 
       at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
       at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
       at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
       at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)
    
    Exception rethrown at [0]: 
       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result) 
    


    I'm trying to call a function on oracle 11g from Biztalk 2010.

    I generated the setup using the visual studio 2010 "consume a web service" wizard. I imported the send port from the generated bindings. 

    What I've tried:

    I added the credentials so it could log in to Oracle.

    I changed the logical send port operation name to match the soap action header ("Request").

    I tried adding a debug listener configuration to the BTSNTSvc.exe.config file to trace the WCF activity but it did not work and does not produce any output.

    I set the pipelines for the port to "xml" not pass through.

    Here's the soap header for the send port:

    <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Operation Name="Request" Action="http://Microsoft.LobServices.OracleDB/2007/03/CUST/Function/FUNCTION_AP_INVOICES_INTERFACE" />
    </BtsActionMapping>
    

    Any suggestions?

     

     

    Monday, October 10, 2011 9:18 PM

Answers

  • Have you doublechecked if the logical sendport operationname is the same as the Name attribute of the Operation element in the BtsActionMapping?

     


    Tried that. I set the soap action to:

     

    <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Operation Name="FUNCTION_AP_INVOICES_INTERFACE" Action="http://Microsoft.LobServices.OracleDB/2007/03/AMCCUST/Function/FUNCTION_AP_INVOICES_INTERFACE" />
    </BtsActionMapping>
    

     

    Set the logical port operation name to "FUNCTION_AP_INVOICES_INTERFACE"

    Still the same thing.

    I downloaded the oracle function execution example from Microsoft MSDN. I tried duplicating that setup. I set the SOAP action to:

    http://Microsoft.LobServices.OracleDB/2007/03/AMCCUST/Function/FUNCTION_AP_INVOICES_INTERFACE 


    and the port name to "Request" (like in the sample).

    No difference.

    Have a look at the suspended instance to see what the value of the BTS.Operation property is set to, this should match the Name attribute of the Operation element in the BtsActionMapping.

    If this is the only operation you call through this sendport you can also replace the BtsActionMapping xml fragment with just the Action attribute's value, i.e.

    http://Microsoft.LobServices.OracleDB/2007/03/CUST/Function/FUNCTION_AP_INVOICES_INTERFACE
    


    I'm using the fully qualified URI: oracledb://svd0odbd01.homeoffice.xxx.corp:1529/ebsdev/Dedicated

    I get this error.

     

    I've also tried a URI using resolution using the tnsnames.ora: oracledb://ebsdev

    So far that just gives me timeouts. I checked my oracle configuration:

    C:\Users\Administrator>tnsping ebsdev

    TNS Ping Utility for 32-bit Windows: Version 11.1.0.7.0 - Production on 11-OCT-2
    011 10:31:32
    Copyright (c) 1997, 2008, Oracle.  All rights reserved.
    Used parameter files:
    C:\app\oracle\product\11.2.0\client_1\network\admin\sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=svd0odbd01.home
    office.xxx.corp)(PORT=1529)) (CONNECT_DATA=(SID=EBSDEV)))
    OK (180 msec)
    • Edited by jsprenkle Tuesday, October 11, 2011 3:35 PM
    • Marked as answer by jsprenkle Tuesday, October 11, 2011 4:03 PM
    Tuesday, October 11, 2011 3:34 PM

All replies

  • Hi,

    Have you doublechecked if the logical sendport operationname is the same as the Name attribute of the Operation element in the BtsActionMapping?

    Have a look at the suspended instance to see what the value of the BTS.Operation property is set to, this should match the Name attribute of the Operation element in the BtsActionMapping.

    If this is the only operation you call through this sendport you can also replace the BtsActionMapping xml fragment with just the Action attribute's value, i.e.

    http://Microsoft.LobServices.OracleDB/2007/03/CUST/Function/FUNCTION_AP_INVOICES_INTERFACE
    

    Regards,

    René

    Tuesday, October 11, 2011 10:42 AM
  • Are you running this on the same oracle server that you created the schema's on. You are using the oracle schema name in your namespace. Make sure that the function is in the same oracle schema CUST that you are trying to access on this URI : oracledb://svd0odbd01.homeoffice.amc.corp:1529/ebsdev/



    Regards,
    Bali
    MCTS: BizTalk Server 2010,BizTalk Server 2006 and WCF
    My Blog:dpsbali-biztalkweblog
    -----------------------------------------------------
    Mark As Answer or Vote As Helpful if this helps.
    Tuesday, October 11, 2011 11:22 AM
  • Have you doublechecked if the logical sendport operationname is the same as the Name attribute of the Operation element in the BtsActionMapping?

     


    Tried that. I set the soap action to:

     

    <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Operation Name="FUNCTION_AP_INVOICES_INTERFACE" Action="http://Microsoft.LobServices.OracleDB/2007/03/AMCCUST/Function/FUNCTION_AP_INVOICES_INTERFACE" />
    </BtsActionMapping>
    

     

    Set the logical port operation name to "FUNCTION_AP_INVOICES_INTERFACE"

    Still the same thing.

    I downloaded the oracle function execution example from Microsoft MSDN. I tried duplicating that setup. I set the SOAP action to:

    http://Microsoft.LobServices.OracleDB/2007/03/AMCCUST/Function/FUNCTION_AP_INVOICES_INTERFACE 


    and the port name to "Request" (like in the sample).

    No difference.

    Have a look at the suspended instance to see what the value of the BTS.Operation property is set to, this should match the Name attribute of the Operation element in the BtsActionMapping.

    If this is the only operation you call through this sendport you can also replace the BtsActionMapping xml fragment with just the Action attribute's value, i.e.

    http://Microsoft.LobServices.OracleDB/2007/03/CUST/Function/FUNCTION_AP_INVOICES_INTERFACE
    


    I'm using the fully qualified URI: oracledb://svd0odbd01.homeoffice.xxx.corp:1529/ebsdev/Dedicated

    I get this error.

     

    I've also tried a URI using resolution using the tnsnames.ora: oracledb://ebsdev

    So far that just gives me timeouts. I checked my oracle configuration:

    C:\Users\Administrator>tnsping ebsdev

    TNS Ping Utility for 32-bit Windows: Version 11.1.0.7.0 - Production on 11-OCT-2
    011 10:31:32
    Copyright (c) 1997, 2008, Oracle.  All rights reserved.
    Used parameter files:
    C:\app\oracle\product\11.2.0\client_1\network\admin\sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=svd0odbd01.home
    office.xxx.corp)(PORT=1529)) (CONNECT_DATA=(SID=EBSDEV)))
    OK (180 msec)
    • Edited by jsprenkle Tuesday, October 11, 2011 3:35 PM
    • Marked as answer by jsprenkle Tuesday, October 11, 2011 4:03 PM
    Tuesday, October 11, 2011 3:34 PM
  • Are you running this on the same oracle server that you created the schema's on. You are using the oracle schema name in your namespace. Make sure that the function is in the same oracle schema CUST that you are trying to access on this URI : oracledb://svd0odbd01.homeoffice.xxx.corp:1529/ebsdev/


    This is running against the same database that the schema was created from. I even rebuilt it all again to make sure.

    I can manually connect from the same machine using sqlplus and can execute the function successfully

    Tuesday, October 11, 2011 3:37 PM
  • Have you doublechecked if the logical sendport operationname is the same as the Name attribute of the Operation element in the BtsActionMapping?

     


    I think this is the problem. I named the Operation Message name (not the Operation name) to match the send port action. Thanks!
    Tuesday, October 11, 2011 4:03 PM
  • Hi, I have been noticing similar strange error as shown below on Biztalk 2010. Data is inserted successfully although it logs below error message....

    A message sent to adapter "WCF-Custom" on send port "WcfSendPort_OracleDBBinding_GL_Table_GL_INTERFACE_Custom" with URI "oracledb://xyz.world/" is suspended.

    Error details: Microsoft.ServiceModel.Channels.Common.MetadataException: Argument <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

      <Operation Name="rrInsertGlIntoOracle" Action="http://Microsoft.LobServices.OracleDB/2007/03/GL/Table/GL_INTERFACE/Insert" />

    </BtsActionMapping> is invalid.

    The operation name is same as logical ports name.

    Appreciate any hints to fix this issue. Thanks

    Friday, May 23, 2014 5:05 PM
  • Hello AmanDev did you find the solution for your problem. i am having the same problem. Can you suggest me  the solution

    http://social.msdn.microsoft.com/Forums/en-US/ba2171eb-f143-4814-a1ea-6aeb91e76b23/biztalk-error-in-wcf-oracledbbinding?forum=biztalkgeneral#ba2171eb-f143-4814-a1ea-6aeb91e76b23

    Tuesday, September 16, 2014 7:00 PM