holodeck-b2b / Holodeck-B2B

Holodeck B2B is an AS4 system-to-system messaging solution that implements the OASIS specifications for ebMS3 and it's AS4 profile. For more information visit the project website
http://holodeck-b2b.org
GNU General Public License v3.0
76 stars 38 forks source link

Empty ConversationID is not allowed #75

Closed radlewand closed 5 years ago

radlewand commented 7 years ago

According to ENTSOG AS4 usage profile specification:

UserMessage/CollaborationInfo/ConversationId MUST be included in any AS4 message (as it is a mandatory element) with as content the empty string.

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?

radlewand commented 7 years ago

Attempt to patch it: https://github.com/thof/Holodeck-B2B/commit/c13f2728c27378fa2b7cc29f0c34e44dbb171d0c

sfieten commented 7 years ago

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.

radlewand commented 7 years ago

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.

DJGummikuh commented 6 years ago

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?

radlewand commented 6 years ago

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.

sfieten commented 6 years ago

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.

sfieten commented 5 years ago

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.