In my domain, I have 2 bounded contexts that are relevant to this question:
- Purchasing – where the customer orders services
- Fulfillment – where services are assigned to vendors to be completed
It’s a requirement that an order is editable by the customer at any given time throughout the life of the order.
If a customer removes a service from an order (i.e. within the purchasing context), if that service has already been assigned to a vendor to be performed (but has not already been performed) that service must also be removed in the fulfillment context.
There’s a couple of options here, and I’d like the community’s opinion:
- I have my contexts wrong because this will create a cross-context transaction.
- I may not need transactional consistency here. Of course, that’s for the business stakeholder to decide, which begs 2 questions: What are the implementation options? How do I pose this question to the business stakeholder?
- This is an acceptable violation of the “no cross-context transactions” rule.
EDIT
This is all happening within a single process, so the likelihood of mid-transaction failure is very low.
Here’s the question to ask your stakeholder, re: an order being editable at all times – what does it mean for an order to be edited after it has already been fulfilled?