Closed radlewand closed 5 years ago
Attempt to patch it: https://github.com/thof/Holodeck-B2B/commit/c13f2728c27378fa2b7cc29f0c34e44dbb171d0c
Yes, it's not very difficult to patch this ;-)
I am however not sure whether this is a issue in Holodeck B2B. In my opinion according to the ebMS specification the ConversationId element shall not be an empty. Problem however is that the specification is not explicit on this point. I therefore raised an issue with the OASIS TC to clarify. In the meantime we won't make a change unless required by a paying customer.
P.S. We would appreciate if you'd at least include your name when submitting issues and/or pull requests.
I've just tested this patch with our partner with both directions and it works as expected.
Thanks for raising this issue. Let's hope it'll be clarified soon and possibly patched.
P.S. I've updated my profile. The commercial support is currently a matter of consideration just like the choice of Holodeck B2B as our AS4 MSH.
We're currently trying to incorporate holodeck in our infrastucture and are also hitting this issue. What bothers me is that holodeck is officially ENTSO-G compliant, still from my point of view every AS4 MSH that implements the ENTSO-G specification to the letter is effectively incompatible due to the conflicting requirements on the ConversationId field. Maybe enable some kind of "ENTSO-G" profile selection in the pmode configuration to enable ConversationId to be empty?
As OASIS TC issue is still not resolved, I think the best temporary workaround would be to introduce an optional parameter to holodeckb2b.xml called e.g. AllowEmptyConversationID (default false). If set to true then skip ConversationID validation similar to what I did in my patch https://github.com/thof/Holodeck-B2B/commit/c13f2728c27378fa2b7cc29f0c34e44dbb171d0c which works perfectly fine so far.
As you can see in the issue raised with the OASIS TC in my opinion the specification does not allow for an empty ConversationId. As a workaround for this issue I therefore recommend to use the default value '1' (in my opinion the ENTSOG profile should also use this value).
However the upcoming version 4.0.0 of Holodeck B2B introduces a "strict header validation mode". As a result the default processing will allow for an empty ConversationId in received messages. As the different validation modes are not yet implemented for outgoing message you will still need to provide a ConversationId when sending. Change the submit process is on our backlog but has low priority since we don't have customer demand for it right now.
With the removal of the check on the empty ConversationId in the lax validation of the ebMS header when sending this issue can be closed.
According to ENTSOG AS4 usage profile specification:
It seems that Holodeck B2B doesn't not support this requirement as messages with empty CoversationID are rejected (both incoming and outgoing).
Could you please look at it?