-
Notifications
You must be signed in to change notification settings - Fork 11
Description
Bug Report
The contract negotiation state machine allows providers to initiate a negotiation by sending an offer message. However, this sequence is not well-defined and has several implementation issues.
Flow description
An offer flow is only defined in the binding specification. This needs to be pulled out to the abstract negotiation spec document.
Consumers cannot decide which offer notifications to receive
There is no way for the consumer to decide which offer notifications it is interested in. In the current approach, the provider would have to indiscriminately send all new offers, which is not desirable. There is also a major scalability concern as all notifications must be done unicast by the provider to consumers.
Proposal
These issues and the complexity supporting provider-initiated negotiations indicate that the initial requirement prompting this feature may not be modeled correctly. That requirement is to provide a way for providers to notify consumers about an offer. This could be handled in two ways:
- Catalogs are designed to be crawled periodically. The consumer could perform a diff of the new and previous catalog to determine new offers
- An event stream dataset could be created by the provider that the consumer negotiates a contract for and opens a transfer process. The event stream provides notifications of new offers.
Either of these approaches addresses the initial requirement, significantly simplifies the DSP design, and allows the consumer to decide which offers it would like to be notified about.
The proposal is to remove provider-initiated negotiations and provide a recommendation to use one of the two approaches in a separate best practices document.