WSRM

Microsoft WSRM describing CloseSequence is mandatory.

http://msdn.microsoft.com/en-us/library/vstudio/aa751822(v=vs.100).aspx

WSRM interoperability guide

http://scn.sap.com/docs/DOC-3449

http://msdn.microsoft.com/en-us/library/ff710233.aspx

Findings from compatibilty testing with SAP --> Micosoft .Net

As soon as volumes go up the Microsoft end will run out of open sequences and start rejecting new calls.

This happen becasue the SAP end is not sending CloseSequence, which is mandatory according to Microsoft.

In the SAP end many messages get stuck with the famous error:

"The value of wsrm:Identifier is not a known Sequence identifier."

The messages can't be restarted. VERY unreliable messageing is the result as the message is lost from a business perspective.

The SAP and Microsoft WSRM implementations together provides very unreliable messaging. The implementations are so different that there is no value in using them togheter.

SAP note

1767452 - Consulting note: "Unknown Sequence" for WS-RM

describes possible reasons for the error but provides no solution.

If a network error occur the same problem occur. Recovery of the messages stuck in SAP is not possible.

wsrm docs

http://help.sap.com/saphelp_nw70ehp2/helpdata/en/46/9743916d1115ece10000000a114a6b/frameset.htm

inactivity timeout 7.4

http://help.sap.com/saphelp_nw74/helpdata/en/c0/f59f6163bd4164814602b8465d4d40/frameset.htm

702 inactivity timeout missing

http://help.sap.com/saphelp_nw70ehp2/helpdata/en/9e/c7a3591dc74a679bbc9716354e42af/content.htm?frameset=/en/48/5250cf08e672d0e10000000a42189c/frameset.htm

CL_WS_PERSISTENT_SEQUENCE -> IF_WS_SEQUENCE_ADMINISTRATION~SET_INACTIVITY_TIMEOUT

IF_SEQ_RTIME_CONSUMER

IF_SEQ_RTIME_CONSUMER~SET_INACTIVITY_TIMEOUT

Packages

SOAP_WSRM

SESP

SAI

SOAP_SEQ_API

SOAP_SEQ_MANAGER

SOAP_PROXY_RT

CL_SOAP_SEQUENCE_MANAGER

method PROCEED_ON_COMMIT_INT (CL_SOAP_SEQUENCE_MANAGER)

CL_SOAP_SEQ_PERSISTENCY

tables

srt_seq*

CL_SOAP_SEQUENCE_MANAGER

method PROCEED_ON_COMMIT_INT (CL_SOAP_SEQUENCE_MANAGER)

function module SRT_SEQ_SCD_TERMINATE_NEW_C in background task

In SAP:s WSDL files there is no policy specifying ”delivery assurance”.

If we assume “exactly once” (not necessarily in order).

/wsrm:CreateSequence/wsrm:Offer/wsrm:IncompleteSequenceBehaviour – default value is “NoDiscard” indicates that no acknowledged messages in the sequence will be discarded.

The IncompleteSequenceBehaviour is not set in request or response so the default “NoDiscard” applies

The problems is that WCF forgets sequences, however if and when this happens

When WCF sends “unknown sequence” the reasonable thing for sap to do, should be to terminate the sequence and allow for resending not acknowledged messages in a new sequence.

http://wiki.scn.sap.com/wiki/display/ABAPConn/ABAP+Web+Service+Monitors