# Domain Events: Recording Business Successes
> [!Note]
> **Domain Events** are immutable records of meaningful business occurrences, named in the past tense and carrying the **what** and **when**, uniquely identifiable and designed for serialization and reliable transmission.
A Domain Event captures a significant moment in the business lifecycle—such as **ProductCreated** or **InvoiceProcessed**—and expresses it as an object whose name reflects the completed action. Each event includes an **OccurredOn** timestamp to anchor it in time, and once published its state remains **immutable**, preserving an accurate historical audit. By ensuring events are **serializable**, teams can store and forward them across system boundaries, maintaining consistency and enabling asynchronous workflows. Finally, assigning a **unique identifier** to every event guarantees traceability and prevents duplication in distributed environments.
---
## References
- Vernon, V. (2016). _Domain-driven design distilled_. Addison-Wesley Professional.
- Vernon, V. (2013). _Implementing domain-driven design_. Addison-Wesley Professional.
- Khononov, V. (2021). _Learning domain-driven design: Aligning software architecture and business strategy_. O’Reilly Media.
- Alammar, J., & Grootendorst, M. (2024). _Hands-on large language models: Language understanding and generation_. O’Reilly Media.
- Evans, E. (2003). _Domain-driven design: Tackling complexity in the heart of software_. Addison-Wesley Professional.
- Millett, S., & Tune, N. (2015). _Patterns, principles, and practices of domain-driven design._ Wrox.