none
SAP Adapter problem in BizTalk cluster RRS feed

  • Question

  •  

    Hello All,

     

    We have configured BizTalk to run in an failover cluster. However when we switch the BizTalk group between nodes we get the following errors in the event log:

     

     

    1.


    The Messaging Engine failed to add a receive location "SAP" with URL "sap://Client=700;lang=EN;@A/172.20.48.28/00?ListenerGwHost=172.20.48.28&ListenerGwServ=SAPGW00&ListenerProgramId=BIZTALKPROD" to the adapter "WCF-Custom". Reason: "Microsoft.Adapters.SAP.RFCException: Details: ErrorCode=RFC_OK. ErrorGroup=RFC_ERROR_COMMUNICATION. SapErrorMessage=Connect to SAP gateway failed
    Connect_PM  TPNAME=BIZTALKPROD, GWHOST=172.20.48.28, GWSERV=SAPGW00

    LOCATION    CPIC (TCP/IP) on local host with Unicode
    ERROR       service '?' unknown

    TIME        Mon Aug 25 16:57:48 2008
    RELEASE     710
    COMPONENT   NI (network interface)
    VERSION     39
    RC          -3
    DETAIL      NiErrSet
    COUNTER     2.  AdapterErrorMessage=Error accepting incoming connection. RfcAccept returned RFC_HANDLE_NULL..
       at Microsoft.Adapters.SAP.RFCException.HelperThrow(Int32 retCode, String additionalErrorMessage)
       at Microsoft.Adapters.SAP.RfcServerConnection.Open()
       at Microsoft.Adapters.SAP.SAPInboundContract.AdapterStartListener(String[] listenerActions, TimeSpan timeout)
       at Microsoft.Adapters.AdapterUtilities.AdapterInboundContract.StartListener(String[] actions, TimeSpan timeout)
       at Microsoft.ServiceModel.Channels.Common.Channels.AdapterChannelListener`1.OnOpen(TimeSpan timeout)
       at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
       at Microsoft.Adapters.Internal.LayeredChannelBindingElement.LayeredChannelListener`1.OnOpen(TimeSpan timeout)
       at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
       at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
       at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
       at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
       at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
       at System.ServiceModel.Channels.CommunicationObject.Open()
       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiveEndpoint.Enable()
       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiveEndpoint..ctor(BizTalkEndpointContext endpointContext, IBTTransportProxy transportProxy, ControlledTermination control)
       at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfReceiver`2.AddReceiveEndpoint(String url, IPropertyBag adapterConfig, IPropertyBag bizTalkConfig)".

    For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

     


    2.


    The receive location "SAP" with URL "sap://Client=700;lang=EN;@A/172.20.48.28/00?ListenerGwHost=172.20.48.28&ListenerGwServ=SAPGW00&ListenerProgramId=BIZTALKPROD" is shutting down. Details:"The Messaging Engine failed while notifying an adapter of its configuration. ".

    For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.


     

     

    After that the SAP adapter receive location is left in disabled state and needs to be enabled manually in order to receive new messages.

     

    Hope anyone can help me on this issue.

     

    Best Regards,

    Raicho

    Monday, August 25, 2008 2:38 PM

Answers

  • We finally fixed it - a communication issue between node 1 and SAP.

     

    Thanks for your help!

     

    Wednesday, August 27, 2008 11:32 AM

All replies

  •  

    Raicho, you do not need to cluster BizTalk. I understand that you have two BizTalk groups setup. Do you also have two sets of databases?

     

    Please clarify your setup. For high availability it is enough to have at least two BizTalk Servers up and running. Of course the database and SSO should be clustered.

     

    From the error message it seems that you are not able to reach the SAP gateway. Not sure what you are doing here. If you are using MS cluster services, make sure to enable Kerberos delegation. Let the cluster fail over and test the connection with SAP GUI to your SAP system. Please let me know if you are able to connect from the other node.

     

    Thanks,

    Stefan

    Monday, August 25, 2008 3:46 PM
  • Hi Stefan,

     

    Yes we use MS clustering and we have clustered SQL database, SSO and BizTalk host running in active/passive mode.

     

    Whenever we move the BizTalk group from node 1 to node 2 the error appears in the event log of node 1 and receive location stays disabled. After we enable the SAP adapter receive location manually the inbound communication between BizTalk and SAP on the node 2 is restored. When we move the BizTalk group from node 2 to node 1 there are no errors and the SAP adaper receive location is not disabled.

     

    Regards,

    Raicho

    Tuesday, August 26, 2008 11:22 AM
  • The "failed to notify an adapter of its configuration" error is usually caused by SSO being down.

     

    Is the SSO master secret clustered?  If so, is it clustered on BizTalk or SQL?  If it is clustered on BizTalk, then that could be your problem.  When the master secret is clustered on BizTalk, then it must fail over at exactly the same time as the host instance, otherwse the host instance will come back up on the other server and SSO will be passive on that server (still active on the other one), and BizTalk won't be able to connect.  Another implication of clustering SSO on BizTalk is that it makes the whole BizTalk environment active/passive.  If you install the SSO master secret on another cluster (like SQL), then you can define BizTalk clustering at the host level, instead of forcing all hosts to be active/passive.

     

    Does the SAP adapter need to run in active/passive mode?  Most adapters do not need to be clustered.  It is only certain ones (like FTP and MSMQ) where you can only run one active instance of the adapter at a time.

    Tuesday, August 26, 2008 12:52 PM
  • Yes, master secret sever is clustered on BizTalk but I don't think this is causing the problem.

     

    I noticed that the error occurs when stopping the host instance which runs the SAP receive port on node 1 during the process of switching from node 1 to node 2. In fact I unclustered this host instance and stopped it manually on node 1 and the result was RFC_ERROR_COMMUNICATION and disabling the receive location. The strange thing is that this error happens only on node 1. Stopping the host instance that runs the SAP receive port on node 2 doesn't cause the error.

     

    Tuesday, August 26, 2008 7:27 PM
  • Is the SSO master secret in the same cluster goup as the host instance?  Here is a way to tell if the clustered SSO is the issue: 

    1. Uncluster the host instance

    2. Note which node the SSO master secret is active on.

    3. Start the host instance on that node.

    4. Stop the host instance (both host instances are stopped now).

    5. Move the master secret to the other node.

    6. Start the host instance on that node.

    7. Try this process going both ways (node 1 to 2 and 2 to 1)

     

    This takes BizTalk/SSO failover timing issues out of the picture.  Do you still get the error?  If not, then I think it's safe to say the clustered SSO is the issue.  If so, then it's probably something else.

    Tuesday, August 26, 2008 9:51 PM
  • Russ W,

     

    I get the error on step 4 only on node 1 and the receive location is disabled. On node 2 everything is ok. Step 4 is slower operation on node 1 than on node 2.

     

    It seems that the problem is not in clustering but in stopping the host instance that runs SAP receive port (this event happens  also when switching from node 1 to node 2)

     

    The question now is why stopping the host instance leads to RFC_ERROR_COMMUNICATION error and the SAP receive location is set to disabled state on one of the BizTalk servers?

    Wednesday, August 27, 2008 7:23 AM
  • We finally fixed it - a communication issue between node 1 and SAP.

     

    Thanks for your help!

     

    Wednesday, August 27, 2008 11:32 AM
  • Hi,

    We are using the BTS10 with SAP Adapter (WCF LOB adapter pack). And facing the same issue. We have Multi server (1 BTS - with SSO running on biztalk box and one SQL box) - I think this is not the right configuration -- Guys do suggest , I believe the SQL and SSO should be on the same env and BizTalk should be independent ) ...

    When I configure to receive the IDOC from SAP the receive ports are getting switched off and send ports are fine and running (RFC) ....

    BUT Rcv ports are working fine in SINGLE Server box? Why is it so? But not able to receive an IDOC still. Using WCF Custom bining.

    Questions:

    1. I installed the SAP GUI too on server but not sure what it fixes? And do we need to do this in Production?

    2. When I spoke to the SAP guys they say they can see the biztalk account polling there on SAP side. But do we need to add any account at SAP side like create a user or it just fine if I just give the SAP credential?

    3. In what case we need to use the saprfc.ini file? This is to make connection to SAP? in case if the ports are switching off? 

    Require help on this.

    Ahmed

     

    Saturday, November 13, 2010 12:54 AM