**Usage:** Bounded contexts sometimes need to talk to each other. These are common ways to do that **Partnership** - One context sends a message or calls a function in another. - Can be async (like an event) or sync (like an API call). - This creates a link between the two. **Example:** `eventBus.publish("OrderPlaced")` --- **Shared Kernel** - Two contexts share the same code or database tables. - Use only when the teams are small and tightly connected. - It can create problems if teams move at different speeds. **Example:** For `Suppliers` to communicate with `Customer` both use the same `Market` class from a shared module. --- **Anti-Corruption Layer (ACL)** - One context talks to another but protects itself from changes. - It translates data into its own format. - Keeps its own rules and terms. **Example:** In case of communication between the Legacy Customer entity and the reworked Customer entity, we can have this `CustomerTranslator.getCustomer(customerId)`