top of page

What is an Opportunity?

Event Storming is a collaborative workshop technique used to explore complex domains by visualizing the flow of events within a system. It’s primarily used in the context of Domain-Driven Design (DDD) to map out how different elements interact with each other. When describing Opportunity as an Event Storming concept, we can break it down using the key elements of Event Storming.


Here’s how Opportunity fits into the different concepts:


1. Domain Event:


   - Definition: A Domain Event is something that happens that the business cares about. It represents a significant change in the state of the system.


   - Opportunity as a Domain Event:

     - An opportunity could represent a business event such as "Opportunity Created" or "Opportunity Closed."


     - Example: "A new sales opportunity was created by a salesperson," or "An opportunity was closed after a successful sale."


     - Key Domain Events for Opportunity:


       - Opportunity Identified


       - Opportunity Qualified


       - Opportunity Proposal Sent


       - Opportunity Won/Lost


2. Aggregate:


   - Definition: An Aggregate is a cluster of objects that are treated as a single unit. It's usually the main entity in focus that holds important information.


   - Opportunity as an Aggregate:


     - Opportunity could be an aggregate root that holds information about the customer, potential sale, product/service, timelines, and status.


     - The aggregate might manage the lifecycle of an opportunity from creation to closing, ensuring that business rules are respected.


3. Command:


   - Definition: A Command is a request to perform an action that will change the state of the system.


   - Opportunity as a Command:


     - Commands related to opportunities could be actions like:


       - CreateOpportunity


       - UpdateOpportunity


       - CloseOpportunity


       - ReopenOpportunity


     - These commands trigger domain events and modify the state of the opportunity aggregate.


4. Policy:


   - Definition: A Policy dictates certain rules or conditions under which domain events or commands are processed.


   - Opportunity as a Policy:


     - For example, a policy might dictate that "An opportunity cannot be closed until a proposal is sent to the client," or "An opportunity is automatically won if the client accepts the contract."


     - A policy could be responsible for enforcing validation and eligibility rules, such as ensuring only qualified leads are considered opportunities.


5. Actor / External System:


   - Definition: An Actor or External System refers to a person, role, or system that interacts with the system but is not controlled by it.


   - Opportunity as an Actor Interaction:


     - Salespeople or CRM systems could be actors in the opportunity lifecycle. They may initiate the creation or modification of an opportunity.


     - External systems (e.g., email or marketing automation) may interact with opportunities by sending notifications or updates.


6. Process:


   - Definition: Processes represent workflows or sequences of events triggered by domain events.


   - Opportunity as a Process:


     - The lifecycle of an opportunity can be modeled as a series of interconnected processes:


       - Qualification Process: Evaluating whether an opportunity is worth pursuing.


       - Proposal Process: Sending proposals and negotiating terms.


       - Closure Process: Winning or losing the opportunity.


     - Each process may emit its own set of domain events that describe its completion or progress.


7. Hotspot:


   - Definition: A Hotspot is an area of uncertainty or potential problem in the system, where more investigation is needed.


   - Opportunity as a Hotspot:


     - In Event Storming sessions, opportunities may reveal hotspots such as unclear qualification criteria, bottlenecks in closing deals, or ambiguity in customer follow-up.


     - These hotspots indicate areas that need deeper exploration or refinement.


Example Scenario:


Imagine you’re doing an Event Storming session to map out the sales pipeline of a company. Opportunities would be central to this, and you would model the following:


- Domain Events: Opportunity Created → Opportunity Qualified → Proposal Sent → Opportunity Won


- Commands: Create Opportunity, Update Opportunity, Close Opportunity


- Policy: Only qualified leads can proceed to the proposal stage.


- Actors: Salesperson, CRM System, Customer


- Processes: Sales Funnel Process (Qualification, Proposal, Closure)


By using Event Storming, you can visualize how the concept of an opportunity is integral to various stages of the sales process, how it interacts with other aggregates (like customers or products), and what business events are important for its lifecycle.

bottom of page