small medium large xlarge

The latest version of the book is P1.0, released 11 months ago. If you've bought a PDF of the book and would like to update it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: B5.0 (22-Dec-17)
PDF page: xi
The preface section "Other Approaches To Domain Modeling" lists cases in which DDD may not be the best choice. The domain in which I work may fit one ...more...
  • Reported in: B5.0 (23-Nov-17)
PDF page: 1
Severity Code Description Project File Line Suppression State Error Unexpected symbol ':' in definition. Expected incomplete structured construct at...more...
  • Reported in: P1.0 (18-Apr-18)
Paper page: 18

The picture on page 18 is the same as on page 17 (two of the bounded contexts should be combined, and they are not).--Alexander Luzgarev

  • Reported in: P1.0 (25-Feb-18)
PDF page: 18

The figure on page 18 should be different to the one on page 17.--Johannes

  • Reported in: P1.0 (16-May-18)
PDF page: 18

The chart on page 18 is just the same as it is on page 17 and it doesn't include the legacy system presented--Michal

  • Reported in: P1.0 (25-Feb-18)
PDF page: 21

this language should used everywhere -> this language should be used everywhere--Johannes

  • Reported in: P1.0 (09-Mar-18)
Paper page: 23
"A Command is ... or another event. If the process succeeds, the state of the system changes and one or more Domain Events are recorded." Is it reall...more...
  • Reported in: B1.0 (02-Jun-17)
PDF page: 51
In the kindle app for iPad code is not indented so it's almost useless. The same code in the EPUB version on iBook app looks fine. E.g function isEven...more...
  • Reported in: P1.0 (18-Apr-18)
Paper page: 61
Top of page has the following function: let squarePlusOne x = let square = x * x square + 1 The description following the code describ...more...
  • Reported in: P1.0 (02-May-18)
Paper page: 67
Given... type​ OrderQuantity = ​ | UnitQuantity ​of​ ​int​ ​ | KilogramQuantity ​of​ decimal let​ anOrderQtyInKg = KilogramQuantity 2.5 ...more...
  • Reported in: B3.0 (29-Jul-17)
PDF page: 78
?remotesession=75848559-655b-4891-a1c3-8e8b8f581235&dttm=2017-07-28 15:48&validFor=3600&OT=Whatson&OF=AFTix11-2&OC=WhatsonHi Scott, On page 78, you...more...
  • Reported in: B5.0 (01-Jan-18)
PDF page: 89

"type PlaceOrder = UnvalidatedOrder -> PlaceOrderEvents" - shouldn't that be "ValidatedOrder"?--Franz Amador

  • Reported in: B5.0 (05-Jan-18)
  • Fixed: 27-Mar-18, awaiting book release
PDF page: 103
"Other entities should only reference the Aggregate by its identifier" -> "Other entities should reference the Aggregate only by its identifier" (misp...more...
  • Reported in: B4.0 (19-Oct-17)
PDF page: 105
Couldn't it be that two or more aggregates had an important role in an use case and therefore had to be in a single transaction? I read this in anothe...more...
  • Reported in: B5.0 (12-Jan-18)
PDF page: 120

"only update one aggregate per transaction" -> "update only one aggregate per transaction" (misplaced 'only')--Franz Amador

  • Reported in: B5.0 (04-Jan-18)
Paper page: 147

To be had -> to be held

  • Reported in: P1.0 (09-Feb-18)
PDF page: 178
in the second picture (Validate Order Validated Order -> X GetProduct Price, etc.) there is typo GetProduct Proce instead of Price, inside the picture...more...
  • Reported in: P1.0 (11-Mar-18)
Paper page: 204
"Next, acknowledgeOrder and createEvents have no errors - they are "one-track" functions ..." but unfortunately they can't be composed like shown in t...more...
  • Reported in: B5.0 (05-Jan-18)
PDF page: 210
When using bind with validateOrderAdapted and priceOrderAdapted you have the resulting pipeline function of: let placeOrder unvalidatedOrder = ...more...
  • Reported in: P1.0 (06-Feb-18)
PDF page: 235
2nd paragraph in "Serializing Records and Choice Types Using Maps" section has dashes not rendered properly: DTO structure&emdash;a key-value map c...more...
  • Reported in: P1.0 (17-Mar-18)
PDF page: 235
Following text contains "&emdash;". This seems like an improper formatting. "The advantage of this approach is that there’s no “contract” implicit in...more...
  • Reported in: P1.0 (19-Mar-18)
Paper page: 267
In the "Using Active Patterns to Simplify Business Logic" section you showed a way to separate the code for categorization and business logic into dif...more...