diff --git a/docs/guide/durability/marten/event-sourcing.md b/docs/guide/durability/marten/event-sourcing.md
index 3dfba1118..20a1116ed 100644
--- a/docs/guide/durability/marten/event-sourcing.md
+++ b/docs/guide/durability/marten/event-sourcing.md
@@ -914,16 +914,114 @@ own rules about value type identifiers](https://martendb.io/documents/identity.h
For a message handler, let's start with this example identifier type and aggregate from the Wolverine tests:
-snippet: sample_strong_typed_identifier_with_aggregate
+
+
+```cs
+[StronglyTypedId(Template.Guid)]
+public readonly partial struct LetterId;
+
+public class StrongLetterAggregate
+{
+ public StrongLetterAggregate()
+ {
+ }
+
+ public LetterId Id { get; set; }
+
+ public int ACount { get; set; }
+ public int BCount { get; set; }
+ public int CCount { get; set; }
+ public int DCount { get; set; }
+
+ public void Apply(AEvent _) => ACount++;
+ public void Apply(BEvent _) => BCount++;
+ public void Apply(CEvent _) => CCount++;
+ public void Apply(DEvent _) => DCount++;
+}
+```
+snippet source | anchor
+
And now let's use that identifier type in message handlers:
-snippet: sample_using_strong_typed_identifier_with_aggregate_handler_workflow
+
+
+```cs
+public record IncrementStrongA(LetterId Id);
+
+public record AddFrom(LetterId Id1, LetterId Id2);
+
+public record IncrementBOnBoth(LetterId Id1, LetterId Id2);
+
+public record FetchCounts(LetterId Id);
+
+public static class StrongLetterHandler
+{
+ public static StrongLetterAggregate Handle(FetchCounts counts,
+ [ReadAggregate] StrongLetterAggregate aggregate) => aggregate;
+
+ public static AEvent Handle(IncrementStrongA command, [WriteAggregate] StrongLetterAggregate aggregate)
+ {
+ return new();
+ }
+
+ public static void Handle(
+ IncrementBOnBoth command,
+ [WriteAggregate(nameof(IncrementBOnBoth.Id1))] IEventStream stream1,
+ [WriteAggregate(nameof(IncrementBOnBoth.Id2))] IEventStream stream2
+ )
+ {
+ stream1.AppendOne(new BEvent());
+ stream2.AppendOne(new BEvent());
+ }
+
+ public static IEnumerable